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 53701b5c7..4d756bb52 100644
--- a/app/src/main/java/org/linphone/ui/main/MainActivity.kt
+++ b/app/src/main/java/org/linphone/ui/main/MainActivity.kt
@@ -402,6 +402,7 @@ class MainActivity : GenericActivity() {
val pair = Pair(localSipUri, remoteSipUri)
sharedViewModel.showConversationEvent.value = Event(pair)
}
+ args?.clear()
val action = ConversationsListFragmentDirections.actionGlobalConversationsListFragment()
findNavController().navigate(action)
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 e1554be10..af059b6ad 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
@@ -39,8 +39,6 @@ import android.view.View
import android.view.ViewGroup
import android.view.Window
import android.view.WindowManager
-import android.view.animation.Animation
-import android.view.animation.AnimationUtils
import android.widget.PopupWindow
import androidx.activity.result.PickVisualMediaRequest
import androidx.activity.result.contract.ActivityResultContracts
@@ -244,17 +242,6 @@ class ConversationFragment : SlidingPaneChildFragment() {
private var bottomSheetReactionsModel: MessageReactionsModel? = null
- override fun onCreateAnimation(transit: Int, enter: Boolean, nextAnim: Int): Animation? {
- if (
- findNavController().currentDestination?.id == R.id.fileViewerFragment ||
- findNavController().currentDestination?.id == R.id.mediaListViewerFragment
- ) {
- // Holds fragment in place while new fragment slides over it
- return AnimationUtils.loadAnimation(activity, R.anim.hold)
- }
- return super.onCreateAnimation(transit, enter, nextAnim)
- }
-
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -750,43 +737,40 @@ class ConversationFragment : SlidingPaneChildFragment() {
}
private fun goToFileViewer(path: String) {
- if (findNavController().currentDestination?.id == R.id.conversationFragment) {
- Log.i("$TAG Navigating to file viewer fragment with path [$path]")
- val extension = FileUtils.getExtensionFromFileName(path)
- val mime = FileUtils.getMimeTypeFromExtension(extension)
- when (FileUtils.getMimeType(mime)) {
- FileUtils.MimeType.Image, FileUtils.MimeType.Video -> {
- val action =
- ConversationFragmentDirections.actionConversationFragmentToMediaListViewerFragment(
- localSipUri = viewModel.localSipUri,
- remoteSipUri = viewModel.remoteSipUri,
- path = path
- )
- findNavController().navigate(action)
- }
- FileUtils.MimeType.Pdf, FileUtils.MimeType.PlainText -> {
- val action =
- ConversationFragmentDirections.actionConversationFragmentToFileViewerFragment(
- path
- )
- findNavController().navigate(action)
- }
- else -> {
- val intent = Intent(Intent.ACTION_VIEW)
- val contentUri: Uri =
- FileUtils.getPublicFilePath(requireContext(), path)
- intent.setDataAndType(contentUri, "file/$mime")
- intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
- try {
- requireContext().startActivity(intent)
- } catch (anfe: ActivityNotFoundException) {
- Log.e("$TAG Can't open file [$path] in third party app: $anfe")
- val message = getString(
- R.string.toast_no_app_registered_to_handle_content_type_error
- )
- val icon = R.drawable.file
- (requireActivity() as MainActivity).showRedToast(message, icon)
- }
+ Log.i("$TAG Navigating to file viewer fragment with path [$path]")
+ val extension = FileUtils.getExtensionFromFileName(path)
+ val mime = FileUtils.getMimeTypeFromExtension(extension)
+
+ val bundle = Bundle()
+ bundle.apply {
+ putString("localSipUri", viewModel.localSipUri)
+ putString("remoteSipUri", viewModel.remoteSipUri)
+ putString("path", path)
+ }
+ when (FileUtils.getMimeType(mime)) {
+ FileUtils.MimeType.Image, FileUtils.MimeType.Video -> {
+ bundle.putBoolean("isMedia", true)
+ sharedViewModel.displayFileEvent.value = Event(bundle)
+ }
+ FileUtils.MimeType.Pdf, FileUtils.MimeType.PlainText -> {
+ bundle.putBoolean("isMedia", false)
+ sharedViewModel.displayFileEvent.value = Event(bundle)
+ }
+ else -> {
+ val intent = Intent(Intent.ACTION_VIEW)
+ val contentUri: Uri =
+ FileUtils.getPublicFilePath(requireContext(), path)
+ intent.setDataAndType(contentUri, "file/$mime")
+ intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
+ try {
+ requireContext().startActivity(intent)
+ } catch (anfe: ActivityNotFoundException) {
+ Log.e("$TAG Can't open file [$path] in third party app: $anfe")
+ val message = getString(
+ R.string.toast_no_app_registered_to_handle_content_type_error
+ )
+ val icon = R.drawable.file
+ (requireActivity() as MainActivity).showRedToast(message, icon)
}
}
}
diff --git a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationMediaListFragment.kt b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationMediaListFragment.kt
index d52cc09a3..05705bdc8 100644
--- a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationMediaListFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationMediaListFragment.kt
@@ -26,8 +26,6 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
-import android.view.animation.Animation
-import android.view.animation.AnimationUtils
import androidx.annotation.UiThread
import androidx.core.view.doOnPreDraw
import androidx.lifecycle.ViewModelProvider
@@ -39,6 +37,7 @@ import org.linphone.databinding.ChatMediaFragmentBinding
import org.linphone.ui.main.MainActivity
import org.linphone.ui.main.chat.viewmodel.ConversationMediaListViewModel
import org.linphone.ui.main.fragment.SlidingPaneChildFragment
+import org.linphone.utils.Event
import org.linphone.utils.FileUtils
@UiThread
@@ -53,16 +52,6 @@ class ConversationMediaListFragment : SlidingPaneChildFragment() {
private val args: ConversationMediaListFragmentArgs by navArgs()
- override fun onCreateAnimation(transit: Int, enter: Boolean, nextAnim: Int): Animation? {
- if (
- findNavController().currentDestination?.id == R.id.mediaListViewerFragment
- ) {
- // Holds fragment in place while new fragment slides over it
- return AnimationUtils.loadAnimation(activity, R.anim.hold)
- }
- return super.onCreateAnimation(transit, enter, nextAnim)
- }
-
override fun goBack(): Boolean {
return findNavController().popBackStack()
}
@@ -116,43 +105,40 @@ class ConversationMediaListFragment : SlidingPaneChildFragment() {
}
private fun goToFileViewer(path: String) {
- if (findNavController().currentDestination?.id == R.id.conversationMediaListFragment) {
- Log.i("$TAG Navigating to file viewer fragment with path [$path]")
- val extension = FileUtils.getExtensionFromFileName(path)
- val mime = FileUtils.getMimeTypeFromExtension(extension)
- when (FileUtils.getMimeType(mime)) {
- FileUtils.MimeType.Image, FileUtils.MimeType.Video -> {
- val action =
- ConversationMediaListFragmentDirections.actionConversationMediaListFragmentToMediaListViewerFragment(
- localSipUri = viewModel.localSipUri,
- remoteSipUri = viewModel.remoteSipUri,
- path = path
- )
- findNavController().navigate(action)
- }
- FileUtils.MimeType.Pdf, FileUtils.MimeType.PlainText -> {
- val action =
- ConversationMediaListFragmentDirections.actionConversationMediaListFragmentToFileViewerFragment(
- path
- )
- findNavController().navigate(action)
- }
- else -> {
- val intent = Intent(Intent.ACTION_VIEW)
- val contentUri: Uri =
- FileUtils.getPublicFilePath(requireContext(), path)
- intent.setDataAndType(contentUri, "file/$mime")
- intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
- try {
- requireContext().startActivity(intent)
- } catch (anfe: ActivityNotFoundException) {
- Log.e("$TAG Can't open file [$path] in third party app: $anfe")
- val message = getString(
- R.string.toast_no_app_registered_to_handle_content_type_error
- )
- val icon = R.drawable.file
- (requireActivity() as MainActivity).showRedToast(message, icon)
- }
+ Log.i("$TAG Navigating to file viewer fragment with path [$path]")
+ val extension = FileUtils.getExtensionFromFileName(path)
+ val mime = FileUtils.getMimeTypeFromExtension(extension)
+
+ val bundle = Bundle()
+ bundle.apply {
+ putString("localSipUri", viewModel.localSipUri)
+ putString("remoteSipUri", viewModel.remoteSipUri)
+ putString("path", path)
+ }
+ when (FileUtils.getMimeType(mime)) {
+ FileUtils.MimeType.Image, FileUtils.MimeType.Video -> {
+ bundle.putBoolean("isMedia", true)
+ sharedViewModel.displayFileEvent.value = Event(bundle)
+ }
+ FileUtils.MimeType.Pdf, FileUtils.MimeType.PlainText -> {
+ bundle.putBoolean("isMedia", false)
+ sharedViewModel.displayFileEvent.value = Event(bundle)
+ }
+ else -> {
+ val intent = Intent(Intent.ACTION_VIEW)
+ val contentUri: Uri =
+ FileUtils.getPublicFilePath(requireContext(), path)
+ intent.setDataAndType(contentUri, "file/$mime")
+ intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
+ try {
+ requireContext().startActivity(intent)
+ } catch (anfe: ActivityNotFoundException) {
+ Log.e("$TAG Can't open file [$path] in third party app: $anfe")
+ val message = getString(
+ R.string.toast_no_app_registered_to_handle_content_type_error
+ )
+ val icon = R.drawable.file
+ (requireActivity() as MainActivity).showRedToast(message, icon)
}
}
}
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 1c88b2fda..add88f337 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
@@ -218,6 +218,32 @@ class ConversationsListFragment : AbstractTopBarFragment() {
}
}
+ sharedViewModel.displayFileEvent.observe(viewLifecycleOwner) {
+ it.consume { bundle ->
+ if (findNavController().currentDestination?.id == R.id.conversationsListFragment) {
+ val path = bundle.getString("path", "")
+ val isMedia = bundle.getBoolean("isMedia", false)
+ Log.i(
+ "$TAG Navigating to ${if (isMedia) "media" else "file"} viewer fragment with path [$path]"
+ )
+ val action = if (isMedia) {
+ val localSipUri = bundle.getString("localSipUri", "")
+ val remoteSipUri = bundle.getString("remoteSipUri", "")
+ ConversationsListFragmentDirections.actionConversationsListFragmentToMediaListViewerFragment(
+ localSipUri = localSipUri,
+ remoteSipUri = remoteSipUri,
+ path = path
+ )
+ } else {
+ ConversationsListFragmentDirections.actionConversationsListFragmentToFileViewerFragment(
+ path
+ )
+ }
+ findNavController().navigate(action)
+ }
+ }
+ }
+
sharedViewModel.messageToForwardEvent.observe(viewLifecycleOwner) { event ->
if (!event.consumed()) {
// Do not consume it yet
diff --git a/app/src/main/java/org/linphone/ui/main/chat/adapter/MediaListAdapter.kt b/app/src/main/java/org/linphone/ui/main/file_media_viewer/adapter/MediaListAdapter.kt
similarity index 93%
rename from app/src/main/java/org/linphone/ui/main/chat/adapter/MediaListAdapter.kt
rename to app/src/main/java/org/linphone/ui/main/file_media_viewer/adapter/MediaListAdapter.kt
index 3c8ae7ff2..1872f9fc1 100644
--- a/app/src/main/java/org/linphone/ui/main/chat/adapter/MediaListAdapter.kt
+++ b/app/src/main/java/org/linphone/ui/main/file_media_viewer/adapter/MediaListAdapter.kt
@@ -17,14 +17,14 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.main.chat.adapter
+package org.linphone.ui.main.file_media_viewer.adapter
import android.os.Bundle
import androidx.fragment.app.Fragment
import androidx.viewpager2.adapter.FragmentStateAdapter
import org.linphone.core.tools.Log
-import org.linphone.ui.main.chat.fragment.MediaViewerFragment
import org.linphone.ui.main.chat.viewmodel.ConversationMediaListViewModel
+import org.linphone.ui.main.file_media_viewer.fragment.MediaViewerFragment
class MediaListAdapter(fragment: Fragment, private val viewModel: ConversationMediaListViewModel) : FragmentStateAdapter(
fragment
diff --git a/app/src/main/java/org/linphone/ui/main/viewer/adapter/PdfPagesListAdapter.kt b/app/src/main/java/org/linphone/ui/main/file_media_viewer/adapter/PdfPagesListAdapter.kt
similarity index 94%
rename from app/src/main/java/org/linphone/ui/main/viewer/adapter/PdfPagesListAdapter.kt
rename to app/src/main/java/org/linphone/ui/main/file_media_viewer/adapter/PdfPagesListAdapter.kt
index 6d15676c9..b960e8ba0 100644
--- a/app/src/main/java/org/linphone/ui/main/viewer/adapter/PdfPagesListAdapter.kt
+++ b/app/src/main/java/org/linphone/ui/main/file_media_viewer/adapter/PdfPagesListAdapter.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.main.viewer.adapter
+package org.linphone.ui.main.file_media_viewer.adapter
import android.view.LayoutInflater
import android.view.View
@@ -25,7 +25,7 @@ import android.view.ViewGroup
import android.widget.ImageView
import androidx.recyclerview.widget.RecyclerView
import org.linphone.R
-import org.linphone.ui.main.viewer.viewmodel.FileViewModel
+import org.linphone.ui.main.file_media_viewer.viewmodel.FileViewModel
class PdfPagesListAdapter(private val viewModel: FileViewModel) : RecyclerView.Adapter() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PdfPageViewHolder {
diff --git a/app/src/main/java/org/linphone/ui/main/viewer/fragment/FileViewerFragment.kt b/app/src/main/java/org/linphone/ui/main/file_media_viewer/fragment/FileViewerFragment.kt
similarity index 80%
rename from app/src/main/java/org/linphone/ui/main/viewer/fragment/FileViewerFragment.kt
rename to app/src/main/java/org/linphone/ui/main/file_media_viewer/fragment/FileViewerFragment.kt
index ecd80629a..2bae4b2ff 100644
--- a/app/src/main/java/org/linphone/ui/main/viewer/fragment/FileViewerFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/file_media_viewer/fragment/FileViewerFragment.kt
@@ -1,4 +1,4 @@
-package org.linphone.ui.main.viewer.fragment
+package org.linphone.ui.main.file_media_viewer.fragment
import android.app.Activity
import android.content.Intent
@@ -20,14 +20,14 @@ import org.linphone.R
import org.linphone.core.tools.Log
import org.linphone.databinding.FileViewerFragmentBinding
import org.linphone.ui.main.MainActivity
-import org.linphone.ui.main.fragment.SlidingPaneChildFragment
-import org.linphone.ui.main.viewer.adapter.PdfPagesListAdapter
-import org.linphone.ui.main.viewer.viewmodel.FileViewModel
+import org.linphone.ui.main.file_media_viewer.adapter.PdfPagesListAdapter
+import org.linphone.ui.main.file_media_viewer.viewmodel.FileViewModel
+import org.linphone.ui.main.fragment.GenericFragment
import org.linphone.utils.Event
import org.linphone.utils.FileUtils
@UiThread
-class FileViewerFragment : SlidingPaneChildFragment() {
+class FileViewerFragment : GenericFragment() {
companion object {
private const val TAG = "[File Viewer Fragment]"
@@ -74,11 +74,7 @@ class FileViewerFragment : SlidingPaneChildFragment() {
binding.lifecycleOwner = viewLifecycleOwner
binding.viewModel = viewModel
- val path = if (arguments?.containsKey("path") == true) {
- requireArguments().getString("path", args.path)
- } else {
- args.path
- }
+ val path = args.path
Log.i("$TAG Path argument is [$path]")
viewModel.loadFile(path)
@@ -138,30 +134,6 @@ class FileViewerFragment : SlidingPaneChildFragment() {
}
}
- viewModel.isVideo.observe(viewLifecycleOwner) { isVideo ->
- if (isVideo) {
- binding.videoPlayer.setVideoPath(path)
- binding.videoPlayer.setOnCompletionListener {
- Log.i("$TAG End of file reached")
- viewModel.isVideoPlaying.value = false
- }
- (view.parent as? ViewGroup)?.doOnPreDraw {
- binding.videoPlayer.start()
- viewModel.isVideoPlaying.value = true
- }
- }
- }
-
- viewModel.toggleVideoPlayPauseEvent.observe(viewLifecycleOwner) {
- it.consume { play ->
- if (play) {
- binding.videoPlayer.start()
- } else {
- binding.videoPlayer.pause()
- }
- }
- }
-
viewModel.showGreenToastEvent.observe(viewLifecycleOwner) {
it.consume { pair ->
val message = pair.first
@@ -191,21 +163,9 @@ class FileViewerFragment : SlidingPaneChildFragment() {
override fun onPause() {
binding.pdfViewPager.unregisterOnPageChangeCallback(pageChangedListener)
-
- if (binding.videoPlayer.isPlaying) {
- binding.videoPlayer.pause()
- viewModel.isVideoPlaying.value = false
- }
-
super.onPause()
}
- override fun onDestroyView() {
- binding.videoPlayer.stopPlayback()
-
- super.onDestroyView()
- }
-
override fun onDestroy() {
// Reset default navigation bar color
requireActivity().window.navigationBarColor = navBarDefaultColor
diff --git a/app/src/main/java/org/linphone/ui/main/chat/fragment/MediaListViewerFragment.kt b/app/src/main/java/org/linphone/ui/main/file_media_viewer/fragment/MediaListViewerFragment.kt
similarity index 92%
rename from app/src/main/java/org/linphone/ui/main/chat/fragment/MediaListViewerFragment.kt
rename to app/src/main/java/org/linphone/ui/main/file_media_viewer/fragment/MediaListViewerFragment.kt
index 79b9db3fa..373d995cf 100644
--- a/app/src/main/java/org/linphone/ui/main/chat/fragment/MediaListViewerFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/file_media_viewer/fragment/MediaListViewerFragment.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.main.chat.fragment
+package org.linphone.ui.main.file_media_viewer.fragment
import android.net.Uri
import android.os.Bundle
@@ -27,7 +27,6 @@ import android.view.ViewGroup
import androidx.core.view.doOnPreDraw
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
-import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import androidx.viewpager2.widget.ViewPager2
import kotlinx.coroutines.Dispatchers
@@ -35,21 +34,21 @@ import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.linphone.R
import org.linphone.core.tools.Log
-import org.linphone.databinding.ChatMediaViewerFragmentBinding
+import org.linphone.databinding.FileMediaViewerFragmentBinding
import org.linphone.ui.main.MainActivity
-import org.linphone.ui.main.chat.adapter.MediaListAdapter
import org.linphone.ui.main.chat.viewmodel.ConversationMediaListViewModel
-import org.linphone.ui.main.fragment.SlidingPaneChildFragment
+import org.linphone.ui.main.file_media_viewer.adapter.MediaListAdapter
+import org.linphone.ui.main.fragment.GenericFragment
import org.linphone.utils.AppUtils
import org.linphone.utils.Event
import org.linphone.utils.FileUtils
-class MediaListViewerFragment : SlidingPaneChildFragment() {
+class MediaListViewerFragment : GenericFragment() {
companion object {
private const val TAG = "[Media List Viewer]"
}
- private lateinit var binding: ChatMediaViewerFragmentBinding
+ private lateinit var binding: FileMediaViewerFragmentBinding
private lateinit var adapter: MediaListAdapter
@@ -76,14 +75,10 @@ class MediaListViewerFragment : SlidingPaneChildFragment() {
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
- binding = ChatMediaViewerFragmentBinding.inflate(layoutInflater)
+ binding = FileMediaViewerFragmentBinding.inflate(layoutInflater)
return binding.root
}
- override fun goBack(): Boolean {
- return findNavController().popBackStack()
- }
-
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
postponeEnterTransition()
super.onViewCreated(view, savedInstanceState)
@@ -218,7 +213,9 @@ class MediaListViewerFragment : SlidingPaneChildFragment() {
// Reset default navigation bar color
requireActivity().window.navigationBarColor = navBarDefaultColor
- viewPager.unregisterOnPageChangeCallback(pageListener)
+ if (::viewPager.isInitialized) {
+ viewPager.unregisterOnPageChangeCallback(pageListener)
+ }
super.onDestroy()
}
diff --git a/app/src/main/java/org/linphone/ui/main/chat/fragment/MediaViewerFragment.kt b/app/src/main/java/org/linphone/ui/main/file_media_viewer/fragment/MediaViewerFragment.kt
similarity index 88%
rename from app/src/main/java/org/linphone/ui/main/chat/fragment/MediaViewerFragment.kt
rename to app/src/main/java/org/linphone/ui/main/file_media_viewer/fragment/MediaViewerFragment.kt
index cb11c406a..042840cde 100644
--- a/app/src/main/java/org/linphone/ui/main/chat/fragment/MediaViewerFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/file_media_viewer/fragment/MediaViewerFragment.kt
@@ -1,26 +1,24 @@
-package org.linphone.ui.main.chat.fragment
+package org.linphone.ui.main.file_media_viewer.fragment
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.annotation.UiThread
-import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
import org.linphone.core.tools.Log
-import org.linphone.databinding.ChatMediaViewerChildFragmentBinding
-import org.linphone.ui.main.chat.viewmodel.MediaViewModel
+import org.linphone.databinding.FileMediaViewerChildFragmentBinding
+import org.linphone.ui.main.file_media_viewer.viewmodel.MediaViewModel
+import org.linphone.ui.main.fragment.GenericFragment
import org.linphone.ui.main.viewmodel.SharedMainViewModel
@UiThread
-class MediaViewerFragment : Fragment() {
+class MediaViewerFragment : GenericFragment() {
companion object {
private const val TAG = "[Media Viewer Fragment]"
}
- private lateinit var binding: ChatMediaViewerChildFragmentBinding
-
- private lateinit var sharedViewModel: SharedMainViewModel
+ private lateinit var binding: FileMediaViewerChildFragmentBinding
private lateinit var viewModel: MediaViewModel
@@ -29,7 +27,7 @@ class MediaViewerFragment : Fragment() {
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
- binding = ChatMediaViewerChildFragmentBinding.inflate(layoutInflater)
+ binding = FileMediaViewerChildFragmentBinding.inflate(layoutInflater)
return binding.root
}
diff --git a/app/src/main/java/org/linphone/ui/main/viewer/viewmodel/FileViewModel.kt b/app/src/main/java/org/linphone/ui/main/file_media_viewer/viewmodel/FileViewModel.kt
similarity index 89%
rename from app/src/main/java/org/linphone/ui/main/viewer/viewmodel/FileViewModel.kt
rename to app/src/main/java/org/linphone/ui/main/file_media_viewer/viewmodel/FileViewModel.kt
index 55e6dd299..1cc17b7f5 100644
--- a/app/src/main/java/org/linphone/ui/main/viewer/viewmodel/FileViewModel.kt
+++ b/app/src/main/java/org/linphone/ui/main/file_media_viewer/viewmodel/FileViewModel.kt
@@ -1,4 +1,4 @@
-package org.linphone.ui.main.viewer.viewmodel
+package org.linphone.ui.main.file_media_viewer.viewmodel
import android.graphics.Bitmap
import android.graphics.pdf.PdfRenderer
@@ -28,8 +28,6 @@ class FileViewModel @UiThread constructor() : ViewModel() {
private const val TAG = "[File ViewModel]"
}
- val path = MutableLiveData()
-
val fileName = MutableLiveData()
val fullScreenMode = MutableLiveData()
@@ -40,14 +38,8 @@ class FileViewModel @UiThread constructor() : ViewModel() {
val pdfPages = MutableLiveData()
- val isImage = MutableLiveData()
-
val isAudio = MutableLiveData()
- val isVideo = MutableLiveData()
-
- val isVideoPlaying = MutableLiveData()
-
val isText = MutableLiveData()
val text = MutableLiveData()
@@ -62,10 +54,6 @@ class FileViewModel @UiThread constructor() : ViewModel() {
MutableLiveData>()
}
- val toggleVideoPlayPauseEvent: MutableLiveData> by lazy {
- MutableLiveData>()
- }
-
val showGreenToastEvent: MutableLiveData>> by lazy {
MutableLiveData>>()
}
@@ -110,18 +98,6 @@ class FileViewModel @UiThread constructor() : ViewModel() {
Log.i("$TAG File [$file] seems to be a PDF")
loadPdf()
}
- FileUtils.MimeType.Image -> {
- Log.i("$TAG File [$file] seems to be an image")
- isImage.value = true
- path.value = file
- fileReadyEvent.value = Event(true)
- }
- FileUtils.MimeType.Video -> {
- Log.i("$TAG File [$file] seems to be a video")
- isVideo.value = true
- isVideoPlaying.value = false
- fileReadyEvent.value = Event(true)
- }
FileUtils.MimeType.Audio -> {
Log.i("$TAG File [$file] seems to be an audio")
// TODO: handle audio files
@@ -189,13 +165,6 @@ class FileViewModel @UiThread constructor() : ViewModel() {
}
}
- @UiThread
- fun playPauseVideo() {
- val playVideo = isVideoPlaying.value == false
- isVideoPlaying.value = playVideo
- toggleVideoPlayPauseEvent.value = Event(playVideo)
- }
-
@UiThread
fun exportToMediaStore() {
if (::filePath.isInitialized) {
diff --git a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/MediaViewModel.kt b/app/src/main/java/org/linphone/ui/main/file_media_viewer/viewmodel/MediaViewModel.kt
similarity index 97%
rename from app/src/main/java/org/linphone/ui/main/chat/viewmodel/MediaViewModel.kt
rename to app/src/main/java/org/linphone/ui/main/file_media_viewer/viewmodel/MediaViewModel.kt
index 61e9512ee..6eeeacf41 100644
--- a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/MediaViewModel.kt
+++ b/app/src/main/java/org/linphone/ui/main/file_media_viewer/viewmodel/MediaViewModel.kt
@@ -1,4 +1,4 @@
-package org.linphone.ui.main.chat.viewmodel
+package org.linphone.ui.main.file_media_viewer.viewmodel
import androidx.annotation.UiThread
import androidx.lifecycle.MutableLiveData
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 5c4fd7138..99dd7e4c2 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
@@ -20,6 +20,7 @@
package org.linphone.ui.main.viewmodel
import android.net.Uri
+import android.os.Bundle
import androidx.annotation.UiThread
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
@@ -108,6 +109,10 @@ class SharedMainViewModel @UiThread constructor() : ViewModel() {
val mediaViewerFullScreenMode = MutableLiveData()
+ val displayFileEvent: MutableLiveData> by lazy {
+ MutableLiveData>()
+ }
+
val forceRefreshConversationInfo: 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
deleted file mode 100644
index c526a6e22..000000000
--- a/app/src/main/res/layout-land/file_viewer_fragment.xml
+++ /dev/null
@@ -1,165 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/chat_media_viewer_child_fragment.xml b/app/src/main/res/layout/file_media_viewer_child_fragment.xml
similarity index 96%
rename from app/src/main/res/layout/chat_media_viewer_child_fragment.xml
rename to app/src/main/res/layout/file_media_viewer_child_fragment.xml
index 3289c2358..199f13de2 100644
--- a/app/src/main/res/layout/chat_media_viewer_child_fragment.xml
+++ b/app/src/main/res/layout/file_media_viewer_child_fragment.xml
@@ -7,7 +7,7 @@
+ type="org.linphone.ui.main.file_media_viewer.viewmodel.MediaViewModel" />
+ type="org.linphone.ui.main.file_media_viewer.viewmodel.FileViewModel" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ 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 612f1d015..d0ec3516c 100644
--- a/app/src/main/res/navigation/main_nav_graph.xml
+++ b/app/src/main/res/navigation/main_nav_graph.xml
@@ -238,6 +238,18 @@
app:enterAnim="@anim/slide_in"
app:popExitAnim="@anim/slide_out"
app:launchSingleTop="true" />
+
+
+ app:launchSingleTop="true"
+ app:popUpTo="@id/contactsListFragment"
+ app:popUpToInclusive="true"/>
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file