/*
* Universal Password Manager
* Copyright (c) 2010-2011 Adrian Smith
*
* This file is part of Universal Password Manager.
*
* Universal Password Manager is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* Universal Password Manager is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Universal Password Manager; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
package com.u17od.upm;
import java.io.File;
import java.util.Date;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Build;
import com.dropbox.client2.session.AccessTokenPair;
import com.u17od.upm.database.PasswordDatabase;
public class Utilities {
public static final String DEFAULT_DATABASE_FILE = "upm.db";
public static final String PREFS_DB_FILE_NAME = "DB_FILE_NAME";
public static final String DROPBOX_PREFS = "DROPBOX_PREFS";
public static final String DROPBOX_KEY = "DROPBOX_KEY";
public static final String DROPBOX_SECRET = "DROPBOX_SECRET";
public static final String DROPBOX_DB_REV = "DROPBOX_DB_REV";
public static final String DROPBOX_SELECTED_FILENAME = "DROPBOX_SELECTED_FILENAME";
public static class VERSION_CODES {
public static final int HONEYCOMB = 11;
}
public static class VERSION {
/**
* The user-visible SDK version of the framework; its possible
* values are defined in {@link Build.VERSION_CODES}.
*/
public static final int SDK_INT = Integer.parseInt(System.getProperty(
"ro.build.version.sdk", "0"));
}
public static File getDatabaseFile(Activity activity) {
String dbFileName = getDatabaseFileName(activity);
if (dbFileName == null || dbFileName.equals("")) {
return new File(activity.getFilesDir(), DEFAULT_DATABASE_FILE);
} else {
return new File(activity.getFilesDir(), dbFileName);
}
}
public static String getDatabaseFileName(Activity activity) {
SharedPreferences settings = activity.getSharedPreferences(Prefs.PREFS_NAME, Activity.MODE_PRIVATE);
return settings.getString(PREFS_DB_FILE_NAME, DEFAULT_DATABASE_FILE);
}
public static String getSyncMethod(Activity activity) {
UPMApplication app = (UPMApplication) activity.getApplication();
String remoteHTTPLocation = app.getPasswordDatabase().getDbOptions().getRemoteLocation();
SharedPreferences settings = activity.getSharedPreferences(Prefs.PREFS_NAME, Activity.MODE_PRIVATE);
return getSyncMethod(settings, remoteHTTPLocation);
}
/**
* If we've upgraded from an older version of UPM the preference
* 'sync.method' may not exist. In this case we should check if the
* database has a value for sharedURL. If it does it means the database
* has been configured to use "http" as the sync method
* @param settings
* @param remoteHTTPLocation
* @return
*/
public static String getSyncMethod(SharedPreferences settings, String remoteHTTPLocation) {
String syncMethod = settings.getString(Prefs.SYNC_METHOD, null);
if (syncMethod == null) {
if (remoteHTTPLocation != null) {
syncMethod = Prefs.SyncMethod.HTTP;
} else {
syncMethod = Prefs.SyncMethod.DISABLED;
}
}
return syncMethod;
}
public static void setDatabaseFileName(String dbFileName, Activity activity) {
SharedPreferences settings = activity.getSharedPreferences(Prefs.PREFS_NAME, Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString(PREFS_DB_FILE_NAME, dbFileName);
editor.commit();
}
public static void setSyncMethod(String syncMethod, Activity activity) {
SharedPreferences settings = activity.getSharedPreferences(Prefs.PREFS_NAME, Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString(Prefs.SYNC_METHOD, syncMethod);
editor.commit();
}
public static boolean isSyncRequired(Activity activity) {
UPMApplication app = (UPMApplication) activity.getApplication();
PasswordDatabase db = app.getPasswordDatabase();
Date timeOfLastSync = app.getTimeOfLastSync();
boolean syncRequired = false;
if (db.getDbOptions().getRemoteLocation() != null && !db.getDbOptions().getRemoteLocation().equals("")) {
if (timeOfLastSync == null || System.currentTimeMillis() - timeOfLastSync.getTime() > (5 * 60 * 1000)) {
syncRequired = true;
}
}
return syncRequired;
}
public static AccessTokenPair getDropboxAccessTokenPair(Context context) {
SharedPreferences settings =
context.getSharedPreferences(DROPBOX_PREFS, Context.MODE_PRIVATE);
String dropboxKey = settings.getString(DROPBOX_KEY, null);
String dropboxSecret = settings.getString(DROPBOX_SECRET, null);
AccessTokenPair accessTokenPair = null;
if (dropboxKey != null && dropboxSecret != null) {
accessTokenPair = new AccessTokenPair(dropboxKey, dropboxSecret);
}
return accessTokenPair;
}
public static void setDropboxAccessTokenPair(Context context, AccessTokenPair accessTokenPair) {
SharedPreferences settings = context.getSharedPreferences(DROPBOX_PREFS, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString(DROPBOX_KEY, accessTokenPair.key);
editor.putString(DROPBOX_SECRET, accessTokenPair.secret);
editor.commit();
}
public static void clearDropboxAccessTokenPair(Context context) {
SharedPreferences settings = context.getSharedPreferences(DROPBOX_PREFS, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.remove(DROPBOX_KEY);
editor.remove(DROPBOX_SECRET);
editor.commit();
}
public static void setConfig(Context context, String fileName, String keyName, String value) {
SharedPreferences settings = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString(keyName, value);
editor.commit();
}
public static String getConfig(Context context, String fileName, String keyName) {
SharedPreferences settings =
context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
return settings.getString(keyName, null);
}
}