diff --git a/res/drawable-hdpi/ic_folder_white_48dp.png b/res/drawable-hdpi/ic_folder_white_48dp.png deleted file mode 100644 index b93d5a1e4a..0000000000 Binary files a/res/drawable-hdpi/ic_folder_white_48dp.png and /dev/null differ diff --git a/res/drawable-mdpi/ic_folder_white_48dp.png b/res/drawable-mdpi/ic_folder_white_48dp.png deleted file mode 100644 index 71a5a137c4..0000000000 Binary files a/res/drawable-mdpi/ic_folder_white_48dp.png and /dev/null differ diff --git a/res/drawable-xhdpi/ic_folder_white_48dp.png b/res/drawable-xhdpi/ic_folder_white_48dp.png deleted file mode 100644 index a1afbe9daf..0000000000 Binary files a/res/drawable-xhdpi/ic_folder_white_48dp.png and /dev/null differ diff --git a/res/drawable-xxhdpi/ic_folder_white_48dp.png b/res/drawable-xxhdpi/ic_folder_white_48dp.png deleted file mode 100644 index 0f95c75501..0000000000 Binary files a/res/drawable-xxhdpi/ic_folder_white_48dp.png and /dev/null differ diff --git a/res/drawable-xxxhdpi/ic_folder_white_48dp.png b/res/drawable-xxxhdpi/ic_folder_white_48dp.png deleted file mode 100644 index 862a359c65..0000000000 Binary files a/res/drawable-xxxhdpi/ic_folder_white_48dp.png and /dev/null differ diff --git a/res/drawable/ic_baseline_folder_24.xml b/res/drawable/ic_baseline_folder_24.xml new file mode 100644 index 0000000000..dc6b080235 --- /dev/null +++ b/res/drawable/ic_baseline_folder_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/res/layout/mediapicker_folder_item.xml b/res/layout/mediapicker_folder_item.xml index 9d1d729ebe..b52ace6f4a 100644 --- a/res/layout/mediapicker_folder_item.xml +++ b/res/layout/mediapicker_folder_item.xml @@ -33,7 +33,8 @@ android:layout_width="20dp" android:layout_height="20dp" android:layout_marginEnd="6dp" - android:src="@drawable/ic_folder_white_48dp"/> + android:tint="@android:color/white" + android:src="@drawable/ic_baseline_folder_24"/> - * The functionality of this class should be refactored to use - * MediaStore. */ class MediaRepository { @@ -82,30 +76,17 @@ class MediaRepository { } } - String cameraBucketId = imageFolders.getCameraBucketId() != null ? imageFolders.getCameraBucketId() : videoFolders.getCameraBucketId(); - FolderData cameraFolder = cameraBucketId != null ? folders.remove(cameraBucketId) : null; - List mediaFolders = Stream.of(folders.values()).map(folder -> new MediaFolder(folder.getThumbnail(), + List mediaFolders = Stream.of(folders.values()).map(folder -> new MediaFolder(folder.getThumbnail(), folder.getTitle(), folder.getCount(), - folder.getBucketId(), - MediaFolder.FolderType.NORMAL)) + folder.getBucketId())) .sorted((o1, o2) -> o1.getTitle().toLowerCase().compareTo(o2.getTitle().toLowerCase())) .toList(); Uri allMediaThumbnail = imageFolders.getThumbnailTimestamp() > videoFolders.getThumbnailTimestamp() ? imageFolders.getThumbnail() : videoFolders.getThumbnail(); - if (allMediaThumbnail != null) { int allMediaCount = Stream.of(mediaFolders).reduce(0, (count, folder) -> count + folder.getItemCount()); - - if (cameraFolder != null) { - allMediaCount += cameraFolder.getCount(); - } - - mediaFolders.add(0, new MediaFolder(allMediaThumbnail, context.getString(R.string.MediaRepository_all_media), allMediaCount, Media.ALL_MEDIA_BUCKET_ID, MediaFolder.FolderType.NORMAL)); - } - - if (cameraFolder != null) { - mediaFolders.add(0, new MediaFolder(cameraFolder.getThumbnail(), cameraFolder.getTitle(), cameraFolder.getCount(), cameraFolder.getBucketId(), MediaFolder.FolderType.CAMERA)); + mediaFolders.add(0, new MediaFolder(allMediaThumbnail, context.getString(R.string.MediaRepository_all_media), allMediaCount, Media.ALL_MEDIA_BUCKET_ID)); } return mediaFolders; @@ -113,8 +94,6 @@ class MediaRepository { @WorkerThread private @NonNull FolderResult getFolders(@NonNull Context context, @NonNull Uri contentUri) { - String cameraPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath() + File.separator + "Camera"; - String cameraBucketId = null; Uri globalThumbnail = null; long thumbnailTimestamp = 0; Map folders = new HashMap<>(); @@ -135,10 +114,6 @@ class MediaRepository { folder.incrementCount(); folders.put(bucketId, folder); - if (cameraBucketId == null && path.startsWith(cameraPath)) { - cameraBucketId = bucketId; - } - if (timestamp > thumbnailTimestamp) { globalThumbnail = thumbnail; thumbnailTimestamp = timestamp; @@ -146,7 +121,7 @@ class MediaRepository { } } - return new FolderResult(cameraBucketId, globalThumbnail, thumbnailTimestamp, folders); + return new FolderResult(globalThumbnail, thumbnailTimestamp, folders); } @WorkerThread @@ -284,26 +259,19 @@ class MediaRepository { } private static class FolderResult { - private final String cameraBucketId; private final Uri thumbnail; private final long thumbnailTimestamp; private final Map folderData; - private FolderResult(@Nullable String cameraBucketId, - @Nullable Uri thumbnail, + private FolderResult(@Nullable Uri thumbnail, long thumbnailTimestamp, @NonNull Map folderData) { - this.cameraBucketId = cameraBucketId; this.thumbnail = thumbnail; this.thumbnailTimestamp = thumbnailTimestamp; this.folderData = folderData; } - @Nullable String getCameraBucketId() { - return cameraBucketId; - } - @Nullable Uri getThumbnail() { return thumbnail; } diff --git a/src/org/thoughtcrime/securesms/mediasend/MediaSendActivity.java b/src/org/thoughtcrime/securesms/mediasend/MediaSendActivity.java index adfc09a060..ff1792ec1a 100644 --- a/src/org/thoughtcrime/securesms/mediasend/MediaSendActivity.java +++ b/src/org/thoughtcrime/securesms/mediasend/MediaSendActivity.java @@ -1,6 +1,8 @@ package org.thoughtcrime.securesms.mediasend; import android.Manifest; + +import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProviders; import android.content.Context; import android.content.Intent; @@ -133,7 +135,7 @@ public class MediaSendActivity extends PassphraseRequiredActionBarActivity imple countButtonText = findViewById(R.id.mediasend_count_button_text); cameraButton = findViewById(R.id.mediasend_camera_button); - viewModel = ViewModelProviders.of(this, new MediaSendViewModel.Factory(getApplication(), new MediaRepository())).get(MediaSendViewModel.class); + viewModel = new ViewModelProvider(this, new MediaSendViewModel.Factory(getApplication(), new MediaRepository())).get(MediaSendViewModel.class); recipient = Recipient.from(this, Address.fromSerialized(getIntent().getStringExtra(KEY_ADDRESS)), true); transport = getIntent().getParcelableExtra(KEY_TRANSPORT); diff --git a/src/org/thoughtcrime/securesms/mms/AttachmentManager.java b/src/org/thoughtcrime/securesms/mms/AttachmentManager.java index 3ae608ee8c..f6f0cbbc23 100644 --- a/src/org/thoughtcrime/securesms/mms/AttachmentManager.java +++ b/src/org/thoughtcrime/securesms/mms/AttachmentManager.java @@ -371,28 +371,34 @@ public class AttachmentManager { } public static void selectDocument(Activity activity, int requestCode) { - Permissions.with(activity) - .request(Manifest.permission.WRITE_EXTERNAL_STORAGE) - .withPermanentDenialDialog(activity.getString(R.string.AttachmentManager_signal_requires_the_external_storage_permission_in_order_to_attach_photos_videos_or_audio)) - .onAllGranted(() -> selectMediaType(activity, "*/*", null, requestCode)) - .execute(); +// Permissions.with(activity) +// .request(Manifest.permission.WRITE_EXTERNAL_STORAGE) +// .withPermanentDenialDialog(activity.getString(R.string.AttachmentManager_signal_requires_the_external_storage_permission_in_order_to_attach_photos_videos_or_audio)) +// .onAllGranted(() -> selectMediaType(activity, "*/*", null, requestCode)) +// .execute(); + + selectMediaType(activity, "*/*", null, requestCode); } public static void selectGallery(Activity activity, int requestCode, @NonNull Recipient recipient, @NonNull String body, @NonNull TransportOption transport) { - Permissions.with(activity) - .request(Manifest.permission.WRITE_EXTERNAL_STORAGE) - .withPermanentDenialDialog(activity.getString(R.string.AttachmentManager_signal_requires_the_external_storage_permission_in_order_to_attach_photos_videos_or_audio)) - .onAllGranted(() -> selectMediaType(activity, "image/*", new String[] {"image/*", "video/*"}, requestCode)) - .onAllGranted(() -> activity.startActivityForResult(MediaSendActivity.buildGalleryIntent(activity, recipient, body, transport), requestCode)) - .execute(); +// Permissions.with(activity) +// .request(Manifest.permission.WRITE_EXTERNAL_STORAGE) +// .withPermanentDenialDialog(activity.getString(R.string.AttachmentManager_signal_requires_the_external_storage_permission_in_order_to_attach_photos_videos_or_audio)) +//// .onAllGranted(() -> selectMediaType(activity, "image/*", new String[] {"image/*", "video/*"}, requestCode)) +// .onAllGranted(() -> activity.startActivityForResult(MediaSendActivity.buildGalleryIntent(activity, recipient, body, transport), requestCode)) +// .execute(); + + activity.startActivityForResult(MediaSendActivity.buildGalleryIntent(activity, recipient, body, transport), requestCode); } public static void selectAudio(Activity activity, int requestCode) { - Permissions.with(activity) - .request(Manifest.permission.WRITE_EXTERNAL_STORAGE) - .withPermanentDenialDialog(activity.getString(R.string.AttachmentManager_signal_requires_the_external_storage_permission_in_order_to_attach_photos_videos_or_audio)) - .onAllGranted(() -> selectMediaType(activity, "audio/*", null, requestCode)) - .execute(); +// Permissions.with(activity) +//// .request(Manifest.permission.WRITE_EXTERNAL_STORAGE) +//// .withPermanentDenialDialog(activity.getString(R.string.AttachmentManager_signal_requires_the_external_storage_permission_in_order_to_attach_photos_videos_or_audio)) +//// .onAllGranted(() -> selectMediaType(activity, "audio/*", null, requestCode)) +//// .execute(); + + selectMediaType(activity, "audio/*", null, requestCode); } public static void selectContactInfo(Activity activity, int requestCode) { @@ -463,6 +469,7 @@ public class AttachmentManager { } private static void selectMediaType(Activity activity, @NonNull String type, @Nullable String[] extraMimeType, int requestCode) { + //TODO Constrain media file size to match the Loki protocol limit. final Intent intent = new Intent(); intent.setType(type);