From 7a6355b679e68d6e8cf7ccc54586abc9000f62bb Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Mon, 8 Oct 2012 18:19:09 -0700 Subject: Fixing issue where Quick Settings user profile was not showing name or default picture. (Bug 7308719) Change-Id: Idbaf377d1cd086cf5d8244d6c7ca084145ccf217 --- .../systemui/statusbar/phone/QuickSettings.java | 50 ++++++++++++---------- 1 file changed, 28 insertions(+), 22 deletions(-) (limited to 'packages/SystemUI/src') diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java index e8772df..0937c46 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java @@ -102,7 +102,7 @@ class QuickSettings { private int mBrightnessDialogShortTimeout; private int mBrightnessDialogLongTimeout; - private AsyncTask> mUserInfoTask; + private AsyncTask> mUserInfoTask; private LevelListDrawable mBatteryLevels; private LevelListDrawable mChargingBatteryLevels; @@ -203,35 +203,43 @@ class QuickSettings { final int userId = userInfo.id; final Context context = currentUserContext; - mUserInfoTask = new AsyncTask>() { + mUserInfoTask = new AsyncTask>() { @Override - protected Pair doInBackground(Void... params) { - Cursor cursor = context.getContentResolver().query( + protected Pair doInBackground(Void... params) { + final Cursor cursor = context.getContentResolver().query( Profile.CONTENT_URI, new String[] {Phone._ID, Phone.DISPLAY_NAME}, null, null, null); + final UserManager um = + (UserManager) mContext.getSystemService(Context.USER_SERVICE); - if (cursor == null) { - // Info not available. Should become available later. - return new Pair(null, null); + // Fall back to the UserManager nickname if we can't read the name from the local + // profile below. + String nickName = um.getUserName(); + String name = nickName; + Drawable avatar = null; + Bitmap rawAvatar = um.getUserIcon(userId); + if (rawAvatar != null) { + avatar = new BitmapDrawable(mContext.getResources(), rawAvatar); + } else { + avatar = mContext.getResources().getDrawable(R.drawable.ic_qs_default_user); } - String name = null; - try { - if (cursor.moveToFirst()) { - name = cursor.getString(cursor.getColumnIndex(Phone.DISPLAY_NAME)); + // Try and read the display name from the local profile + if (cursor != null) { + try { + if (cursor.moveToFirst()) { + name = cursor.getString(cursor.getColumnIndex(Phone.DISPLAY_NAME)); + } + } finally { + cursor.close(); } - } finally { - cursor.close(); } - final UserManager userManager = - (UserManager) mContext.getSystemService(Context.USER_SERVICE); - final BitmapDrawable icon = new BitmapDrawable(mContext.getResources(), - userManager.getUserIcon(userId)); - return new Pair(name, icon); + + return new Pair(name, avatar); } @Override - protected void onPostExecute(Pair result) { + protected void onPostExecute(Pair result) { super.onPostExecute(result); mModel.setUserTileInfo(result.first, result.second); mUserInfoTask = null; @@ -305,9 +313,7 @@ class QuickSettings { ImageView iv = (ImageView) view.findViewById(R.id.user_imageview); TextView tv = (TextView) view.findViewById(R.id.user_textview); tv.setText(state.label); - if (us.avatar != null) { - iv.setImageDrawable(us.avatar); - } + iv.setImageDrawable(us.avatar); view.setContentDescription(mContext.getString( R.string.accessibility_quick_settings_user, state.label)); } -- cgit v1.1