Move SSD edit dialog text to typed Kotlin

ober

e9e8adf5e3c3ac44978787d7b1cc8761d7dc05c4

diff --git a/templates/ssd-review.ss b/templates/ssd-review.ss
index 60382f6..4a96e64 100644
--- a/templates/ssd-review.ss
+++ b/templates/ssd-review.ss
@@ -3734,6 +3734,8 @@
                 approveCountSavingStatus approveCountSavedStatus
                 appendSavingStatus appendSavedStatus
                 deleteSavingStatus deleteSavedStatus
+                editDialogTitle groupCountText
+                editSavingStatus editSavedStatus
                 clampPageIndex shiftPageIndex displayGroupCanvasLabel
                 dropdownHeight dialogPageNumber nullableLowercaseOrEmpty
                 selectModeStatus selectionResultStatus detectStartStatus
@@ -3957,6 +3959,16 @@
           (string-append
             "Deleted and saved "
             (groupDisplayLabel group)))
+        (def (editDialogTitle (group : SsdGroup)) : String
+          (string-append "Edit " (SsdGroup-id group)))
+        (def (groupCountText (group : SsdGroup)) : String
+          (int32->string (SsdGroup-count group)))
+        (def (editSavingStatus (group : SsdGroup)) : String
+          (string-append
+            "Saved "
+            (string-append (groupDisplayLabel group) "; syncing...")))
+        (def (editSavedStatus (group : SsdGroup)) : String
+          (string-append "Saved " (groupDisplayLabel group)))
         (def (dropdownHeight (screenHeight : Int32)) : Int32
           (let ((third (/ screenHeight (int32 3))))
             (if (> third (int32 620))
@@ -5898,7 +5910,7 @@
        "        val count = EditText(this).apply {"
        "            hint = \"Count\""
        "            inputType = InputType.TYPE_CLASS_NUMBER"
-       "            setText(group.count.toString())"
+       "            setText(groupCountText(group))"
        "        }"
        "        layout.addView(label)"
        "        layout.addView(boxType)"
@@ -5906,7 +5918,7 @@
        "        layout.addView(count)"
        "        wireBoxTypeDialogBehavior(label, boxType, firingArc, group.boxTypeId)"
        "        val dialog = AlertDialog.Builder(this)"
-       "            .setTitle(\"Edit ${group.id}\")"
+       "            .setTitle(editDialogTitle(group))"
        "            .setView(layout)"
        "            .setNegativeButton(\"Cancel\", null)"
        "            .setNeutralButton(\"Delete\", null)"
@@ -5932,8 +5944,8 @@
        "            reviewView.invalidate()"
        "            saveSessionAsync("
        "                session,"
-       "                \"Saved ${groupDisplayLabel(group)}; syncing...\","
-       "                \"Saved ${groupDisplayLabel(group)}\""
+       "                editSavingStatus(group),"
+       "                editSavedStatus(group)"
        "            )"
        "        }"
        "        dialog.getButton(AlertDialog.BUTTON_NEUTRAL).setOnClickListener {"