From b01a4d19def51511de91ed3a6bdcaf5e1421535c Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 30 Jul 2012 17:41:12 +0200 Subject: [PATCH] Refresh account status led when needed --- src/org/linphone/LinphoneManager.java | 40 +++++++++++++---------- src/org/linphone/PreferencesActivity.java | 17 +++++++--- 2 files changed, 35 insertions(+), 22 deletions(-) diff --git a/src/org/linphone/LinphoneManager.java b/src/org/linphone/LinphoneManager.java index 59cc0983c..af5c36430 100644 --- a/src/org/linphone/LinphoneManager.java +++ b/src/org/linphone/LinphoneManager.java @@ -563,8 +563,28 @@ public final class LinphoneManager implements LinphoneCoreListener { mLc.tunnelAddServerAndMirror(host, port, 12345,500); manageTunnelServer(info); } + + public void initAccounts() throws LinphoneCoreException { + for (int i = 0; i < getPrefExtraAccountsNumber(); i++) { + if (getPrefBoolean(getString(R.string.pref_disable_account_key) + i, false)) { + continue; + } + initAccount(i == 0 ? "" : String.valueOf(i), i == 0, i == getPrefInt(R.string.pref_default_account, 0)); + } + + LinphoneProxyConfig lDefaultProxyConfig = mLc.getDefaultProxyConfig(); + if (lDefaultProxyConfig !=null) { + //prefix + String lPrefix = getPrefString(R.string.pref_prefix_key, null); + if (lPrefix != null) { + lDefaultProxyConfig.setDialPrefix(lPrefix); + } + //escape + + lDefaultProxyConfig.setDialEscapePlus(getPrefBoolean(R.string.pref_escape_plus_key,false)); + } + } - public void initAccount(String key, boolean cleanBefore, boolean defaultAccount) throws LinphoneCoreException { + private void initAccount(String key, boolean cleanBefore, boolean defaultAccount) throws LinphoneCoreException { if (cleanBefore) { mLc.clearAuthInfos(); mLc.clearProxyConfigs(); @@ -657,23 +677,7 @@ public final class LinphoneManager implements LinphoneCoreListener { //accounts try { - for (int i = 0; i < getPrefExtraAccountsNumber(); i++) { - if (getPrefBoolean(getString(R.string.pref_disable_account_key) + i, false)) { - continue; - } - initAccount(i == 0 ? "" : String.valueOf(i), i == 0, i == getPrefInt(R.string.pref_default_account, 0)); - } - - LinphoneProxyConfig lDefaultProxyConfig = mLc.getDefaultProxyConfig(); - if (lDefaultProxyConfig !=null) { - //prefix - String lPrefix = getPrefString(R.string.pref_prefix_key, null); - if (lPrefix != null) { - lDefaultProxyConfig.setDialPrefix(lPrefix); - } - //escape + - lDefaultProxyConfig.setDialEscapePlus(getPrefBoolean(R.string.pref_escape_plus_key,false)); - } + initAccounts(); //init network state NetworkInfo networkInfo = mConnectivityManager.getActiveNetworkInfo(); diff --git a/src/org/linphone/PreferencesActivity.java b/src/org/linphone/PreferencesActivity.java index b10f20f24..c883248e1 100644 --- a/src/org/linphone/PreferencesActivity.java +++ b/src/org/linphone/PreferencesActivity.java @@ -39,6 +39,7 @@ import org.linphone.LinphoneManager.LinphoneConfigException; import org.linphone.core.LinphoneCore; import org.linphone.core.LinphoneCore.EcCalibratorStatus; import org.linphone.core.LinphoneCore.MediaEncryption; +import org.linphone.core.LinphoneCore.RegistrationState; import org.linphone.core.LinphoneCoreException; import org.linphone.core.LinphoneProxyConfig; import org.linphone.core.Log; @@ -162,10 +163,14 @@ public class PreferencesActivity extends LinphonePreferencesActivity implements for (LinphoneProxyConfig lpc : LinphoneManager.getLc().getProxyConfigList()) { if (lpc.getIdentity().contains(prefs.getString(keyUsername, "")) && lpc.getIdentity().contains(prefs.getString(keyDomain, ""))) { - if (lpc.getState() == LinphoneCore.RegistrationState.RegistrationOk) + while (lpc.getState() == RegistrationState.RegistrationProgress || lpc.getState() == RegistrationState.RegistrationNone) + {}; + + if (lpc.getState() == LinphoneCore.RegistrationState.RegistrationOk) { me.setWidgetLayoutResource(R.layout.preference_led_connected); - else + } else { me.setWidgetLayoutResource(R.layout.preference_led_not_connected); + } } } @@ -186,6 +191,11 @@ public class PreferencesActivity extends LinphonePreferencesActivity implements editor.commit(); } + try { + LinphoneManager.getInstance().initAccounts(); + } catch (Exception e) { + e.printStackTrace(); + } createDynamicAccountsPreferences(); } @@ -473,7 +483,7 @@ public class PreferencesActivity extends LinphonePreferencesActivity implements private void writeBoolean(int key, boolean value) { prefs().edit().putBoolean(getString(key), value).commit(); } - + @Override protected void onPause() { super.onPause(); @@ -499,5 +509,4 @@ public class PreferencesActivity extends LinphonePreferencesActivity implements LinphoneActivity.instance().showPreferenceErrorDialog(e.getMessage()); } } - }