From 71efda66cea6e4ef3bea3b529b508caf33b2aa0e Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 20 Nov 2019 14:41:12 +0100 Subject: [PATCH] Auto reload of history views when a call ends --- .../history/HistoryDetailFragment.java | 23 +++++++++++++++++++ .../org/linphone/history/HistoryFragment.java | 16 +++++++++++++ 2 files changed, 39 insertions(+) diff --git a/app/src/main/java/org/linphone/history/HistoryDetailFragment.java b/app/src/main/java/org/linphone/history/HistoryDetailFragment.java index bcbaccd59..611c2cd5e 100644 --- a/app/src/main/java/org/linphone/history/HistoryDetailFragment.java +++ b/app/src/main/java/org/linphone/history/HistoryDetailFragment.java @@ -37,12 +37,14 @@ import org.linphone.contacts.ContactsManager; import org.linphone.contacts.LinphoneContact; import org.linphone.contacts.views.ContactAvatar; import org.linphone.core.Address; +import org.linphone.core.Call; import org.linphone.core.CallLog; import org.linphone.core.ChatRoom; import org.linphone.core.ChatRoomBackend; import org.linphone.core.ChatRoomListenerStub; import org.linphone.core.ChatRoomParams; import org.linphone.core.Core; +import org.linphone.core.CoreListenerStub; import org.linphone.core.Factory; import org.linphone.core.FriendCapability; import org.linphone.core.ProxyConfig; @@ -60,6 +62,7 @@ public class HistoryDetailFragment extends Fragment { private ChatRoom mChatRoom; private ChatRoomListenerStub mChatRoomCreationListener; private ListView mLogsList; + private CoreListenerStub mListener; @Override public View onCreateView( @@ -167,14 +170,34 @@ public class HistoryDetailFragment extends Fragment { mLogsList = view.findViewById(R.id.logs_list); displayHistory(); + mListener = + new CoreListenerStub() { + @Override + public void onCallStateChanged( + Core core, Call call, Call.State state, String message) { + if (state == Call.State.End || state == Call.State.Error) { + displayHistory(); + } + } + }; + return view; } + @Override + public void onResume() { + super.onResume(); + + LinphoneManager.getCore().addListener(mListener); + } + @Override public void onPause() { if (mChatRoom != null) { mChatRoom.removeListener(mChatRoomCreationListener); } + LinphoneManager.getCore().removeListener(mListener); + super.onPause(); } diff --git a/app/src/main/java/org/linphone/history/HistoryFragment.java b/app/src/main/java/org/linphone/history/HistoryFragment.java index ede322fb7..cdffb6414 100644 --- a/app/src/main/java/org/linphone/history/HistoryFragment.java +++ b/app/src/main/java/org/linphone/history/HistoryFragment.java @@ -45,6 +45,7 @@ import org.linphone.core.Address; import org.linphone.core.Call; import org.linphone.core.CallLog; import org.linphone.core.Core; +import org.linphone.core.CoreListenerStub; import org.linphone.utils.SelectableHelper; public class HistoryFragment extends Fragment @@ -62,6 +63,7 @@ public class HistoryFragment extends Fragment private List mLogs; private HistoryAdapter mHistoryAdapter; private SelectableHelper mSelectionHelper; + private CoreListenerStub mListener; @Override public View onCreateView( @@ -96,14 +98,27 @@ public class HistoryFragment extends Fragment mAllCalls.setEnabled(false); mOnlyDisplayMissedCalls = false; + mListener = + new CoreListenerStub() { + @Override + public void onCallStateChanged( + Core core, Call call, Call.State state, String message) { + if (state == Call.State.End || state == Call.State.Error) { + reloadData(); + } + } + }; + return view; } @Override public void onResume() { super.onResume(); + ContactsManager.getInstance().addContactsListener(this); LinphoneContext.instance().addCoreStartedListener(this); + LinphoneManager.getCore().addListener(mListener); reloadData(); } @@ -112,6 +127,7 @@ public class HistoryFragment extends Fragment public void onPause() { ContactsManager.getInstance().removeContactsListener(this); LinphoneContext.instance().removeCoreStartedListener(this); + LinphoneManager.getCore().removeListener(mListener); super.onPause(); }