summaryrefslogtreecommitdiffstats
path: root/packages
diff options
context:
space:
mode:
authorAdrian Roos <roosa@google.com>2015-06-09 18:09:49 -0700
committerAdrian Roos <roosa@google.com>2015-06-09 18:09:49 -0700
commitffc9097d10174968750c7a7b05953cb8f80367e4 (patch)
treeeb8aa1ff600eee40a4973ef5c2986eb79819e449 /packages
parent9b9947de5dd06e7ae21a30d95b243af043e71b96 (diff)
downloadframeworks_base-ffc9097d10174968750c7a7b05953cb8f80367e4.zip
frameworks_base-ffc9097d10174968750c7a7b05953cb8f80367e4.tar.gz
frameworks_base-ffc9097d10174968750c7a7b05953cb8f80367e4.tar.bz2
Add content description to keyguard user avatar
Bug: 20535812 Change-Id: I32ff0878c2332681ebd848c9da6e2dc42363b9be
Diffstat (limited to 'packages')
-rw-r--r--packages/SystemUI/res/values/strings.xml3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/MultiUserSwitch.java95
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java1
4 files changed, 74 insertions, 30 deletions
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index 14c8262..0e0584f 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -801,6 +801,9 @@
<!-- Accessibility label for the button that opens the user switcher and announces the current user. -->
<string name="accessibility_multi_user_switch_switcher_with_current">Switch user, current user <xliff:g id="current_user_name" example="John Doe">%s</xliff:g></string>
+ <!-- Accessibility label for the user icon on the lock screen. -->
+ <string name="accessibility_multi_user_switch_inactive">Current user <xliff:g id="current_user_name" example="John Doe">%s</xliff:g></string>
+
<!-- Accessibility label for the button that opens the quick contact of the user. -->
<string name="accessibility_multi_user_switch_quick_contact">Show profile</string>
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
index 13b3898..b93fc76 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
@@ -34,6 +34,7 @@ import com.android.systemui.R;
import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.statusbar.policy.KeyguardUserSwitcher;
import com.android.systemui.statusbar.policy.UserInfoController;
+import com.android.systemui.statusbar.policy.UserSwitcherController;
import java.text.NumberFormat;
@@ -140,6 +141,10 @@ public class KeyguardStatusBarView extends RelativeLayout
((BatteryMeterView) findViewById(R.id.battery)).setBatteryController(batteryController);
}
+ public void setUserSwitcherController(UserSwitcherController controller) {
+ mMultiUserSwitch.setUserSwitcherController(controller);
+ }
+
public void setUserInfoController(UserInfoController userInfoController) {
userInfoController.addListener(new UserInfoController.OnUserInfoChangedListener() {
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/MultiUserSwitch.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/MultiUserSwitch.java
index f11d83c..e70d146 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/MultiUserSwitch.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/MultiUserSwitch.java
@@ -24,7 +24,7 @@ import android.provider.ContactsContract;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.View;
-import android.view.accessibility.AccessibilityEvent;
+import android.view.ViewGroup;
import android.widget.FrameLayout;
import com.android.systemui.R;
@@ -40,10 +40,14 @@ public class MultiUserSwitch extends FrameLayout implements View.OnClickListener
private QSPanel mQsPanel;
private KeyguardUserSwitcher mKeyguardUserSwitcher;
private boolean mKeyguardMode;
+ private UserSwitcherController.BaseUserAdapter mUserListener;
+
final UserManager mUserManager;
private final int[] mTmpInt2 = new int[2];
+ private UserSwitcherController mUserSwitcherController;
+
public MultiUserSwitch(Context context, AttributeSet attrs) {
super(context, attrs);
mUserManager = UserManager.get(getContext());
@@ -53,10 +57,18 @@ public class MultiUserSwitch extends FrameLayout implements View.OnClickListener
protected void onFinishInflate() {
super.onFinishInflate();
setOnClickListener(this);
+ refreshContentDescription();
}
public void setQsPanel(QSPanel qsPanel) {
mQsPanel = qsPanel;
+ setUserSwitcherController(qsPanel.getHost().getUserSwitcherController());
+ }
+
+ public void setUserSwitcherController(UserSwitcherController userSwitcherController) {
+ mUserSwitcherController = userSwitcherController;
+ registerListener();
+ refreshContentDescription();
}
public void setKeyguardUserSwitcher(KeyguardUserSwitcher keyguardUserSwitcher) {
@@ -65,6 +77,28 @@ public class MultiUserSwitch extends FrameLayout implements View.OnClickListener
public void setKeyguardMode(boolean keyguardShowing) {
mKeyguardMode = keyguardShowing;
+ registerListener();
+ }
+
+ private void registerListener() {
+ if (UserSwitcherController.isUserSwitcherAvailable(mUserManager) && mUserListener == null) {
+
+ final UserSwitcherController controller = mUserSwitcherController;
+ if (controller != null) {
+ mUserListener = new UserSwitcherController.BaseUserAdapter(controller) {
+ @Override
+ public void notifyDataSetChanged() {
+ refreshContentDescription();
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ return null;
+ }
+ };
+ refreshContentDescription();
+ }
+ }
}
@Override
@@ -74,22 +108,16 @@ public class MultiUserSwitch extends FrameLayout implements View.OnClickListener
if (mKeyguardUserSwitcher != null) {
mKeyguardUserSwitcher.show(true /* animate */);
}
- } else {
- if (mQsPanel != null) {
- UserSwitcherController userSwitcherController =
- mQsPanel.getHost().getUserSwitcherController();
- if (userSwitcherController != null) {
- View center = getChildCount() > 0 ? getChildAt(0) : this;
-
- center.getLocationInWindow(mTmpInt2);
- mTmpInt2[0] += center.getWidth() / 2;
- mTmpInt2[1] += center.getHeight() / 2;
-
- mQsPanel.showDetailAdapter(true,
- userSwitcherController.userDetailAdapter,
- mTmpInt2);
- }
- }
+ } else if (mQsPanel != null && mUserSwitcherController != null) {
+ View center = getChildCount() > 0 ? getChildAt(0) : this;
+
+ center.getLocationInWindow(mTmpInt2);
+ mTmpInt2[0] += center.getWidth() / 2;
+ mTmpInt2[1] += center.getHeight() / 2;
+
+ mQsPanel.showDetailAdapter(true,
+ mUserSwitcherController.userDetailAdapter,
+ mTmpInt2);
}
} else {
Intent intent = ContactsContract.QuickContact.composeQuickContactsIntent(
@@ -100,20 +128,21 @@ public class MultiUserSwitch extends FrameLayout implements View.OnClickListener
}
@Override
- public void onPopulateAccessibilityEvent(AccessibilityEvent event) {
- super.onPopulateAccessibilityEvent(event);
+ public void setClickable(boolean clickable) {
+ super.setClickable(clickable);
+ refreshContentDescription();
+ }
+ private void refreshContentDescription() {
+ String currentUser = null;
+ if (UserSwitcherController.isUserSwitcherAvailable(mUserManager)
+ && mUserSwitcherController != null) {
+ currentUser = mUserSwitcherController.getCurrentUserName(mContext);
+ }
+
+ String text = null;
if (isClickable()) {
- String text;
if (UserSwitcherController.isUserSwitcherAvailable(mUserManager)) {
- String currentUser = null;
- if (mQsPanel != null) {
- UserSwitcherController controller = mQsPanel.getHost()
- .getUserSwitcherController();
- if (controller != null) {
- currentUser = controller.getCurrentUserName(mContext);
- }
- }
if (TextUtils.isEmpty(currentUser)) {
text = mContext.getString(R.string.accessibility_multi_user_switch_switcher);
} else {
@@ -124,11 +153,17 @@ public class MultiUserSwitch extends FrameLayout implements View.OnClickListener
} else {
text = mContext.getString(R.string.accessibility_multi_user_switch_quick_contact);
}
- if (!TextUtils.isEmpty(text)) {
- event.getText().add(text);
+ } else {
+ if (!TextUtils.isEmpty(currentUser)) {
+ text = mContext.getString(
+ R.string.accessibility_multi_user_switch_inactive,
+ currentUser);
}
}
+ if (!TextUtils.equals(getContentDescription(), text)) {
+ setContentDescription(text);
+ }
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index 569b918..122e78c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -858,6 +858,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
// User info. Trigger first load.
mHeader.setUserInfoController(mUserInfoController);
mKeyguardStatusBar.setUserInfoController(mUserInfoController);
+ mKeyguardStatusBar.setUserSwitcherController(mUserSwitcherController);
mUserInfoController.reloadUserInfo();
mHeader.setBatteryController(mBatteryController);