From 6c72fb968935d6921edda6c2979dbda3e0eea92a Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Fri, 17 Nov 2023 10:16:06 +0100 Subject: [PATCH] Moved FileViewerFragment out of chat nav scope to be able to display it fullscreen when in landscape --- .../chat/fragment/ConversationFragment.kt | 10 +- .../fragment/ConversationsListFragment.kt | 12 ++ .../viewer/fragment/FileViewerFragment.kt | 6 +- .../ui/main/viewmodel/SharedMainViewModel.kt | 4 + .../res/layout-land/file_viewer_fragment.xml | 164 ++++++++++++++++++ ..._fragment.xml => file_viewer_fragment.xml} | 0 .../main/res/navigation/chat_nav_graph.xml | 17 -- .../main/res/navigation/main_nav_graph.xml | 17 ++ 8 files changed, 202 insertions(+), 28 deletions(-) create mode 100644 app/src/main/res/layout-land/file_viewer_fragment.xml rename app/src/main/res/layout/{file_image_viewer_fragment.xml => file_viewer_fragment.xml} (100%) 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 90b166716..7dfa547f0 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 @@ -361,14 +361,8 @@ class ConversationFragment : GenericFragment() { viewModel.fileToDisplayEvent.observe(viewLifecycleOwner) { it.consume { file -> - if (findNavController().currentDestination?.id == R.id.conversationFragment) { - Log.i("$TAG User clicked on file [$file], let's display it in file viewer") - val action = - ConversationFragmentDirections.actionConversationFragmentToFileViewerFragment( - file - ) - findNavController().navigate(action) - } + Log.i("$TAG User clicked on file [$file], let's display it in file viewer") + sharedViewModel.displayFileEvent.value = Event(file) } } diff --git a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationsListFragment.kt b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationsListFragment.kt index fb1526e66..586171310 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationsListFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationsListFragment.kt @@ -38,6 +38,7 @@ import org.linphone.ui.main.chat.adapter.ConversationsListAdapter import org.linphone.ui.main.chat.viewmodel.ConversationsListViewModel import org.linphone.ui.main.fragment.AbstractTopBarFragment import org.linphone.ui.main.history.fragment.HistoryMenuDialogFragment +import org.linphone.ui.main.viewer.fragment.FileViewerFragmentDirections import org.linphone.utils.Event @UiThread @@ -204,6 +205,17 @@ class ConversationsListFragment : AbstractTopBarFragment() { } } + sharedViewModel.displayFileEvent.observe(viewLifecycleOwner) { + it.consume { path -> + if (findNavController().currentDestination?.id == R.id.conversationsListFragment) { + Log.i("$TAG Navigating to file viewer fragment with path [$path]") + val action = + FileViewerFragmentDirections.actionGlobalFileViewerFragment(path) + findNavController().navigate(action) + } + } + } + // TopBarFragment related setViewModelAndTitle( diff --git a/app/src/main/java/org/linphone/ui/main/viewer/fragment/FileViewerFragment.kt b/app/src/main/java/org/linphone/ui/main/viewer/fragment/FileViewerFragment.kt index fef1e05fa..d54ba5061 100644 --- a/app/src/main/java/org/linphone/ui/main/viewer/fragment/FileViewerFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/viewer/fragment/FileViewerFragment.kt @@ -11,7 +11,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import org.linphone.core.tools.Log -import org.linphone.databinding.FileImageViewerFragmentBinding +import org.linphone.databinding.FileViewerFragmentBinding import org.linphone.ui.main.fragment.GenericFragment import org.linphone.ui.main.viewer.adapter.PdfPagesListAdapter import org.linphone.ui.main.viewer.viewmodel.FileViewModel @@ -22,7 +22,7 @@ class FileViewerFragment : GenericFragment() { private const val TAG = "[File Viewer Fragment]" } - private lateinit var binding: FileImageViewerFragmentBinding + private lateinit var binding: FileViewerFragmentBinding private lateinit var viewModel: FileViewModel @@ -35,7 +35,7 @@ class FileViewerFragment : GenericFragment() { container: ViewGroup?, savedInstanceState: Bundle? ): View { - binding = FileImageViewerFragmentBinding.inflate(layoutInflater) + binding = FileViewerFragmentBinding.inflate(layoutInflater) return binding.root } 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 a23a6fa8a..97233832d 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 @@ -125,4 +125,8 @@ class SharedMainViewModel @UiThread constructor() : ViewModel() { val listOfSelectedSipUrisEvent: MutableLiveData>> by lazy { MutableLiveData>>() } + + val displayFileEvent: MutableLiveData> by lazy { + MutableLiveData>() + } } diff --git a/app/src/main/res/layout-land/file_viewer_fragment.xml b/app/src/main/res/layout-land/file_viewer_fragment.xml new file mode 100644 index 000000000..bbc39ccec --- /dev/null +++ b/app/src/main/res/layout-land/file_viewer_fragment.xml @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/file_image_viewer_fragment.xml b/app/src/main/res/layout/file_viewer_fragment.xml similarity index 100% rename from app/src/main/res/layout/file_image_viewer_fragment.xml rename to app/src/main/res/layout/file_viewer_fragment.xml diff --git a/app/src/main/res/navigation/chat_nav_graph.xml b/app/src/main/res/navigation/chat_nav_graph.xml index 99d2bc0e4..286fda8b1 100644 --- a/app/src/main/res/navigation/chat_nav_graph.xml +++ b/app/src/main/res/navigation/chat_nav_graph.xml @@ -29,13 +29,6 @@ app:exitAnim="@anim/slide_out_left" app:popEnterAnim="@anim/slide_in_left" app:popExitAnim="@anim/slide_out_right" /> - - - - - \ No newline at end of file diff --git a/app/src/main/res/navigation/main_nav_graph.xml b/app/src/main/res/navigation/main_nav_graph.xml index 72fe2929a..e40363ad5 100644 --- a/app/src/main/res/navigation/main_nav_graph.xml +++ b/app/src/main/res/navigation/main_nav_graph.xml @@ -304,4 +304,21 @@ app:argType="string" /> + + + + + + \ No newline at end of file