Merge "Align power menu items, for portrait and landscape" into rvc-dev am: 8a9ab84076

Change-Id: I5c987e4325b617d1759431cf16ecfdc294ccd1f9
This commit is contained in:
TreeHugger Robot
2020-04-09 17:27:48 +00:00
committed by Automerger Merge Worker
9 changed files with 70 additions and 58 deletions

View File

@@ -72,6 +72,6 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical"
android:paddingTop="30dp" android:paddingTop="30dp"
android:layout_marginLeft="@dimen/controls_list_side_margin" android:layout_marginLeft="@dimen/global_actions_side_margin"
android:layout_marginRight="@dimen/controls_list_side_margin" /> android:layout_marginRight="@dimen/global_actions_side_margin" />
</merge> </merge>

View File

@@ -18,15 +18,16 @@
work around this for now with LinearLayouts. --> work around this for now with LinearLayouts. -->
<LinearLayout <LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center" android:gravity="center"
android:paddingTop="@dimen/global_actions_grid_item_vertical_margin" android:paddingTop="@dimen/global_actions_grid_item_vertical_margin"
android:paddingBottom="@dimen/global_actions_grid_item_vertical_margin" android:paddingBottom="@dimen/global_actions_grid_item_vertical_margin"
android:paddingLeft="@dimen/global_actions_grid_item_side_margin" android:paddingLeft="@dimen/global_actions_grid_item_side_margin"
android:paddingRight="@dimen/global_actions_grid_item_side_margin" android:paddingRight="@dimen/global_actions_grid_item_side_margin"
android:layout_marginRight="3dp" android:layout_marginRight="@dimen/control_base_item_margin"
android:layout_marginLeft="3dp" android:layout_marginLeft="@dimen/control_base_item_margin"
android:background="@drawable/control_background"> android:background="@drawable/control_background">
<LinearLayout <LinearLayout
android:layout_width="@dimen/global_actions_grid_item_width" android:layout_width="@dimen/global_actions_grid_item_width"

View File

@@ -12,17 +12,17 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:orientation="horizontal"
android:theme="@style/qs_theme" android:theme="@style/qs_theme"
android:gravity="top | center_horizontal" android:gravity="top"
android:clipChildren="false" android:clipChildren="false"
android:clipToPadding="false" android:clipToPadding="false"
android:layout_marginTop="@dimen/global_actions_top_margin" android:layout_marginTop="@dimen/global_actions_top_margin"
> >
<LinearLayout <LinearLayout
android:id="@android:id/list" android:id="@android:id/list"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/global_actions_grid_side_margin" android:layout_marginLeft="@dimen/global_actions_side_margin"
android:layout_marginRight="@dimen/global_actions_grid_side_margin" android:layout_marginRight="@dimen/global_actions_side_margin"
android:paddingLeft="@dimen/global_actions_grid_horizontal_padding" android:paddingLeft="@dimen/global_actions_grid_horizontal_padding"
android:paddingRight="@dimen/global_actions_grid_horizontal_padding" android:paddingRight="@dimen/global_actions_grid_horizontal_padding"
android:paddingTop="@dimen/global_actions_grid_vertical_padding" android:paddingTop="@dimen/global_actions_grid_vertical_padding"

View File

@@ -31,6 +31,6 @@
<dimen name="global_actions_grid_item_icon_bottom_margin">4dp</dimen> <dimen name="global_actions_grid_item_icon_bottom_margin">4dp</dimen>
<!-- Home Controls --> <!-- Home Controls -->
<dimen name="controls_list_side_margin">10dp</dimen> <dimen name="global_actions_side_margin">10dp</dimen>
</resources> </resources>

View File

@@ -27,6 +27,6 @@
<dimen name="navigation_side_padding">40dip</dimen> <dimen name="navigation_side_padding">40dip</dimen>
<!-- Home Controls --> <!-- Home Controls -->
<dimen name="controls_list_side_margin">12dp</dimen> <dimen name="global_actions_side_margin">12dp</dimen>
</resources> </resources>

View File

@@ -31,6 +31,6 @@
<dimen name="global_actions_grid_item_icon_bottom_margin">4dp</dimen> <dimen name="global_actions_grid_item_icon_bottom_margin">4dp</dimen>
<!-- Home Controls --> <!-- Home Controls -->
<dimen name="controls_list_side_margin">16dp</dimen> <dimen name="global_actions_side_margin">16dp</dimen>
</resources> </resources>

View File

@@ -50,6 +50,10 @@
<!-- The color of the text in the Global Actions menu --> <!-- The color of the text in the Global Actions menu -->
<color name="global_actions_alert_text">@color/GM2_red_700</color> <color name="global_actions_alert_text">@color/GM2_red_700</color>
<!-- The color of the background of the emergency button when home controls are visible -->
<color name="global_actions_emergency_background">@color/GM2_red_400</color>
<color name="global_actions_emergency_text">@color/GM2_grey_100</color>
<!-- Tint color for the content on the notification overflow card. --> <!-- Tint color for the content on the notification overflow card. -->
<color name="keyguard_overflow_content_color">#ff686868</color> <color name="keyguard_overflow_content_color">#ff686868</color>
@@ -211,6 +215,7 @@
<color name="GM2_red_50">#FCE8E6</color> <color name="GM2_red_50">#FCE8E6</color>
<color name="GM2_red_200">#F6AEA9</color> <color name="GM2_red_200">#F6AEA9</color>
<color name="GM2_red_300">#F28B82</color> <color name="GM2_red_300">#F28B82</color>
<color name="GM2_red_400">#EE675C</color>
<color name="GM2_red_500">#B71C1C</color> <color name="GM2_red_500">#B71C1C</color>
<color name="GM2_red_700">#C5221F</color> <color name="GM2_red_700">#C5221F</color>

View File

@@ -1008,6 +1008,9 @@
<dimen name="global_actions_grid_container_shadow_offset">20dp</dimen> <dimen name="global_actions_grid_container_shadow_offset">20dp</dimen>
<dimen name="global_actions_grid_container_negative_shadow_offset">-20dp</dimen> <dimen name="global_actions_grid_container_negative_shadow_offset">-20dp</dimen>
<!-- Margins at the left and right of the power menu and home controls widgets. -->
<dimen name="global_actions_side_margin">16dp</dimen>
<!-- The maximum offset in either direction that elements are moved horizontally to prevent <!-- The maximum offset in either direction that elements are moved horizontally to prevent
burn-in on AOD. --> burn-in on AOD. -->
<dimen name="burn_in_prevention_offset_x">8dp</dimen> <dimen name="burn_in_prevention_offset_x">8dp</dimen>
@@ -1232,7 +1235,6 @@
<dimen name="controls_header_side_margin">4dp</dimen> <dimen name="controls_header_side_margin">4dp</dimen>
<dimen name="controls_header_menu_size">48dp</dimen> <dimen name="controls_header_menu_size">48dp</dimen>
<dimen name="controls_header_app_icon_size">40dp</dimen> <dimen name="controls_header_app_icon_size">40dp</dimen>
<dimen name="controls_list_side_margin">16dp</dimen>
<dimen name="controls_top_margin">44dp</dimen> <dimen name="controls_top_margin">44dp</dimen>
<dimen name="control_header_text_size">22sp</dimen> <dimen name="control_header_text_size">22sp</dimen>
<dimen name="control_text_size">14sp</dimen> <dimen name="control_text_size">14sp</dimen>

View File

@@ -39,6 +39,7 @@ import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.pm.UserInfo; import android.content.pm.UserInfo;
import android.content.res.ColorStateList;
import android.content.res.Resources; import android.content.res.Resources;
import android.database.ContentObserver; import android.database.ContentObserver;
import android.graphics.Color; import android.graphics.Color;
@@ -188,7 +189,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
private boolean mKeyguardShowing = false; private boolean mKeyguardShowing = false;
private boolean mDeviceProvisioned = false; private boolean mDeviceProvisioned = false;
private ToggleAction.State mAirplaneState = ToggleAction.State.Off; private ToggleState mAirplaneState = ToggleState.Off;
private boolean mIsWaitingForEcmExit = false; private boolean mIsWaitingForEcmExit = false;
private boolean mHasTelephony; private boolean mHasTelephony;
private boolean mHasVibrator; private boolean mHasVibrator;
@@ -607,7 +608,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
@Override @Override
public boolean shouldBeSeparated() { public boolean shouldBeSeparated() {
return true; return !shouldShowControls();
} }
@Override @Override
@@ -615,7 +616,12 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
Context context, View convertView, ViewGroup parent, LayoutInflater inflater) { Context context, View convertView, ViewGroup parent, LayoutInflater inflater) {
View v = super.create(context, convertView, parent, inflater); View v = super.create(context, convertView, parent, inflater);
int textColor; int textColor;
if (shouldBeSeparated()) { if (shouldShowControls()) {
v.setBackgroundTintList(ColorStateList.valueOf(v.getResources().getColor(
com.android.systemui.R.color.global_actions_emergency_background)));
textColor = v.getResources().getColor(
com.android.systemui.R.color.global_actions_emergency_text);
} else if (shouldBeSeparated()) {
textColor = v.getResources().getColor( textColor = v.getResources().getColor(
com.android.systemui.R.color.global_actions_alert_text); com.android.systemui.R.color.global_actions_alert_text);
} else { } else {
@@ -625,7 +631,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
TextView messageView = v.findViewById(R.id.message); TextView messageView = v.findViewById(R.id.message);
messageView.setTextColor(textColor); messageView.setTextColor(textColor);
messageView.setSelected(true); // necessary for marquee to work messageView.setSelected(true); // necessary for marquee to work
ImageView icon = (ImageView) v.findViewById(R.id.icon); ImageView icon = v.findViewById(R.id.icon);
icon.getDrawable().setTint(textColor); icon.getDrawable().setTint(textColor);
return v; return v;
} }
@@ -1006,7 +1012,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
final boolean silentModeOn = final boolean silentModeOn =
mAudioManager.getRingerMode() != AudioManager.RINGER_MODE_NORMAL; mAudioManager.getRingerMode() != AudioManager.RINGER_MODE_NORMAL;
((ToggleAction) mSilentModeAction).updateState( ((ToggleAction) mSilentModeAction).updateState(
silentModeOn ? ToggleAction.State.On : ToggleAction.State.Off); silentModeOn ? ToggleState.On : ToggleState.Off);
} }
} }
@@ -1036,6 +1042,13 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
mUiEventLogger.log(GlobalActionsEvent.GA_POWER_MENU_OPEN); mUiEventLogger.log(GlobalActionsEvent.GA_POWER_MENU_OPEN);
} }
private int getActionLayoutId() {
if (shouldShowControls()) {
return com.android.systemui.R.layout.global_actions_grid_item_v2;
}
return com.android.systemui.R.layout.global_actions_grid_item;
}
/** /**
* The adapter used for the list within the global actions dialog, taking into account whether * The adapter used for the list within the global actions dialog, taking into account whether
* the keyguard is showing via * the keyguard is showing via
@@ -1247,20 +1260,12 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
} }
} }
protected int getActionLayoutId(Context context) {
if (shouldShowControls()) {
return com.android.systemui.R.layout.global_actions_grid_item_v2;
}
return com.android.systemui.R.layout.global_actions_grid_item;
}
public View create( public View create(
Context context, View convertView, ViewGroup parent, LayoutInflater inflater) { Context context, View convertView, ViewGroup parent, LayoutInflater inflater) {
View v = inflater.inflate(getActionLayoutId(context), parent, View v = inflater.inflate(getActionLayoutId(), parent, false /* attach */);
false);
ImageView icon = (ImageView) v.findViewById(R.id.icon); ImageView icon = v.findViewById(R.id.icon);
TextView messageView = (TextView) v.findViewById(R.id.message); TextView messageView = v.findViewById(R.id.message);
messageView.setSelected(true); // necessary for marquee to work messageView.setSelected(true); // necessary for marquee to work
if (mIcon != null) { if (mIcon != null) {
@@ -1279,30 +1284,30 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
} }
} }
private enum ToggleState {
Off(false),
TurningOn(true),
TurningOff(true),
On(false);
private final boolean mInTransition;
ToggleState(boolean intermediate) {
mInTransition = intermediate;
}
public boolean inTransition() {
return mInTransition;
}
}
/** /**
* A toggle action knows whether it is on or off, and displays an icon and status message * A toggle action knows whether it is on or off, and displays an icon and status message
* accordingly. * accordingly.
*/ */
private static abstract class ToggleAction implements Action { private abstract class ToggleAction implements Action {
enum State { protected ToggleState mState = ToggleState.Off;
Off(false),
TurningOn(true),
TurningOff(true),
On(false);
private final boolean inTransition;
State(boolean intermediate) {
inTransition = intermediate;
}
public boolean inTransition() {
return inTransition;
}
}
protected State mState = State.Off;
// prefs // prefs
protected int mEnabledIconResId; protected int mEnabledIconResId;
@@ -1346,13 +1351,12 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
LayoutInflater inflater) { LayoutInflater inflater) {
willCreate(); willCreate();
View v = inflater.inflate(com.android.systemui.R View v = inflater.inflate(getActionLayoutId(), parent, false /* attach */);
.layout.global_actions_grid_item, parent, false);
ImageView icon = (ImageView) v.findViewById(R.id.icon); ImageView icon = (ImageView) v.findViewById(R.id.icon);
TextView messageView = (TextView) v.findViewById(R.id.message); TextView messageView = (TextView) v.findViewById(R.id.message);
final boolean enabled = isEnabled(); final boolean enabled = isEnabled();
boolean on = ((mState == State.On) || (mState == State.TurningOn)); boolean on = ((mState == ToggleState.On) || (mState == ToggleState.TurningOn));
if (messageView != null) { if (messageView != null) {
messageView.setText(on ? mEnabledStatusMessageResId : mDisabledStatusMessageResId); messageView.setText(on ? mEnabledStatusMessageResId : mDisabledStatusMessageResId);
@@ -1377,7 +1381,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
return; return;
} }
final boolean nowOn = !(mState == State.On); final boolean nowOn = !(mState == ToggleState.On);
onToggle(nowOn); onToggle(nowOn);
changeStateFromPress(nowOn); changeStateFromPress(nowOn);
} }
@@ -1394,12 +1398,12 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
* @param buttonOn Whether the button was turned on or off * @param buttonOn Whether the button was turned on or off
*/ */
protected void changeStateFromPress(boolean buttonOn) { protected void changeStateFromPress(boolean buttonOn) {
mState = buttonOn ? State.On : State.Off; mState = buttonOn ? ToggleState.On : ToggleState.Off;
} }
abstract void onToggle(boolean on); abstract void onToggle(boolean on);
public void updateState(State state) { public void updateState(ToggleState state) {
mState = state; mState = state;
} }
} }
@@ -1433,7 +1437,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
// In ECM mode airplane state cannot be changed // In ECM mode airplane state cannot be changed
if (!TelephonyProperties.in_ecm_mode().orElse(false)) { if (!TelephonyProperties.in_ecm_mode().orElse(false)) {
mState = buttonOn ? State.TurningOn : State.TurningOff; mState = buttonOn ? ToggleState.TurningOn : ToggleState.TurningOff;
mAirplaneState = mState; mAirplaneState = mState;
} }
} }
@@ -1568,7 +1572,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
public void onServiceStateChanged(ServiceState serviceState) { public void onServiceStateChanged(ServiceState serviceState) {
if (!mHasTelephony) return; if (!mHasTelephony) return;
final boolean inAirplaneMode = serviceState.getState() == ServiceState.STATE_POWER_OFF; final boolean inAirplaneMode = serviceState.getState() == ServiceState.STATE_POWER_OFF;
mAirplaneState = inAirplaneMode ? ToggleAction.State.On : ToggleAction.State.Off; mAirplaneState = inAirplaneMode ? ToggleState.On : ToggleState.Off;
mAirplaneModeOn.updateState(mAirplaneState); mAirplaneModeOn.updateState(mAirplaneState);
mAdapter.notifyDataSetChanged(); mAdapter.notifyDataSetChanged();
} }
@@ -1627,7 +1631,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
mContentResolver, mContentResolver,
Settings.Global.AIRPLANE_MODE_ON, Settings.Global.AIRPLANE_MODE_ON,
0) == 1; 0) == 1;
mAirplaneState = airplaneModeOn ? ToggleAction.State.On : ToggleAction.State.Off; mAirplaneState = airplaneModeOn ? ToggleState.On : ToggleState.Off;
mAirplaneModeOn.updateState(mAirplaneState); mAirplaneModeOn.updateState(mAirplaneState);
} }
@@ -1644,7 +1648,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
intent.putExtra("state", on); intent.putExtra("state", on);
mContext.sendBroadcastAsUser(intent, UserHandle.ALL); mContext.sendBroadcastAsUser(intent, UserHandle.ALL);
if (!mHasTelephony) { if (!mHasTelephony) {
mAirplaneState = on ? ToggleAction.State.On : ToggleAction.State.Off; mAirplaneState = on ? ToggleState.On : ToggleState.Off;
} }
} }