#17037 Update create/delete account with new mechanism
diff --git a/src/com/savoirfairelinux/sflphone/client/AccountManagementFragment.java b/src/com/savoirfairelinux/sflphone/client/AccountManagementFragment.java
index 52c6430..a56f098 100644
--- a/src/com/savoirfairelinux/sflphone/client/AccountManagementFragment.java
+++ b/src/com/savoirfairelinux/sflphone/client/AccountManagementFragment.java
@@ -75,10 +75,11 @@
static final int ACCOUNT_EDIT_REQUEST = 2;
private ISipService service;
- ArrayList<AccountDetail.PreferenceEntry> basicDetailKeys;
- ArrayList<AccountDetail.PreferenceEntry> advancedDetailKeys;
- ArrayList<AccountDetail.PreferenceEntry> srtpDetailKeys;
- ArrayList<AccountDetail.PreferenceEntry> tlsDetailKeys;
+ ArrayList<AccountDetail.PreferenceEntry> basicDetailKeys = null;
+ ArrayList<AccountDetail.PreferenceEntry> advancedDetailKeys = null;
+ ArrayList<AccountDetail.PreferenceEntry> srtpDetailKeys = null;
+ ArrayList<AccountDetail.PreferenceEntry> tlsDetailKeys = null;
+ HashMap<String, Preference> accountPreferenceHashMap = null;
PreferenceScreen mRoot = null;
Activity context = getActivity();
@@ -91,6 +92,8 @@
advancedDetailKeys = AccountDetailAdvanced.getPreferenceEntries();
srtpDetailKeys = AccountDetailSrtp.getPreferenceEntries();
tlsDetailKeys = AccountDetailTls.getPreferenceEntries();
+
+ accountPreferenceHashMap = new HashMap<String, Preference>();
}
@Override
@@ -148,6 +151,15 @@
map.putAll(tlsDetails.getDetailsHashMap());
setAccountDetails(accountID, map);
+ } else if(resultCode == AccountPreferenceActivity.ACCOUNT_DELETED) {
+ Bundle bundle = data.getExtras();
+ String accountID = bundle.getString("AccountID");
+
+ Log.i(TAG, "Remove account " + accountID);
+ deleteSelectedAccount(accountID);
+ Preference accountScreen = accountPreferenceHashMap.get(accountID);
+ mRoot.removePreference(accountScreen);
+ accountPreferenceHashMap.remove(accountID);
}
break;
default:
@@ -159,29 +171,17 @@
@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();
- currentList.remove(DEFAULT_ACCOUNT_ID);
+ Set<String> currentList = (Set<String>) accountPreferenceHashMap.keySet();
if(newList.size() > currentList.size()) {
for(String s : newList) {
if(!currentList.contains(s)) {
- Log.i("receiver", "ADDING ACCOUNT!!!!!! " + s);
- mRoot.addPreference(createAccountPreferenceScreen(s));
+ Preference accountScreen = createAccountPreferenceScreen(s);
+ mRoot.addPreference(accountScreen);
+ accountPreferenceHashMap.put(s, accountScreen);
}
}
}
- else if(newList.size() < currentList.size()) {
- for(String s : currentList) {
- if(!newList.contains(s)) {
- Log.i("receiver", "REMOVING ACCOUNT!!!!!! " + s);
- mRoot.removePreference(mAccountList.get(s).mScreen);
- mAccountList.remove(s);
- }
- }
- }
- */
}
};
@@ -313,8 +313,9 @@
ArrayList<String> accountList = getAccountList();
for(String s : accountList) {
- // mRoot.addPreference(getAccountPreferenceScreen(s));
- mRoot.addPreference(createAccountPreferenceScreen(s));
+ Preference accountScreen = createAccountPreferenceScreen(s);
+ mRoot.addPreference(accountScreen);
+ accountPreferenceHashMap.put(s, accountScreen);
}
return mRoot;
diff --git a/src/com/savoirfairelinux/sflphone/client/AccountPreferenceActivity.java b/src/com/savoirfairelinux/sflphone/client/AccountPreferenceActivity.java
index b53adf5..81908ac 100644
--- a/src/com/savoirfairelinux/sflphone/client/AccountPreferenceActivity.java
+++ b/src/com/savoirfairelinux/sflphone/client/AccountPreferenceActivity.java
@@ -46,10 +46,10 @@
import android.preference.EditTextPreference;
import android.preference.CheckBoxPreference;
import android.util.Log;
+import android.view.Menu;
+import android.view.MenuItem;
import com.savoirfairelinux.sflphone.R;
-// import com.savoirfairelinux.sflphone.service.SipService;
-// import com.savoirfairelinux.sflphone.service.ISipService;
import com.savoirfairelinux.sflphone.utils.AccountDetail;
import com.savoirfairelinux.sflphone.utils.AccountDetailsHandler;
import com.savoirfairelinux.sflphone.utils.AccountDetailBasic;
@@ -65,6 +65,7 @@
private static final String TAG = "AccoutPreferenceActivity";
public static final int ACCOUNT_MODIFIED = Activity.RESULT_FIRST_USER + 0;
public static final int ACCOUNT_NOT_MODIFIED = Activity.RESULT_FIRST_USER + 1;
+ public static final int ACCOUNT_DELETED = Activity.RESULT_FIRST_USER + 2;
private AccountDetailBasic basicDetails = null;
private AccountDetailAdvanced advancedDetails = null;
@@ -72,9 +73,11 @@
private AccountDetailTls tlsDetails = null;
private PreferenceManager mPreferenceManager;
private HashMap<String, String> mPreferenceMap;
+ private MenuItem deleteAccountAction = null;
private String mAccountID;
- Preference.OnPreferenceChangeListener changeBasicPreferenceListener = new Preference.OnPreferenceChangeListener() {
+ Preference.OnPreferenceChangeListener changeBasicPreferenceListener =
+ new Preference.OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference preference, Object newValue) {
preference.setSummary(getString(R.string.account_current_value_label)+(CharSequence)newValue);
@@ -87,7 +90,8 @@
}
};
- Preference.OnPreferenceChangeListener changeNewAccountTwoStateListener = new Preference.OnPreferenceChangeListener() {
+ Preference.OnPreferenceChangeListener changeNewAccountTwoStateListener =
+ new Preference.OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference preference, Object newValue) {
return true;
}
@@ -153,6 +157,13 @@
}
@Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ deleteAccountAction = menu.add("Delete Account");
+ deleteAccountAction.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
+ return true;
+ }
+
+ @Override
protected void onStart() {
super.onStart();
}
@@ -183,6 +194,19 @@
finish();
}
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ Bundle bundle = new Bundle();
+ bundle.putString("AccountID", mAccountID);
+
+ Intent resultIntent = new Intent();
+ resultIntent.putExtras(bundle);
+
+ setResult(ACCOUNT_DELETED, resultIntent);
+ finish();
+ return true;
+ }
+
private void updateAccountDetails(HashMap<String, String> accountDetails, AccountDetail det) {
for(AccountDetail.PreferenceEntry p : det.getDetailValues()) {
Preference pref = mPreferenceManager.findPreference(p.mKey);