Generate SSD page dialog from typed Jerboa

ober

a54defe7a6d8d3108613f8e6dbefd1518b8f17be

diff --git a/templates/ssd-review.ss b/templates/ssd-review.ss
index 7e57983..b197568 100644
--- a/templates/ssd-review.ss
+++ b/templates/ssd-review.ss
@@ -4885,6 +4885,7 @@
                 mainActivityFinalizeGroupLabel
                 mainActivityFocusBoxTypeDropdown
                 mainActivityChangePage
+                mainActivityShowPageDialog
                 mainActivityStartAppendMode
                 mainActivityStartSsdAreaMode
                 mainActivityRotatePage
@@ -5184,6 +5185,10 @@
                   (builder : Builder)
                   (message : String)) : Builder
           (kotlin-member-call setMessage))
+        (extern (alertDialogBuilderSetViewRaw
+                  (builder : Builder)
+                  (view : EditText)) : Builder
+          (kotlin-member-call setView))
         (extern (alertDialogBuilderShowRaw
                   (builder : Builder)) : AlertDialog
           (kotlin-member-call show))
@@ -5203,6 +5208,8 @@
           (kotlin-value android R layout simple_dropdown_item_1line))
         (extern (inputTypeClassText) : Int32
           (kotlin-value InputType TYPE_CLASS_TEXT))
+        (extern (inputTypeClassNumber) : Int32
+          (kotlin-value InputType TYPE_CLASS_NUMBER))
         (extern (stringArrayAdapter
                   (activity : MainActivity)
                   (layoutResource : Int32)
@@ -5280,6 +5287,13 @@
         (extern (editTextRaw
                   (view : EditText)) : Editable
           (kotlin-member-get text))
+        (extern (editTextForActivity
+                  (activity : MainActivity)) : EditText
+          (kotlin-call EditText))
+        (extern (editTextInputTypeSetRaw
+                  (view : EditText)
+                  (inputType : Int32)) : Unit
+          (kotlin-member-set inputType))
         (extern (editTextSetTextRaw
                   (view : EditText)
                   (text : String)) : Unit
@@ -5288,6 +5302,9 @@
                   (view : EditText)
                   (index : Int32)) : Unit
           (kotlin-member-call setSelection))
+        (extern (editTextSelectAllRaw
+                  (view : EditText)) : Unit
+          (kotlin-member-call selectAll))
         (extern (buttonSetOnClickListenerRaw
                   (button : Button)
                   (listener : (-> View Unit))) : Unit
@@ -6826,6 +6843,30 @@
                 (shiftPageIndex pageIndex pageCount delta))
               (mainActivityPersistCurrentPdfStateRaw activity #f)
               (mainActivityRenderCurrentPageRaw activity))))
+        (def (mainActivityShowPageDialog
+               (activity : MainActivity)
+               (uri : (Nullable Uri))
+               (pageCount : Int32)
+               (pageIndex : Int32)) : Unit
+          (if (pageNavigationBlockedForUri uri pageCount)
+            (begin)
+            (let ((input (editTextForActivity activity)))
+              (begin
+                (editTextInputTypeSetRaw input (inputTypeClassNumber))
+                (editTextSetTextRaw input (pageNumberText pageIndex))
+                (editTextSelectAllRaw input)
+                (alertDialogBuilderShowRaw
+                  (mainActivitySetPositiveLoadPage
+                    (alertDialogBuilderSetCancelAction
+                      (alertDialogBuilderSetViewRaw
+                        (alertDialogBuilderSetTitleRaw
+                          (alertDialogBuilderForActivityRaw activity)
+                          "Go to page")
+                        input))
+                    activity
+                    input
+                    pageCount))
+                (begin)))))
         (def (mainActivityStartAppendMode
                (activity : MainActivity)
                (view : SsdReviewView)
@@ -10621,7 +10662,7 @@
 	       "            ))"
 	       "            addView(mainActivityActionRow(this@MainActivity, LinearLayout.HORIZONTAL, Gravity.CENTER_VERTICAL,"
 	       "                mainActivityButton(this@MainActivity, \"Prev Page\") { mainActivityChangePage(this@MainActivity, pdfUri, pageCount, pageIndex, -1) },"
-	       "                mainActivityButton(this@MainActivity, \"Page #\") { showPageDialog() },"
+	       "                mainActivityButton(this@MainActivity, \"Page #\") { mainActivityShowPageDialog(this@MainActivity, pdfUri, pageCount, pageIndex) },"
 	       "                mainActivityButton(this@MainActivity, \"Next Page\") { mainActivityChangePage(this@MainActivity, pdfUri, pageCount, pageIndex, 1) },"
 	       "            ))"
 	       "            addView(mainActivityActionRow(this@MainActivity, LinearLayout.HORIZONTAL, Gravity.CENTER_VERTICAL,"
@@ -10714,24 +10755,6 @@
        "        )"
        "    }"
        ""
-       "    private fun showPageDialog() {"
-       "        if (pageNavigationBlockedForUri(pdfUri, pageCount)) return"
-       "        val input = EditText(this).apply {"
-       "            inputType = InputType.TYPE_CLASS_NUMBER"
-       "            setText(pageNumberText(pageIndex))"
-       "            selectAll()"
-       "        }"
-       "        mainActivitySetPositiveLoadPage("
-       "            AlertDialog.Builder(this)"
-       "                .setTitle(\"Go to page\")"
-       "                .setView(input)"
-       "                .setNegativeButton(\"Cancel\", null),"
-       "            this,"
-       "            input,"
-       "            pageCount"
-       "        ).show()"
-	       "    }"
-	       ""
        "    private fun editSelectedGroup() {"
        "        val group = mainActivitySelectedGroup(this, reviewView, currentSession, selectedGroupId)"
        "        if (ssdGroupMissing(group)) return"