Load the avatar icon if it's not yet in the activity view

Save any changes that weren't committed yet, but don't restore
earlier cancelled changes.

Bug: 9008014
Change-Id: I8faacc42a3600d1338ddedb1b59f7307903743b4
This commit is contained in:
Amith Yamasani
2013-05-17 13:32:26 -07:00
parent 31ce86d3bd
commit 76738fa651

View File

@@ -123,6 +123,8 @@ public class AppRestrictionsFragment extends SettingsPreferenceFragment implemen
/** Key for extra passed in from calling fragment to indicate if this is a newly created user */ /** Key for extra passed in from calling fragment to indicate if this is a newly created user */
public static final String EXTRA_NEW_USER = "new_user"; public static final String EXTRA_NEW_USER = "new_user";
private static final String KEY_SAVED_PHOTO = "pending_photo";
HashMap<String,Boolean> mSelectedPackages = new HashMap<String,Boolean>(); HashMap<String,Boolean> mSelectedPackages = new HashMap<String,Boolean>();
private boolean mFirstTime = true; private boolean mFirstTime = true;
private boolean mNewUser; private boolean mNewUser;
@@ -141,6 +143,7 @@ public class AppRestrictionsFragment extends SettingsPreferenceFragment implemen
private Dialog mEditUserInfoDialog; private Dialog mEditUserInfoDialog;
private EditUserPhotoController mEditUserPhotoController; private EditUserPhotoController mEditUserPhotoController;
private Bitmap mSavedPhoto;
private BroadcastReceiver mUserBackgrounding = new BroadcastReceiver() { private BroadcastReceiver mUserBackgrounding = new BroadcastReceiver() {
@Override @Override
@@ -273,6 +276,7 @@ public class AppRestrictionsFragment extends SettingsPreferenceFragment implemen
if (icicle != null) { if (icicle != null) {
mUser = new UserHandle(icicle.getInt(EXTRA_USER_ID)); mUser = new UserHandle(icicle.getInt(EXTRA_USER_ID));
mSavedPhoto = (Bitmap) icicle.getParcelable(KEY_SAVED_PHOTO);
} else { } else {
Bundle args = getArguments(); Bundle args = getArguments();
@@ -307,6 +311,11 @@ public class AppRestrictionsFragment extends SettingsPreferenceFragment implemen
public void onSaveInstanceState(Bundle outState) { public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState); super.onSaveInstanceState(outState);
outState.putInt(EXTRA_USER_ID, mUser.getIdentifier()); outState.putInt(EXTRA_USER_ID, mUser.getIdentifier());
if (mEditUserInfoDialog != null && mEditUserInfoDialog.isShowing()
&& mEditUserPhotoController != null) {
outState.putParcelable(KEY_SAVED_PHOTO,
mEditUserPhotoController.getNewUserPhotoBitmap());
}
} }
public void onResume() { public void onResume() {
@@ -317,11 +326,9 @@ public class AppRestrictionsFragment extends SettingsPreferenceFragment implemen
new AppLoadingTask().execute((Void[]) null); new AppLoadingTask().execute((Void[]) null);
UserInfo info = mUserManager.getUserInfo(mUser.getIdentifier()); UserInfo info = mUserManager.getUserInfo(mUser.getIdentifier());
Bitmap userIcon = mUserManager.getUserIcon(mUser.getIdentifier());
CircleFramedDrawable circularIcon =
CircleFramedDrawable.getInstance(this.getActivity(), userIcon);
((TextView) mHeaderView.findViewById(android.R.id.title)).setText(info.name); ((TextView) mHeaderView.findViewById(android.R.id.title)).setText(info.name);
((ImageView) mHeaderView.findViewById(android.R.id.icon)).setImageDrawable(circularIcon); ((ImageView) mHeaderView.findViewById(android.R.id.icon)).setImageDrawable(
getCircularUserIcon());
} }
public void onPause() { public void onPause() {
@@ -337,6 +344,13 @@ public class AppRestrictionsFragment extends SettingsPreferenceFragment implemen
} }
} }
private Drawable getCircularUserIcon() {
Bitmap userIcon = mUserManager.getUserIcon(mUser.getIdentifier());
CircleFramedDrawable circularIcon =
CircleFramedDrawable.getInstance(this.getActivity(), userIcon);
return circularIcon;
}
private void updateUserAppList() { private void updateUserAppList() {
IPackageManager ipm = IPackageManager.Stub.asInterface( IPackageManager ipm = IPackageManager.Stub.asInterface(
ServiceManager.getService("package")); ServiceManager.getService("package"));
@@ -972,9 +986,19 @@ public class AppRestrictionsFragment extends SettingsPreferenceFragment implemen
userNameView.setText(info.name); userNameView.setText(info.name);
final ImageView userPhotoView = (ImageView) content.findViewById(R.id.user_photo); final ImageView userPhotoView = (ImageView) content.findViewById(R.id.user_photo);
userPhotoView.setImageDrawable(mUserIconView.getDrawable()); Drawable drawable = null;
if (mSavedPhoto != null) {
drawable = CircleFramedDrawable.getInstance(getActivity(), mSavedPhoto);
} else {
drawable = mUserIconView.getDrawable();
if (drawable == null) {
drawable = getCircularUserIcon();
}
}
userPhotoView.setImageDrawable(drawable);
mEditUserPhotoController = new EditUserPhotoController(this, userPhotoView); mEditUserPhotoController = new EditUserPhotoController(this, userPhotoView,
mSavedPhoto, drawable);
mEditUserInfoDialog = new AlertDialog.Builder(getActivity()) mEditUserInfoDialog = new AlertDialog.Builder(getActivity())
.setTitle(R.string.user_info_settings_title) .setTitle(R.string.user_info_settings_title)
@@ -998,10 +1022,11 @@ public class AppRestrictionsFragment extends SettingsPreferenceFragment implemen
} }
} }
// Update the photo if changed. // Update the photo if changed.
Drawable userPhoto = mEditUserPhotoController.getNewUserPhotoDrawable(); Drawable drawable = mEditUserPhotoController.getNewUserPhotoDrawable();
if (userPhoto != null Bitmap bitmap = mEditUserPhotoController.getNewUserPhotoBitmap();
&& !userPhoto.equals(mUserIconView.getDrawable())) { if (drawable != null && bitmap != null
mUserIconView.setImageDrawable(userPhoto); && !drawable.equals(mUserIconView.getDrawable())) {
mUserIconView.setImageDrawable(drawable);
new AsyncTask<Void, Void, Void>() { new AsyncTask<Void, Void, Void>() {
@Override @Override
protected Void doInBackground(Void... params) { protected Void doInBackground(Void... params) {
@@ -1013,9 +1038,15 @@ public class AppRestrictionsFragment extends SettingsPreferenceFragment implemen
} }
removeDialog(DIALOG_ID_EDIT_USER_INFO); removeDialog(DIALOG_ID_EDIT_USER_INFO);
} }
clearEditUserInfoDialog();
}
})
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
clearEditUserInfoDialog();
} }
}) })
.setNegativeButton(android.R.string.cancel, null)
.create(); .create();
// Make sure the IME is up. // Make sure the IME is up.
@@ -1028,6 +1059,11 @@ public class AppRestrictionsFragment extends SettingsPreferenceFragment implemen
return null; return null;
} }
private void clearEditUserInfoDialog() {
mEditUserInfoDialog = null;
mSavedPhoto = null;
}
private static class EditUserPhotoController { private static class EditUserPhotoController {
private static final int POPUP_LIST_ITEM_ID_CHOOSE_PHOTO = 1; private static final int POPUP_LIST_ITEM_ID_CHOOSE_PHOTO = 1;
private static final int POPUP_LIST_ITEM_ID_TAKE_PHOTO = 2; private static final int POPUP_LIST_ITEM_ID_TAKE_PHOTO = 2;
@@ -1053,7 +1089,8 @@ public class AppRestrictionsFragment extends SettingsPreferenceFragment implemen
private Bitmap mNewUserPhotoBitmap; private Bitmap mNewUserPhotoBitmap;
private Drawable mNewUserPhotoDrawable; private Drawable mNewUserPhotoDrawable;
public EditUserPhotoController(Fragment fragment, ImageView view) { public EditUserPhotoController(Fragment fragment, ImageView view,
Bitmap bitmap, Drawable drawable) {
mContext = view.getContext(); mContext = view.getContext();
mFragment = fragment; mFragment = fragment;
mImageView = view; mImageView = view;
@@ -1066,6 +1103,8 @@ public class AppRestrictionsFragment extends SettingsPreferenceFragment implemen
showUpdatePhotoPopup(); showUpdatePhotoPopup();
} }
}); });
mNewUserPhotoBitmap = bitmap;
mNewUserPhotoDrawable = drawable;
} }
public boolean onActivityResult(int requestCode, int resultCode, final Intent data) { public boolean onActivityResult(int requestCode, int resultCode, final Intent data) {