Generate SSD edit dialog from typed Jerboa
ober
eef5a52efc8f9ce171b63219bfee1d96f09a67e0
--- a/templates/ssd-review.ss +++ b/templates/ssd-review.ss @@ -4896,6 +4896,7 @@ mainActivityDeleteGroup mainActivityDeleteSelectedGroup mainActivityShowApproveDialog + mainActivityShowGroupEditDialog mainActivityEditSelectedGroup mainActivityApproveArea mainActivityAppendAreaToGroupAction mainActivityShowAppendDialog @@ -5262,6 +5263,14 @@ (extern (autoCompleteTextRaw (view : AutoCompleteTextView)) : Editable (kotlin-member-get text)) + (extern (autoCompleteSetTextRaw + (view : AutoCompleteTextView) + (text : String) + (filter : Bool)) : Unit + (kotlin-member-call setText)) + (extern (autoCompleteSelectAllRaw + (view : AutoCompleteTextView)) : Unit + (kotlin-member-call selectAll)) (extern (editableToString (value : Editable)) : String (kotlin-member-call toString)) (extern (autoCompleteVisibilitySet @@ -7294,6 +7303,122 @@ boxType (mainActivityDisplayHeightPixels activity) (mainActivityDialogSoftInputMode))))))))) + (def (mainActivityShowGroupEditDialog + (activity : MainActivity) + (view : SsdReviewView) + (store : TruthStore) + (session : (Nullable SsdSession)) + (group : SsdGroup) + (boxTypeDisplays : (List String)) + (confirmHaptic : Int32) + (rejectHaptic : Int32)) : Unit + (if (sessionMissing session) + (begin) + (let ((loadedSession (ssdSessionOrEmpty session)) + (typeDisplay + (boxTypesDisplayFromActivity + activity + (SsdGroup-boxTypeId group)))) + (let ((layout (mainActivityDialogColumn activity)) + (label + (mainActivityTextInputWithText + activity + "Label" + (resolvedLabelForBoxTypeFromActivity + activity + (SsdGroup-label group) + typeDisplay + (SsdGroup-boxTypeId group)) + #t)) + (boxType + (mainActivityBoxTypeInputWithText + activity + boxTypeDisplays + "Box type id/name" + typeDisplay)) + (firingArc + (mainActivityFiringArcInputWithText + activity + (firingArcDisplaysValue) + (SsdGroup-firingArc group))) + (count + (mainActivityNumberInput + activity + "Count" + (groupCountText group)))) + (begin + (mainActivityAddApproveDialogInputs + layout + label + boxType + firingArc + count) + (autoCompleteInstallBoxTypeDialogBehavior + activity + label + boxType + firingArc + (SsdGroup-boxTypeId group)) + (let ((dialog + (alertDialogBuilderShowRaw + (alertDialogBuilderSetPositiveAction + (alertDialogBuilderSetNeutralAction + (alertDialogBuilderSetCancelAction + (alertDialogBuilderSetLinearLayoutViewRaw + (alertDialogBuilderSetTitleRaw + (alertDialogBuilderForActivityRaw activity) + (editDialogTitle group)) + layout)) + "Delete" + (lambda () (begin))) + "Save" + (lambda () (begin)))))) + (begin + (mainActivityInstallEditDialogButtons + activity + dialog + loadedSession + group + label + boxType + firingArc + count + view + store + confirmHaptic + rejectHaptic) + (autoCompleteSelectAllRaw boxType) + (mainActivityFocusBoxTypeDropdown + dialog + boxType + (mainActivityDisplayHeightPixels activity) + (mainActivityDialogSoftInputMode))))))))) + (def (mainActivityEditSelectedGroup + (activity : MainActivity) + (view : SsdReviewView) + (store : TruthStore) + (session : (Nullable SsdSession)) + (selectedGroupId : (Nullable String)) + (boxTypeDisplays : (List String)) + (confirmHaptic : Int32) + (rejectHaptic : Int32)) : Unit + (let ((group + (mainActivitySelectedGroup + activity + view + session + selectedGroupId))) + (if (ssdGroupMissing group) + (begin) + (mainActivityShowGroupEditDialog + activity + view + store + session + (ssdGroupOrEmpty group) + boxTypeDisplays + confirmHaptic + rejectHaptic)))) (def (mainActivityDetectCurrentForceWithState (activity : MainActivity)) : Unit (mainActivityDetectCurrentRaw @@ -7910,6 +8035,18 @@ (editTextHintSetRaw input hint) (editTextInputTypeSetRaw input (inputTypeClassText)) input))) + (def (mainActivityTextInputWithText + (activity : MainActivity) + (hint : String) + (text : String) + (selectAll : Bool)) : EditText + (let ((input (mainActivityTextInput activity hint))) + (begin + (editTextSetTextRaw input text) + (if selectAll + (editTextSelectAllRaw input) + (begin)) + input))) (def (mainActivityBoxTypeInputWithHint (activity : MainActivity) (displays : (List String)) @@ -7918,6 +8055,23 @@ (begin (autoCompleteHintSetRaw input hint) input))) + (def (mainActivityBoxTypeInputWithText + (activity : MainActivity) + (displays : (List String)) + (hint : String) + (text : String)) : AutoCompleteTextView + (let ((input (mainActivityBoxTypeInputWithHint activity displays hint))) + (begin + (autoCompleteSetTextRaw input text #f) + input))) + (def (mainActivityFiringArcInputWithText + (activity : MainActivity) + (displays : (List String)) + (text : String)) : AutoCompleteTextView + (let ((input (mainActivityFiringArcInput activity displays))) + (begin + (autoCompleteSetTextRaw input text #f) + input))) (def (mainActivityDialogColumn (activity : MainActivity)) : LinearLayout (let ((layout (linearLayoutForActivity activity))) @@ -11020,7 +11174,7 @@ " addView(mainActivityActionRow(this@MainActivity, LinearLayout.HORIZONTAL, Gravity.CENTER_VERTICAL," " mainActivityButton(this@MainActivity, \"Prev\", ButtonKind.NAV) { mainActivitySelectRelativeGroup(this@MainActivity, reviewView, currentSession, selectedGroupId, -1, HapticFeedbackConstants.CLOCK_TICK) }," " mainActivityButton(this@MainActivity, \"Next\", ButtonKind.PRIMARY) { mainActivitySelectRelativeGroup(this@MainActivity, reviewView, currentSession, selectedGroupId, 1, HapticFeedbackConstants.CLOCK_TICK) }," - " mainActivityButton(this@MainActivity, \"Edit\") { editSelectedGroup() }," + " mainActivityButton(this@MainActivity, \"Edit\") { mainActivityEditSelectedGroup(this@MainActivity, reviewView, truthStore, currentSession, selectedGroupId, boxTypeDisplays, HapticFeedbackConstants.CONFIRM, HapticFeedbackConstants.REJECT) }," " ))" " addView(mainActivityActionRow(this@MainActivity, LinearLayout.HORIZONTAL, Gravity.CENTER_VERTICAL," " mainActivityButton(this@MainActivity, \"Approve\", ButtonKind.ACCENT) { mainActivityApproveSelectedGroup(this@MainActivity, reviewView, truthStore, currentSession, selectedGroupId, HapticFeedbackConstants.CONFIRM) }," @@ -11102,12 +11256,6 @@ " )" " }" "" - " private fun editSelectedGroup() {" - " val group = mainActivitySelectedGroup(this, reviewView, currentSession, selectedGroupId)" - " if (ssdGroupMissing(group)) return" - " showGroupEditDialog(ssdGroupOrEmpty(group))" - " }" - "" " internal fun renderCurrentPage() {" " if (!pdfUriLoaded(pdfUri)) return" " val uri = uriOrEmpty(pdfUri)" @@ -11162,62 +11310,6 @@ " )" " }" "" - " private fun showGroupEditDialog(group: SsdGroup) {" - " if (sessionMissing(currentSession)) return" - " val session = ssdSessionOrEmpty(currentSession)" - " val layout = LinearLayout(this).apply {" - " orientation = LinearLayout.VERTICAL" - " setPadding(32, 16, 32, 8)" - " }" - " val label = EditText(this).apply {" - " hint = \"Label\"" - " inputType = InputType.TYPE_CLASS_TEXT" - " val typeDisplay = boxTypesDisplayAndroid(this@MainActivity, group.boxTypeId)" - " setText(resolvedLabelForBoxTypeAndroid(this@MainActivity, group.label, typeDisplay, group.boxTypeId))" - " selectAll()" - " }" - " val boxType = mainActivityBoxTypeInput(this, boxTypeDisplays).apply {" - " hint = \"Box type id/name\"" - " setText(boxTypesDisplayAndroid(this@MainActivity, group.boxTypeId), false)" - " }" - " val firingArc = mainActivityFiringArcInput(this, firingArcDisplays).apply {" - " setText(group.firingArc, false)" - " }" - " val count = EditText(this).apply {" - " hint = \"Count\"" - " inputType = InputType.TYPE_CLASS_NUMBER" - " setText(groupCountText(group))" - " }" - " layout.addView(label)" - " layout.addView(boxType)" - " layout.addView(firingArc)" - " layout.addView(count)" - " autoCompleteInstallBoxTypeDialogBehavior(this, label, boxType, firingArc, group.boxTypeId)" - " val dialog = AlertDialog.Builder(this)" - " .setTitle(editDialogTitle(group))" - " .setView(layout)" - " .setNegativeButton(\"Cancel\", null)" - " .setNeutralButton(\"Delete\", null)" - " .setPositiveButton(\"Save\", null)" - " .show()" - " mainActivityInstallEditDialogButtons(" - " this," - " dialog," - " session," - " group," - " label," - " boxType," - " firingArc," - " count," - " reviewView," - " truthStore," - " HapticFeedbackConstants.CONFIRM," - " HapticFeedbackConstants.REJECT" - " )" - " boxType.selectAll()" - " mainActivityFocusBoxTypeDropdown(dialog, boxType, resources.displayMetrics.heightPixels, android.view.WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE or android.view.WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE)" - " }" - "" " override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {" " super.onActivityResult(requestCode, resultCode, data)" " if (activityResultRejected(resultCode, RESULT_OK)) return"