From 97ac11bc478f1d7663533d75c4008d9d8a6134fe Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 5 Nov 2012 16:37:18 +0100 Subject: [PATCH 1/3] Allow to remove all accounts --- .../linphone/AccountPreferencesFragment.java | 41 +++++++++++-------- src/org/linphone/PreferencesFragment.java | 4 ++ 2 files changed, 28 insertions(+), 17 deletions(-) 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++; From be0f7fa3d701e2bb08991e2ab2019de1d22d5a58 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 19 Nov 2012 15:33:51 +0100 Subject: [PATCH 2/3] Update status bar & notification when all accounts are removed Conflicts: src/org/linphone/LinphoneManager.java --- res/layout/status.xml | 2 +- src/org/linphone/LinphoneManager.java | 6 ++++-- src/org/linphone/LinphoneService.java | 3 +++ src/org/linphone/StatusFragment.java | 4 ++-- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/res/layout/status.xml b/res/layout/status.xml index fab32ec51..72e07d701 100644 --- a/res/layout/status.xml +++ b/res/layout/status.xml @@ -169,7 +169,7 @@ android:contentDescription="@string/content_description_led" android:id="@+id/statusLed" android:paddingLeft="5dp" - android:src="@drawable/led_error" + android:src="@drawable/led_disconnected" android:adjustViewBounds="true" android:layout_centerVertical="true" android:layout_width="wrap_content" diff --git a/src/org/linphone/LinphoneManager.java b/src/org/linphone/LinphoneManager.java index 7099ebf55..c0f6dc055 100644 --- a/src/org/linphone/LinphoneManager.java +++ b/src/org/linphone/LinphoneManager.java @@ -592,7 +592,7 @@ public final class LinphoneManager implements LinphoneCoreListener { copyIfNotExist(R.raw.ringback,mRingbackSoundFile); copyIfNotExist(R.raw.toy_mono,mPauseSoundFile); copyFromPackage(R.raw.linphonerc, new File(mLinphoneInitialConfigFile).getName()); - copyIfNotExist(R.raw.lpconfig, new File(mLPConfigXsd).getName()); + //copyIfNotExist(R.raw.lpconfig, new File(mLPConfigXsd).getName()); copyIfNotExist(R.raw.rootca, new File(mLinphoneRootCaFile).getName()); } private void copyIfNotExist(int ressourceId,String target) throws IOException { @@ -665,7 +665,7 @@ public final class LinphoneManager implements LinphoneCoreListener { } LinphoneProxyConfig lDefaultProxyConfig = mLc.getDefaultProxyConfig(); - if (lDefaultProxyConfig !=null) { + if (lDefaultProxyConfig != null) { //prefix String lPrefix = getPrefString(R.string.pref_prefix_key, null); if (lPrefix != null) { @@ -673,6 +673,8 @@ public final class LinphoneManager implements LinphoneCoreListener { } //escape + lDefaultProxyConfig.setDialEscapePlus(getPrefBoolean(R.string.pref_escape_plus_key, false)); + } else if (LinphoneService.isReady()) { + LinphoneService.instance().onRegistrationStateChanged(RegistrationState.RegistrationNone, null); } } diff --git a/src/org/linphone/LinphoneService.java b/src/org/linphone/LinphoneService.java index 6481260c1..fee07cf23 100644 --- a/src/org/linphone/LinphoneService.java +++ b/src/org/linphone/LinphoneService.java @@ -518,6 +518,9 @@ public final class LinphoneService extends Service implements LinphoneServiceLis if ((state == RegistrationState.RegistrationFailed || state == RegistrationState.RegistrationCleared) && (LinphoneManager.getLc().getDefaultProxyConfig() == null || !LinphoneManager.getLc().getDefaultProxyConfig().isRegistered())) { sendNotification(IC_LEVEL_OFFLINE, R.string.notification_register_failure); } + if (state == RegistrationState.RegistrationNone) { + sendNotification(IC_LEVEL_OFFLINE, R.string.notification_started); + } mHandler.post(new Runnable() { public void run() { diff --git a/src/org/linphone/StatusFragment.java b/src/org/linphone/StatusFragment.java index 8f27c5e3b..0309ce5df 100644 --- a/src/org/linphone/StatusFragment.java +++ b/src/org/linphone/StatusFragment.java @@ -231,7 +231,7 @@ public class StatusFragment extends Fragment { e.printStackTrace(); } - return -1; + return R.drawable.led_disconnected; } private String getStatusIconText(LinphoneCore.RegistrationState state) { @@ -253,7 +253,7 @@ public class StatusFragment extends Fragment { e.printStackTrace(); } - return null; + return context.getString(R.string.status_not_connected); } private void startCallQuality() { From 6eb4cb5c7f70b78e0cb30f5412a4255fc55a8a35 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 19 Nov 2012 14:12:46 +0100 Subject: [PATCH 3/3] Cherry-picking for allowing disable/remove of the only account finished --- src/org/linphone/AccountPreferencesFragment.java | 2 +- src/org/linphone/LinphoneActivity.java | 2 ++ src/org/linphone/LinphoneManager.java | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/org/linphone/AccountPreferencesFragment.java b/src/org/linphone/AccountPreferencesFragment.java index 036a57de7..76c38cc53 100644 --- a/src/org/linphone/AccountPreferencesFragment.java +++ b/src/org/linphone/AccountPreferencesFragment.java @@ -96,7 +96,7 @@ public class AccountPreferencesFragment extends PreferencesListFragment { outboundProxy.setKey(getString(R.string.pref_enable_outbound_proxy_key) + key); final Preference disable = advanced.getPreference(2); - disable.setEnabled(prefs.getInt(getString(R.string.pref_default_account_key), 0) != n); + disable.setEnabled(true); Compatibility.setPreferenceChecked(disable, prefs.getBoolean(getString(R.string.pref_disable_account_key) + key, false)); disable.setKey(getString(R.string.pref_disable_account_key) + key); diff --git a/src/org/linphone/LinphoneActivity.java b/src/org/linphone/LinphoneActivity.java index ffae79063..db4ab909f 100644 --- a/src/org/linphone/LinphoneActivity.java +++ b/src/org/linphone/LinphoneActivity.java @@ -762,6 +762,8 @@ public class LinphoneActivity extends FragmentActivity implements LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); if (lc != null && lc.getDefaultProxyConfig() != null) statusFragment.registrationStateChanged(lc.getDefaultProxyConfig().getState()); + else + statusFragment.registrationStateChanged(RegistrationState.RegistrationNone); } } diff --git a/src/org/linphone/LinphoneManager.java b/src/org/linphone/LinphoneManager.java index c0f6dc055..7ba4aad95 100644 --- a/src/org/linphone/LinphoneManager.java +++ b/src/org/linphone/LinphoneManager.java @@ -592,7 +592,7 @@ public final class LinphoneManager implements LinphoneCoreListener { copyIfNotExist(R.raw.ringback,mRingbackSoundFile); copyIfNotExist(R.raw.toy_mono,mPauseSoundFile); copyFromPackage(R.raw.linphonerc, new File(mLinphoneInitialConfigFile).getName()); - //copyIfNotExist(R.raw.lpconfig, new File(mLPConfigXsd).getName()); + copyIfNotExist(R.raw.lpconfig, new File(mLPConfigXsd).getName()); copyIfNotExist(R.raw.rootca, new File(mLinphoneRootCaFile).getName()); } private void copyIfNotExist(int ressourceId,String target) throws IOException {