diff options
author | Adrian Roos <roosa@google.com> | 2015-06-09 18:09:49 -0700 |
---|---|---|
committer | Adrian Roos <roosa@google.com> | 2015-06-09 18:09:49 -0700 |
commit | ffc9097d10174968750c7a7b05953cb8f80367e4 (patch) | |
tree | eb8aa1ff600eee40a4973ef5c2986eb79819e449 /packages | |
parent | 9b9947de5dd06e7ae21a30d95b243af043e71b96 (diff) | |
download | frameworks_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')
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); |