diff options
author | Tyler Gunn <tgunn@google.com> | 2014-10-02 15:25:08 -0700 |
---|---|---|
committer | Tyler Gunn <tgunn@google.com> | 2014-10-02 22:25:30 +0000 |
commit | 8d68a01edbd8684cb4fb13111cbc1fd4d5ff8d1c (patch) | |
tree | 24e9e1efac018623b95cae30f651f83189e7a8c4 /InCallUI | |
parent | 61cd731e15ca8b8a9c7044f4a692f566f6ab7bc0 (diff) |
Conference call merge button visibility issue. (2/2)
- Adding onConferenceableCallsChanged override in Incall Call object.
This ensures that changes to the conferenceable calls list for the
active call triggers UI updates as required.
- Added onDetailsChanged listener in CallButtonPresenter; this ensures
that changes to the call which occur without it changing status are
reflected in the UI.
Bug: 17767618
Change-Id: I6c6175c0bab46989ddfc4c4d8f2087e527febbeb
Diffstat (limited to 'InCallUI')
-rw-r--r-- | InCallUI/src/com/android/incallui/Call.java | 6 | ||||
-rw-r--r-- | InCallUI/src/com/android/incallui/CallButtonPresenter.java | 43 |
2 files changed, 45 insertions, 4 deletions
diff --git a/InCallUI/src/com/android/incallui/Call.java b/InCallUI/src/com/android/incallui/Call.java index d21da7888..45a753f10 100644 --- a/InCallUI/src/com/android/incallui/Call.java +++ b/InCallUI/src/com/android/incallui/Call.java @@ -167,6 +167,12 @@ public final class Call { public void onCallDestroyed(android.telecom.Call call) { call.removeListener(mTelecommCallListener); } + + @Override + public void onConferenceableCallsChanged(android.telecom.Call call, + List<android.telecom.Call> conferenceableCalls) { + update(); + } }; private final android.telecom.Call mTelecommCall; diff --git a/InCallUI/src/com/android/incallui/CallButtonPresenter.java b/InCallUI/src/com/android/incallui/CallButtonPresenter.java index f6228bc23..ca4eb8838 100644 --- a/InCallUI/src/com/android/incallui/CallButtonPresenter.java +++ b/InCallUI/src/com/android/incallui/CallButtonPresenter.java @@ -27,14 +27,18 @@ import com.android.incallui.AudioModeProvider.AudioModeListener; import com.android.incallui.InCallPresenter.InCallState; import com.android.incallui.InCallPresenter.InCallStateListener; import com.android.incallui.InCallPresenter.IncomingCallListener; +import com.android.incallui.InCallPresenter.InCallDetailsListener; import android.telephony.PhoneNumberUtils; +import java.util.Objects; + /** * Logic for call buttons. */ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButtonUi> - implements InCallStateListener, AudioModeListener, IncomingCallListener { + implements InCallStateListener, AudioModeListener, IncomingCallListener, + InCallDetailsListener { private Call mCall; private boolean mAutomaticallyMuted = false; @@ -52,6 +56,7 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto // register for call state changes last InCallPresenter.getInstance().addListener(this); InCallPresenter.getInstance().addIncomingCallListener(this); + InCallPresenter.getInstance().addDetailsListener(this); } @Override @@ -61,6 +66,7 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto InCallPresenter.getInstance().removeListener(this); AudioModeProvider.getInstance().removeListener(this); InCallPresenter.getInstance().removeIncomingCallListener(this); + InCallPresenter.getInstance().removeDetailsListener(this); } @Override @@ -93,6 +99,25 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto updateUi(newState, mCall); } + /** + * Updates the user interface in response to a change in the details of a call. + * Currently handles changes to the call buttons in response to a change in the details for a + * call. This is important to ensure changes to the active call are reflected in the available + * buttons. + * + * @param call The active call. + * @param details The call details. + */ + @Override + public void onDetailsChanged(Call call, android.telecom.Call.Details details) { + // If the details change is not for the currently active call no update is required. + if (!Objects.equals(call, mCall)) { + return; + } + + updateCallButtons(call, getUi().getContext()); + } + @Override public void onIncomingCall(InCallState oldState, InCallState newState, Call call) { onStateChange(oldState, newState, CallList.getInstance()); @@ -295,13 +320,23 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto return; } - if (call.isVideoCall(ui.getContext())) { + updateCallButtons(call, ui.getContext()); + + ui.enableMute(call.can(PhoneCapabilities.MUTE)); + } + + /** + * Updates the buttons applicable for the UI. + * + * @param call The active call. + * @param context The context. + */ + private void updateCallButtons(Call call, Context context) { + if (call.isVideoCall(context)) { updateVideoCallButtons(); } else { updateVoiceCallButtons(call); } - - ui.enableMute(call.can(PhoneCapabilities.MUTE)); } private void updateVideoCallButtons() { |