diff --git a/src/org/linphone/AccountPreferencesFragment.java b/src/org/linphone/AccountPreferencesFragment.java index 1fe1e7b31..036a57de7 100644 --- a/src/org/linphone/AccountPreferencesFragment.java +++ b/src/org/linphone/AccountPreferencesFragment.java @@ -101,7 +101,7 @@ public class AccountPreferencesFragment extends PreferencesListFragment { disable.setKey(getString(R.string.pref_disable_account_key) + key); final Preference delete = advanced.getPreference(4); - delete.setEnabled(prefs.getInt(getString(R.string.pref_default_account_key), 0) != n); + delete.setEnabled(true); delete.setOnPreferenceClickListener(new OnPreferenceClickListener() { public boolean onPreferenceClick(Preference preference) { int nbAccounts = prefs.getInt(getString(R.string.pref_extra_accounts), 1); @@ -116,20 +116,28 @@ public class AccountPreferencesFragment extends PreferencesListFragment { editor.putBoolean(getString(R.string.pref_disable_account_key) + getAccountNumber(i), prefs.getBoolean(getString(R.string.pref_disable_account_key) + getAccountNumber(i+1), false)); } - int lastAccount = nbAccounts - 1; - editor.putString(getString(R.string.pref_username_key) + getAccountNumber(lastAccount), null); - editor.putString(getString(R.string.pref_passwd_key) + getAccountNumber(lastAccount), null); - editor.putString(getString(R.string.pref_domain_key) + getAccountNumber(lastAccount), null); - editor.putString(getString(R.string.pref_proxy_key) + getAccountNumber(lastAccount), null); - editor.putBoolean(getString(R.string.pref_enable_outbound_proxy_key) + getAccountNumber(lastAccount), false); - editor.putBoolean(getString(R.string.pref_disable_account_key) + getAccountNumber(lastAccount), false); - - int defaultAccount = prefs.getInt(getString(R.string.pref_default_account_key), 0); - if (defaultAccount > n) { - editor.putInt(getString(R.string.pref_default_account_key), defaultAccount - 1); - } - - editor.putInt(getString(R.string.pref_extra_accounts), nbAccounts - 1); + if (n != 0) { + int lastAccount = nbAccounts - 1; + editor.putString(getString(R.string.pref_username_key) + getAccountNumber(lastAccount), null); + editor.putString(getString(R.string.pref_passwd_key) + getAccountNumber(lastAccount), null); + editor.putString(getString(R.string.pref_domain_key) + getAccountNumber(lastAccount), null); + editor.putString(getString(R.string.pref_proxy_key) + getAccountNumber(lastAccount), null); + editor.putBoolean(getString(R.string.pref_enable_outbound_proxy_key) + getAccountNumber(lastAccount), false); + editor.putBoolean(getString(R.string.pref_disable_account_key) + getAccountNumber(lastAccount), false); + + int defaultAccount = prefs.getInt(getString(R.string.pref_default_account_key), 0); + if (defaultAccount > n) { + editor.putInt(getString(R.string.pref_default_account_key), defaultAccount - 1); + } + editor.putInt(getString(R.string.pref_extra_accounts), nbAccounts - 1); + } else if (n == 0 && nbAccounts <= 1) { + editor.putString(getString(R.string.pref_username_key), ""); + editor.putString(getString(R.string.pref_passwd_key), ""); + editor.putString(getString(R.string.pref_domain_key), ""); + } else { + editor.putInt(getString(R.string.pref_extra_accounts), nbAccounts - 1); + } + editor.commit(); LinphoneActivity.instance().displaySettings(); @@ -148,7 +156,6 @@ public class AccountPreferencesFragment extends PreferencesListFragment { SharedPreferences.Editor editor = prefs.edit(); editor.putInt(getString(R.string.pref_default_account_key), n); editor.commit(); - delete.setEnabled(false); disable.setEnabled(false); Compatibility.setPreferenceChecked(disable, false); preference.setEnabled(false); @@ -170,7 +177,7 @@ public class AccountPreferencesFragment extends PreferencesListFragment { SharedPreferences prefs = getPreferenceManager().getSharedPreferences(); int n = prefs.getInt(getString(R.string.pref_extra_accounts), 1); - String keyUsername = getString(R.string.pref_username_key) + (n-1 == 0 ? "" : Integer.toString(n-1)); + String keyUsername = getString(R.string.pref_username_key) + getAccountNumber(n-1); if (prefs.getString(keyUsername, "").equals("")) { //If not, we suppress it to not display a blank field diff --git a/src/org/linphone/PreferencesFragment.java b/src/org/linphone/PreferencesFragment.java index 95720c3ad..89360de57 100644 --- a/src/org/linphone/PreferencesFragment.java +++ b/src/org/linphone/PreferencesFragment.java @@ -257,6 +257,10 @@ public class PreferencesFragment extends PreferencesListFragment implements EcCa addAccount.setTitle(getString(R.string.pref_add_account)); addAccount.setOnPreferenceClickListener(new OnPreferenceClickListener() { public boolean onPreferenceClick(Preference preference) { + SharedPreferences prefs = getPreferenceManager().getSharedPreferences(); + nbAccounts = prefs.getInt(getString(R.string.pref_extra_accounts), 0); + prefs.edit().putInt(getString(R.string.pref_extra_accounts), nbAccounts+1).commit(); + addExtraAccountPreferencesButton(accounts, nbAccounts, true); LinphoneActivity.instance().displayAccountSettings(nbAccounts); nbAccounts++;