From e62b1b4999587b93f158c2c635dacbd9506ad9dd Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 14 Nov 2023 13:29:55 +0100 Subject: [PATCH] Added missing plain/text sharing feature + proper sliding pane layout sizes in landscape --- app/src/main/AndroidManifest.xml | 1 + .../org/linphone/contacts/ContactLoader.kt | 2 +- .../java/org/linphone/ui/main/MainActivity.kt | 39 ++++++++++++------- .../chat/fragment/ConversationFragment.kt | 9 +++++ .../ui/main/viewmodel/SharedMainViewModel.kt | 2 + .../res/layout-land/chat_list_fragment.xml | 2 +- .../layout-land/contacts_list_fragment.xml | 2 +- .../res/layout-land/history_list_fragment.xml | 2 +- .../layout-land/meetings_list_fragment.xml | 2 +- .../main/res/layout/chat_list_fragment.xml | 2 +- .../res/layout/contacts_list_fragment.xml | 2 +- .../main/res/layout/history_list_fragment.xml | 2 +- .../res/layout/meetings_list_fragment.xml | 2 +- app/src/main/res/values-land/dimen.xml | 2 + app/src/main/res/values/dimen.xml | 1 + 15 files changed, 50 insertions(+), 22 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 085555775..c6e8f0cfb 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -71,6 +71,7 @@ + diff --git a/app/src/main/java/org/linphone/contacts/ContactLoader.kt b/app/src/main/java/org/linphone/contacts/ContactLoader.kt index 5dab0be3a..f75548bfd 100644 --- a/app/src/main/java/org/linphone/contacts/ContactLoader.kt +++ b/app/src/main/java/org/linphone/contacts/ContactLoader.kt @@ -55,7 +55,7 @@ class ContactLoader : LoaderManager.LoaderCallbacks { private const val NATIVE_ADDRESS_BOOK_FRIEND_LIST = "Native address-book" const val LINPHONE_ADDRESS_BOOK_FRIEND_LIST = "Linphone address-book" - private const val MAX_INTERVAL_TO_REFRESH = 60000L + private const val MAX_INTERVAL_TO_REFRESH = 60000L // 1 minute } @MainThread diff --git a/app/src/main/java/org/linphone/ui/main/MainActivity.kt b/app/src/main/java/org/linphone/ui/main/MainActivity.kt index 6b9f647cc..7b948cec9 100644 --- a/app/src/main/java/org/linphone/ui/main/MainActivity.kt +++ b/app/src/main/java/org/linphone/ui/main/MainActivity.kt @@ -371,20 +371,28 @@ class MainActivity : AppCompatActivity() { private fun handleSendIntent(intent: Intent, multiple: Boolean) { val parcelablesUri = arrayListOf() - if (multiple) { - val parcelables = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM) - for (parcelable in parcelables.orEmpty()) { - val uri = parcelable as? Uri - if (uri != null) { - Log.i("$TAG Found URI [$uri] in parcelable extra list") - parcelablesUri.add(uri) - } + + if (intent.type == "text/plain") { + intent.getStringExtra(Intent.EXTRA_TEXT)?.let { extraText -> + sharedViewModel.textToShareFromIntent.value = extraText } } else { - val uri = intent.getParcelableExtra(Intent.EXTRA_STREAM) as? Uri - if (uri != null) { - Log.i("$TAG Found URI [$uri] in parcelable extra") - parcelablesUri.add(uri) + if (multiple) { + val parcelables = + intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM) + for (parcelable in parcelables.orEmpty()) { + val uri = parcelable as? Uri + if (uri != null) { + Log.i("$TAG Found URI [$uri] in parcelable extra list") + parcelablesUri.add(uri) + } + } + } else { + val uri = intent.getParcelableExtra(Intent.EXTRA_STREAM) as? Uri + if (uri != null) { + Log.i("$TAG Found URI [$uri] in parcelable extra") + parcelablesUri.add(uri) + } } } @@ -422,10 +430,15 @@ class MainActivity : AppCompatActivity() { Log.i("$TAG Found file to share [$path] in intent") if (path != null) list.add(path) } + if (list.isNotEmpty()) { sharedViewModel.filesToShareFromIntent.value = list } else { - Log.w("$TAG Failed to find at least one file to share!") + if (sharedViewModel.textToShareFromIntent.value.orEmpty().isNotEmpty()) { + Log.i("$TAG Found plain text to share") + } else { + Log.w("$TAG Failed to find at least one file or text to share!") + } } findNavController().setGraph(navGraph, intent.extras) 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 49cf7a5dd..4184121d7 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 @@ -400,6 +400,15 @@ class ConversationFragment : GenericFragment() { } } + sharedViewModel.textToShareFromIntent.observe(viewLifecycleOwner) { text -> + if (text.isNotEmpty()) { + Log.i("$TAG Found text to share from intent") + sendMessageViewModel.textToSend.value = text + + sharedViewModel.textToShareFromIntent.value = "" + } + } + sharedViewModel.filesToShareFromIntent.observe(viewLifecycleOwner) { files -> if (files.isNotEmpty()) { Log.i("$TAG Found [${files.size}] files to share from intent") diff --git a/app/src/main/java/org/linphone/ui/main/viewmodel/SharedMainViewModel.kt b/app/src/main/java/org/linphone/ui/main/viewmodel/SharedMainViewModel.kt index 6bc11c5d7..a23a6fa8a 100644 --- a/app/src/main/java/org/linphone/ui/main/viewmodel/SharedMainViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/viewmodel/SharedMainViewModel.kt @@ -98,6 +98,8 @@ class SharedMainViewModel @UiThread constructor() : ViewModel() { /* Conversation related */ + val textToShareFromIntent = MutableLiveData() + val filesToShareFromIntent = MutableLiveData>() var displayedChatRoom: ChatRoom? = null // Prevents the need to go look for the chat room diff --git a/app/src/main/res/layout-land/chat_list_fragment.xml b/app/src/main/res/layout-land/chat_list_fragment.xml index 216b9cc34..836b4b999 100644 --- a/app/src/main/res/layout-land/chat_list_fragment.xml +++ b/app/src/main/res/layout-land/chat_list_fragment.xml @@ -22,7 +22,7 @@ android:layout_height="match_parent"> + 450dp + 110dp 125dp 235dp diff --git a/app/src/main/res/values/dimen.xml b/app/src/main/res/values/dimen.xml index 05290e043..8f5c402c9 100644 --- a/app/src/main/res/values/dimen.xml +++ b/app/src/main/res/values/dimen.xml @@ -5,6 +5,7 @@ 32dp 75dp + 350dp 300dp 14dp