Summary
The menu customization screen has two reorder modes today: Drag (drag-handle + reorderable lazy list) and Arrows (per-row up/down IconButtons). Drag is unusable with a switch. Arrows works but moves one position per tap — moving an item from position 1 to position 12 takes 11 taps (and 11 switch-scan passes).
Add a third mode, Select, that lets a user pick an item once and pick its destination once. Two taps to move any item to any position, regardless of distance. Switch users get a dramatically better experience; everyone else gets a faster alternative for long jumps.
Approach
UI shell over the existing MenuCustomizationScreenModel.moveItem(from, to) primitive — no database, repository, or data-flow changes.
- New
ReorderMode.SELECT + third segmented-button entry in the existing ReorderModeToggle
- New
SelectReorderableList composable using the shared MenuItemRow:
- The left-slot button is "Move" when nothing is selected, "Cancel" on the selected row, and "Insert above" on every other row
- A pinned "Insert at end" row appears while a selection is active
- Visibility eye / delete buttons are hidden during placement so each row is a single-purpose tap target
- View-model adds
selectedItemId state + 4 helpers (selectForMove, insertSelectedBefore, insertSelectedAtEnd, cancelSelection); all delegate to the existing moveItem
- 6 new strings; no telemetry; no data-layer changes
Acceptance criteria
- Third Select mode appears in the reorder-mode toggle
- Picking an item highlights it, swaps row chrome to insertion targets, and shows an "Insert at end" row
- Choosing an insertion point moves the item via the existing
moveItem(from, to) and clears the selection
- Cancel button and mode-switch both clear the selection
- Drag and Arrows modes are unchanged; visibility toggle still works in all three modes
./gradlew compileDebugKotlin testDebugUnitTest passes
- Manual switch-scan smoke test: each row is a single scan stop with the Move/Cancel/Insert-above button as its primary action
Summary
The menu customization screen has two reorder modes today: Drag (drag-handle + reorderable lazy list) and Arrows (per-row up/down
IconButtons). Drag is unusable with a switch. Arrows works but moves one position per tap — moving an item from position 1 to position 12 takes 11 taps (and 11 switch-scan passes).Add a third mode, Select, that lets a user pick an item once and pick its destination once. Two taps to move any item to any position, regardless of distance. Switch users get a dramatically better experience; everyone else gets a faster alternative for long jumps.
Approach
UI shell over the existing
MenuCustomizationScreenModel.moveItem(from, to)primitive — no database, repository, or data-flow changes.ReorderMode.SELECT+ third segmented-button entry in the existingReorderModeToggleSelectReorderableListcomposable using the sharedMenuItemRow:selectedItemIdstate + 4 helpers (selectForMove,insertSelectedBefore,insertSelectedAtEnd,cancelSelection); all delegate to the existingmoveItemAcceptance criteria
moveItem(from, to)and clears the selection./gradlew compileDebugKotlin testDebugUnitTestpasses