Move SSD review view state updates to typed Kotlin
ober
ad953773555369d7b0ec0aa3143f7a8bab7b1aac
--- a/templates/ssd-review.ss +++ b/templates/ssd-review.ss @@ -4640,7 +4640,9 @@ sessionMissing viewportStatePresent viewportStateOrEmpty hasReplacementLabel missingReplacementLabel hasResolvedLabel - reviewViewSelectGroupId + reviewViewSelectGroupId reviewViewSetSelectMode + reviewViewSetSsdAreaFromSession reviewViewShowSession + reviewViewClearSessionState ssdBrowserResumeReady focusChangeShouldShowDropdown dialogReadyToShowDropdown focusedDialogReadyToShowDropdown permissionResultGranted downloadAccessBeforeRuntimePermissions @@ -4687,6 +4689,7 @@ touchPointerOuterRadius touchPointerInnerRadius hitGroupPad) (type Int32) (type Float32) + (type FloatArray) (type Char) (type File) (type Cursor) @@ -4738,6 +4741,18 @@ (extern (reviewViewSelectedGroupIdSet (view : SsdReviewView) (id : (Nullable String))) : Unit (kotlin-member-set selectedGroupId)) + (extern (reviewViewSelectModeSet (view : SsdReviewView) + (enabled : Bool)) : Unit + (kotlin-member-set selectMode)) + (extern (reviewViewSnapSelectionToCellsSet (view : SsdReviewView) + (enabled : Bool)) : Unit + (kotlin-member-set snapSelectionToCells)) + (extern (reviewViewSessionSet (view : SsdReviewView) + (session : (Nullable SsdSession))) : Unit + (kotlin-member-set session)) + (extern (reviewViewSsdAreaSet (view : SsdReviewView) + (area : (Nullable FloatArray))) : Unit + (kotlin-member-set ssdArea)) (def (normalizeFiringArc (value : String)) : String (string-uppercase (string-trim value))) (def (normalizeLabel (value : String)) : String @@ -5217,6 +5232,26 @@ (def (reviewViewSelectGroupId (view : SsdReviewView) (id : (Nullable String))) : Unit (reviewViewSelectedGroupIdSet view id)) + (def (reviewViewSetSelectMode (view : SsdReviewView) + (enabled : Bool) + (snapToCells : Bool)) : Unit + (begin + (reviewViewSnapSelectionToCellsSet view snapToCells) + (reviewViewSelectModeSet view enabled))) + (def (reviewViewSetSsdAreaFromSession (view : SsdReviewView) + (session : SsdSession)) : Unit + (reviewViewSsdAreaSet view (SsdSession-ssdArea session))) + (def (reviewViewShowSession (view : SsdReviewView) + (session : SsdSession)) : Unit + (begin + (reviewViewSessionSet view (nullable-some session)) + (reviewViewSelectGroupId view (nullable-none String)) + (reviewViewSetSsdAreaFromSession view session))) + (def (reviewViewClearSessionState (view : SsdReviewView)) : Unit + (begin + (reviewViewSessionSet view (nullable-none SsdSession)) + (reviewViewSelectGroupId view (nullable-none String)) + (reviewViewSsdAreaSet view (nullable-none FloatArray)))) (def (shouldCaptureViewport (includeViewport : Bool)) : Bool includeViewport) (def (viewportForSave (view : SsdReviewView) @@ -6999,18 +7034,15 @@ " if (selectModeDisabled(enabled)) {" " appendMode = false" " ssdAreaMode = false" - " reviewView.snapSelectionToCells = true" - " } else if (ssdAreaModeInactive(ssdAreaMode)) {" - " reviewView.snapSelectionToCells = true" " }" - " reviewView.selectMode = enabled" + " reviewViewSetSelectMode(reviewView, enabled, !ssdAreaMode)" " setStatus(selectModeStatus(ssdAreaMode, appendMode, reviewView.selectMode))" " }" "" " private fun finishSelectInteraction() {" " appendMode = false" " ssdAreaMode = false" - " reviewView.snapSelectionToCells = true" + " reviewViewSetSelectMode(reviewView, false, true)" " reviewView.clearInteractionState()" " }" "" @@ -7026,15 +7058,14 @@ " val group = ssdSessionFindGroupById(session, selectedGroupId)" " if (ssdGroupMissing(group)) {" " appendMode = false" - " reviewView.selectMode = false" + " reviewViewSetSelectMode(reviewView, false, true)" " setStatus(\"Select an existing group first, then tap Append\")" " return" - " }" - " val appendGroup = ssdGroupOrEmpty(group)" + " }" + " val appendGroup = ssdGroupOrEmpty(group)" " appendMode = true" " ssdAreaMode = false" - " reviewView.snapSelectionToCells = true" - " reviewView.selectMode = true" + " reviewViewSetSelectMode(reviewView, true, true)" " reviewViewSelectGroupId(reviewView, appendGroup.id)" " setStatus(appendModeStatus(appendGroup))" " }" @@ -7043,8 +7074,7 @@ " if (sessionMissing(currentSession)) return" " appendMode = false" " ssdAreaMode = true" - " reviewView.snapSelectionToCells = false" - " reviewView.selectMode = true" + " reviewViewSetSelectMode(reviewView, true, false)" " reviewViewSelectGroupId(reviewView, selectedGroupId)" " reviewView.performHapticFeedback(HapticFeedbackConstants.CLOCK_TICK)" " setStatus(\"SSD area mode: drag around the ship SSD; tags outside that area will be removed\")" @@ -7091,7 +7121,7 @@ " val outsideCount = ssdSessionSsdAreaOutsideCount(session)" " val removed = ssdSessionPruneGroupsOutsideSsdArea(session)" " selectedGroupId = ssdSessionSelectedGroupId(session, selectedGroupId)" - " reviewView.ssdArea = session.ssdArea" + " reviewViewSetSsdAreaFromSession(reviewView, session)" " reviewViewSelectGroupId(reviewView, selectedGroupId)" " truthStore.appendEvent(\"ssd_area_set\", session, ssdAreaSetDetails(removed, beforeGroups, outsideCount))" " reviewView.performHapticFeedback(HapticFeedbackConstants.CONFIRM)" @@ -7175,9 +7205,7 @@ " currentSession = null" " selectedGroupId = null" " reviewView.bitmap = bitmap" - " reviewView.session = null" - " reviewViewSelectGroupId(reviewView, null)" - " reviewView.ssdArea = null" + " reviewViewClearSessionState(reviewView)" " restoreViewportAfterLayout(restoredViewport)" " setStatus(renderedLoadingTruthStatus(renderPdfName, renderPageIndex, renderPageCount))" " detectCurrent(" @@ -7238,9 +7266,7 @@ " if (isStaleLoad(expectedGeneration, uri, expectedPageIndex)) return@runOnUiThread" " currentSession = session" " selectedGroupId = null" - " reviewView.session = session" - " reviewViewSelectGroupId(reviewView, null)" - " reviewView.ssdArea = session.ssdArea" + " reviewViewShowSession(reviewView, session)" " setStatus(sessionCountsStatus(session, \", replayed cached truth\"))" " logDetectResult(\"cached-truth\", session, \"local-truth\")" " }" @@ -7288,9 +7314,7 @@ " if (isStaleLoad(expectedGeneration, uri, expectedPageIndex)) return@runOnUiThread" " currentSession = session" " selectedGroupId = null" - " reviewView.session = session" - " reviewViewSelectGroupId(reviewView, null)" - " reviewView.ssdArea = session.ssdArea" + " reviewViewShowSession(reviewView, session)" " val truthNote = detectionTruthNoteFor(existingTruth)" " val ocrNote = detectionOcrNote(ocrGuesses, session.ocrWords.size)" " val learnedNote = detectionLearnedNote(learnedGuesses)" @@ -7333,9 +7357,7 @@ " if (isStaleLoad(generation, uri, page)) return@runOnUiThread" " currentSession = merged" " selectedGroupId = null" - " reviewView.session = merged" - " reviewViewSelectGroupId(reviewView, null)" - " reviewView.ssdArea = merged.ssdArea" + " reviewViewShowSession(reviewView, merged)" " reviewView.invalidate()" " setStatus(sessionCountsStatus(merged, \", pulled remote truth\"))" " logDetectResult(\"remote-truth\", merged, \"remote-truth\")" @@ -7427,7 +7449,7 @@ " val group = ssdSessionFindGroupById(session, selectedGroupId)" " if (ssdGroupMissing(group)) {" " appendMode = false" - " reviewView.selectMode = false" + " reviewViewSetSelectMode(reviewView, false, true)" " setStatus(appendCanceledNoGroupStatus())" " return" " }" @@ -7444,7 +7466,7 @@ " .setView(count)" " .setNegativeButton(\"Cancel\") { _, _ ->" " appendMode = false" - " reviewView.selectMode = false" + " reviewViewSetSelectMode(reviewView, false, true)" " setStatus(appendCanceledStatus())" " }" " .setPositiveButton(\"Append\", null)"