From c3da8a9fe627e89944431fe8b9decce490a8bf1a Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 3 Dec 2014 11:02:53 +0100 Subject: [PATCH] Fix status fragment registration state --- src/org/linphone/LinphoneActivity.java | 22 +++------------- src/org/linphone/LinphonePreferences.java | 7 ++--- src/org/linphone/StatusFragment.java | 31 +++++++++++++++-------- 3 files changed, 26 insertions(+), 34 deletions(-) diff --git a/src/org/linphone/LinphoneActivity.java b/src/org/linphone/LinphoneActivity.java index 35ce49d33..8b36aae65 100644 --- a/src/org/linphone/LinphoneActivity.java +++ b/src/org/linphone/LinphoneActivity.java @@ -683,11 +683,6 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene public void updateStatusFragment(StatusFragment fragment) { statusFragment = fragment; - - LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); - if (lc != null && lc.getDefaultProxyConfig() != null) { - statusFragment.registrationStateChanged(LinphoneManager.getLc().getDefaultProxyConfig().getState()); - } } public void displaySettings() { @@ -768,21 +763,12 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene getChatStorage().updateMessageStatus(to, id, newState); } + @Override public void registrationState(LinphoneCore lc, LinphoneProxyConfig proxy, LinphoneCore.RegistrationState state, String smessage) { - if (statusFragment != null) { - if (lc != null) - if(lc.getDefaultProxyConfig() == null) - statusFragment.registrationStateChanged(proxy.getState()); - else - statusFragment.registrationStateChanged(lc.getDefaultProxyConfig().getState()); - else - statusFragment.registrationStateChanged(RegistrationState.RegistrationNone); - } - - if(state.equals(RegistrationState.RegistrationCleared)){ - if(lc != null){ + if (state.equals(RegistrationState.RegistrationCleared)) { + if (lc != null) { LinphoneAuthInfo authInfo = lc.findAuthInfo(proxy.getIdentity(), proxy.getRealm(), proxy.getDomain()); - if(authInfo != null) + if (authInfo != null) lc.removeAuthInfo(authInfo); } } diff --git a/src/org/linphone/LinphonePreferences.java b/src/org/linphone/LinphonePreferences.java index c3bfbbda5..002f3b8ac 100644 --- a/src/org/linphone/LinphonePreferences.java +++ b/src/org/linphone/LinphonePreferences.java @@ -20,13 +20,12 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ import org.linphone.core.LinphoneAddress; +import org.linphone.core.LinphoneAddress.TransportType; import org.linphone.core.LinphoneAuthInfo; import org.linphone.core.LinphoneCore; -import org.linphone.core.LinphoneAddress.TransportType; import org.linphone.core.LinphoneCore.AdaptiveRateAlgorithm; import org.linphone.core.LinphoneCore.FirewallPolicy; import org.linphone.core.LinphoneCore.MediaEncryption; -import org.linphone.core.LinphoneCore.RegistrationState; import org.linphone.core.LinphoneCore.Transports; import org.linphone.core.LinphoneCoreException; import org.linphone.core.LinphoneCoreFactory; @@ -690,9 +689,7 @@ public class LinphonePreferences { if (proxyCfg != null) getLc().removeProxyConfig(proxyCfg); - if (getLc().getProxyConfigList().length == 0) { - LinphoneActivity.instance().getStatusFragment().registrationStateChanged(RegistrationState.RegistrationNone); - } else { + if (getLc().getProxyConfigList().length != 0) { resetDefaultProxyConfig(); getLc().refreshRegisters(); } diff --git a/src/org/linphone/StatusFragment.java b/src/org/linphone/StatusFragment.java index 7ef95d0ff..279c0ee67 100644 --- a/src/org/linphone/StatusFragment.java +++ b/src/org/linphone/StatusFragment.java @@ -30,6 +30,7 @@ import org.linphone.core.LinphoneCore; import org.linphone.core.LinphoneCore.MediaEncryption; import org.linphone.core.LinphoneCore.RegistrationState; import org.linphone.core.LinphoneCoreListener.LinphoneNotifyListener; +import org.linphone.core.LinphoneCoreListener.LinphoneRegistrationStateListener; import org.linphone.core.LinphoneEvent; import org.linphone.core.LinphoneProxyConfig; import org.linphone.core.PayloadType; @@ -58,7 +59,7 @@ import android.widget.TextView; /** * @author Sylvain Berfini */ -public class StatusFragment extends Fragment implements LinphoneNotifyListener { +public class StatusFragment extends Fragment implements LinphoneNotifyListener, LinphoneRegistrationStateListener { private Handler mHandler = new Handler(); private Handler refreshHandler = new Handler(); private TextView statusText, exit, voicemailCount; @@ -111,6 +112,11 @@ public class StatusFragment extends Fragment implements LinphoneNotifyListener { // We create it once to not delay the first display populateSliderContent(); + + LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); + if (lc != null) { + lc.addListener(this); + } return view; } @@ -182,7 +188,8 @@ public class StatusFragment extends Fragment implements LinphoneNotifyListener { } } - public void registrationStateChanged(final RegistrationState state) { + @Override + public void registrationState(LinphoneCore lc, LinphoneProxyConfig proxy, final LinphoneCore.RegistrationState state, String smessage) { if (!isAttached || !LinphoneService.isReady()) { return; } @@ -325,11 +332,8 @@ public class StatusFragment extends Fragment implements LinphoneNotifyListener { @Override public void onResume() { super.onResume(); + LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); - if (lc != null) { - lc.addListener(this); - } - LinphoneCall call = lc.getCurrentCall(); if (isInCall && (call != null || lc.getConferenceSize() > 1 || lc.getCallsNb() > 0)) { if (call != null) { @@ -361,11 +365,6 @@ public class StatusFragment extends Fragment implements LinphoneNotifyListener { @Override public void onPause() { - LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); - if (lc != null) { - lc.removeListener(this); - } - super.onPause(); if (mCallQualityUpdater != null) { @@ -374,6 +373,16 @@ public class StatusFragment extends Fragment implements LinphoneNotifyListener { } } + @Override + public void onDestroy() { + LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); + if (lc != null) { + lc.removeListener(this); + } + + super.onDestroy(); + } + public void refreshStatusItems(final LinphoneCall call, boolean isVideoEnabled) { if (call != null) { voicemailCount.setVisibility(View.GONE);