summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/res/color/accent_tint_color_selector.xml21
-rw-r--r--packages/SystemUI/res/layout/volume_dialog.xml81
-rw-r--r--packages/SystemUI/res/layout/volume_dialog_row.xml131
-rw-r--r--packages/SystemUI/res/layout/volume_dnd_icon.xml30
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java32
5 files changed, 196 insertions, 99 deletions
diff --git a/packages/SystemUI/res/color/accent_tint_color_selector.xml b/packages/SystemUI/res/color/accent_tint_color_selector.xml
new file mode 100644
index 000000000000..85af186ab45e
--- /dev/null
+++ b/packages/SystemUI/res/color/accent_tint_color_selector.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 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.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:state_enabled="false"
+ android:color="?android:attr/colorButtonNormal"/>
+
+ <item android:color="?android:attr/colorAccent"/>
+</selector> \ No newline at end of file
diff --git a/packages/SystemUI/res/layout/volume_dialog.xml b/packages/SystemUI/res/layout/volume_dialog.xml
index bab4eba72822..803659f9c7ae 100644
--- a/packages/SystemUI/res/layout/volume_dialog.xml
+++ b/packages/SystemUI/res/layout/volume_dialog.xml
@@ -38,59 +38,64 @@
android:layout_height="wrap_content"
android:clipChildren="false"
android:clipToPadding="false"
- android:paddingTop="10dp"
- android:paddingBottom="10dp"
android:background="@drawable/rounded_bg_full"
android:translationZ="@dimen/volume_panel_elevation"
android:orientation="horizontal" >
<!-- volume rows added and removed here! :-) -->
</LinearLayout>
- <LinearLayout
+ <FrameLayout
android:id="@+id/footer"
android:layout_width="@dimen/volume_dialog_panel_width"
android:layout_height="@dimen/volume_dialog_panel_width"
- android:clipChildren="false"
- android:clipToPadding="false"
android:layout_marginTop="6dp"
android:layout_marginBottom="6dp"
android:layout_below="@id/volume_dialog_rows"
- android:background="@drawable/rounded_bg_full"
- android:gravity="center"
- android:layout_gravity="end"
- android:translationZ="@dimen/volume_panel_elevation"
- android:clickable="true"
- android:orientation="vertical" >
+ android:background="@drawable/rounded_bg_full">
- <TextView
- android:id="@+id/ringer_title"
- android:text="@string/ring_toggle_title"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:ellipsize="end"
- android:maxLines="1"
- android:layout_centerVertical="true"
- android:textColor="?android:attr/colorControlNormal"
- android:textAppearance="@style/TextAppearance.Volume.Header" />
+ <LinearLayout
+ android:id="@+id/footer_linear_layout"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:clipChildren="false"
+ android:clipToPadding="false"
+ android:gravity="center"
+ android:layout_gravity="end"
+ android:translationZ="@dimen/volume_panel_elevation"
+ android:clickable="true"
+ android:orientation="vertical" >
- <com.android.keyguard.AlphaOptimizedImageButton
- android:id="@+id/ringer_icon"
- style="@style/VolumeButtons"
- android:background="?android:selectableItemBackgroundBorderless"
- android:layout_width="@dimen/volume_dialog_panel_width"
- android:layout_height="@dimen/volume_button_size"
- android:tint="?android:attr/colorAccent"
- android:soundEffectsEnabled="false" />
+ <TextView
+ android:id="@+id/ringer_title"
+ android:text="@string/ring_toggle_title"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:ellipsize="end"
+ android:maxLines="1"
+ android:layout_centerVertical="true"
+ android:textColor="?android:attr/colorControlNormal"
+ android:textAppearance="@style/TextAppearance.Volume.Header" />
- <TextView
- android:id="@+id/ringer_status"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:ellipsize="end"
- android:maxLines="1"
- android:textColor="?android:attr/colorControlNormal"
- android:textAppearance="@style/TextAppearance.Volume.Header.Secondary" />
+ <com.android.keyguard.AlphaOptimizedImageButton
+ android:id="@+id/ringer_icon"
+ style="@style/VolumeButtons"
+ android:background="?android:selectableItemBackgroundBorderless"
+ android:layout_width="@dimen/volume_dialog_panel_width"
+ android:layout_height="@dimen/volume_button_size"
+ android:tint="@color/accent_tint_color_selector"
+ android:soundEffectsEnabled="false" />
- </LinearLayout>
+ <TextView
+ android:id="@+id/ringer_status"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:ellipsize="end"
+ android:maxLines="1"
+ android:textColor="?android:attr/colorControlNormal"
+ android:textAppearance="@style/TextAppearance.Volume.Header.Secondary" />
+ </LinearLayout>
+
+ <include layout="@layout/volume_dnd_icon"/>
+ </FrameLayout>
</LinearLayout>
</com.android.systemui.volume.VolumeUiLayout> \ No newline at end of file
diff --git a/packages/SystemUI/res/layout/volume_dialog_row.xml b/packages/SystemUI/res/layout/volume_dialog_row.xml
index 70654a803b44..fb9355ad061b 100644
--- a/packages/SystemUI/res/layout/volume_dialog_row.xml
+++ b/packages/SystemUI/res/layout/volume_dialog_row.xml
@@ -13,89 +13,98 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<LinearLayout
+<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:tag="row"
android:layout_height="wrap_content"
android:layout_width="@dimen/volume_dialog_panel_width"
android:clipChildren="true"
android:clipToPadding="true"
- android:theme="@style/qs_theme"
- android:gravity="center"
- android:orientation="vertical" >
+ android:theme="@style/qs_theme">
<LinearLayout
- android:orientation="vertical"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:layout_marginTop="10dp"
+ android:layout_marginBottom="10dp"
android:gravity="center"
- android:padding="5dp">
- <TextView
- android:id="@+id/volume_row_header"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:ellipsize="end"
- android:maxLength="10"
- android:maxLines="1"
- android:textColor="?android:attr/colorControlNormal"
- android:textAppearance="@style/TextAppearance.Volume.Header" />
+ android:orientation="vertical" >
+
<LinearLayout
- android:id="@+id/output_chooser"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:minWidth="48dp"
- android:minHeight="48dp"
- android:paddingTop="10dp"
- android:background="?android:selectableItemBackgroundBorderless"
- android:gravity="center">
+ android:gravity="center"
+ android:padding="5dp">
<TextView
- android:id="@+id/volume_row_connected_device"
- android:visibility="gone"
+ android:id="@+id/volume_row_header"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:maxLength="10"
android:ellipsize="end"
+ android:maxLength="10"
android:maxLines="1"
- android:textAppearance="@style/TextAppearance.Volume.Header.Secondary" />
- <com.android.keyguard.AlphaOptimizedImageButton
- android:id="@+id/output_chooser_button"
- android:layout_width="24dp"
- android:layout_height="24dp"
+ android:textColor="?android:attr/colorControlNormal"
+ android:textAppearance="@style/TextAppearance.Volume.Header" />
+ <LinearLayout
+ android:id="@+id/output_chooser"
+ android:orientation="vertical"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:minWidth="48dp"
+ android:minHeight="48dp"
+ android:paddingTop="10dp"
android:background="?android:selectableItemBackgroundBorderless"
- android:contentDescription="@string/accessibility_output_chooser"
- style="@style/VolumeButtons"
- android:clickable="false"
- android:layout_centerVertical="true"
- android:src="@drawable/ic_swap"
- android:soundEffectsEnabled="false" />
+ android:gravity="center">
+ <TextView
+ android:id="@+id/volume_row_connected_device"
+ android:visibility="gone"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:maxLength="10"
+ android:ellipsize="end"
+ android:maxLines="1"
+ android:textAppearance="@style/TextAppearance.Volume.Header.Secondary" />
+ <com.android.keyguard.AlphaOptimizedImageButton
+ android:id="@+id/output_chooser_button"
+ android:layout_width="24dp"
+ android:layout_height="24dp"
+ android:background="?android:selectableItemBackgroundBorderless"
+ android:contentDescription="@string/accessibility_output_chooser"
+ style="@style/VolumeButtons"
+ android:clickable="false"
+ android:layout_centerVertical="true"
+ android:src="@drawable/ic_swap"
+ android:soundEffectsEnabled="false"/>
+ </LinearLayout>
</LinearLayout>
- </LinearLayout>
- <FrameLayout
- android:id="@+id/volume_row_slider_frame"
- android:padding="0dp"
- android:layout_width="@dimen/volume_dialog_panel_width"
- android:layoutDirection="rtl"
- android:layout_height="@dimen/volume_dialog_panel_width">
- <SeekBar
- android:id="@+id/volume_row_slider"
- android:clickable="true"
+ <FrameLayout
+ android:id="@+id/volume_row_slider_frame"
android:padding="0dp"
- android:layout_margin="0dp"
android:layout_width="@dimen/volume_dialog_panel_width"
- android:layout_height="@dimen/volume_dialog_panel_width"
android:layoutDirection="rtl"
- android:layout_gravity="center"
- android:rotation="90" />
- </FrameLayout>
+ android:layout_height="@dimen/volume_dialog_panel_width">
+ <SeekBar
+ android:id="@+id/volume_row_slider"
+ android:clickable="true"
+ android:padding="0dp"
+ android:layout_margin="0dp"
+ android:layout_width="@dimen/volume_dialog_panel_width"
+ android:layout_height="@dimen/volume_dialog_panel_width"
+ android:layoutDirection="rtl"
+ android:layout_gravity="center"
+ android:rotation="90" />
+ </FrameLayout>
+
+ <com.android.keyguard.AlphaOptimizedImageButton
+ android:id="@+id/volume_row_icon"
+ style="@style/VolumeButtons"
+ android:padding="10dp"
+ android:layout_width="@dimen/volume_button_size"
+ android:layout_height="@dimen/volume_button_size"
+ android:background="?android:selectableItemBackgroundBorderless"
+ android:soundEffectsEnabled="false" />
+ </LinearLayout>
- <com.android.keyguard.AlphaOptimizedImageButton
- android:id="@+id/volume_row_icon"
- style="@style/VolumeButtons"
- android:padding="10dp"
- android:layout_width="@dimen/volume_button_size"
- android:layout_height="@dimen/volume_button_size"
- android:background="?android:selectableItemBackgroundBorderless"
- android:soundEffectsEnabled="false" />
+ <include layout="@layout/volume_dnd_icon"/>
-</LinearLayout> \ No newline at end of file
+</FrameLayout>
diff --git a/packages/SystemUI/res/layout/volume_dnd_icon.xml b/packages/SystemUI/res/layout/volume_dnd_icon.xml
new file mode 100644
index 000000000000..215b2300992a
--- /dev/null
+++ b/packages/SystemUI/res/layout/volume_dnd_icon.xml
@@ -0,0 +1,30 @@
+<!--
+ Copyright (C) 2018 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.
+-->
+<FrameLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="14dp"
+ android:layout_height="14dp"
+ android:layout_marginTop="6dp"
+ android:layout_marginRight="6dp"
+ android:layout_gravity="right|top">
+
+ <ImageView
+ android:id="@+id/dnd_icon"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:src="@drawable/ic_dnd"
+ android:tint="?android:attr/textColorTertiary"/>
+</FrameLayout>
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java
index fb5c447c2592..8881ee94092e 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java
@@ -68,6 +68,7 @@ import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener;
import android.view.animation.DecelerateInterpolator;
import android.widget.ImageButton;
+import android.widget.ImageView;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
@@ -109,7 +110,9 @@ public class VolumeDialogImpl implements VolumeDialog {
private ViewGroup mDialogRowsView;
private ViewGroup mFooter;
private ImageButton mRingerIcon;
+ private ImageView mZenIcon;
private TextView mRingerStatus;
+ private TextView mRingerTitle;
private final List<VolumeRow> mRows = new ArrayList<>();
private ConfigurableTexts mConfigurableTexts;
private final SparseBooleanArray mDynamic = new SparseBooleanArray();
@@ -216,6 +219,8 @@ public class VolumeDialogImpl implements VolumeDialog {
mFooter = mDialog.findViewById(R.id.footer);
mRingerIcon = mFooter.findViewById(R.id.ringer_icon);
mRingerStatus = mFooter.findViewById(R.id.ringer_status);
+ mRingerTitle = mFooter.findViewById(R.id.ringer_title);
+ mZenIcon = mFooter.findViewById(R.id.dnd_icon);
if (mRows.isEmpty()) {
addRow(AudioManager.STREAM_MUSIC,
@@ -349,6 +354,7 @@ public class VolumeDialogImpl implements VolumeDialog {
if (stream == STREAM_ACCESSIBILITY) {
row.header.setFilters(new InputFilter[] {new InputFilter.LengthFilter(13)});
}
+ row.dndIcon = row.view.findViewById(R.id.dnd_icon);
row.slider = row.view.findViewById(R.id.volume_row_slider);
row.slider.setOnSeekBarChangeListener(new VolumeSeekBarChangeListener(row));
row.anim = null;
@@ -559,6 +565,8 @@ public class VolumeDialogImpl implements VolumeDialog {
if (ss == null) {
return;
}
+
+ enableRingerViewsH(mState.zenMode == Global.ZEN_MODE_OFF || !mState.disallowRinger);
switch (mState.ringerModeInternal) {
case AudioManager.RINGER_MODE_VIBRATE:
mRingerStatus.setText(R.string.volume_ringer_status_vibrate);
@@ -603,6 +611,28 @@ public class VolumeDialogImpl implements VolumeDialog {
}
}
+ /**
+ * Toggles enable state of views in a VolumeRow (not including seekbar, outputChooser or icon)
+ * Hides/shows zen icon
+ * @param enable whether to enable volume row views and hide dnd icon
+ */
+ private void enableVolumeRowViewsH(VolumeRow row, boolean enable) {
+ row.header.setEnabled(enable);
+ row.dndIcon.setVisibility(enable ? View.GONE : View.VISIBLE);
+ }
+
+ /**
+ * Toggles enable state of footer/ringer views
+ * Hides/shows zen icon
+ * @param enable whether to enable ringer views and hide dnd icon
+ */
+ private void enableRingerViewsH(boolean enable) {
+ mRingerTitle.setEnabled(enable);
+ mRingerStatus.setEnabled(enable);
+ mRingerIcon.setEnabled(enable);
+ mZenIcon.setVisibility(enable ? View.GONE : View.VISIBLE);
+ }
+
private void trimObsoleteH() {
if (D.BUG) Log.d(TAG, "trimObsoleteH");
for (int i = mRows.size() - 1; i >= 0; i--) {
@@ -748,6 +778,7 @@ public class VolumeDialogImpl implements VolumeDialog {
if (zenMuted) {
row.tracking = false;
}
+ enableVolumeRowViewsH(row, !zenMuted);
// update slider
final boolean enableSlider = !zenMuted;
@@ -1178,5 +1209,6 @@ public class VolumeDialogImpl implements VolumeDialog {
private int lastAudibleLevel = 1;
private View outputChooser;
private TextView connectedDevice;
+ private ImageView dndIcon;
}
}