Merge "Fix keyguard and qs user switcher disabled state" into rvc-dev am: 31b2931b9f am: ad10726514 am: 8e6e7379d1
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11687318 Change-Id: I6bf1371d60ed827c7286c8ef244fa3bf4a077170
This commit is contained in:
@@ -1,22 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
~ Copyright (C) 2016 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/textColorPrimary" />
|
|
||||||
<item android:color="@android:color/transparent" />
|
|
||||||
</selector>
|
|
||||||
@@ -27,13 +27,13 @@
|
|||||||
android:gravity="end|center_vertical"
|
android:gravity="end|center_vertical"
|
||||||
android:clickable="true"
|
android:clickable="true"
|
||||||
android:background="@drawable/kg_user_switcher_rounded_bg"
|
android:background="@drawable/kg_user_switcher_rounded_bg"
|
||||||
|
sysui:activatedTextAppearance="@style/TextAppearance.StatusBar.Expanded.UserSwitcher"
|
||||||
sysui:regularTextAppearance="@style/TextAppearance.StatusBar.Expanded.UserSwitcher">
|
sysui:regularTextAppearance="@style/TextAppearance.StatusBar.Expanded.UserSwitcher">
|
||||||
<TextView android:id="@+id/user_name"
|
<TextView android:id="@+id/user_name"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="25dp"
|
android:layout_marginStart="25dp"
|
||||||
android:layout_marginEnd="12dp"
|
android:layout_marginEnd="12dp"
|
||||||
android:textAppearance="@style/TextAppearance.StatusBar.Expanded.UserSwitcher"
|
|
||||||
/>
|
/>
|
||||||
<com.android.systemui.statusbar.phone.UserAvatarView android:id="@+id/user_picture"
|
<com.android.systemui.statusbar.phone.UserAvatarView android:id="@+id/user_picture"
|
||||||
android:layout_width="@dimen/kg_framed_avatar_size"
|
android:layout_width="@dimen/kg_framed_avatar_size"
|
||||||
|
|||||||
@@ -39,8 +39,6 @@
|
|||||||
android:layout_width="@dimen/kg_framed_avatar_size"
|
android:layout_width="@dimen/kg_framed_avatar_size"
|
||||||
android:layout_height="@dimen/kg_framed_avatar_size"
|
android:layout_height="@dimen/kg_framed_avatar_size"
|
||||||
android:contentDescription="@null"
|
android:contentDescription="@null"
|
||||||
android:backgroundTint="@color/qs_user_detail_avatar_tint"
|
|
||||||
android:backgroundTintMode="src_atop"
|
|
||||||
sysui:frameWidth="@dimen/keyguard_user_switcher_border_thickness"
|
sysui:frameWidth="@dimen/keyguard_user_switcher_border_thickness"
|
||||||
sysui:framePadding="2.5dp"
|
sysui:framePadding="2.5dp"
|
||||||
sysui:badgeDiameter="18dp"
|
sysui:badgeDiameter="18dp"
|
||||||
|
|||||||
@@ -30,6 +30,7 @@
|
|||||||
android:clipToPadding="false"
|
android:clipToPadding="false"
|
||||||
android:focusable="true"
|
android:focusable="true"
|
||||||
android:background="@drawable/ripple_drawable"
|
android:background="@drawable/ripple_drawable"
|
||||||
|
systemui:activatedTextAppearance="@style/TextAppearance.QS.UserSwitcher"
|
||||||
systemui:regularTextAppearance="@style/TextAppearance.QS.UserSwitcher">
|
systemui:regularTextAppearance="@style/TextAppearance.QS.UserSwitcher">
|
||||||
|
|
||||||
<com.android.systemui.statusbar.phone.UserAvatarView
|
<com.android.systemui.statusbar.phone.UserAvatarView
|
||||||
@@ -37,8 +38,6 @@
|
|||||||
android:layout_width="@dimen/qs_framed_avatar_size"
|
android:layout_width="@dimen/qs_framed_avatar_size"
|
||||||
android:layout_height="@dimen/qs_framed_avatar_size"
|
android:layout_height="@dimen/qs_framed_avatar_size"
|
||||||
android:layout_marginBottom="7dp"
|
android:layout_marginBottom="7dp"
|
||||||
android:backgroundTint="@color/qs_user_detail_avatar_tint"
|
|
||||||
android:backgroundTintMode="src_atop"
|
|
||||||
systemui:frameWidth="6dp"
|
systemui:frameWidth="6dp"
|
||||||
systemui:badgeDiameter="18dp"
|
systemui:badgeDiameter="18dp"
|
||||||
systemui:badgeMargin="1dp"
|
systemui:badgeMargin="1dp"
|
||||||
|
|||||||
@@ -95,14 +95,11 @@ public class UserDetailItemView extends LinearLayout {
|
|||||||
mAvatar.setDrawableWithBadge(picture, userId);
|
mAvatar.setDrawableWithBadge(picture, userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAvatarEnabled(boolean enabled) {
|
|
||||||
mAvatar.setEnabled(enabled);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDisabledByAdmin(boolean disabled) {
|
public void setDisabledByAdmin(boolean disabled) {
|
||||||
mRestrictedPadlock.setVisibility(disabled ? View.VISIBLE : View.GONE);
|
if (mRestrictedPadlock != null) {
|
||||||
mName.setEnabled(!disabled);
|
mRestrictedPadlock.setVisibility(disabled ? View.VISIBLE : View.GONE);
|
||||||
mAvatar.setEnabled(!disabled);
|
}
|
||||||
|
setEnabled(!disabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setEnabled(boolean enabled) {
|
public void setEnabled(boolean enabled) {
|
||||||
|
|||||||
@@ -16,8 +16,12 @@
|
|||||||
|
|
||||||
package com.android.systemui.qs.tiles;
|
package com.android.systemui.qs.tiles;
|
||||||
|
|
||||||
|
import static com.android.systemui.statusbar.policy.UserSwitcherController.USER_SWITCH_DISABLED_ALPHA;
|
||||||
|
import static com.android.systemui.statusbar.policy.UserSwitcherController.USER_SWITCH_ENABLED_ALPHA;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.graphics.drawable.BitmapDrawable;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.graphics.drawable.LayerDrawable;
|
import android.graphics.drawable.LayerDrawable;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
@@ -94,18 +98,21 @@ public class UserDetailView extends PseudoGridView {
|
|||||||
}
|
}
|
||||||
String name = getName(mContext, item);
|
String name = getName(mContext, item);
|
||||||
if (item.picture == null) {
|
if (item.picture == null) {
|
||||||
v.bind(name, getDrawable(mContext, item), item.resolveId());
|
v.bind(name, getDrawable(mContext, item).mutate(), item.resolveId());
|
||||||
} else {
|
} else {
|
||||||
v.bind(name, item.picture, item.info.id);
|
Drawable drawable = new BitmapDrawable(v.getResources(), item.picture);
|
||||||
|
drawable.setColorFilter(
|
||||||
|
item.isSwitchToEnabled ? null : getDisabledUserAvatarColorFilter());
|
||||||
|
v.bind(name, drawable, item.info.id);
|
||||||
}
|
}
|
||||||
v.setActivated(item.isCurrent);
|
v.setActivated(item.isCurrent);
|
||||||
|
v.setDisabledByAdmin(item.isDisabledByAdmin);
|
||||||
|
v.setEnabled(item.isSwitchToEnabled);
|
||||||
|
v.setAlpha(v.isEnabled() ? USER_SWITCH_ENABLED_ALPHA : USER_SWITCH_DISABLED_ALPHA);
|
||||||
|
|
||||||
if (item.isCurrent) {
|
if (item.isCurrent) {
|
||||||
mCurrentUserView = v;
|
mCurrentUserView = v;
|
||||||
}
|
}
|
||||||
v.setDisabledByAdmin(item.isDisabledByAdmin);
|
|
||||||
if (!item.isSwitchToEnabled) {
|
|
||||||
v.setEnabled(false);
|
|
||||||
}
|
|
||||||
v.setTag(item);
|
v.setTag(item);
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
@@ -113,8 +120,14 @@ public class UserDetailView extends PseudoGridView {
|
|||||||
private static Drawable getDrawable(Context context,
|
private static Drawable getDrawable(Context context,
|
||||||
UserSwitcherController.UserRecord item) {
|
UserSwitcherController.UserRecord item) {
|
||||||
Drawable icon = getIconDrawable(context, item);
|
Drawable icon = getIconDrawable(context, item);
|
||||||
int iconColorRes = item.isCurrent ? R.color.qs_user_switcher_selected_avatar_icon_color
|
int iconColorRes;
|
||||||
: R.color.qs_user_switcher_avatar_icon_color;
|
if (item.isCurrent) {
|
||||||
|
iconColorRes = R.color.qs_user_switcher_selected_avatar_icon_color;
|
||||||
|
} else if (!item.isSwitchToEnabled) {
|
||||||
|
iconColorRes = R.color.GM2_grey_600;
|
||||||
|
} else {
|
||||||
|
iconColorRes = R.color.qs_user_switcher_avatar_icon_color;
|
||||||
|
}
|
||||||
icon.setTint(context.getResources().getColor(iconColorRes, context.getTheme()));
|
icon.setTint(context.getResources().getColor(iconColorRes, context.getTheme()));
|
||||||
|
|
||||||
int bgRes = item.isCurrent ? R.drawable.bg_avatar_selected : R.drawable.qs_bg_avatar;
|
int bgRes = item.isCurrent ? R.drawable.bg_avatar_selected : R.drawable.qs_bg_avatar;
|
||||||
|
|||||||
@@ -16,11 +16,15 @@
|
|||||||
|
|
||||||
package com.android.systemui.statusbar.policy;
|
package com.android.systemui.statusbar.policy;
|
||||||
|
|
||||||
|
import static com.android.systemui.statusbar.policy.UserSwitcherController.USER_SWITCH_DISABLED_ALPHA;
|
||||||
|
import static com.android.systemui.statusbar.policy.UserSwitcherController.USER_SWITCH_ENABLED_ALPHA;
|
||||||
|
|
||||||
import android.animation.Animator;
|
import android.animation.Animator;
|
||||||
import android.animation.AnimatorListenerAdapter;
|
import android.animation.AnimatorListenerAdapter;
|
||||||
import android.animation.ObjectAnimator;
|
import android.animation.ObjectAnimator;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.database.DataSetObserver;
|
import android.database.DataSetObserver;
|
||||||
|
import android.graphics.drawable.BitmapDrawable;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.graphics.drawable.LayerDrawable;
|
import android.graphics.drawable.LayerDrawable;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
@@ -46,8 +50,6 @@ public class KeyguardUserSwitcher {
|
|||||||
|
|
||||||
private static final String TAG = "KeyguardUserSwitcher";
|
private static final String TAG = "KeyguardUserSwitcher";
|
||||||
private static final boolean ALWAYS_ON = false;
|
private static final boolean ALWAYS_ON = false;
|
||||||
private static final float USER_SWITCH_ENABLED_ALPHA = 1.0f;
|
|
||||||
private static final float USER_SWITCH_DISABLED_ALPHA = 0.38f;
|
|
||||||
|
|
||||||
private final Container mUserSwitcherContainer;
|
private final Container mUserSwitcherContainer;
|
||||||
private final KeyguardStatusBarView mStatusBarView;
|
private final KeyguardStatusBarView mStatusBarView;
|
||||||
@@ -286,27 +288,34 @@ public class KeyguardUserSwitcher {
|
|||||||
if (item.picture == null) {
|
if (item.picture == null) {
|
||||||
v.bind(name, getDrawable(mContext, item).mutate(), item.resolveId());
|
v.bind(name, getDrawable(mContext, item).mutate(), item.resolveId());
|
||||||
} else {
|
} else {
|
||||||
v.bind(name, item.picture, item.info.id);
|
Drawable drawable = new BitmapDrawable(v.getResources(), item.picture);
|
||||||
|
drawable.setColorFilter(
|
||||||
|
item.isSwitchToEnabled ? null : getDisabledUserAvatarColorFilter());
|
||||||
|
v.bind(name, drawable, item.info.id);
|
||||||
}
|
}
|
||||||
// Disable the icon if switching is disabled
|
v.setActivated(item.isCurrent);
|
||||||
v.setAvatarEnabled(item.isSwitchToEnabled);
|
v.setDisabledByAdmin(item.isDisabledByAdmin);
|
||||||
convertView.setActivated(item.isCurrent);
|
v.setEnabled(item.isSwitchToEnabled);
|
||||||
|
v.setAlpha(v.isEnabled() ? USER_SWITCH_ENABLED_ALPHA : USER_SWITCH_DISABLED_ALPHA);
|
||||||
|
|
||||||
if (item.isCurrent) {
|
if (item.isCurrent) {
|
||||||
mCurrentUserView = convertView;
|
mCurrentUserView = v;
|
||||||
}
|
}
|
||||||
convertView.setTag(item);
|
v.setTag(item);
|
||||||
convertView.setAlpha(
|
return v;
|
||||||
item.isCurrent || item.isSwitchToEnabled ? USER_SWITCH_ENABLED_ALPHA
|
|
||||||
: USER_SWITCH_DISABLED_ALPHA);
|
|
||||||
convertView.setEnabled(item.isSwitchToEnabled);
|
|
||||||
return convertView;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Drawable getDrawable(Context context,
|
private static Drawable getDrawable(Context context,
|
||||||
UserSwitcherController.UserRecord item) {
|
UserSwitcherController.UserRecord item) {
|
||||||
Drawable drawable = getIconDrawable(context, item);
|
Drawable drawable = getIconDrawable(context, item);
|
||||||
int iconColorRes = item.isCurrent ? R.color.kg_user_switcher_selected_avatar_icon_color
|
int iconColorRes;
|
||||||
: R.color.kg_user_switcher_avatar_icon_color;
|
if (item.isCurrent) {
|
||||||
|
iconColorRes = R.color.kg_user_switcher_selected_avatar_icon_color;
|
||||||
|
} else if (!item.isSwitchToEnabled) {
|
||||||
|
iconColorRes = R.color.GM2_grey_600;
|
||||||
|
} else {
|
||||||
|
iconColorRes = R.color.kg_user_switcher_avatar_icon_color;
|
||||||
|
}
|
||||||
drawable.setTint(context.getResources().getColor(iconColorRes, context.getTheme()));
|
drawable.setTint(context.getResources().getColor(iconColorRes, context.getTheme()));
|
||||||
|
|
||||||
if (item.isCurrent) {
|
if (item.isCurrent) {
|
||||||
|
|||||||
@@ -31,6 +31,9 @@ import android.content.IntentFilter;
|
|||||||
import android.content.pm.UserInfo;
|
import android.content.pm.UserInfo;
|
||||||
import android.database.ContentObserver;
|
import android.database.ContentObserver;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
|
import android.graphics.ColorFilter;
|
||||||
|
import android.graphics.ColorMatrix;
|
||||||
|
import android.graphics.ColorMatrixColorFilter;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
@@ -81,6 +84,9 @@ import javax.inject.Singleton;
|
|||||||
@Singleton
|
@Singleton
|
||||||
public class UserSwitcherController implements Dumpable {
|
public class UserSwitcherController implements Dumpable {
|
||||||
|
|
||||||
|
public static final float USER_SWITCH_ENABLED_ALPHA = 1.0f;
|
||||||
|
public static final float USER_SWITCH_DISABLED_ALPHA = 0.38f;
|
||||||
|
|
||||||
private static final String TAG = "UserSwitcherController";
|
private static final String TAG = "UserSwitcherController";
|
||||||
private static final boolean DEBUG = false;
|
private static final boolean DEBUG = false;
|
||||||
private static final String SIMPLE_USER_SWITCHER_GLOBAL_SETTING =
|
private static final String SIMPLE_USER_SWITCHER_GLOBAL_SETTING =
|
||||||
@@ -674,6 +680,12 @@ public class UserSwitcherController implements Dumpable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected static ColorFilter getDisabledUserAvatarColorFilter() {
|
||||||
|
ColorMatrix matrix = new ColorMatrix();
|
||||||
|
matrix.setSaturation(0f); // 0 - grayscale
|
||||||
|
return new ColorMatrixColorFilter(matrix);
|
||||||
|
}
|
||||||
|
|
||||||
protected static Drawable getIconDrawable(Context context, UserRecord item) {
|
protected static Drawable getIconDrawable(Context context, UserRecord item) {
|
||||||
int iconRes;
|
int iconRes;
|
||||||
if (item.isAddUser) {
|
if (item.isAddUser) {
|
||||||
|
|||||||
Reference in New Issue
Block a user