Move SSD append group checks to typed Kotlin
ober
bf35177afa40c5ed397d5db82e2687ae7ff5571d
--- a/templates/ssd-review.ss +++ b/templates/ssd-review.ss @@ -544,6 +544,7 @@ ssdSessionSelectedGroupId ssdSessionRelativeGroupId ssdSessionCellIdsForGroupId ssdSessionGroupPresent ssdSessionGroupMissing + ssdGroupMissing ssdGroupOrEmpty ssdSessionGroupContainsCellId ssdSessionCellIdSet ssdSessionFindCellById ssdSessionCellsByIds @@ -829,6 +830,21 @@ (def (ssdSessionGroupMissing (session : SsdSession) (group : SsdGroup)) : Bool (not (ssdSessionGroupPresent session group))) + (def (ssdGroupMissing (group : (Nullable SsdGroup))) : Bool + (nullable-null? group)) + (def (ssdGroupOrEmpty (group : (Nullable SsdGroup))) : SsdGroup + (if (nullable-null? group) + (make-SsdGroup + "" + "" + "" + "" + (int32 0) + (float-array (float32 0.0) (float32 0.0) (float32 0.0) (float32 0.0)) + (mutable-list-empty String) + "" + "") + (nullable-get group))) (def (ssdSessionGroupContainsCellId (session : SsdSession) (groupId : (Nullable String)) (cellId : String)) : Bool @@ -6440,18 +6456,19 @@ " private fun startAppendMode() {" " val session = currentSession ?: return" " val group = ssdSessionFindGroupById(session, selectedGroupId)" - " if (group == null) {" + " if (ssdGroupMissing(group)) {" " appendMode = false" " reviewView.selectMode = false" " setStatus(\"Select an existing group first, then tap Append\")" " return" " }" + " val appendGroup = ssdGroupOrEmpty(group)" " appendMode = true" " ssdAreaMode = false" " reviewView.snapSelectionToCells = true" " reviewView.selectMode = true" - " reviewView.selectedGroupId = group.id" - " setStatus(appendModeStatus(group))" + " reviewView.selectedGroupId = appendGroup.id" + " setStatus(appendModeStatus(appendGroup))" " }" "" " private fun startSsdAreaMode() {" @@ -6837,18 +6854,19 @@ " private fun showAppendDialog(rect: FloatArray, detectedIds: List<String>) {" " val session = currentSession ?: return" " val group = ssdSessionFindGroupById(session, selectedGroupId)" - " if (group == null) {" + " if (ssdGroupMissing(group)) {" " appendMode = false" " reviewView.selectMode = false" " setStatus(appendCanceledNoGroupStatus())" " return" " }" + " val appendGroup = ssdGroupOrEmpty(group)" " val count = EditText(this).apply {" " hint = \"Count\"" " inputType = InputType.TYPE_CLASS_NUMBER" " setText(detectedIdsCountText(detectedIds.size))" " }" - " val title = appendDialogTitle(group)" + " val title = appendDialogTitle(appendGroup)" " val dialog = AlertDialog.Builder(this)" " .setTitle(title)" " .setMessage(detectedBoxesMessage(detectedIds.size))" @@ -6863,7 +6881,7 @@ " dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener {" " val countValue = dialogCountValue(count.text.toString())" " dialog.dismiss()" - " appendAreaToGroup(rect, detectedIds, group, countValue)" + " appendAreaToGroup(rect, detectedIds, appendGroup, countValue)" " }" " count.requestFocus()" " }"