Renamed some layouts

This commit is contained in:
Sylvain Berfini 2025-02-18 16:11:45 +01:00
parent 8b9ceef6da
commit 7d6c50cf29
13 changed files with 36 additions and 20 deletions

View file

@ -35,7 +35,7 @@ import org.linphone.core.tools.Log
import org.linphone.databinding.ChatBubbleIncomingBinding
import org.linphone.databinding.ChatBubbleOutgoingBinding
import org.linphone.databinding.ChatConversationEventBinding
import org.linphone.databinding.ChatConversationSecuredFirstEventBinding
import org.linphone.databinding.ChatConversationE2eEncryptedFirstEventBinding
import org.linphone.ui.main.chat.model.EventLogModel
import org.linphone.ui.main.chat.model.EventModel
import org.linphone.ui.main.chat.model.MessageModel
@ -70,13 +70,19 @@ class ConversationEventAdapter :
MutableLiveData<Event<MessageModel>>()
}
private var isConversationSecured: Boolean = false
fun setIsConversationSecured(secured: Boolean) {
isConversationSecured = secured
}
override fun displayHeaderForPosition(position: Int): Boolean {
// We only want to display it at top
return position == 0
}
override fun getHeaderViewForPosition(context: Context, position: Int): View {
val binding = ChatConversationSecuredFirstEventBinding.inflate(LayoutInflater.from(context))
val binding = ChatConversationE2eEncryptedFirstEventBinding.inflate(LayoutInflater.from(context))
return binding.root
}

View file

@ -29,7 +29,7 @@ import androidx.annotation.UiThread
import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetDialog
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import org.linphone.databinding.ChatLongPressMenuBinding
import org.linphone.databinding.ChatConversationLongPressMenuBinding
@UiThread
class ConversationDialogFragment(
@ -71,7 +71,7 @@ class ConversationDialogFragment(
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
val view = ChatLongPressMenuBinding.inflate(layoutInflater)
val view = ChatConversationLongPressMenuBinding.inflate(layoutInflater)
view.isMuted = isMuted
view.isGroup = isGroup
view.isReadOnly = isReadOnly

View file

@ -314,7 +314,9 @@ open class ConversationFragment : SlidingPaneChildFragment() {
if (e.action == MotionEvent.ACTION_UP) {
if ((rv.layoutManager as LinearLayoutManager).findFirstCompletelyVisibleItemPosition() == 0) {
if (e.y >= 0 && e.y <= headerItemDecoration.getDecorationHeight(0)) {
showEndToEndEncryptionDetailsBottomSheet()
if (viewModel.isEndToEndEncrypted.value == true) {
showEndToEndEncryptionDetailsBottomSheet()
}
return true
}
}
@ -504,6 +506,7 @@ open class ConversationFragment : SlidingPaneChildFragment() {
}
} else {
sendMessageViewModel.configureChatRoom(viewModel.chatRoom)
adapter.setIsConversationSecured(viewModel.isEndToEndEncrypted.value == true)
// Wait for chat room to be ready before trying to forward a message in it
sharedViewModel.messageToForwardEvent.observe(viewLifecycleOwner) { event ->
@ -585,6 +588,8 @@ open class ConversationFragment : SlidingPaneChildFragment() {
}
viewModel.isEndToEndEncrypted.observe(viewLifecycleOwner) { encrypted ->
adapter.setIsConversationSecured(encrypted)
if (encrypted) {
binding.eventsList.addItemDecoration(headerItemDecoration)
binding.eventsList.addOnItemTouchListener(listItemTouchListener)
@ -700,7 +705,7 @@ open class ConversationFragment : SlidingPaneChildFragment() {
}
binding.setWarningConversationDisabledClickListener {
showUnsafeConversationDetailsBottomSheet()
showUnsafeConversationDisabledDetailsBottomSheet()
}
binding.searchField.setOnEditorActionListener { view, actionId, _ ->
@ -1415,13 +1420,13 @@ open class ConversationFragment : SlidingPaneChildFragment() {
bottomSheetDialog = e2eEncryptionDetailsBottomSheet
}
private fun showUnsafeConversationDetailsBottomSheet() {
val unsafeConversationDetailsBottomSheet = UnsafeConversationDetailsDialogFragment()
unsafeConversationDetailsBottomSheet.show(
private fun showUnsafeConversationDisabledDetailsBottomSheet() {
val unsafeConversationDisabledDetailsBottomSheet = UnsafeConversationDisabledDetailsDialogFragment()
unsafeConversationDisabledDetailsBottomSheet.show(
requireActivity().supportFragmentManager,
UnsafeConversationDetailsDialogFragment.TAG
UnsafeConversationDisabledDetailsDialogFragment.TAG
)
bottomSheetDialog = unsafeConversationDetailsBottomSheet
bottomSheetDialog = unsafeConversationDisabledDetailsBottomSheet
}
private fun showOpenOrExportFileDialog(path: String, mime: String, bundle: Bundle) {

View file

@ -29,7 +29,7 @@ import androidx.annotation.UiThread
import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetDialog
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import org.linphone.databinding.ChatConversationE2eDetailsBottomSheetBinding
import org.linphone.databinding.ChatConversationE2eEncryptedDetailsBottomSheetBinding
@UiThread
class EndToEndEncryptionDetailsDialogFragment(
@ -62,7 +62,7 @@ class EndToEndEncryptionDetailsDialogFragment(
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
val view = ChatConversationE2eDetailsBottomSheetBinding.inflate(layoutInflater)
val view = ChatConversationE2eEncryptedDetailsBottomSheetBinding.inflate(layoutInflater)
return view.root
}
}

View file

@ -29,14 +29,14 @@ import androidx.annotation.UiThread
import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetDialog
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import org.linphone.databinding.ChatConversationUnsafeDetailsBottomSheetBinding
import org.linphone.databinding.ChatConversationUnsafeDisabledDetailsBottomSheetBinding
@UiThread
class UnsafeConversationDetailsDialogFragment(
class UnsafeConversationDisabledDetailsDialogFragment(
private val onDismiss: (() -> Unit)? = null
) : BottomSheetDialogFragment() {
companion object {
const val TAG = "UnsafeConversationDetailsDialogFragment"
const val TAG = "UnsafeConversationDisabledDetailsDialogFragment"
}
override fun onCancel(dialog: DialogInterface) {
@ -62,7 +62,7 @@ class UnsafeConversationDetailsDialogFragment(
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
val view = ChatConversationUnsafeDetailsBottomSheetBinding.inflate(layoutInflater)
val view = ChatConversationUnsafeDisabledDetailsBottomSheetBinding.inflate(layoutInflater)
return view.root
}
}

View file

@ -60,6 +60,8 @@ class ConversationModel
val isEncrypted = chatRoom.hasCapability(Capabilities.Encrypted.toInt())
val isEncryptionAvailable = LinphoneUtils.isEndToEndEncryptedChatAvailable(chatRoom.core)
val isReadOnly = MutableLiveData<Boolean>()
val subject = MutableLiveData<String>()

View file

@ -72,6 +72,8 @@ class ConversationViewModel
val isEndToEndEncrypted = MutableLiveData<Boolean>()
val isEndToEndEncryptionAvailable = MutableLiveData<Boolean>()
val isGroup = MutableLiveData<Boolean>()
val subject = MutableLiveData<String>()
@ -313,7 +315,8 @@ class ConversationViewModel
}
init {
coreContext.postOnCoreThread {
coreContext.postOnCoreThread { core ->
isEndToEndEncryptionAvailable.postValue(LinphoneUtils.isEndToEndEncryptedChatAvailable(core))
coreContext.contactsManager.addListener(contactsListener)
}

View file

@ -289,7 +289,7 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:visibility="@{viewModel.isEmpty &amp;&amp; viewModel.isEndToEndEncrypted ? View.VISIBLE : View.GONE}"
layout="@layout/chat_conversation_secured_first_event"
layout="@layout/chat_conversation_e2e_encrypted_first_event"
app:layout_constraintTop_toTopOf="@id/events_list"
app:layout_constraintStart_toStartOf="@id/events_list"
app:layout_constraintEnd_toEndOf="@id/events_list" />

View file

@ -206,7 +206,7 @@
android:layout_marginEnd="10dp"
android:src="@drawable/lock_simple_open_bold"
android:contentDescription="@string/content_description_chat_unsecured"
android:visibility="@{model.isEncrypted ? View.GONE : View.VISIBLE}"
android:visibility="@{model.isEncrypted || !model.isEncryptionAvailable ? View.GONE : View.VISIBLE}"
app:layout_constraintTop_toBottomOf="@id/date_time"
app:layout_constraintBottom_toTopOf="@id/separator"
app:layout_constraintEnd_toStartOf="@id/ephemeral"