11package com.simplemobiletools.filemanager.pro.activities
22
33import android.content.Context
4+ import android.content.res.Configuration.UI_MODE_NIGHT_NO
45import android.os.Bundle
56import android.print.PrintAttributes
67import android.print.PrintManager
78import android.view.Menu
89import android.view.MenuItem
10+ import android.view.View
11+ import android.view.WindowManager
12+ import android.widget.RelativeLayout
13+ import androidx.core.view.updateLayoutParams
914import com.github.barteksc.pdfviewer.scroll.DefaultScrollHandle
1015import com.simplemobiletools.commons.extensions.*
1116import com.simplemobiletools.commons.helpers.REAL_FILE_PATH
17+ import com.simplemobiletools.commons.helpers.isPiePlus
18+ import com.simplemobiletools.commons.helpers.isSPlus
1219import com.simplemobiletools.filemanager.pro.R
20+ import com.simplemobiletools.filemanager.pro.extensions.config
21+ import com.simplemobiletools.filemanager.pro.extensions.getUiMode
22+ import com.simplemobiletools.filemanager.pro.extensions.hideSystemUI
23+ import com.simplemobiletools.filemanager.pro.extensions.showSystemUI
1324import com.simplemobiletools.filemanager.pro.helpers.PdfDocumentAdapter
1425import kotlinx.android.synthetic.main.activity_pdf_viewer.*
1526
27+
1628class PDFViewerActivity : SimpleActivity () {
17- var realFilePath = " "
29+ private var realFilePath = " "
30+
31+ private var systemUiVisible = true
32+ private var pdfViewerHeight = - 1
33+ private var positionOffset = 0f
1834
1935 override fun onCreate (savedInstanceState : Bundle ? ) {
2036 super .onCreate(savedInstanceState)
@@ -29,6 +45,7 @@ class PDFViewerActivity : SimpleActivity() {
2945 }
3046
3147 checkIntent()
48+ setupFullScreenView()
3249 }
3350
3451 override fun onCreateOptionsMenu (menu : Menu ): Boolean {
@@ -76,4 +93,48 @@ class PDFViewerActivity : SimpleActivity() {
7693 print (realFilePath.getFilenameFromPath(), adapter, PrintAttributes .Builder ().build())
7794 }
7895 }
96+
97+ private fun setupFullScreenView () {
98+ pdf_viewer.setOnClickListener {
99+ if (systemUiVisible) enterFullScreen() else exitFullScreen()
100+ systemUiVisible = ! systemUiVisible
101+ }
102+ setupNotch()
103+ }
104+
105+ private fun enterFullScreen () {
106+ if (pdfViewerHeight == - 1 ) {
107+ pdfViewerHeight = pdf_viewer.height
108+ }
109+ positionOffset = pdf_viewer.positionOffset
110+ hideSystemUI(true )
111+
112+ pdf_viewer.updateLayoutParams<RelativeLayout .LayoutParams > {
113+ // hack to workaround pdf viewer height glitch
114+ this .height = pdf_viewer_wrapper.height + statusBarHeight + actionBarHeight
115+ }
116+ }
117+
118+ private fun exitFullScreen () {
119+ showSystemUI(true )
120+ pdf_viewer.updateLayoutParams<RelativeLayout .LayoutParams > {
121+ this .height = pdfViewerHeight
122+ }
123+ pdf_viewer.post { pdf_viewer.positionOffset = positionOffset }
124+
125+ @Suppress(" DEPRECATION" )
126+ // use light status bar on material you
127+ if (isSPlus() && config.isUsingSystemTheme && getUiMode() == UI_MODE_NIGHT_NO ) {
128+ val flags = window.decorView.systemUiVisibility
129+ window.decorView.systemUiVisibility = flags or View .SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
130+ }
131+ }
132+
133+
134+ private fun setupNotch () {
135+ if (isPiePlus()) {
136+ window.attributes.layoutInDisplayCutoutMode = WindowManager .LayoutParams .LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
137+ window.addFlags(WindowManager .LayoutParams .FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS )
138+ }
139+ }
79140}
0 commit comments