diff --git a/app/src/main/java/org/linphone/activities/main/files/fragments/AudioViewerFragment.kt b/app/src/main/java/org/linphone/activities/main/files/fragments/AudioViewerFragment.kt index ef4abae3f..0981c8064 100644 --- a/app/src/main/java/org/linphone/activities/main/files/fragments/AudioViewerFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/files/fragments/AudioViewerFragment.kt @@ -29,13 +29,10 @@ import androidx.navigation.fragment.findNavController import org.linphone.R import org.linphone.activities.main.files.viewmodels.AudioFileViewModel import org.linphone.activities.main.files.viewmodels.AudioFileViewModelFactory -import org.linphone.activities.main.fragments.SecureFragment -import org.linphone.activities.main.viewmodels.SharedMainViewModel import org.linphone.databinding.FileAudioViewerFragmentBinding -class AudioViewerFragment : SecureFragment() { +class AudioViewerFragment : GenericViewerFragment() { private lateinit var viewModel: AudioFileViewModel - private lateinit var sharedViewModel: SharedMainViewModel private lateinit var mediaController: MediaController @@ -47,24 +44,15 @@ class AudioViewerFragment : SecureFragment() { binding.lifecycleOwner = this - sharedViewModel = requireActivity().run { - ViewModelProvider(this).get(SharedMainViewModel::class.java) - } - val content = sharedViewModel.contentToOpen.value content ?: return - (childFragmentManager.findFragmentById(R.id.top_bar_fragment) as? TopBarFragment) - ?.setContent(content) - viewModel = ViewModelProvider( this, AudioFileViewModelFactory(content) )[AudioFileViewModel::class.java] binding.viewModel = viewModel - isSecure = arguments?.getBoolean("Secure") ?: false - mediaController = object : MediaController(requireContext()) { // This hack is even if media controller is showed with timeout=0 // Once a control is touched, it will disappear 3 seconds later anyway diff --git a/app/src/main/java/org/linphone/activities/main/files/fragments/GenericViewerFragment.kt b/app/src/main/java/org/linphone/activities/main/files/fragments/GenericViewerFragment.kt new file mode 100644 index 000000000..24dc4b639 --- /dev/null +++ b/app/src/main/java/org/linphone/activities/main/files/fragments/GenericViewerFragment.kt @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2010-2021 Belledonne Communications SARL. + * + * This file is part of linphone-android + * (see https://www.linphone.org). + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.linphone.activities.main.files.fragments + +import android.os.Bundle +import android.view.View +import androidx.databinding.ViewDataBinding +import androidx.lifecycle.ViewModelProvider +import org.linphone.R +import org.linphone.activities.main.fragments.SecureFragment +import org.linphone.activities.main.viewmodels.SharedMainViewModel + +abstract class GenericViewerFragment : SecureFragment() { + protected lateinit var sharedViewModel: SharedMainViewModel + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + sharedViewModel = requireActivity().run { + ViewModelProvider(this).get(SharedMainViewModel::class.java) + } + + isSecure = arguments?.getBoolean("Secure") ?: false + } + + override fun onStart() { + super.onStart() + + val content = sharedViewModel.contentToOpen.value + content ?: return + + (childFragmentManager.findFragmentById(R.id.top_bar_fragment) as? TopBarFragment) + ?.setContent(content) + } +} diff --git a/app/src/main/java/org/linphone/activities/main/files/fragments/ImageViewerFragment.kt b/app/src/main/java/org/linphone/activities/main/files/fragments/ImageViewerFragment.kt index 898136c12..816a7c312 100644 --- a/app/src/main/java/org/linphone/activities/main/files/fragments/ImageViewerFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/files/fragments/ImageViewerFragment.kt @@ -26,13 +26,10 @@ import androidx.lifecycle.ViewModelProvider import org.linphone.R import org.linphone.activities.main.files.viewmodels.ImageFileViewModel import org.linphone.activities.main.files.viewmodels.ImageFileViewModelFactory -import org.linphone.activities.main.fragments.SecureFragment -import org.linphone.activities.main.viewmodels.SharedMainViewModel import org.linphone.databinding.FileImageViewerFragmentBinding -class ImageViewerFragment : SecureFragment() { +class ImageViewerFragment : GenericViewerFragment() { private lateinit var viewModel: ImageFileViewModel - private lateinit var sharedViewModel: SharedMainViewModel override fun getLayoutId(): Int = R.layout.file_image_viewer_fragment @@ -42,22 +39,13 @@ class ImageViewerFragment : SecureFragment() { binding.lifecycleOwner = this - sharedViewModel = requireActivity().run { - ViewModelProvider(this).get(SharedMainViewModel::class.java) - } - val content = sharedViewModel.contentToOpen.value content ?: return - (childFragmentManager.findFragmentById(R.id.top_bar_fragment) as? TopBarFragment) - ?.setContent(content) - viewModel = ViewModelProvider( this, ImageFileViewModelFactory(content) )[ImageFileViewModel::class.java] binding.viewModel = viewModel - - isSecure = arguments?.getBoolean("Secure") ?: false } } diff --git a/app/src/main/java/org/linphone/activities/main/files/fragments/PdfViewerFragment.kt b/app/src/main/java/org/linphone/activities/main/files/fragments/PdfViewerFragment.kt index 1ece4b1e0..d8896a034 100644 --- a/app/src/main/java/org/linphone/activities/main/files/fragments/PdfViewerFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/files/fragments/PdfViewerFragment.kt @@ -26,13 +26,10 @@ import org.linphone.R import org.linphone.activities.main.files.adapters.PdfPagesListAdapter import org.linphone.activities.main.files.viewmodels.PdfFileViewModel import org.linphone.activities.main.files.viewmodels.PdfFileViewModelFactory -import org.linphone.activities.main.fragments.SecureFragment -import org.linphone.activities.main.viewmodels.SharedMainViewModel import org.linphone.databinding.FilePdfViewerFragmentBinding -class PdfViewerFragment : SecureFragment() { +class PdfViewerFragment : GenericViewerFragment() { private lateinit var viewModel: PdfFileViewModel - private lateinit var sharedViewModel: SharedMainViewModel private lateinit var adapter: PdfPagesListAdapter override fun getLayoutId(): Int = R.layout.file_pdf_viewer_fragment @@ -42,24 +39,15 @@ class PdfViewerFragment : SecureFragment() { binding.lifecycleOwner = this - sharedViewModel = requireActivity().run { - ViewModelProvider(this).get(SharedMainViewModel::class.java) - } - val content = sharedViewModel.contentToOpen.value content ?: return - (childFragmentManager.findFragmentById(R.id.top_bar_fragment) as? TopBarFragment) - ?.setContent(content) - viewModel = ViewModelProvider( this, PdfFileViewModelFactory(content) )[PdfFileViewModel::class.java] binding.viewModel = viewModel - isSecure = arguments?.getBoolean("Secure") ?: false - adapter = PdfPagesListAdapter(viewModel) binding.pdfViewPager.adapter = adapter adapter.notifyDataSetChanged() diff --git a/app/src/main/java/org/linphone/activities/main/files/fragments/TextViewerFragment.kt b/app/src/main/java/org/linphone/activities/main/files/fragments/TextViewerFragment.kt index c186271d2..76ac78d2e 100644 --- a/app/src/main/java/org/linphone/activities/main/files/fragments/TextViewerFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/files/fragments/TextViewerFragment.kt @@ -25,13 +25,10 @@ import androidx.lifecycle.ViewModelProvider import org.linphone.R import org.linphone.activities.main.files.viewmodels.TextFileViewModel import org.linphone.activities.main.files.viewmodels.TextFileViewModelFactory -import org.linphone.activities.main.fragments.SecureFragment -import org.linphone.activities.main.viewmodels.SharedMainViewModel import org.linphone.databinding.FileTextViewerFragmentBinding -class TextViewerFragment : SecureFragment() { +class TextViewerFragment : GenericViewerFragment() { private lateinit var viewModel: TextFileViewModel - private lateinit var sharedViewModel: SharedMainViewModel override fun getLayoutId(): Int = R.layout.file_text_viewer_fragment @@ -40,22 +37,13 @@ class TextViewerFragment : SecureFragment() { binding.lifecycleOwner = this - sharedViewModel = requireActivity().run { - ViewModelProvider(this).get(SharedMainViewModel::class.java) - } - val content = sharedViewModel.contentToOpen.value content ?: return - (childFragmentManager.findFragmentById(R.id.top_bar_fragment) as? TopBarFragment) - ?.setContent(content) - viewModel = ViewModelProvider( this, TextFileViewModelFactory(content) )[TextFileViewModel::class.java] binding.viewModel = viewModel - - isSecure = arguments?.getBoolean("Secure") ?: false } } diff --git a/app/src/main/java/org/linphone/activities/main/files/fragments/VideoViewerFragment.kt b/app/src/main/java/org/linphone/activities/main/files/fragments/VideoViewerFragment.kt index 491084e68..4019f6211 100644 --- a/app/src/main/java/org/linphone/activities/main/files/fragments/VideoViewerFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/files/fragments/VideoViewerFragment.kt @@ -28,14 +28,11 @@ import androidx.navigation.fragment.findNavController import org.linphone.R import org.linphone.activities.main.files.viewmodels.VideoFileViewModel import org.linphone.activities.main.files.viewmodels.VideoFileViewModelFactory -import org.linphone.activities.main.fragments.SecureFragment -import org.linphone.activities.main.viewmodels.SharedMainViewModel import org.linphone.core.tools.Log import org.linphone.databinding.FileVideoViewerFragmentBinding -class VideoViewerFragment : SecureFragment() { +class VideoViewerFragment : GenericViewerFragment() { private lateinit var viewModel: VideoFileViewModel - private lateinit var sharedViewModel: SharedMainViewModel private lateinit var mediaController: MediaController @@ -46,24 +43,15 @@ class VideoViewerFragment : SecureFragment() { binding.lifecycleOwner = this - sharedViewModel = requireActivity().run { - ViewModelProvider(this).get(SharedMainViewModel::class.java) - } - val content = sharedViewModel.contentToOpen.value content ?: return - (childFragmentManager.findFragmentById(R.id.top_bar_fragment) as? TopBarFragment) - ?.setContent(content) - viewModel = ViewModelProvider( this, VideoFileViewModelFactory(content) )[VideoFileViewModel::class.java] binding.viewModel = viewModel - isSecure = arguments?.getBoolean("Secure") ?: false - mediaController = object : MediaController(requireContext()) { // This is to prevent the first back key press to only hide to media controls override fun dispatchKeyEvent(event: KeyEvent?): Boolean {