fix ProfileActivity avatar and edit button

This commit is contained in:
luvletter2333 2023-03-04 07:06:17 +08:00
parent 1497c7ddd3
commit 0ee46c7b1c
No known key found for this signature in database
GPG Key ID: 9EB7723F3A0ACF92
3 changed files with 37 additions and 102 deletions

View File

@ -72,7 +72,8 @@ public class ImageUpdater implements NotificationCenter.NotificationCenterDelega
ID_UPLOAD_FROM_GALLERY = 1, ID_UPLOAD_FROM_GALLERY = 1,
ID_SEARCH_WEB = 2, ID_SEARCH_WEB = 2,
ID_REMOVE_PHOTO = 3, ID_REMOVE_PHOTO = 3,
ID_RECORD_VIDEO = 4; ID_RECORD_VIDEO = 4,
ID_OPEN_AVATAR = 5;
public BaseFragment parentFragment; public BaseFragment parentFragment;
private ImageUpdaterDelegate delegate; private ImageUpdaterDelegate delegate;
@ -227,7 +228,7 @@ public class ImageUpdater implements NotificationCenter.NotificationCenterDelega
openAttachMenu(onDismiss); openAttachMenu(onDismiss);
return; return;
} }
BottomSheet.Builder builder = new BottomSheet.Builder(parentFragment.getParentActivity()); BottomSheet.NekoXBuilder builder = new BottomSheet.NekoXBuilder(parentFragment.getParentActivity());
if (type == TYPE_SET_PHOTO_FOR_USER) { if (type == TYPE_SET_PHOTO_FOR_USER) {
builder.setTitle(LocaleController.formatString("SetPhotoFor", R.string.SetPhotoFor, user.first_name), true); builder.setTitle(LocaleController.formatString("SetPhotoFor", R.string.SetPhotoFor, user.first_name), true);
@ -241,23 +242,29 @@ public class ImageUpdater implements NotificationCenter.NotificationCenterDelega
ArrayList<Integer> icons = new ArrayList<>(); ArrayList<Integer> icons = new ArrayList<>();
ArrayList<Integer> ids = new ArrayList<>(); ArrayList<Integer> ids = new ArrayList<>();
if (hasAvatar && parentFragment instanceof ProfileActivity) {
items.add(LocaleController.getString("Open", R.string.Open));
icons.add(R.drawable.baseline_visibility_24);
ids.add(ID_OPEN_AVATAR);
}
items.add(LocaleController.getString("UploadImage", R.string.UploadImage));
icons.add(R.drawable.baseline_image_24);
ids.add(ID_UPLOAD_FROM_GALLERY);
items.add(LocaleController.getString("ChooseTakePhoto", R.string.ChooseTakePhoto)); items.add(LocaleController.getString("ChooseTakePhoto", R.string.ChooseTakePhoto));
icons.add(R.drawable.msg_camera); icons.add(R.drawable.baseline_camera_alt_24);
ids.add(ID_TAKE_PHOTO); ids.add(ID_TAKE_PHOTO);
if (canSelectVideo) { if (canSelectVideo) {
items.add(LocaleController.getString("ChooseRecordVideo", R.string.ChooseRecordVideo)); items.add(LocaleController.getString("ChooseRecordVideo", R.string.ChooseRecordVideo));
icons.add(R.drawable.msg_video); icons.add(R.drawable.baseline_videocam_24);
ids.add(ID_RECORD_VIDEO); ids.add(ID_RECORD_VIDEO);
} }
items.add(LocaleController.getString("ChooseFromGallery", R.string.ChooseFromGallery));
icons.add(R.drawable.msg_photos);
ids.add(ID_UPLOAD_FROM_GALLERY);
if (searchAvailable) { if (searchAvailable) {
items.add(LocaleController.getString("ChooseFromSearch", R.string.ChooseFromSearch)); items.add(LocaleController.getString("ChooseFromSearch", R.string.ChooseFromSearch));
icons.add(R.drawable.msg_search); icons.add(R.drawable.baseline_search_24);
ids.add(ID_SEARCH_WEB); ids.add(ID_SEARCH_WEB);
} }
if (hasAvatar) { if (hasAvatar) {
@ -274,6 +281,16 @@ public class ImageUpdater implements NotificationCenter.NotificationCenterDelega
builder.setItems(items.toArray(new CharSequence[0]), iconsRes, (dialogInterface, i) -> { builder.setItems(items.toArray(new CharSequence[0]), iconsRes, (dialogInterface, i) -> {
int id = ids.get(i); int id = ids.get(i);
switch (id) { switch (id) {
case ID_OPEN_AVATAR:
TLRPC.User user = MessagesController.getInstance(currentAccount).getUser(UserConfig.getInstance(currentAccount).getClientUserId());
if (user != null && user.photo != null && user.photo.photo_big != null) {
PhotoViewer.getInstance().setParentActivity(parentFragment.getParentActivity());
if (user.photo.dc_id != 0) {
user.photo.photo_big.dc_id = user.photo.dc_id;
}
PhotoViewer.getInstance().openPhoto(user.photo.photo_big, ((ProfileActivity) parentFragment).provider);
}
break;
case ID_TAKE_PHOTO: case ID_TAKE_PHOTO:
openCamera(); openCamera();
break; break;
@ -299,64 +316,6 @@ public class ImageUpdater implements NotificationCenter.NotificationCenterDelega
} }
} }
public void openMenu(boolean hasAvatar, Runnable onDeleteAvatar, DialogInterface.OnDismissListener onDismiss) {
if (parentFragment == null || parentFragment.getParentActivity() == null) {
return;
}
if (useAttachMenu) {
openAttachMenu(onDismiss);
return;
}
BottomBuilder builder = new BottomBuilder(parentFragment.getParentActivity());
if (hasAvatar && parentFragment instanceof ProfileActivity) {
builder.addItem(LocaleController.getString("Open", R.string.Open), R.drawable.baseline_visibility_24, __ -> {
TLRPC.User user = MessagesController.getInstance(currentAccount).getUser(UserConfig.getInstance(currentAccount).getClientUserId());
if (user != null && user.photo != null && user.photo.photo_big != null) {
PhotoViewer.getInstance().setParentActivity(parentFragment.getParentActivity());
if (user.photo.dc_id != 0) {
user.photo.photo_big.dc_id = user.photo.dc_id;
}
PhotoViewer.getInstance().openPhoto(user.photo.photo_big, ((ProfileActivity) parentFragment).provider);
}
return Unit.INSTANCE;
});
}
builder.addItem(LocaleController.getString("UploadImage", R.string.UploadImage), R.drawable.baseline_image_24, __ -> {
openAttachMenu(onDismiss);
return Unit.INSTANCE;
});
if (searchAvailable) {
builder.addItem(LocaleController.getString("ChooseFromSearch", R.string.ChooseFromSearch), R.drawable.baseline_search_24, __ -> {
openSearch();
return Unit.INSTANCE;
});
}
if (hasAvatar) {
builder.addItem(LocaleController.getString("DeletePhoto", R.string.DeletePhoto), R.drawable.baseline_delete_24, true, __ -> {
onDeleteAvatar.run();
return Unit.INSTANCE;
});
}
BottomSheet sheet = builder.create();
sheet.setOnHideListener(onDismiss);
parentFragment.showDialog(sheet);
}
public void setSearchAvailable(boolean value) { public void setSearchAvailable(boolean value) {
useAttachMenu = searchAvailable = value; useAttachMenu = searchAvailable = value;
} }

View File

@ -1119,8 +1119,10 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter.
if (user == null) { if (user == null) {
return; return;
} }
imageUpdater.openMenu(user.photo != null && user.photo.photo_big != null && !(user.photo instanceof TLRPC.TL_userProfilePhotoEmpty), () -> MessagesController.getInstance(currentAccount).deleteUserPhoto(null), dialog -> { imageUpdater.openMenu(
}); user.photo != null && user.photo.photo_big != null && !(user.photo instanceof TLRPC.TL_userProfilePhotoEmpty),
() -> MessagesController.getInstance(currentAccount).deleteUserPhoto(null), dialog -> {},
ImageUpdater.TYPE_DEFAULT);
} else { } else {
openAvatar(); openAvatar();
} }
@ -4733,7 +4735,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter.
// avatarImage's onClick event should call this openAvatar method. // avatarImage's onClick event should call this openAvatar method.
if (userId == UserConfig.getInstance(currentAccount).getClientUserId() && imageUpdater != null) { if (userId == UserConfig.getInstance(currentAccount).getClientUserId() && imageUpdater != null) {
imageUpdater.openMenu(false, () -> MessagesController.getInstance(currentAccount).deleteUserPhoto(null), dialog -> { imageUpdater.openMenu(false, () -> MessagesController.getInstance(currentAccount).deleteUserPhoto(null), dialog -> {
}); }, ImageUpdater.TYPE_DEFAULT);
} }
} }
} else if (chatId != 0) { } else if (chatId != 0) {
@ -4757,38 +4759,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter.
private void onWriteButtonClick() { private void onWriteButtonClick() {
if (userId != 0) { if (userId != 0) {
if (imageUpdater != null) { if (imageUpdater != null) {
TLRPC.User user = MessagesController.getInstance(currentAccount).getUser(UserConfig.getInstance(currentAccount).getClientUserId()); presentFragment(new ChangeNameActivity(resourcesProvider));
if (user == null) {
user = UserConfig.getInstance(currentAccount).getCurrentUser();
}
if (user == null) {
return;
}
imageUpdater.openMenu(user.photo != null && user.photo.photo_big != null && !(user.photo instanceof TLRPC.TL_userProfilePhotoEmpty), () -> {
MessagesController.getInstance(currentAccount).deleteUserPhoto(null);
cameraDrawable.setCurrentFrame(0);
cellCameraDrawable.setCurrentFrame(0);
}, dialog -> {
if (!imageUpdater.isUploadingImage()) {
cameraDrawable.setCustomEndFrame(86);
cellCameraDrawable.setCustomEndFrame(86);
writeButton.playAnimation();
if (setAvatarCell != null) {
setAvatarCell.getImageView().playAnimation();
}
} else {
cameraDrawable.setCurrentFrame(0, false);
cellCameraDrawable.setCurrentFrame(0, false);
}
}, 0);
cameraDrawable.setCurrentFrame(0);
cameraDrawable.setCustomEndFrame(43);
cellCameraDrawable.setCurrentFrame(0);
cellCameraDrawable.setCustomEndFrame(43);
writeButton.playAnimation();
if (setAvatarCell != null) {
setAvatarCell.getImageView().playAnimation();
}
} else { } else {
if (playProfileAnimation != 0 && parentLayout.getFragmentStack().get(parentLayout.getFragmentStack().size() - 2) instanceof ChatActivity) { if (playProfileAnimation != 0 && parentLayout.getFragmentStack().get(parentLayout.getFragmentStack().size() - 2) instanceof ChatActivity) {
finishFragment(); finishFragment();

View File

@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#000000"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M17,10.5V7c0,-0.55 -0.45,-1 -1,-1H4c-0.55,0 -1,0.45 -1,1v10c0,0.55 0.45,1 1,1h12c0.55,0 1,-0.45 1,-1v-3.5l4,4v-11l-4,4z"/>
</vector>