Change summary
src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java | 19
src/main/java/eu/siacs/conversations/services/EventReceiver.java | 15
src/main/java/eu/siacs/conversations/services/XmppConnectionService.java | 6
3 files changed, 20 insertions(+), 20 deletions(-)
Detailed changes
@@ -760,25 +760,6 @@ public class DatabaseBackend extends SQLiteOpenHelper {
return rows == 1;
}
- public boolean hasEnabledAccounts() {
- SQLiteDatabase db = this.getReadableDatabase();
- Cursor cursor = db.rawQuery("select count(" + Account.UUID + ") from "
- + Account.TABLENAME + " where not options & (1 <<1)", null);
- try {
- cursor.moveToFirst();
- int count = cursor.getInt(0);
- return (count > 0);
- } catch (SQLiteCantOpenDatabaseException e) {
- return true; // better safe than sorry
- } catch (RuntimeException e) {
- return true; // better safe than sorry
- } finally {
- if (cursor != null) {
- cursor.close();
- }
- }
- }
-
@Override
public SQLiteDatabase getWritableDatabase() {
SQLiteDatabase db = super.getWritableDatabase();
@@ -3,10 +3,17 @@ package eu.siacs.conversations.services;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
+import android.content.SharedPreferences;
+import android.preference.PreferenceManager;
+import android.util.Log;
+import eu.siacs.conversations.Config;
import eu.siacs.conversations.persistance.DatabaseBackend;
public class EventReceiver extends BroadcastReceiver {
+
+ public static final String SETTING_ENABLED_ACCOUNTS = "enabled_accounts";
+
@Override
public void onReceive(Context context, Intent intent) {
Intent mIntentForService = new Intent(context, XmppConnectionService.class);
@@ -16,9 +23,15 @@ public class EventReceiver extends BroadcastReceiver {
mIntentForService.setAction("other");
}
final String action = intent.getAction();
- if (action.equals("ui") || DatabaseBackend.getInstance(context).hasEnabledAccounts()) {
+ if (action.equals("ui") || hasEnabledAccounts(context)) {
context.startService(mIntentForService);
+ } else {
+ Log.d(Config.LOGTAG,"EventReceiver ignored action "+mIntentForService.getAction());
}
}
+ public boolean hasEnabledAccounts(Context context) {
+ return PreferenceManager.getDefaultSharedPreferences(context).getBoolean(SETTING_ENABLED_ACCOUNTS,true);
+ }
+
}
@@ -1748,9 +1748,14 @@ public class XmppConnectionService extends Service {
this.accounts.add(account);
this.reconnectAccountInBackground(account);
updateAccountUi();
+ syncEnabledAccountSetting();
toggleForegroundService();
}
+ private void syncEnabledAccountSetting() {
+ getPreferences().edit().putBoolean(EventReceiver.SETTING_ENABLED_ACCOUNTS,hasEnabledAccounts()).apply();
+ }
+
public void createAccountFromKey(final String alias, final OnAccountCreated callback) {
new Thread(new Runnable() {
@Override
@@ -1823,6 +1828,7 @@ public class XmppConnectionService extends Service {
updateAccountUi();
getNotificationService().updateErrorNotification();
toggleForegroundService();
+ syncEnabledAccountSetting();
return true;
} else {
return false;