From 8b1ff7af2b1d6060269e3a04e5b854234041cae4 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Fri, 19 Jan 2024 11:19:36 +0100 Subject: [PATCH] Added entries to conversation popup menu + mute indicator below conversation title --- .../chat/fragment/ConversationFragment.kt | 20 ++++ .../chat/viewmodel/ConversationViewModel.kt | 21 +++- .../res/layout/chat_conversation_fragment.xml | 29 +++-- .../layout/chat_conversation_popup_menu.xml | 105 +++++++++++++++--- app/src/main/res/layout/contact_fragment.xml | 1 + app/src/main/res/values/colors.xml | 1 + app/src/main/res/values/strings.xml | 1 + 7 files changed, 151 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt index 831382594..7a98fcae2 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt @@ -725,6 +725,9 @@ class ConversationFragment : SlidingPaneChildFragment() { true ) + popupView.conversationMuted = viewModel.isMuted.value == true + popupView.ephemeralMessagesAvailable = viewModel.isEndToEndEncrypted.value == true || viewModel.isGroup.value == true + popupView.setGoToInfoClickListener { goToInfoFragment() popupWindow.dismiss() @@ -736,6 +739,23 @@ class ConversationFragment : SlidingPaneChildFragment() { popupWindow.dismiss() } + popupView.setMuteClickListener { + Log.i("$TAG Muting conversation") + viewModel.mute() + popupWindow.dismiss() + } + + popupView.setUnmuteClickListener { + Log.i("$TAG Un-muting conversation") + viewModel.unmute() + popupWindow.dismiss() + } + + popupView.setConfigureEphemeralMessagesClickListener { + // TODO: go to configure ephemeral messages + popupWindow.dismiss() + } + // Elevation is for showing a shadow around the popup popupWindow.elevation = 20f popupWindow.showAsDropDown(view, 0, 0, Gravity.BOTTOM) 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 e949a50ab..2aa5eedb1 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 @@ -56,7 +56,9 @@ class ConversationViewModel @UiThread constructor() : ViewModel() { val events = MutableLiveData>() - var isEndToEndEncrypted = MutableLiveData() + val isMuted = MutableLiveData() + + val isEndToEndEncrypted = MutableLiveData() val isGroup = MutableLiveData() @@ -435,6 +437,22 @@ class ConversationViewModel @UiThread constructor() : ViewModel() { } } + @UiThread + fun mute() { + coreContext.postOnCoreThread { + chatRoom.muted = true + isMuted.postValue(chatRoom.muted) + } + } + + @UiThread + fun unmute() { + coreContext.postOnCoreThread { + chatRoom.muted = false + isMuted.postValue(chatRoom.muted) + } + } + @UiThread fun updateCurrentlyDisplayedConversation() { coreContext.postOnCoreThread { @@ -458,6 +476,7 @@ class ConversationViewModel @UiThread constructor() : ViewModel() { isEndToEndEncrypted.postValue( chatRoom.hasCapability(ChatRoom.Capabilities.Encrypted.toInt()) ) + isMuted.postValue(chatRoom.muted) computeConversationInfo() diff --git a/app/src/main/res/layout/chat_conversation_fragment.xml b/app/src/main/res/layout/chat_conversation_fragment.xml index 93db0cc50..d7421abaa 100644 --- a/app/src/main/res/layout/chat_conversation_fragment.xml +++ b/app/src/main/res/layout/chat_conversation_fragment.xml @@ -64,16 +64,15 @@ + app:layout_constraintTop_toTopOf="parent"/> + app:layout_constraintTop_toTopOf="@id/back" + app:layout_constraintBottom_toTopOf="@id/muted"/> + + @@ -148,9 +159,9 @@ android:layout_height="0dp" android:padding="15dp" android:src="@drawable/phone" - app:layout_constraintBottom_toBottomOf="@id/title" + app:layout_constraintTop_toTopOf="@id/back" + app:layout_constraintBottom_toBottomOf="@id/back" app:layout_constraintEnd_toStartOf="@id/show_menu" - app:layout_constraintTop_toTopOf="@id/title" app:tint="?attr/color_main2_500" /> + + + + + + + + app:layout_constraintTop_toBottomOf="@id/info" + app:layout_constraintBottom_toTopOf="@id/mute"/> + + + + diff --git a/app/src/main/res/layout/contact_fragment.xml b/app/src/main/res/layout/contact_fragment.xml index c993c9f9b..b615ce908 100644 --- a/app/src/main/res/layout/contact_fragment.xml +++ b/app/src/main/res/layout/contact_fragment.xml @@ -377,6 +377,7 @@ android:padding="5dp" android:drawableEnd="@{viewModel.expandDevicesTrust ? @drawable/caret_up : @drawable/caret_down, default=@drawable/caret_up}" android:drawableTint="?attr/color_main2_600" + android:visibility="gone" app:layout_constraintStart_toEndOf="@id/trust_label" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@id/info_background"/> diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index b6e691b06..3a912d7e2 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -7,6 +7,7 @@ #FFEACB #80FFEACB #FFB266 + #FF923F #FF5E00 #B72D00 #662600 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index dcd9473b1..302e858ac 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -425,6 +425,7 @@ Replying to: Search Conversation info + Ephemeral messages No matching result Group members