Implement account state change broadcast signal sender and receiver
diff --git a/src/com/savoirfairelinux/sflphone/client/AccountManagementFragment.java b/src/com/savoirfairelinux/sflphone/client/AccountManagementFragment.java
index 2975aae..2f71c51 100644
--- a/src/com/savoirfairelinux/sflphone/client/AccountManagementFragment.java
+++ b/src/com/savoirfairelinux/sflphone/client/AccountManagementFragment.java
@@ -32,8 +32,10 @@
package com.savoirfairelinux.sflphone.client;
import android.app.Activity;
+import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
+import android.content.IntentFilter;
import android.preference.EditTextPreference;
import android.preference.Preference;
import android.preference.PreferenceCategory;
@@ -42,10 +44,13 @@
import android.preference.ListPreference;
import android.os.Bundle;
import android.os.RemoteException;
+import android.support.v4.content.LocalBroadcastManager;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
+
+import java.util.Set;
import java.util.HashMap;
import java.util.ArrayList;
@@ -76,6 +81,7 @@
AccountDetailAdvanced advancedDetails;
AccountDetailSrtp srtpDetails;
AccountDetailTls tlsDetails;
+ PreferenceScreen mRoot;
Activity context = getActivity();
@@ -102,6 +108,8 @@
Log.i(TAG, "Create Account Management Fragment");
setPreferenceScreen(getAccountListPreferenceScreen());
+
+ LocalBroadcastManager.getInstance(getActivity()).registerReceiver(mMessageReceiver, new IntentFilter("accounts-changed"));
}
@Override
@@ -128,10 +136,9 @@
@Override
public void onDestroy()
{
+ LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(mMessageReceiver);
super.onDestroy();
Log.i(TAG, "onDestroy");
-
-
}
@Override
@@ -140,6 +147,22 @@
}
}
+ private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ String message = intent.getStringExtra("message");
+ Log.d("receiver", "Got message: " + message);
+ ArrayList<String> newList = (ArrayList<String>) getAccountList();
+ Set<String> currentList = (Set<String>) mAccountList.keySet();
+ for(String s : newList) {
+ if(!currentList.contains(s)) {
+ Log.i("receiver", "ADDING ACCOUNT!!!!!! " + s);
+ mRoot.addPreference(getAccountPreferenceScreen(s));
+ }
+ }
+ }
+ };
+
Preference.OnPreferenceChangeListener changeBasicTextEditListener = new Preference.OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference preference, Object newValue) {
@@ -216,30 +239,30 @@
ArrayList<String> accountList = getAccountList();
// Log.i(TAG, "GetAccountList: " + mAccountList);
- PreferenceScreen root = getPreferenceManager().createPreferenceScreen(currentContext);
+ mRoot = getPreferenceManager().createPreferenceScreen(currentContext);
// Default account category
PreferenceCategory defaultAccountCat = new PreferenceCategory(currentContext);
defaultAccountCat.setTitle(R.string.default_account_category);
- root.addPreference(defaultAccountCat);
+ mRoot.addPreference(defaultAccountCat);
- root.addPreference(getAccountPreferenceScreen(DEFAULT_ACCOUNT_ID));
+ mRoot.addPreference(getAccountPreferenceScreen(DEFAULT_ACCOUNT_ID));
// Account list category
PreferenceCategory accountListCat = new PreferenceCategory(currentContext);
accountListCat.setTitle(R.string.default_account_category);
- root.addPreference(accountListCat);
+ mRoot.addPreference(accountListCat);
Preference createNewAccount = new Preference(currentContext);
createNewAccount.setTitle("Touch to Create New Account");
createNewAccount.setOnPreferenceClickListener(launchAccountCreationOnClick);
createNewAccount.setIntent(new Intent().setClass(getActivity(), AccountCreationActivity.class));
- root.addPreference(createNewAccount);
+ mRoot.addPreference(createNewAccount);
for(String s : accountList)
- root.addPreference(getAccountPreferenceScreen(s));
+ mRoot.addPreference(getAccountPreferenceScreen(s));
- return root;
+ return mRoot;
}
public PreferenceCategory createPreferenceSection(PreferenceScreen root, Context context, int titleId, ArrayList<AccountDetail.PreferenceEntry> detailEntries,