summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/layout/call_button_fragment.xml13
-rw-r--r--src/com/android/incallui/CallButtonFragment.java37
-rw-r--r--src/com/android/incallui/CallToggleButton.java54
3 files changed, 77 insertions, 27 deletions
diff --git a/res/layout/call_button_fragment.xml b/res/layout/call_button_fragment.xml
index 56d65b07..2ca64036 100644
--- a/res/layout/call_button_fragment.xml
+++ b/res/layout/call_button_fragment.xml
@@ -47,7 +47,8 @@
android:layout_height="wrap_content"
android:paddingStart="@dimen/button_cluster_horizontal_padding"
android:paddingEnd="@dimen/button_cluster_horizontal_padding"
- android:gravity="bottom|center_horizontal">
+ android:gravity="bottom|center_horizontal"
+ android:baselineAligned="false">
<!-- This row only ever shows either 4 or 5 buttons. This may depend on whether the device
supports "Hold" (i.e. 4 buttons on CDMA devices, 5 buttons on GSM devices.) or whether
@@ -81,7 +82,7 @@
<!-- MIDDLE LEFT SLOT ================================================================== -->
<!-- "Mute" -->
- <ImageButton android:id="@+id/muteButton"
+ <com.android.incallui.CallToggleButton android:id="@+id/muteButton"
style="@style/InCallCompoundButton"
android:background="@drawable/btn_compound_mute"
android:contentDescription="@string/onscreenMuteText" />
@@ -89,7 +90,7 @@
<!-- CENTER SLOT ======================================================================= -->
<!-- "Dialpad" -->
- <ImageButton android:id="@+id/dialpadButton"
+ <com.android.incallui.CallToggleButton android:id="@+id/dialpadButton"
style="@style/InCallCompoundButton"
android:background="@drawable/btn_compound_dialpad"
android:contentDescription="@string/onscreenShowDialpadText" />
@@ -100,7 +101,7 @@
other of these must always be set to GONE. -->
<!-- "Hold" -->
- <ImageButton android:id="@+id/holdButton"
+ <com.android.incallui.CallToggleButton android:id="@+id/holdButton"
style="@style/InCallCompoundButton"
android:background="@drawable/btn_compound_hold"
android:contentDescription="@string/onscreenHoldText" />
@@ -120,7 +121,7 @@
android:visibility="gone" />
<!-- "Switch camera" for video calls. -->
- <ImageButton android:id="@+id/switchCameraButton"
+ <com.android.incallui.CallToggleButton android:id="@+id/switchCameraButton"
style="@style/InCallCompoundButton"
android:background="@drawable/btn_compound_video_switch"
android:contentDescription="@string/onscreenSwitchCameraText"
@@ -148,7 +149,7 @@
android:visibility="gone" />
<!-- "Switch camera" for video calls. -->
- <ImageButton android:id="@+id/pauseVideoButton"
+ <com.android.incallui.CallToggleButton android:id="@+id/pauseVideoButton"
style="@style/InCallCompoundButton"
android:background="@drawable/btn_compound_video_off"
android:contentDescription="@string/onscreenPauseVideoText"
diff --git a/src/com/android/incallui/CallButtonFragment.java b/src/com/android/incallui/CallButtonFragment.java
index 5c67862f..bb23a881 100644
--- a/src/com/android/incallui/CallButtonFragment.java
+++ b/src/com/android/incallui/CallButtonFragment.java
@@ -50,18 +50,18 @@ import com.android.contacts.common.util.MaterialColorMapUtils.MaterialPalette;
public class CallButtonFragment
extends BaseFragment<CallButtonPresenter, CallButtonPresenter.CallButtonUi>
implements CallButtonPresenter.CallButtonUi, OnMenuItemClickListener, OnDismissListener,
- View.OnClickListener, CompoundButton.OnCheckedChangeListener {
+ View.OnClickListener {
private ImageButton mAudioButton;
private ImageButton mChangeToVoiceButton;
- private ImageButton mMuteButton;
- private ImageButton mShowDialpadButton;
- private ImageButton mHoldButton;
+ private CompoundButton mMuteButton;
+ private CompoundButton mShowDialpadButton;
+ private CompoundButton mHoldButton;
private ImageButton mSwapButton;
private ImageButton mChangeToVideoButton;
- private ImageButton mSwitchCameraButton;
+ private CompoundButton mSwitchCameraButton;
private ImageButton mAddCallButton;
private ImageButton mMergeButton;
- private ImageButton mPauseVideoButton;
+ private CompoundButton mPauseVideoButton;
private ImageButton mOverflowButton;
private PopupMenu mAudioModePopup;
@@ -102,23 +102,23 @@ public class CallButtonFragment
mAudioButton.setOnClickListener(this);
mChangeToVoiceButton = (ImageButton) parent.findViewById(R.id.changeToVoiceButton);
mChangeToVoiceButton. setOnClickListener(this);
- mMuteButton = (ImageButton) parent.findViewById(R.id.muteButton);
+ mMuteButton = (CompoundButton) parent.findViewById(R.id.muteButton);
mMuteButton.setOnClickListener(this);
- mShowDialpadButton = (ImageButton) parent.findViewById(R.id.dialpadButton);
+ mShowDialpadButton = (CompoundButton) parent.findViewById(R.id.dialpadButton);
mShowDialpadButton.setOnClickListener(this);
- mHoldButton = (ImageButton) parent.findViewById(R.id.holdButton);
+ mHoldButton = (CompoundButton) parent.findViewById(R.id.holdButton);
mHoldButton.setOnClickListener(this);
mSwapButton = (ImageButton) parent.findViewById(R.id.swapButton);
mSwapButton.setOnClickListener(this);
mChangeToVideoButton = (ImageButton) parent.findViewById(R.id.changeToVideoButton);
mChangeToVideoButton.setOnClickListener(this);
- mSwitchCameraButton = (ImageButton) parent.findViewById(R.id.switchCameraButton);
+ mSwitchCameraButton = (CompoundButton) parent.findViewById(R.id.switchCameraButton);
mSwitchCameraButton.setOnClickListener(this);
mAddCallButton = (ImageButton) parent.findViewById(R.id.addButton);
mAddCallButton.setOnClickListener(this);
mMergeButton = (ImageButton) parent.findViewById(R.id.mergeButton);
mMergeButton.setOnClickListener(this);
- mPauseVideoButton = (ImageButton) parent.findViewById(R.id.pauseVideoButton);
+ mPauseVideoButton = (CompoundButton) parent.findViewById(R.id.pauseVideoButton);
mPauseVideoButton.setOnClickListener(this);
mOverflowButton = (ImageButton) parent.findViewById(R.id.overflowButton);
mOverflowButton.setOnClickListener(this);
@@ -145,10 +145,6 @@ public class CallButtonFragment
}
@Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- }
-
- @Override
public void onClick(View view) {
int id = view.getId();
Log.d(this, "onClick(View " + view + ", id " + id + ")...");
@@ -165,8 +161,7 @@ public class CallButtonFragment
getPresenter().changeToVoiceClicked();
break;
case R.id.muteButton: {
- final ImageButton button = (ImageButton) view;
- getPresenter().muteClicked(!button.isSelected());
+ getPresenter().muteClicked(!mMuteButton.isSelected());
break;
}
case R.id.mergeButton:
@@ -174,8 +169,7 @@ public class CallButtonFragment
mMergeButton.setEnabled(false);
break;
case R.id.holdButton: {
- final ImageButton button = (ImageButton) view;
- getPresenter().holdClicked(!button.isSelected());
+ getPresenter().holdClicked(!mHoldButton.isSelected());
break;
}
case R.id.swapButton:
@@ -219,7 +213,7 @@ public class CallButtonFragment
}
Resources res = getActivity().getResources();
- ImageButton[] compoundButtons = {
+ View[] compoundButtons = {
mAudioButton,
mMuteButton,
mShowDialpadButton,
@@ -228,7 +222,7 @@ public class CallButtonFragment
mPauseVideoButton
};
- for (ImageButton button : compoundButtons) {
+ for (View button : compoundButtons) {
final LayerDrawable layers = (LayerDrawable) button.getBackground();
final RippleDrawable btnCompoundDrawable = compoundBackgroundDrawable(themeColors);
layers.setDrawableByLayerId(R.id.compoundBackgroundItem, btnCompoundDrawable);
@@ -770,6 +764,7 @@ public class CallButtonFragment
mShowDialpadButton.setSelected(value);
if (getActivity() != null && getActivity() instanceof InCallActivity) {
((InCallActivity) getActivity()).displayDialpad(value, animate);
+ maybeSendAccessibilityEvent(mShowDialpadButton, R.string.onscreenShowDialpadText);
}
}
diff --git a/src/com/android/incallui/CallToggleButton.java b/src/com/android/incallui/CallToggleButton.java
new file mode 100644
index 00000000..72c1d593
--- /dev/null
+++ b/src/com/android/incallui/CallToggleButton.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.incallui;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.accessibility.AccessibilityEvent;
+import android.widget.ToggleButton;
+
+public class CallToggleButton extends ToggleButton {
+ private static final String EMPTY_STRING = "";
+
+ public CallToggleButton(Context context) {
+ this(context, null);
+ }
+
+ public CallToggleButton(Context context, AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public CallToggleButton(Context context, AttributeSet attrs, int defStyleAttr) {
+ this(context, attrs, defStyleAttr, 0);
+ }
+
+ public CallToggleButton(Context context, AttributeSet attrs, int defStyleAttr,
+ int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+ }
+
+ /**
+ * Ignore the content description so it is not read by Talkback. When clicked, we expect
+ * {@link CallButtonFragment#maybeSendAccessibilityEvent} to dispatch an accessibility event
+ * with the text for Talkback to read.
+ */
+ @Override
+ public void onInitializeAccessibilityEvent(AccessibilityEvent event) {
+ super.onInitializeAccessibilityEvent(event);
+ event.setContentDescription(EMPTY_STRING);
+ }
+}