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 af267b86d..7136abef6 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 @@ -14,6 +14,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs +import androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback import kotlinx.coroutines.launch import org.linphone.core.tools.Log import org.linphone.databinding.FileViewerFragmentBinding @@ -39,6 +40,12 @@ class FileViewerFragment : GenericFragment() { private val args: FileViewerFragmentArgs by navArgs() + private val pageChangedListener = object : OnPageChangeCallback() { + override fun onPageSelected(position: Int) { + viewModel.pdfCurrentPage.value = (position + 1).toString() + } + } + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -93,7 +100,6 @@ class FileViewerFragment : GenericFragment() { adapter = PdfPagesListAdapter(viewModel) binding.pdfViewPager.adapter = adapter - binding.dotsIndicator.attachTo(binding.pdfViewPager) } } @@ -152,9 +158,12 @@ class FileViewerFragment : GenericFragment() { override fun onResume() { super.onResume() updateScreenSize() + binding.pdfViewPager.registerOnPageChangeCallback(pageChangedListener) } override fun onPause() { + binding.pdfViewPager.unregisterOnPageChangeCallback(pageChangedListener) + if (binding.videoPlayer.isPlaying) { binding.videoPlayer.pause() viewModel.isVideoPlaying.value = false diff --git a/app/src/main/java/org/linphone/ui/main/viewer/viewmodel/FileViewModel.kt b/app/src/main/java/org/linphone/ui/main/viewer/viewmodel/FileViewModel.kt index b056f6585..132c6a2b0 100644 --- a/app/src/main/java/org/linphone/ui/main/viewer/viewmodel/FileViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/viewer/viewmodel/FileViewModel.kt @@ -40,6 +40,10 @@ class FileViewModel @UiThread constructor() : ViewModel() { val isPdf = MutableLiveData() + val pdfCurrentPage = MutableLiveData() + + val pdfPages = MutableLiveData() + val isVideo = MutableLiveData() val isVideoPlaying = MutableLiveData() @@ -107,7 +111,10 @@ class FileViewModel @UiThread constructor() : ViewModel() { ParcelFileDescriptor.MODE_READ_ONLY ) pdfRenderer = PdfRenderer(input) - Log.i("$TAG ${pdfRenderer.pageCount} pages in file $file") + val count = pdfRenderer.pageCount + Log.i("$TAG $count pages in file $file") + pdfPages.postValue(count.toString()) + pdfCurrentPage.postValue("1") pdfRendererReadyEvent.postValue(Event(true)) } } @@ -119,6 +126,7 @@ class FileViewModel @UiThread constructor() : ViewModel() { } else -> { path.value = file + // TODO FIXME : handle audio & plain text files, open native app for unsupported files } } } diff --git a/app/src/main/res/layout-land/file_viewer_fragment.xml b/app/src/main/res/layout-land/file_viewer_fragment.xml index 7fab5a93e..ba4d63fa4 100644 --- a/app/src/main/res/layout-land/file_viewer_fragment.xml +++ b/app/src/main/res/layout-land/file_viewer_fragment.xml @@ -53,19 +53,22 @@ android:orientation="horizontal" android:visibility="@{viewModel.isPdf ? View.VISIBLE : View.GONE, default=gone}" /> - diff --git a/app/src/main/res/layout/file_viewer_fragment.xml b/app/src/main/res/layout/file_viewer_fragment.xml index 4e6965d47..b84254dc6 100644 --- a/app/src/main/res/layout/file_viewer_fragment.xml +++ b/app/src/main/res/layout/file_viewer_fragment.xml @@ -53,19 +53,20 @@ android:orientation="horizontal" android:visibility="@{viewModel.isPdf ? View.VISIBLE : View.GONE, default=gone}" /> -