diff options
-rw-r--r-- | res/drawable/btn_compound_audio.xml | 3 | ||||
-rw-r--r-- | res/drawable/btn_compound_mute.xml | 3 | ||||
-rw-r--r-- | src/com/android/incallui/Call.java | 6 | ||||
-rw-r--r-- | src/com/android/incallui/CallButtonPresenter.java | 43 |
4 files changed, 47 insertions, 8 deletions
diff --git a/res/drawable/btn_compound_audio.xml b/res/drawable/btn_compound_audio.xml index 568f705b..222ff1b4 100644 --- a/res/drawable/btn_compound_audio.xml +++ b/res/drawable/btn_compound_audio.xml @@ -87,8 +87,7 @@ <item android:id="@+id/speakerphoneItem"> <bitmap android:src="@drawable/ic_toolbar_speaker_on" android:gravity="center" - android:tint="@color/selectable_icon_tint" - android:autoMirrored="true" /> + android:tint="@color/selectable_icon_tint" /> </item> <!-- Generic "audio mode" icon. --> diff --git a/res/drawable/btn_compound_mute.xml b/res/drawable/btn_compound_mute.xml index 53be386e..68a8c9b3 100644 --- a/res/drawable/btn_compound_mute.xml +++ b/res/drawable/btn_compound_mute.xml @@ -24,8 +24,7 @@ <item> <bitmap android:src="@drawable/ic_toolbar_mic_off" android:gravity="center" - android:tint="@color/selectable_icon_tint" - android:autoMirrored="true" /> + android:tint="@color/selectable_icon_tint" /> </item> </layer-list> diff --git a/src/com/android/incallui/Call.java b/src/com/android/incallui/Call.java index d21da788..45a753f1 100644 --- a/src/com/android/incallui/Call.java +++ b/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/src/com/android/incallui/CallButtonPresenter.java b/src/com/android/incallui/CallButtonPresenter.java index f6228bc2..ca4eb883 100644 --- a/src/com/android/incallui/CallButtonPresenter.java +++ b/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() { |