#17105 AccountPreferenceActivity should not bind to SipService, add preference in Intent's bundle instead
diff --git a/src/com/savoirfairelinux/sflphone/client/AccountManagementFragment.java b/src/com/savoirfairelinux/sflphone/client/AccountManagementFragment.java
index 4cfa8a7..52c6430 100644
--- a/src/com/savoirfairelinux/sflphone/client/AccountManagementFragment.java
+++ b/src/com/savoirfairelinux/sflphone/client/AccountManagementFragment.java
@@ -75,8 +75,6 @@
static final int ACCOUNT_EDIT_REQUEST = 2;
private ISipService service;
- // HashMap<String,HashMap<String,String>> mAccountList = new HashMap<String,HashMap<String,String>>();
- HashMap<String, AccountPreferenceScreen> mAccountList = new HashMap<String, AccountPreferenceScreen>();
ArrayList<AccountDetail.PreferenceEntry> basicDetailKeys;
ArrayList<AccountDetail.PreferenceEntry> advancedDetailKeys;
ArrayList<AccountDetail.PreferenceEntry> srtpDetailKeys;
@@ -112,20 +110,6 @@
{
super.onStop();
Log.i(TAG, "onStop");
-
- ArrayList<String> accountList = getAccountList();
-
- try {
- for(String s : accountList) {
- Log.i(TAG, " set details for " + s);
- AccountPreferenceScreen accountPref = mAccountList.get(s);
- if(accountPref != null) {
- service.setAccountDetails(s, accountPref.preferenceMap);
- }
- }
- } catch (RemoteException e) {
- Log.e(TAG, "Cannot call service method", e);
- }
}
@Override
@@ -147,6 +131,23 @@
Bundle bundle = data.getExtras();
String accountID = bundle.getString("AccountID");
Log.i(TAG, "Update account settings for " + accountID);
+
+ AccountDetailBasic basicDetails =
+ new AccountDetailBasic(bundle.getStringArrayList(AccountDetailBasic.BUNDLE_TAG));
+ AccountDetailAdvanced advancedDetails =
+ new AccountDetailAdvanced(bundle.getStringArrayList(AccountDetailAdvanced.BUNDLE_TAG));
+ AccountDetailSrtp srtpDetails =
+ new AccountDetailSrtp(bundle.getStringArrayList(AccountDetailSrtp.BUNDLE_TAG));
+ AccountDetailTls tlsDetails =
+ new AccountDetailTls(bundle.getStringArrayList(AccountDetailTls.BUNDLE_TAG));
+
+ HashMap<String, String> map = new HashMap<String, String>();
+ map.putAll(basicDetails.getDetailsHashMap());
+ map.putAll(advancedDetails.getDetailsHashMap());
+ map.putAll(srtpDetails.getDetailsHashMap());
+ map.putAll(tlsDetails.getDetailsHashMap());
+
+ setAccountDetails(accountID, map);
}
break;
default:
@@ -159,6 +160,7 @@
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();
currentList.remove(DEFAULT_ACCOUNT_ID);
@@ -179,27 +181,7 @@
}
}
}
- }
- };
-
-
- Preference.OnPreferenceChangeListener changeBasicTextEditListener = new Preference.OnPreferenceChangeListener() {
- public boolean onPreferenceChange(Preference preference, Object newValue) {
- preference.setSummary(getString(R.string.account_current_value_label) + (CharSequence)newValue);
- AccountPreferenceScreen accountPreference = mAccountList.get(preference.getKey());
- String preferenceKey = basicDetailKeys.get(preference.getOrder()).mKey;
- accountPreference.preferenceMap.put(preferenceKey, ((CharSequence)newValue).toString());
- if(preferenceKey == AccountDetailBasic.CONFIG_ACCOUNT_ALIAS)
- accountPreference.mScreen.setTitle(((CharSequence)newValue.toString()));
- return true;
- }
- };
-
- Preference.OnPreferenceChangeListener changeAdvancedTextEditListener = new Preference.OnPreferenceChangeListener() {
- public boolean onPreferenceChange(Preference preference, Object newValue) {
- preference.setSummary(getString(R.string.account_current_value_label) + (CharSequence)newValue);
- mAccountList.get(preference.getKey()).preferenceMap.put(advancedDetailKeys.get(preference.getOrder()).mKey, ((CharSequence)newValue).toString());
- return true;
+ */
}
};
@@ -239,6 +221,24 @@
{
Log.i(TAG, "Launch account edit activity");
Intent intent = preference.getIntent();
+
+ Bundle bundle = intent.getExtras();
+ String accountID = bundle.getString("AccountID");
+
+ HashMap<String, String> preferenceMap = getAccountDetails(accountID);
+
+ AccountDetailBasic basicDetails = new AccountDetailBasic(preferenceMap);
+ AccountDetailAdvanced advancedDetails = new AccountDetailAdvanced(preferenceMap);
+ AccountDetailSrtp srtpDetails = new AccountDetailSrtp(preferenceMap);
+ AccountDetailTls tlsDetails = new AccountDetailTls(preferenceMap);
+
+ bundle.putStringArrayList(AccountDetailBasic.BUNDLE_TAG, basicDetails.getValuesOnly());
+ bundle.putStringArrayList(AccountDetailAdvanced.BUNDLE_TAG, advancedDetails.getValuesOnly());
+ bundle.putStringArrayList(AccountDetailSrtp.BUNDLE_TAG, srtpDetails.getValuesOnly());
+ bundle.putStringArrayList(AccountDetailTls.BUNDLE_TAG, tlsDetails.getValuesOnly());
+
+ intent.putExtras(bundle);
+
startActivityForResult(intent, ACCOUNT_EDIT_REQUEST);
}
@@ -291,9 +291,6 @@
{
Activity currentContext = getActivity();
- ArrayList<String> accountList = getAccountList();
- // Log.i(TAG, "GetAccountList: " + mAccountList);
-
mRoot = getPreferenceManager().createPreferenceScreen(currentContext);
// Default account category
@@ -314,6 +311,7 @@
createNewAccount.setIntent(new Intent().setClass(getActivity(), AccountCreationActivity.class));
mRoot.addPreference(createNewAccount);
+ ArrayList<String> accountList = getAccountList();
for(String s : accountList) {
// mRoot.addPreference(getAccountPreferenceScreen(s));
mRoot.addPreference(createAccountPreferenceScreen(s));
@@ -324,19 +322,8 @@
Preference createAccountPreferenceScreen(String accountID) {
- HashMap<String, String> preferenceMap = getAccountDetails(accountID);
-
- AccountDetailBasic basicDetails = new AccountDetailBasic(preferenceMap);
- AccountDetailAdvanced advancedDetails = new AccountDetailAdvanced(preferenceMap);
- AccountDetailSrtp srtpDetails = new AccountDetailSrtp(preferenceMap);
- AccountDetailTls tlsDetails = new AccountDetailTls(preferenceMap);
-
Bundle bundle = new Bundle();
bundle.putString("AccountID", accountID);
- bundle.putStringArrayList(AccountDetailBasic.BUNDLE_TAG, basicDetails.getValuesOnly());
- bundle.putStringArrayList(AccountDetailAdvanced.BUNDLE_TAG, advancedDetails.getValuesOnly());
- bundle.putStringArrayList(AccountDetailSrtp.BUNDLE_TAG, srtpDetails.getValuesOnly());
- bundle.putStringArrayList(AccountDetailTls.BUNDLE_TAG, tlsDetails.getValuesOnly());
Intent intent = new Intent().setClass(getActivity(), AccountPreferenceActivity.class);
intent.putExtras(bundle);
@@ -348,62 +335,4 @@
return editAccount;
}
-
- /*
- AccountPreferenceScreen createAccountPreferenceScreen(String accountID) {
- AccountPreferenceScreen preference = new AccountPreferenceScreen(getPreferenceManager(), getActivity(), accountID);
- mAccountList.put(accountID, preference);
-
- return preference;
- }
- */
-
- private class AccountPreferenceScreen
- {
- public PreferenceScreen mScreen;
- public HashMap<String, String> preferenceMap;
-
- public AccountPreferenceScreen(PreferenceManager prefManager, Context context, String accountID)
- {
- mScreen = prefManager.createPreferenceScreen(context);
- preferenceMap = getAccountDetails(accountID);
-
- mScreen.setTitle(preferenceMap.get(ServiceConstants.CONFIG_ACCOUNT_ALIAS));
-
- if(accountID != DEFAULT_ACCOUNT_ID) {
- Preference deleteThisAccount = new Preference(context);
- deleteThisAccount.setTitle("Delete Account");
- deleteThisAccount.setKey(accountID);
- deleteThisAccount.setOnPreferenceClickListener(removeSelectedAccountOnClick);
- deleteThisAccount.setIntent(new Intent().setClass(getActivity(), AccountCreationActivity.class));
- mScreen.addPreference(deleteThisAccount);
- }
-
- createPreferenceSection(mScreen, context, R.string.account_preferences_basic, basicDetailKeys, accountID, preferenceMap);
- createPreferenceSection(mScreen, context, R.string.account_preferences_advanced, advancedDetailKeys, accountID, preferenceMap);
- createPreferenceSection(mScreen, context, R.string.account_preferences_srtp, srtpDetailKeys, accountID, preferenceMap);
- createPreferenceSection(mScreen, context, R.string.account_preferences_tls, tlsDetailKeys, accountID, preferenceMap);
- }
-
- public void createPreferenceSection(PreferenceScreen root, Context context, int titleId, ArrayList<AccountDetail.PreferenceEntry> detailEntries,
- String accountID, HashMap<String, String> map)
- {
- // Inline preference
- PreferenceCategory accountPrefCat = new PreferenceCategory(context);
- accountPrefCat.setTitle(titleId);
- root.addPreference(accountPrefCat);
-
- for(AccountDetail.PreferenceEntry entry : detailEntries)
- {
- EditTextPreference accountPref = new EditTextPreference(context);
- accountPref.setDialogTitle(entry.mLabelId);
- accountPref.setPersistent(false);
- accountPref.setTitle(entry.mLabelId);
- accountPref.setSummary(getString(R.string.account_current_value_label) + map.get(entry.mKey));
- accountPref.setOnPreferenceChangeListener(changeBasicTextEditListener);
- accountPref.setKey(accountID);
- accountPrefCat.addPreference(accountPref);
- }
- }
- }
}