From 8f33f1f0c9ad73d983ef24c155018d2a7b73346a Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 9 Nov 2023 17:28:33 +0100 Subject: [PATCH] Started voice recording layout --- .../chat/viewmodel/ConversationViewModel.kt | 4 + .../java/org/linphone/utils/ImageUtils.kt | 14 +-- app/src/main/res/drawable/play_fill.xml | 9 ++ .../shape_squircle_white_r50_background.xml | 5 ++ app/src/main/res/drawable/stop_fill.xml | 9 ++ .../voice_recording_gradient_progress.xml | 23 +++++ ...at_conversation_send_area_bottom_sheet.xml | 85 ++++++++++++++++--- app/src/main/res/values/colors.xml | 3 + 8 files changed, 132 insertions(+), 20 deletions(-) create mode 100644 app/src/main/res/drawable/play_fill.xml create mode 100644 app/src/main/res/drawable/shape_squircle_white_r50_background.xml create mode 100644 app/src/main/res/drawable/stop_fill.xml create mode 100644 app/src/main/res/drawable/voice_recording_gradient_progress.xml diff --git a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt index fa061b912..c9582d806 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt @@ -89,6 +89,8 @@ class ConversationViewModel @UiThread constructor() : ViewModel() { val isReplyingToMessage = MutableLiveData() + val voiceRecordingInProgress = MutableLiveData() + var scrollingPosition: Int = SCROLLING_POSITION_NOT_SET val requestKeyboardHidingEvent: MutableLiveData> by lazy { @@ -485,6 +487,7 @@ class ConversationViewModel @UiThread constructor() : ViewModel() { @UiThread fun startVoiceMessageRecording() { + voiceRecordingInProgress.value = true } @UiThread @@ -493,6 +496,7 @@ class ConversationViewModel @UiThread constructor() : ViewModel() { @UiThread fun cancelVoiceMessageRecording() { + voiceRecordingInProgress.value = false } @UiThread diff --git a/app/src/main/java/org/linphone/utils/ImageUtils.kt b/app/src/main/java/org/linphone/utils/ImageUtils.kt index 4108fbe48..c486814f5 100644 --- a/app/src/main/java/org/linphone/utils/ImageUtils.kt +++ b/app/src/main/java/org/linphone/utils/ImageUtils.kt @@ -120,12 +120,14 @@ class ImageUtils { null } - canvas.drawBitmap( - drawables[i].toBitmap(size, size, Bitmap.Config.ARGB_8888), - src, - rectangles[i], - null - ) + try { + canvas.drawBitmap( + drawables[i].toBitmap(size, size, Bitmap.Config.ARGB_8888), + src, + rectangles[i], + null + ) + } catch (_: Exception) {} } return bitmap diff --git a/app/src/main/res/drawable/play_fill.xml b/app/src/main/res/drawable/play_fill.xml new file mode 100644 index 000000000..ed53fe498 --- /dev/null +++ b/app/src/main/res/drawable/play_fill.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/shape_squircle_white_r50_background.xml b/app/src/main/res/drawable/shape_squircle_white_r50_background.xml new file mode 100644 index 000000000..3906225f0 --- /dev/null +++ b/app/src/main/res/drawable/shape_squircle_white_r50_background.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/stop_fill.xml b/app/src/main/res/drawable/stop_fill.xml new file mode 100644 index 000000000..2b9668865 --- /dev/null +++ b/app/src/main/res/drawable/stop_fill.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/voice_recording_gradient_progress.xml b/app/src/main/res/drawable/voice_recording_gradient_progress.xml new file mode 100644 index 000000000..f976cad8d --- /dev/null +++ b/app/src/main/res/drawable/voice_recording_gradient_progress.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/chat_conversation_send_area_bottom_sheet.xml b/app/src/main/res/layout/chat_conversation_send_area_bottom_sheet.xml index b5b64ec44..d5b68f078 100644 --- a/app/src/main/res/layout/chat_conversation_send_area_bottom_sheet.xml +++ b/app/src/main/res/layout/chat_conversation_send_area_bottom_sheet.xml @@ -1,6 +1,7 @@ + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools"> @@ -68,11 +69,27 @@ android:onClick="@{() -> viewModel.toggleEmojiPickerVisibility()}" android:padding="8dp" android:src="@{viewModel.isEmojiPickerOpen ? @drawable/x : @drawable/smiley, default=@drawable/smiley}" + android:visibility="@{viewModel.voiceRecordingInProgress ? View.GONE : View.VISIBLE}" app:layout_constraintBottom_toBottomOf="@id/message_area_background" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@id/message_area_background" app:tint="@color/icon_color_selector" /> + + + app:constraint_referenced_ids="record_voice_message, send_message" /> + + + android:id="@+id/stop_recording" + android:layout_width="40dp" + android:layout_height="40dp" + android:layout_marginStart="10dp" + android:onClick="@{() -> viewModel.stopVoiceMessageRecording()}" + android:padding="8dp" + android:src="@drawable/stop_fill" + android:background="@drawable/circle_white_button_background" + android:visibility="@{viewModel.voiceRecordingInProgress ? View.VISIBLE : View.GONE, default=gone}" + app:layout_constraintBottom_toBottomOf="@id/voice_record_progress" + app:layout_constraintStart_toStartOf="@id/voice_record_progress" + app:layout_constraintTop_toTopOf="@id/voice_record_progress" + app:tint="@color/orange_main_500" /> + + #4AA8FF #DBB820 + + #FF923F + #80FFFFFF \ No newline at end of file