59 lines
2.1 KiB
Kotlin
59 lines
2.1 KiB
Kotlin
package app.grapheneos.pdfviewer.fragment
|
|
|
|
import android.app.Dialog
|
|
import android.content.DialogInterface
|
|
import android.os.Bundle
|
|
import android.view.Gravity
|
|
import android.widget.FrameLayout
|
|
import android.widget.NumberPicker
|
|
import androidx.fragment.app.DialogFragment
|
|
import app.grapheneos.pdfviewer.PdfViewer
|
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
|
|
|
class JumpToPageFragment(private val pdfViewer: PdfViewer) : DialogFragment() {
|
|
|
|
companion object {
|
|
const val TAG = "JumpToPageFragment"
|
|
private const val STATE_PICKER_CUR = "picker_cur"
|
|
private const val STATE_PICKER_MIN = "picker_min"
|
|
private const val STATE_PICKER_MAX = "picker_max"
|
|
}
|
|
|
|
private val mPicker: NumberPicker by lazy { NumberPicker(requireActivity()) }
|
|
|
|
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
|
|
|
if (savedInstanceState != null) {
|
|
mPicker.minValue = savedInstanceState.getInt(STATE_PICKER_MIN)
|
|
mPicker.maxValue = savedInstanceState.getInt(STATE_PICKER_MAX)
|
|
mPicker.value = savedInstanceState.getInt(STATE_PICKER_CUR)
|
|
} else {
|
|
mPicker.minValue = 1
|
|
mPicker.maxValue = pdfViewer.mNumPages
|
|
mPicker.value = pdfViewer.mPage
|
|
}
|
|
val layout = FrameLayout(requireActivity())
|
|
layout.addView(
|
|
mPicker, FrameLayout.LayoutParams(
|
|
FrameLayout.LayoutParams.WRAP_CONTENT,
|
|
FrameLayout.LayoutParams.WRAP_CONTENT,
|
|
Gravity.CENTER
|
|
)
|
|
)
|
|
return MaterialAlertDialogBuilder(requireActivity())
|
|
.setView(layout)
|
|
.setPositiveButton(android.R.string.ok) { _: DialogInterface?, _: Int ->
|
|
mPicker.clearFocus()
|
|
pdfViewer.onJumpToPageInDocument(mPicker.value)
|
|
}
|
|
.setNegativeButton(android.R.string.cancel, null)
|
|
.create()
|
|
}
|
|
|
|
override fun onSaveInstanceState(outState: Bundle) {
|
|
outState.putInt(STATE_PICKER_MIN, mPicker.minValue)
|
|
outState.putInt(STATE_PICKER_MAX, mPicker.maxValue)
|
|
outState.putInt(STATE_PICKER_CUR, mPicker.value)
|
|
}
|
|
}
|