diff options
author | Christian Schneppe <christian@pix-art.de> | 2018-03-08 20:33:53 +0100 |
---|---|---|
committer | Christian Schneppe <christian@pix-art.de> | 2018-03-08 20:33:53 +0100 |
commit | d3e7058d5049cd020798159c15185bd0d6e71e92 (patch) | |
tree | f83eca385a5aa4570f8a111ae58acb0c0fc2aa8e /src/main/java/de/pixart/messenger/services | |
parent | a33032d9b70511561162bdab66c101a5e3e4a58e (diff) | |
parent | b95bdbe791a8b7609b46ec5b9c089b2dc2461314 (diff) |
Merge branch 'multi-account'
Diffstat (limited to 'src/main/java/de/pixart/messenger/services')
3 files changed, 45 insertions, 8 deletions
diff --git a/src/main/java/de/pixart/messenger/services/ExportLogsService.java b/src/main/java/de/pixart/messenger/services/ExportLogsService.java index 2337d04d0..63ac1be68 100644 --- a/src/main/java/de/pixart/messenger/services/ExportLogsService.java +++ b/src/main/java/de/pixart/messenger/services/ExportLogsService.java @@ -9,6 +9,7 @@ import android.os.IBinder; import android.os.PowerManager; import android.os.PowerManager.WakeLock; import android.preference.PreferenceManager; +import android.support.annotation.BoolRes; import android.support.v4.app.NotificationCompat; import android.util.Log; @@ -37,6 +38,8 @@ import de.pixart.messenger.persistance.FileBackend; import de.pixart.messenger.utils.EncryptDecryptFile; import de.pixart.messenger.xmpp.jid.Jid; +import static de.pixart.messenger.ui.SettingsActivity.USE_MULTI_ACCOUNTS; + public class ExportLogsService extends Service { private static final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); @@ -49,6 +52,7 @@ public class ExportLogsService extends Service { boolean ReadableLogsEnabled = false; private WakeLock wakeLock; private PowerManager pm; + XmppConnectionService mXmppConnectionService; @Override public void onCreate() { @@ -178,6 +182,7 @@ public class ExportLogsService extends Service { public void ExportDatabase() throws IOException { Account mAccount = mAccounts.get(0); + String EncryptionKey = null; // Get hold of the db: FileInputStream InputFile = new FileInputStream(this.getDatabasePath(DatabaseBackend.DATABASE_NAME)); // Set the output folder on the SDcard @@ -195,7 +200,18 @@ public class ExportLogsService extends Service { // Set the output file stream up: FileOutputStream OutputFile = new FileOutputStream(directory.getPath() + "/database.db.crypt"); - String EncryptionKey = mAccount.getPassword(); //get account password + if (mAccounts.size() == 1 && !multipleAccounts()) { + EncryptionKey = mAccount.getPassword(); //get account password + } else { + SharedPreferences multiaccount_prefs = getApplicationContext().getSharedPreferences(USE_MULTI_ACCOUNTS, Context.MODE_PRIVATE); + String password = multiaccount_prefs.getString("BackupPW", null); + if (password == null) { + Log.d(Config.LOGTAG, "Database exporter: failed to write encryted backup to sdcard because of missing password"); + return; + } + EncryptionKey = password; //get previously set backup password + } + Log.d(Config.LOGTAG, "Database exporter: encrypt backup with password " + EncryptionKey); // encrypt database from the input file to the output file try { @@ -216,4 +232,16 @@ public class ExportLogsService extends Service { public IBinder onBind(Intent intent) { return null; } + + public SharedPreferences getPreferences() { + return PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); + } + + public boolean getBooleanPreference(String name, @BoolRes int res) { + return getPreferences().getBoolean(name, getResources().getBoolean(res)); + } + + public boolean multipleAccounts() { + return getBooleanPreference("enable_multi_accounts", R.bool.confirm_messages); + } } diff --git a/src/main/java/de/pixart/messenger/services/NotificationService.java b/src/main/java/de/pixart/messenger/services/NotificationService.java index 7ce896814..ba4b3dc4e 100644 --- a/src/main/java/de/pixart/messenger/services/NotificationService.java +++ b/src/main/java/de/pixart/messenger/services/NotificationService.java @@ -745,20 +745,23 @@ public class NotificationService { String status; Account mAccount = null; Log.d(Config.LOGTAG, "Accounts size " + accounts.size()); - if (accounts.size() > 0) { + if (accounts.size() == 1) { mAccount = accounts.get(0); if (mAccount.getStatus() == Account.State.ONLINE) { - status = mXmppConnectionService.getString(R.string.account_status_online); + status = "(" + mXmppConnectionService.getString(R.string.account_status_online) + ")"; } else if (mAccount.getStatus() == Account.State.CONNECTING) { - status = mXmppConnectionService.getString(R.string.account_status_connecting); + status = "(" + mXmppConnectionService.getString(R.string.account_status_connecting) + ")"; } else { - status = mXmppConnectionService.getString(R.string.account_status_offline); + status = "(" + mXmppConnectionService.getString(R.string.account_status_offline) + ")"; } + } else if (accounts.size() > 1) { + status = ""; // todo: status for multiple accounts??? } else { - status = mXmppConnectionService.getString(R.string.account_status_offline); + status = "(" + mXmppConnectionService.getString(R.string.account_status_offline) + ")"; } + status = " " + status; Log.d(Config.LOGTAG, "Status: " + status); - mBuilder.setContentTitle(mXmppConnectionService.getString(R.string.conversations_foreground_service) + " (" + status + ")"); + mBuilder.setContentTitle(mXmppConnectionService.getString(R.string.conversations_foreground_service) + status); if (Config.SHOW_CONNECTED_ACCOUNTS) { int enabled = 0; int connected = 0; @@ -777,8 +780,10 @@ public class NotificationService { mBuilder.setContentIntent(createOpenConversationsIntent()); mBuilder.setWhen(0); mBuilder.setPriority(Config.SHOW_CONNECTED_ACCOUNTS ? NotificationCompat.PRIORITY_DEFAULT : NotificationCompat.PRIORITY_MIN); - if (accounts.size() > 0 && mAccount.getStatus() == Account.State.ONLINE) { + if (accounts.size() == 1 && accounts.get(0).getStatus() == Account.State.ONLINE) { mBuilder.setSmallIcon(R.drawable.ic_link_white_24dp); + } else if (accounts.size() > 1) { + mBuilder.setSmallIcon(R.drawable.ic_link_white_24dp); // todo: status for multiple accounts??? } else { mBuilder.setSmallIcon(R.drawable.ic_unlink_white_24dp); } diff --git a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java index ad802711c..d26114b47 100644 --- a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java +++ b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java @@ -3560,6 +3560,10 @@ public class XmppConnectionService extends Service { return getBooleanPreference(SettingsActivity.BROADCAST_LAST_ACTIVITY, R.bool.last_activity); } + public boolean multipleAccounts() { + return getBooleanPreference("enable_multi_accounts", R.bool.enable_multi_accounts); + } + public int unreadCount() { int count = 0; for (Conversation conversation : getConversations()) { |