From beaa86389dc689842ba3c0bd4dba83fb2c812fbc Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Wed, 3 Jul 2019 15:07:00 -0400 Subject: [PATCH] Implement camera-first capture flow. This allows you to take a photo, then choose the recipients after. This also makes it so we only upload the attachment once. --- .../camera_send_button_background.xml | 17 ++ .../media_continue_button_background.xml | 17 ++ .../camera_send_button_background.xml | 4 + res/drawable/ic_continue_24.xml | 9 + .../media_continue_button_background.xml | 4 + res/layout/camera_contact_contact_item.xml | 36 +++ res/layout/camera_contact_header_item.xml | 14 + res/layout/camera_contact_invite_item.xml | 28 ++ .../camera_contact_selection_fragment.xml | 123 +++++++++ res/layout/camera_contact_selection_item.xml | 7 + res/layout/camera_controls_landscape.xml | 1 + res/layout/camera_controls_portrait.xml | 1 + res/layout/conversation_list_fragment.xml | 11 + res/layout/mediasend_activity.xml | 13 + res/menu/camera_contacts.xml | 13 + res/values/dimens.xml | 2 + res/values/strings.xml | 13 + .../securesms/ConversationListFragment.java | 18 ++ .../securesms/TransportOptions.java | 16 +- .../securesms/components/FromTextView.java | 11 + .../database/AttachmentDatabase.java | 40 ++- .../securesms/database/RecipientDatabase.java | 2 +- .../securesms/database/ThreadDatabase.java | 8 + .../securesms/jobmanager/JobManager.java | 2 +- .../securesms/jobs/AttachmentCopyJob.java | 108 ++++++++ .../securesms/jobs/JobManagerFactories.java | 1 + .../securesms/mediasend/Camera1Fragment.java | 3 +- .../mediasend/CameraContactAdapter.java | 254 ++++++++++++++++++ .../CameraContactSelectionAdapter.java | 67 +++++ .../CameraContactSelectionFragment.java | 194 +++++++++++++ .../CameraContactSelectionViewModel.java | 121 +++++++++ .../securesms/mediasend/CameraContacts.java | 39 +++ .../mediasend/CameraContactsRepository.java | 107 ++++++++ .../securesms/mediasend/CameraFragment.java | 2 +- .../securesms/mediasend/CameraXFragment.java | 2 +- .../mediasend/MediaPickerFolderFragment.java | 28 +- .../mediasend/MediaSendActivity.java | 236 ++++++++++++---- .../mediasend/MediaSendFragment.java | 18 +- .../mediasend/MediaSendViewModel.java | 27 +- .../securesms/sms/MessageSender.java | 120 +++++++++ .../stickers/StickerManagementAdapter.java | 10 +- .../securesms/util/TextSecurePreferences.java | 10 + src/org/thoughtcrime/securesms/util/Util.java | 8 + .../adapter/SectionedRecyclerViewAdapter.java | 32 +-- 44 files changed, 1672 insertions(+), 125 deletions(-) create mode 100644 res/drawable-v21/camera_send_button_background.xml create mode 100644 res/drawable-v21/media_continue_button_background.xml create mode 100644 res/drawable/camera_send_button_background.xml create mode 100644 res/drawable/ic_continue_24.xml create mode 100644 res/drawable/media_continue_button_background.xml create mode 100644 res/layout/camera_contact_contact_item.xml create mode 100644 res/layout/camera_contact_header_item.xml create mode 100644 res/layout/camera_contact_invite_item.xml create mode 100644 res/layout/camera_contact_selection_fragment.xml create mode 100644 res/layout/camera_contact_selection_item.xml create mode 100644 res/menu/camera_contacts.xml create mode 100644 src/org/thoughtcrime/securesms/jobs/AttachmentCopyJob.java create mode 100644 src/org/thoughtcrime/securesms/mediasend/CameraContactAdapter.java create mode 100644 src/org/thoughtcrime/securesms/mediasend/CameraContactSelectionAdapter.java create mode 100644 src/org/thoughtcrime/securesms/mediasend/CameraContactSelectionFragment.java create mode 100644 src/org/thoughtcrime/securesms/mediasend/CameraContactSelectionViewModel.java create mode 100644 src/org/thoughtcrime/securesms/mediasend/CameraContacts.java create mode 100644 src/org/thoughtcrime/securesms/mediasend/CameraContactsRepository.java diff --git a/res/drawable-v21/camera_send_button_background.xml b/res/drawable-v21/camera_send_button_background.xml new file mode 100644 index 0000000000..6ef9e5e0cf --- /dev/null +++ b/res/drawable-v21/camera_send_button_background.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + diff --git a/res/drawable-v21/media_continue_button_background.xml b/res/drawable-v21/media_continue_button_background.xml new file mode 100644 index 0000000000..6ef9e5e0cf --- /dev/null +++ b/res/drawable-v21/media_continue_button_background.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + diff --git a/res/drawable/camera_send_button_background.xml b/res/drawable/camera_send_button_background.xml new file mode 100644 index 0000000000..f612f8c4f3 --- /dev/null +++ b/res/drawable/camera_send_button_background.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/res/drawable/ic_continue_24.xml b/res/drawable/ic_continue_24.xml new file mode 100644 index 0000000000..7c3cdcb7ef --- /dev/null +++ b/res/drawable/ic_continue_24.xml @@ -0,0 +1,9 @@ + + + diff --git a/res/drawable/media_continue_button_background.xml b/res/drawable/media_continue_button_background.xml new file mode 100644 index 0000000000..f612f8c4f3 --- /dev/null +++ b/res/drawable/media_continue_button_background.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/res/layout/camera_contact_contact_item.xml b/res/layout/camera_contact_contact_item.xml new file mode 100644 index 0000000000..b881a74b0e --- /dev/null +++ b/res/layout/camera_contact_contact_item.xml @@ -0,0 +1,36 @@ + + + + + + + + + + \ No newline at end of file diff --git a/res/layout/camera_contact_header_item.xml b/res/layout/camera_contact_header_item.xml new file mode 100644 index 0000000000..1d48ce16b7 --- /dev/null +++ b/res/layout/camera_contact_header_item.xml @@ -0,0 +1,14 @@ + + diff --git a/res/layout/camera_contact_invite_item.xml b/res/layout/camera_contact_invite_item.xml new file mode 100644 index 0000000000..a944b00f14 --- /dev/null +++ b/res/layout/camera_contact_invite_item.xml @@ -0,0 +1,28 @@ + + + + + +