summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/drawable/btn_compound_audio.xml3
-rw-r--r--res/drawable/btn_compound_mute.xml3
-rw-r--r--src/com/android/incallui/Call.java6
-rw-r--r--src/com/android/incallui/CallButtonPresenter.java43
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() {