diff --git a/app/src/main/java/app/grapheneos/pdfviewer/fragment/DocumentPropertiesFragment.java b/app/src/main/java/app/grapheneos/pdfviewer/fragment/DocumentPropertiesFragment.java deleted file mode 100644 index 47f039b..0000000 --- a/app/src/main/java/app/grapheneos/pdfviewer/fragment/DocumentPropertiesFragment.java +++ /dev/null @@ -1,60 +0,0 @@ -package app.grapheneos.pdfviewer.fragment; - -import android.app.Activity; -import android.app.Dialog; -import android.os.Bundle; -import android.widget.ArrayAdapter; - -import androidx.annotation.NonNull; -import androidx.fragment.app.DialogFragment; - -import com.google.android.material.dialog.MaterialAlertDialogBuilder; - -import app.grapheneos.pdfviewer.R; - -import java.util.ArrayList; -import java.util.List; - -public class DocumentPropertiesFragment extends DialogFragment { - public static final String TAG = "DocumentPropertiesFragment"; - - private static final String KEY_DOCUMENT_PROPERTIES = "document_properties"; - - private List mDocumentProperties; - - public static DocumentPropertiesFragment newInstance(final List metaData) { - final DocumentPropertiesFragment fragment = new DocumentPropertiesFragment(); - final Bundle args = new Bundle(); - - args.putCharSequenceArrayList(KEY_DOCUMENT_PROPERTIES, (ArrayList) metaData); - fragment.setArguments(args); - - return fragment; - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - if (getArguments() != null) { - mDocumentProperties = getArguments().getStringArrayList(KEY_DOCUMENT_PROPERTIES); - } - } - - @NonNull - @Override - public Dialog onCreateDialog(Bundle savedInstanceState) { - final Activity activity = requireActivity(); - final MaterialAlertDialogBuilder dialog = new MaterialAlertDialogBuilder(activity) - .setPositiveButton(android.R.string.ok, null); - - if (mDocumentProperties != null) { - dialog.setTitle(getString(R.string.action_view_document_properties)); - dialog.setAdapter(new ArrayAdapter<>(activity, android.R.layout.simple_list_item_1, - mDocumentProperties), null); - } else { - dialog.setTitle(R.string.document_properties_retrieval_failed); - } - return dialog.create(); - } -} diff --git a/app/src/main/java/app/grapheneos/pdfviewer/fragment/DocumentPropertiesFragment.kt b/app/src/main/java/app/grapheneos/pdfviewer/fragment/DocumentPropertiesFragment.kt new file mode 100644 index 0000000..41e71cf --- /dev/null +++ b/app/src/main/java/app/grapheneos/pdfviewer/fragment/DocumentPropertiesFragment.kt @@ -0,0 +1,53 @@ +package app.grapheneos.pdfviewer.fragment + +import android.app.Dialog +import android.os.Bundle +import android.widget.ArrayAdapter +import androidx.fragment.app.DialogFragment +import app.grapheneos.pdfviewer.R +import com.google.android.material.dialog.MaterialAlertDialogBuilder + +class DocumentPropertiesFragment : DialogFragment() { + + //TODO replace with nav args once the `PdfViewer` activity is converted to kotlin + private val mDocumentProperties: List by lazy { + requireArguments().getStringArrayList(KEY_DOCUMENT_PROPERTIES)?.toList() ?: emptyList() + } + + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { + return MaterialAlertDialogBuilder(requireActivity()) + .setPositiveButton(android.R.string.ok, null).apply { + if (mDocumentProperties.isNotEmpty()) { + setTitle(getString(R.string.action_view_document_properties)) + setAdapter( + ArrayAdapter( + requireActivity(), + android.R.layout.simple_list_item_1, + mDocumentProperties + ), null + ) + } else { + setTitle(R.string.document_properties_retrieval_failed) + } + } + .create() + } + + companion object { + + const val TAG = "DocumentPropertiesFragment" + private const val KEY_DOCUMENT_PROPERTIES = "document_properties" + + @JvmStatic + fun newInstance(metaData: List): DocumentPropertiesFragment { + val fragment = DocumentPropertiesFragment() + val args = Bundle() + args.putCharSequenceArrayList( + KEY_DOCUMENT_PROPERTIES, + metaData as ArrayList + ) + fragment.arguments = args + return fragment + } + } +} \ No newline at end of file diff --git a/app/src/main/java/app/grapheneos/pdfviewer/fragment/JumpToPageFragment.java b/app/src/main/java/app/grapheneos/pdfviewer/fragment/JumpToPageFragment.java deleted file mode 100644 index 95bee27..0000000 --- a/app/src/main/java/app/grapheneos/pdfviewer/fragment/JumpToPageFragment.java +++ /dev/null @@ -1,61 +0,0 @@ -package app.grapheneos.pdfviewer.fragment; - -import android.app.Dialog; -import android.os.Bundle; -import android.view.Gravity; -import android.widget.FrameLayout; -import android.widget.NumberPicker; - -import androidx.annotation.NonNull; -import androidx.fragment.app.DialogFragment; - -import com.google.android.material.dialog.MaterialAlertDialogBuilder; - -import app.grapheneos.pdfviewer.PdfViewer; - -public class JumpToPageFragment extends DialogFragment { - public static final String TAG = "JumpToPageFragment"; - - private final static String STATE_PICKER_CUR = "picker_cur"; - private final static String STATE_PICKER_MIN = "picker_min"; - private final static String STATE_PICKER_MAX = "picker_max"; - - private NumberPicker mPicker; - - @NonNull - @Override - public Dialog onCreateDialog(Bundle savedInstanceState) { - mPicker = new NumberPicker(getActivity()); - if (savedInstanceState != null) { - mPicker.setMinValue(savedInstanceState.getInt(STATE_PICKER_MIN)); - mPicker.setMaxValue(savedInstanceState.getInt(STATE_PICKER_MAX)); - mPicker.setValue(savedInstanceState.getInt(STATE_PICKER_CUR)); - } else { - mPicker.setMinValue(1); - mPicker.setMaxValue(((PdfViewer)requireActivity()).mNumPages); - mPicker.setValue(((PdfViewer)requireActivity()).mPage); - } - - final FrameLayout layout = new FrameLayout(getActivity()); - layout.addView(mPicker, new FrameLayout.LayoutParams( - FrameLayout.LayoutParams.WRAP_CONTENT, - FrameLayout.LayoutParams.WRAP_CONTENT, - Gravity.CENTER)); - - return new MaterialAlertDialogBuilder(requireActivity()) - .setView(layout) - .setPositiveButton(android.R.string.ok, (dialogInterface, i) -> { - mPicker.clearFocus(); - ((PdfViewer)requireActivity()).onJumpToPageInDocument(mPicker.getValue()); - }) - .setNegativeButton(android.R.string.cancel, null) - .create(); - } - - @Override - public void onSaveInstanceState(Bundle outState) { - outState.putInt(STATE_PICKER_MIN, mPicker.getMinValue()); - outState.putInt(STATE_PICKER_MAX, mPicker.getMaxValue()); - outState.putInt(STATE_PICKER_CUR, mPicker.getValue()); - } -} diff --git a/app/src/main/java/app/grapheneos/pdfviewer/fragment/JumpToPageFragment.kt b/app/src/main/java/app/grapheneos/pdfviewer/fragment/JumpToPageFragment.kt new file mode 100644 index 0000000..5eb814f --- /dev/null +++ b/app/src/main/java/app/grapheneos/pdfviewer/fragment/JumpToPageFragment.kt @@ -0,0 +1,60 @@ +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 : 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 { + + val viewerActivity: PdfViewer = (requireActivity() as PdfViewer) + + 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 = viewerActivity.mNumPages + mPicker.value = viewerActivity.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() + viewerActivity.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) + } +} \ No newline at end of file