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:
@@ -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) {
|
||||||
|
Reference in New Issue
Block a user