From b1aee81e0eb78dea4be216450f195e5c9736e75b Mon Sep 17 00:00:00 2001 From: Fabian Kozynski Date: Thu, 4 Apr 2019 14:17:48 -0400 Subject: [PATCH] Visual changes in QS and made targets clickable * Added clickable targets and intents to Next alarm, Ringer mode and QSCarrier items. This includes making the tap targets 48dp high. * Added contentDescription to alarm icon in QS Header info * Changed icons to ones without inset so views are properly aligned * Made text in QS header marquee * Reduces vertical margin between tiles in landscape to fit 2 rows (when not in VPN). * Correctly align all children of QuickStatusBarHeader that should be aligned Test: visual Test: manual, tap targets go to correct destination Fixes: 129350749 Change-Id: I6cc984ec4d58bf1afc9eb6822ded786591f5c7b8 --- .../SystemUI/res/layout/ongoing_privacy_chip.xml | 2 - packages/SystemUI/res/layout/qs_carrier.xml | 1 + .../SystemUI/res/layout/quick_qs_status_icons.xml | 4 +- .../res/layout/quick_settings_header_info.xml | 98 ++++++++++++++-------- packages/SystemUI/res/values-land/dimens.xml | 4 +- packages/SystemUI/res/values/dimens.xml | 10 +-- .../com/android/systemui/qs/QSCarrierGroup.java | 19 ++++- .../src/com/android/systemui/qs/QSPanel.java | 1 + .../android/systemui/qs/QuickStatusBarHeader.java | 25 ++++-- 9 files changed, 108 insertions(+), 56 deletions(-) diff --git a/packages/SystemUI/res/layout/ongoing_privacy_chip.xml b/packages/SystemUI/res/layout/ongoing_privacy_chip.xml index 49c16bee7b1f..dce9ce16e9cd 100644 --- a/packages/SystemUI/res/layout/ongoing_privacy_chip.xml +++ b/packages/SystemUI/res/layout/ongoing_privacy_chip.xml @@ -21,8 +21,6 @@ android:id="@+id/privacy_chip" android:layout_height="match_parent" android:layout_width="wrap_content" - android:layout_marginLeft="@dimen/ongoing_appops_chip_margin" - android:layout_marginRight="@dimen/ongoing_appops_chip_margin" android:layout_gravity="center_vertical|end" android:gravity="center_vertical" android:orientation="horizontal" diff --git a/packages/SystemUI/res/layout/qs_carrier.xml b/packages/SystemUI/res/layout/qs_carrier.xml index b94a3163804f..8f748069aa40 100644 --- a/packages/SystemUI/res/layout/qs_carrier.xml +++ b/packages/SystemUI/res/layout/qs_carrier.xml @@ -19,6 +19,7 @@ android:id="@+id/linear_carrier" android:layout_width="wrap_content" android:layout_height="match_parent" + android:minWidth="48dp" android:orientation="horizontal" android:gravity="center_vertical|start" android:background="@android:color/transparent" diff --git a/packages/SystemUI/res/layout/quick_qs_status_icons.xml b/packages/SystemUI/res/layout/quick_qs_status_icons.xml index 29f53a47a14e..79e2dfb2a40d 100644 --- a/packages/SystemUI/res/layout/quick_qs_status_icons.xml +++ b/packages/SystemUI/res/layout/quick_qs_status_icons.xml @@ -21,8 +21,8 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/qs_header_top_margin" android:layout_marginBottom="14dp" - android:layout_marginStart="@dimen/status_bar_padding_start" - android:layout_marginEnd="@dimen/status_bar_padding_end" + android:paddingStart="@dimen/status_bar_padding_start" + android:paddingEnd="@dimen/status_bar_padding_end" android:layout_below="@id/quick_status_bar_system_icons" android:clipChildren="false" android:clipToPadding="false" diff --git a/packages/SystemUI/res/layout/quick_settings_header_info.xml b/packages/SystemUI/res/layout/quick_settings_header_info.xml index da640fd1e164..37c6d9f2d973 100644 --- a/packages/SystemUI/res/layout/quick_settings_header_info.xml +++ b/packages/SystemUI/res/layout/quick_settings_header_info.xml @@ -19,7 +19,6 @@ android:layout_width="match_parent" android:layout_height="@dimen/qs_header_tooltip_height" android:layout_below="@id/quick_status_bar_system_icons" - android:layout_marginTop="@dimen/qs_header_top_margin" android:paddingStart="@dimen/status_bar_padding_start" android:paddingEnd="@dimen/status_bar_padding_end"> @@ -27,7 +26,7 @@ android:id="@+id/long_press_tooltip" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_gravity="start|bottom" + android:layout_gravity="start|center_vertical" android:alpha="0" android:text="@string/quick_settings_header_onboarding_text" android:textAppearance="@style/TextAppearance.QS.TileLabel" @@ -36,34 +35,48 @@ - - + android:alpha="0" > - + android:layout_height="match_parent" + android:layout_gravity="center_vertical" + android:gravity="center_vertical" + android:focusable="true" + android:clickable="true"> + + + + + - - - + android:layout_height="match_parent" + android:layout_gravity="center_vertical" + android:gravity="center_vertical" + android:focusable="true" + android:clickable="true"> + + + + + + + android:layout_height="match_parent" + android:layout_gravity="end|center_vertical" + android:focusable="false"/> diff --git a/packages/SystemUI/res/values-land/dimens.xml b/packages/SystemUI/res/values-land/dimens.xml index e7689399f507..90e78e85ed19 100644 --- a/packages/SystemUI/res/values-land/dimens.xml +++ b/packages/SystemUI/res/values-land/dimens.xml @@ -24,8 +24,8 @@ 40dp - 2dp - 24dp + 8dp + 0dp 9dp 9dp diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index bfdb21877277..6bb9d78a2e6d 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -437,7 +437,7 @@ 16dp 4dp 0dp - 30dp + @dimen/qs_header_tooltip_height 56dp 0dp 56dp @@ -461,8 +461,8 @@ 32dp 0dp 20dp - 18dp - 18dp + 48dp + @dimen/status_bar_icon_drawing_size @dimen/status_bar_icon_drawing_size 6dp 8dp @@ -473,7 +473,7 @@ 16dp 16dp 0dp - 12dp + 15dp 64dp @@ -1031,8 +1031,6 @@ 20sp 16sp - - 0dp 32dp diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSCarrierGroup.java b/packages/SystemUI/src/com/android/systemui/qs/QSCarrierGroup.java index 7de8b74f30cc..e352b58ea552 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSCarrierGroup.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSCarrierGroup.java @@ -19,6 +19,8 @@ package com.android.systemui.qs; import static com.android.systemui.util.InjectionInflationController.VIEW_CONTEXT; import android.content.Context; +import android.content.Intent; +import android.provider.Settings; import android.telephony.SubscriptionManager; import android.util.AttributeSet; import android.util.Log; @@ -30,6 +32,7 @@ import androidx.annotation.VisibleForTesting; import com.android.keyguard.CarrierTextController; import com.android.systemui.Dependency; import com.android.systemui.R; +import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.statusbar.policy.NetworkController; import javax.inject.Inject; @@ -40,7 +43,7 @@ import javax.inject.Named; */ public class QSCarrierGroup extends LinearLayout implements CarrierTextController.CarrierTextCallback, - NetworkController.SignalCallback { + NetworkController.SignalCallback, View.OnClickListener { private static final String TAG = "QSCarrierGroup"; /** @@ -53,20 +56,29 @@ public class QSCarrierGroup extends LinearLayout implements private QSCarrier[] mCarrierGroups = new QSCarrier[SIM_SLOTS]; private final CellSignalState[] mInfos = new CellSignalState[SIM_SLOTS]; private CarrierTextController mCarrierTextController; + private ActivityStarter mActivityStarter; private boolean mListening; @Inject public QSCarrierGroup(@Named(VIEW_CONTEXT) Context context, AttributeSet attrs, - NetworkController networkController) { + NetworkController networkController, ActivityStarter activityStarter) { super(context, attrs); mNetworkController = networkController; + mActivityStarter = activityStarter; } @VisibleForTesting public QSCarrierGroup(Context context, AttributeSet attrs) { this(context, attrs, - Dependency.get(NetworkController.class)); + Dependency.get(NetworkController.class), + Dependency.get(ActivityStarter.class)); + } + + @Override + public void onClick(View v) { + mActivityStarter.postStartActivityDismissingKeyguard(new Intent( + Settings.ACTION_WIRELESS_SETTINGS), 0); } @Override @@ -82,6 +94,7 @@ public class QSCarrierGroup extends LinearLayout implements for (int i = 0; i < SIM_SLOTS; i++) { mInfos[i] = new CellSignalState(); + mCarrierGroups[i].setOnClickListener(this); } CharSequence separator = mContext.getString( diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java index ddefdf646159..fcaf98165016 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java @@ -300,6 +300,7 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne protected void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); mFooter.onConfigurationChanged(); + updateResources(); updateBrightnessMirror(); } diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java index d78982183db9..2e3065aeee03 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java @@ -35,6 +35,7 @@ import android.media.AudioManager; import android.os.Handler; import android.os.Looper; import android.provider.AlarmClock; +import android.provider.Settings; import android.service.notification.ZenModeConfig; import android.text.format.DateUtils; import android.util.AttributeSet; @@ -133,9 +134,11 @@ public class QuickStatusBarHeader extends RelativeLayout implements private ImageView mNextAlarmIcon; /** {@link TextView} containing the actual text indicating when the next alarm will go off. */ private TextView mNextAlarmTextView; + private View mNextAlarmContainer; private View mStatusSeparator; private ImageView mRingerModeIcon; private TextView mRingerModeTextView; + private View mRingerContainer; private Clock mClockView; private DateView mDateView; private OngoingPrivacyChip mPrivacyChip; @@ -203,10 +206,14 @@ public class QuickStatusBarHeader extends RelativeLayout implements mStatusSeparator = findViewById(R.id.status_separator); mNextAlarmIcon = findViewById(R.id.next_alarm_icon); mNextAlarmTextView = findViewById(R.id.next_alarm_text); + mNextAlarmContainer = findViewById(R.id.alarm_container); + mNextAlarmContainer.setOnClickListener(this::onClick); mRingerModeIcon = findViewById(R.id.ringer_mode_icon); mRingerModeTextView = findViewById(R.id.ringer_mode_text); + mRingerContainer = findViewById(R.id.ringer_container); + mRingerContainer.setOnClickListener(this::onClick); mPrivacyChip = findViewById(R.id.privacy_chip); - mPrivacyChip.setOnClickListener(this); + mPrivacyChip.setOnClickListener(this::onClick); mCarrierGroup = findViewById(R.id.carrier_group); @@ -236,6 +243,8 @@ public class QuickStatusBarHeader extends RelativeLayout implements // QS will always show the estimate, and BatteryMeterView handles the case where // it's unavailable or charging mBatteryRemainingIcon.setPercentShowMode(BatteryMeterView.MODE_ESTIMATE); + mRingerModeTextView.setSelected(true); + mNextAlarmTextView.setSelected(true); } private List getIgnoredIconSlots() { @@ -285,11 +294,11 @@ public class QuickStatusBarHeader extends RelativeLayout implements if (!ZenModeConfig.isZenOverridingRinger(mZenController.getZen(), mZenController.getConsolidatedPolicy())) { if (mRingerMode == AudioManager.RINGER_MODE_VIBRATE) { - mRingerModeIcon.setImageResource(R.drawable.stat_sys_ringer_vibrate); + mRingerModeIcon.setImageResource(R.drawable.ic_volume_ringer_vibrate); mRingerModeTextView.setText(R.string.qs_status_phone_vibrate); ringerVisible = true; } else if (mRingerMode == AudioManager.RINGER_MODE_SILENT) { - mRingerModeIcon.setImageResource(R.drawable.stat_sys_ringer_silent); + mRingerModeIcon.setImageResource(R.drawable.ic_volume_ringer_mute); mRingerModeTextView.setText(R.string.qs_status_phone_muted); ringerVisible = true; } @@ -546,7 +555,7 @@ public class QuickStatusBarHeader extends RelativeLayout implements @Override public void onClick(View v) { - if (v == mClockView) { + if (v == mClockView || v == mNextAlarmContainer) { mActivityStarter.postStartActivityDismissingKeyguard(new Intent( AlarmClock.ACTION_SHOW_ALARMS),0); } else if (v == mPrivacyChip) { @@ -561,6 +570,9 @@ public class QuickStatusBarHeader extends RelativeLayout implements new Intent(Intent.ACTION_REVIEW_ONGOING_PERMISSION_USAGE), 0); mHost.collapsePanels(); }); + } else if (v == mRingerContainer) { + mActivityStarter.postStartActivityDismissingKeyguard(new Intent( + Settings.ACTION_SOUND_SETTINGS), 0); } } @@ -573,7 +585,6 @@ public class QuickStatusBarHeader extends RelativeLayout implements @Override public void onZenChanged(int zen) { updateStatusText(); - } @Override @@ -731,8 +742,10 @@ public class QuickStatusBarHeader extends RelativeLayout implements public void setMargins(int sideMargins) { for (int i = 0; i < getChildCount(); i++) { View v = getChildAt(i); + // Prevents these views from getting set a margin. + // The Icon views all have the same padding set in XML to be aligned. if (v == mSystemIconsView || v == mQuickQsStatusIcons || v == mHeaderQsPanel - || v == mPrivacyChip) { + || v == mHeaderTextContainerView) { continue; } RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) v.getLayoutParams(); -- 2.11.0