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/AccountPreferencesFragment.java b/src/org/linphone/AccountPreferencesFragment.java index 1fe1e7b31..76c38cc53 100644 --- a/src/org/linphone/AccountPreferencesFragment.java +++ b/src/org/linphone/AccountPreferencesFragment.java @@ -96,12 +96,12 @@ 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); 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/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 32806b87d..89e634465 100644 --- a/src/org/linphone/LinphoneManager.java +++ b/src/org/linphone/LinphoneManager.java @@ -666,7 +666,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) { @@ -674,6 +674,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 5e5d47bb2..257ea0b35 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/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++; 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() {