Merge "Visual changes in QS and made targets clickable" into qt-dev

This commit is contained in:
Fabian Kozynski
2019-04-19 16:05:28 +00:00
committed by Android (Google) Code Review
9 changed files with 108 additions and 56 deletions

View File

@@ -21,8 +21,6 @@
android:id="@+id/privacy_chip" android:id="@+id/privacy_chip"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_width="wrap_content" 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:layout_gravity="center_vertical|end"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal" android:orientation="horizontal"

View File

@@ -19,6 +19,7 @@
android:id="@+id/linear_carrier" android:id="@+id/linear_carrier"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="match_parent" android:layout_height="match_parent"
android:minWidth="48dp"
android:orientation="horizontal" android:orientation="horizontal"
android:gravity="center_vertical|start" android:gravity="center_vertical|start"
android:background="@android:color/transparent" android:background="@android:color/transparent"

View File

@@ -21,8 +21,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/qs_header_top_margin" android:layout_marginTop="@dimen/qs_header_top_margin"
android:layout_marginBottom="14dp" android:layout_marginBottom="14dp"
android:layout_marginStart="@dimen/status_bar_padding_start" android:paddingStart="@dimen/status_bar_padding_start"
android:layout_marginEnd="@dimen/status_bar_padding_end" android:paddingEnd="@dimen/status_bar_padding_end"
android:layout_below="@id/quick_status_bar_system_icons" android:layout_below="@id/quick_status_bar_system_icons"
android:clipChildren="false" android:clipChildren="false"
android:clipToPadding="false" android:clipToPadding="false"

View File

@@ -19,7 +19,6 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/qs_header_tooltip_height" android:layout_height="@dimen/qs_header_tooltip_height"
android:layout_below="@id/quick_status_bar_system_icons" 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:paddingStart="@dimen/status_bar_padding_start"
android:paddingEnd="@dimen/status_bar_padding_end"> android:paddingEnd="@dimen/status_bar_padding_end">
@@ -27,7 +26,7 @@
android:id="@+id/long_press_tooltip" android:id="@+id/long_press_tooltip"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="start|bottom" android:layout_gravity="start|center_vertical"
android:alpha="0" android:alpha="0"
android:text="@string/quick_settings_header_onboarding_text" android:text="@string/quick_settings_header_onboarding_text"
android:textAppearance="@style/TextAppearance.QS.TileLabel" android:textAppearance="@style/TextAppearance.QS.TileLabel"
@@ -36,34 +35,48 @@
<LinearLayout <LinearLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:layout_gravity="start|bottom" android:layout_gravity="start|center_vertical"
android:gravity="center_vertical"> android:gravity="center_vertical">
<LinearLayout <LinearLayout
android:id="@+id/status_container" android:id="@+id/status_container"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:layout_gravity="start|center_vertical" android:layout_gravity="start|center_vertical"
android:layout_weight="1" android:layout_weight="1"
android:gravity="center_vertical" android:gravity="center_vertical"
android:alpha="0" > android:alpha="0" >
<LinearLayout
android:id = "@+id/alarm_container"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:focusable="true"
android:clickable="true">
<ImageView <ImageView
android:id="@+id/next_alarm_icon" android:id="@+id/next_alarm_icon"
android:layout_width="@dimen/qs_header_alarm_icon_size" android:layout_width="@dimen/qs_header_alarm_icon_size"
android:layout_height="@dimen/qs_header_alarm_icon_size" android:layout_height="@dimen/qs_header_alarm_icon_size"
android:src="@drawable/stat_sys_alarm" android:src="@drawable/ic_alarm"
android:tint="?android:attr/textColorPrimary" android:tint="?android:attr/textColorPrimary"
android:contentDescription="@string/accessibility_quick_settings_alarm_set"
android:visibility="gone"/> android:visibility="gone"/>
<TextView <TextView
android:id="@+id/next_alarm_text" android:id="@+id/next_alarm_text"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:layout_marginStart="@dimen/qs_header_alarm_text_margin_start" android:layout_marginStart="@dimen/qs_header_alarm_text_margin_start"
android:textAppearance="@style/TextAppearance.QS.Status" android:textAppearance="@style/TextAppearance.QS.Status"
android:visibility="gone"/> android:visibility="gone"/>
</LinearLayout>
<View <View
android:id="@+id/status_separator" android:id="@+id/status_separator"
@@ -71,6 +84,15 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:visibility="gone"/> android:visibility="gone"/>
<LinearLayout
android:id = "@+id/ringer_container"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:focusable="true"
android:clickable="true">
<ImageView <ImageView
android:id="@+id/ringer_mode_icon" android:id="@+id/ringer_mode_icon"
android:layout_width="@dimen/qs_header_alarm_icon_size" android:layout_width="@dimen/qs_header_alarm_icon_size"
@@ -82,10 +104,14 @@
android:id="@+id/ringer_mode_text" android:id="@+id/ringer_mode_text"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:layout_marginStart="@dimen/qs_header_alarm_text_margin_start" android:layout_marginStart="@dimen/qs_header_alarm_text_margin_start"
android:textAppearance="@style/TextAppearance.QS.Status" android:textAppearance="@style/TextAppearance.QS.Status"
android:visibility="gone"/> android:visibility="gone"/>
</LinearLayout> </LinearLayout>
</LinearLayout>
<View <View
android:minWidth="@dimen/qs_status_separator" android:minWidth="@dimen/qs_status_separator"
@@ -93,11 +119,13 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_weight="1"/> android:layout_weight="1"/>
<include layout="@layout/qs_carrier_group" <include layout="@layout/qs_carrier_group"
android:id="@+id/carrier_group" android:id="@+id/carrier_group"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="match_parent"
android_layout_gravity="center vertical|end"/> android:layout_gravity="end|center_vertical"
android:focusable="false"/>
</LinearLayout> </LinearLayout>
</FrameLayout> </FrameLayout>

View File

@@ -24,8 +24,8 @@
<dimen name="brightness_mirror_height">40dp</dimen> <dimen name="brightness_mirror_height">40dp</dimen>
<dimen name="qs_tile_margin_top">2dp</dimen> <dimen name="qs_tile_margin_top">8dp</dimen>
<dimen name="qs_header_tooltip_height">24dp</dimen> <dimen name="qs_tile_margin_vertical">0dp</dimen>
<dimen name="battery_detail_graph_space_top">9dp</dimen> <dimen name="battery_detail_graph_space_top">9dp</dimen>
<dimen name="battery_detail_graph_space_bottom">9dp</dimen> <dimen name="battery_detail_graph_space_bottom">9dp</dimen>

View File

@@ -437,7 +437,7 @@
<dimen name="qs_tile_padding_bottom">16dp</dimen> <dimen name="qs_tile_padding_bottom">16dp</dimen>
<dimen name="qs_tile_spacing">4dp</dimen> <dimen name="qs_tile_spacing">4dp</dimen>
<dimen name="qs_panel_padding_bottom">0dp</dimen> <dimen name="qs_panel_padding_bottom">0dp</dimen>
<dimen name="qs_panel_padding_top">30dp</dimen> <dimen name="qs_panel_padding_top">@dimen/qs_header_tooltip_height</dimen>
<dimen name="qs_detail_header_height">56dp</dimen> <dimen name="qs_detail_header_height">56dp</dimen>
<dimen name="qs_detail_header_padding">0dp</dimen> <dimen name="qs_detail_header_padding">0dp</dimen>
<dimen name="qs_detail_image_width">56dp</dimen> <dimen name="qs_detail_image_width">56dp</dimen>
@@ -461,8 +461,8 @@
<dimen name="qs_detail_item_icon_width">32dp</dimen> <dimen name="qs_detail_item_icon_width">32dp</dimen>
<dimen name="qs_detail_item_icon_marginStart">0dp</dimen> <dimen name="qs_detail_item_icon_marginStart">0dp</dimen>
<dimen name="qs_detail_item_icon_marginEnd">20dp</dimen> <dimen name="qs_detail_item_icon_marginEnd">20dp</dimen>
<dimen name="qs_header_tooltip_height">18dp</dimen> <dimen name="qs_header_tooltip_height">48dp</dimen>
<dimen name="qs_header_alarm_icon_size">18dp</dimen> <dimen name="qs_header_alarm_icon_size">@dimen/status_bar_icon_drawing_size</dimen>
<dimen name="qs_header_mobile_icon_size">@dimen/status_bar_icon_drawing_size</dimen> <dimen name="qs_header_mobile_icon_size">@dimen/status_bar_icon_drawing_size</dimen>
<dimen name="qs_header_alarm_text_margin_start">6dp</dimen> <dimen name="qs_header_alarm_text_margin_start">6dp</dimen>
<dimen name="qs_header_separator_width">8dp</dimen> <dimen name="qs_header_separator_width">8dp</dimen>
@@ -473,7 +473,7 @@
<dimen name="qs_footer_padding_end">16dp</dimen> <dimen name="qs_footer_padding_end">16dp</dimen>
<dimen name="qs_footer_icon_size">16dp</dimen> <dimen name="qs_footer_icon_size">16dp</dimen>
<dimen name="qs_paged_tile_layout_padding_bottom">0dp</dimen> <dimen name="qs_paged_tile_layout_padding_bottom">0dp</dimen>
<dimen name="qs_header_top_margin">12dp</dimen> <dimen name="qs_header_top_margin">15dp</dimen>
<dimen name="qs_notif_collapsed_space">64dp</dimen> <dimen name="qs_notif_collapsed_space">64dp</dimen>
@@ -1031,8 +1031,6 @@
<dimen name="ongoing_appops_dialog_title_size">20sp</dimen> <dimen name="ongoing_appops_dialog_title_size">20sp</dimen>
<!-- Text size for Ongoing App Ops dialog items --> <!-- Text size for Ongoing App Ops dialog items -->
<dimen name="ongoing_appops_dialog_item_size">16sp</dimen> <dimen name="ongoing_appops_dialog_item_size">16sp</dimen>
<!-- Side margins around the Ongoing App Ops chip-->
<dimen name="ongoing_appops_chip_margin">0dp</dimen>
<!-- Height of the Ongoing App Ops chip --> <!-- Height of the Ongoing App Ops chip -->
<dimen name="ongoing_appops_chip_height">32dp</dimen> <dimen name="ongoing_appops_chip_height">32dp</dimen>
<!-- Padding between background of Ongoing App Ops chip and content --> <!-- Padding between background of Ongoing App Ops chip and content -->

View File

@@ -19,6 +19,8 @@ package com.android.systemui.qs;
import static com.android.systemui.util.InjectionInflationController.VIEW_CONTEXT; import static com.android.systemui.util.InjectionInflationController.VIEW_CONTEXT;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.provider.Settings;
import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.util.Log; import android.util.Log;
@@ -30,6 +32,7 @@ import androidx.annotation.VisibleForTesting;
import com.android.keyguard.CarrierTextController; import com.android.keyguard.CarrierTextController;
import com.android.systemui.Dependency; import com.android.systemui.Dependency;
import com.android.systemui.R; import com.android.systemui.R;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.statusbar.policy.NetworkController; import com.android.systemui.statusbar.policy.NetworkController;
import javax.inject.Inject; import javax.inject.Inject;
@@ -40,7 +43,7 @@ import javax.inject.Named;
*/ */
public class QSCarrierGroup extends LinearLayout implements public class QSCarrierGroup extends LinearLayout implements
CarrierTextController.CarrierTextCallback, CarrierTextController.CarrierTextCallback,
NetworkController.SignalCallback { NetworkController.SignalCallback, View.OnClickListener {
private static final String TAG = "QSCarrierGroup"; private static final String TAG = "QSCarrierGroup";
/** /**
@@ -53,20 +56,29 @@ public class QSCarrierGroup extends LinearLayout implements
private QSCarrier[] mCarrierGroups = new QSCarrier[SIM_SLOTS]; private QSCarrier[] mCarrierGroups = new QSCarrier[SIM_SLOTS];
private final CellSignalState[] mInfos = new CellSignalState[SIM_SLOTS]; private final CellSignalState[] mInfos = new CellSignalState[SIM_SLOTS];
private CarrierTextController mCarrierTextController; private CarrierTextController mCarrierTextController;
private ActivityStarter mActivityStarter;
private boolean mListening; private boolean mListening;
@Inject @Inject
public QSCarrierGroup(@Named(VIEW_CONTEXT) Context context, AttributeSet attrs, public QSCarrierGroup(@Named(VIEW_CONTEXT) Context context, AttributeSet attrs,
NetworkController networkController) { NetworkController networkController, ActivityStarter activityStarter) {
super(context, attrs); super(context, attrs);
mNetworkController = networkController; mNetworkController = networkController;
mActivityStarter = activityStarter;
} }
@VisibleForTesting @VisibleForTesting
public QSCarrierGroup(Context context, AttributeSet attrs) { public QSCarrierGroup(Context context, AttributeSet attrs) {
this(context, 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 @Override
@@ -82,6 +94,7 @@ public class QSCarrierGroup extends LinearLayout implements
for (int i = 0; i < SIM_SLOTS; i++) { for (int i = 0; i < SIM_SLOTS; i++) {
mInfos[i] = new CellSignalState(); mInfos[i] = new CellSignalState();
mCarrierGroups[i].setOnClickListener(this);
} }
CharSequence separator = mContext.getString( CharSequence separator = mContext.getString(

View File

@@ -300,6 +300,7 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne
protected void onConfigurationChanged(Configuration newConfig) { protected void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig); super.onConfigurationChanged(newConfig);
mFooter.onConfigurationChanged(); mFooter.onConfigurationChanged();
updateResources();
updateBrightnessMirror(); updateBrightnessMirror();
} }

View File

@@ -35,6 +35,7 @@ import android.media.AudioManager;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import android.provider.AlarmClock; import android.provider.AlarmClock;
import android.provider.Settings;
import android.service.notification.ZenModeConfig; import android.service.notification.ZenModeConfig;
import android.text.format.DateUtils; import android.text.format.DateUtils;
import android.util.AttributeSet; import android.util.AttributeSet;
@@ -133,9 +134,11 @@ public class QuickStatusBarHeader extends RelativeLayout implements
private ImageView mNextAlarmIcon; private ImageView mNextAlarmIcon;
/** {@link TextView} containing the actual text indicating when the next alarm will go off. */ /** {@link TextView} containing the actual text indicating when the next alarm will go off. */
private TextView mNextAlarmTextView; private TextView mNextAlarmTextView;
private View mNextAlarmContainer;
private View mStatusSeparator; private View mStatusSeparator;
private ImageView mRingerModeIcon; private ImageView mRingerModeIcon;
private TextView mRingerModeTextView; private TextView mRingerModeTextView;
private View mRingerContainer;
private Clock mClockView; private Clock mClockView;
private DateView mDateView; private DateView mDateView;
private OngoingPrivacyChip mPrivacyChip; private OngoingPrivacyChip mPrivacyChip;
@@ -203,10 +206,14 @@ public class QuickStatusBarHeader extends RelativeLayout implements
mStatusSeparator = findViewById(R.id.status_separator); mStatusSeparator = findViewById(R.id.status_separator);
mNextAlarmIcon = findViewById(R.id.next_alarm_icon); mNextAlarmIcon = findViewById(R.id.next_alarm_icon);
mNextAlarmTextView = findViewById(R.id.next_alarm_text); mNextAlarmTextView = findViewById(R.id.next_alarm_text);
mNextAlarmContainer = findViewById(R.id.alarm_container);
mNextAlarmContainer.setOnClickListener(this::onClick);
mRingerModeIcon = findViewById(R.id.ringer_mode_icon); mRingerModeIcon = findViewById(R.id.ringer_mode_icon);
mRingerModeTextView = findViewById(R.id.ringer_mode_text); mRingerModeTextView = findViewById(R.id.ringer_mode_text);
mRingerContainer = findViewById(R.id.ringer_container);
mRingerContainer.setOnClickListener(this::onClick);
mPrivacyChip = findViewById(R.id.privacy_chip); mPrivacyChip = findViewById(R.id.privacy_chip);
mPrivacyChip.setOnClickListener(this); mPrivacyChip.setOnClickListener(this::onClick);
mCarrierGroup = findViewById(R.id.carrier_group); 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 // QS will always show the estimate, and BatteryMeterView handles the case where
// it's unavailable or charging // it's unavailable or charging
mBatteryRemainingIcon.setPercentShowMode(BatteryMeterView.MODE_ESTIMATE); mBatteryRemainingIcon.setPercentShowMode(BatteryMeterView.MODE_ESTIMATE);
mRingerModeTextView.setSelected(true);
mNextAlarmTextView.setSelected(true);
} }
private List<String> getIgnoredIconSlots() { private List<String> getIgnoredIconSlots() {
@@ -285,11 +294,11 @@ public class QuickStatusBarHeader extends RelativeLayout implements
if (!ZenModeConfig.isZenOverridingRinger(mZenController.getZen(), if (!ZenModeConfig.isZenOverridingRinger(mZenController.getZen(),
mZenController.getConsolidatedPolicy())) { mZenController.getConsolidatedPolicy())) {
if (mRingerMode == AudioManager.RINGER_MODE_VIBRATE) { 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); mRingerModeTextView.setText(R.string.qs_status_phone_vibrate);
ringerVisible = true; ringerVisible = true;
} else if (mRingerMode == AudioManager.RINGER_MODE_SILENT) { } 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); mRingerModeTextView.setText(R.string.qs_status_phone_muted);
ringerVisible = true; ringerVisible = true;
} }
@@ -546,7 +555,7 @@ public class QuickStatusBarHeader extends RelativeLayout implements
@Override @Override
public void onClick(View v) { public void onClick(View v) {
if (v == mClockView) { if (v == mClockView || v == mNextAlarmContainer) {
mActivityStarter.postStartActivityDismissingKeyguard(new Intent( mActivityStarter.postStartActivityDismissingKeyguard(new Intent(
AlarmClock.ACTION_SHOW_ALARMS),0); AlarmClock.ACTION_SHOW_ALARMS),0);
} else if (v == mPrivacyChip) { } else if (v == mPrivacyChip) {
@@ -561,6 +570,9 @@ public class QuickStatusBarHeader extends RelativeLayout implements
new Intent(Intent.ACTION_REVIEW_ONGOING_PERMISSION_USAGE), 0); new Intent(Intent.ACTION_REVIEW_ONGOING_PERMISSION_USAGE), 0);
mHost.collapsePanels(); 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 @Override
public void onZenChanged(int zen) { public void onZenChanged(int zen) {
updateStatusText(); updateStatusText();
} }
@Override @Override
@@ -731,8 +742,10 @@ public class QuickStatusBarHeader extends RelativeLayout implements
public void setMargins(int sideMargins) { public void setMargins(int sideMargins) {
for (int i = 0; i < getChildCount(); i++) { for (int i = 0; i < getChildCount(); i++) {
View v = getChildAt(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 if (v == mSystemIconsView || v == mQuickQsStatusIcons || v == mHeaderQsPanel
|| v == mPrivacyChip) { || v == mHeaderTextContainerView) {
continue; continue;
} }
RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) v.getLayoutParams(); RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) v.getLayoutParams();