feat: Support Drag Event in ChatActivityEnterView

This commit is contained in:
xtaodada 2024-07-29 14:41:41 +08:00
parent 1bd254e6c0
commit cc69079a1c
Signed by: xtaodada
GPG Key ID: 4CBB3F4FA8C85659

View File

@ -76,6 +76,7 @@ import android.util.Log;
import android.util.Property;
import android.util.TypedValue;
import android.view.ActionMode;
import android.view.DragEvent;
import android.view.Gravity;
import android.view.HapticFeedbackConstants;
import android.view.KeyEvent;
@ -5337,7 +5338,23 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific
return super.onTextContextMenuItem(id);
}
@Override
public boolean onDragEvent(DragEvent event) {
if (event.getAction() == DragEvent.ACTION_DROP) {
ClipData clipData = event.getClipData();
if (clipData != null && LaunchActivity.instance != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
LaunchActivity.instance.requestDragAndDropPermissions(event);
if (clipData.getItemCount() == 1 && (clipData.getDescription().hasMimeType("image/*") || clipData.getDescription().hasMimeType("video/mp4")) && !isEditingBusinessLink()) {
editPhoto(clipData.getItemAt(0).getUri(), clipData.getDescription().getMimeType(0));
return true;
}
}
}
return super.onDragEvent(event);
}
private void editPhoto(Uri uri, String mime) {
boolean isVideo = mime.contains("video");
final File file = AndroidUtilities.generatePicturePath(parentFragment != null && parentFragment.isSecretChat(), MimeTypeMap.getSingleton().getExtensionFromMimeType(mime));
Utilities.globalQueue.postRunnable(() -> {
try {
@ -5351,7 +5368,7 @@ public class ChatActivityEnterView extends BlurredFrameLayout implements Notific
}
in.close();
fos.close();
MediaController.PhotoEntry photoEntry = new MediaController.PhotoEntry(0, -1, 0, file.getAbsolutePath(), 0, false, 0, 0, 0);
MediaController.PhotoEntry photoEntry = new MediaController.PhotoEntry(0, -1, 0, file.getAbsolutePath(), 0, isVideo, 0, 0, 0);
ArrayList<Object> entries = new ArrayList<>();
entries.add(photoEntry);
AndroidUtilities.runOnUIThread(() -> {