Copy to… and Move to… chose a destination instead of making you go there
The selection bar's overflow offers both verbs. Confirming opens a folder picker - the volumes first, then folders one level at a time, with the trail above and Up beside it - and starts the copy or the move into the picked folder without leaving the one you are in. The files stay selected after a copy, so sending the same set to a second destination is two taps; a move clears them because the rows are gone. Underneath it is the paste path with an explicit target: planTransfer and transfer were always target-agnostic, so the new code is the picker and the rules around it. A conflict asks exactly what a paste asks and the prompt carries the picked folder. One thing needed care: the reload that follows every operation clears the selection, and it finishes after the operation returns because it is a coroutine of its own. The restore therefore happens at the end of that reload, through a field the transfer sets - otherwise the last writer wins and a copy silently loses the selection it promised to keep, which is exactly what the first version did until the test caught it. Seven view-model tests (copy, move, folders-only listing, the walk up and down, the conflict target, cancellation, the selection rule) and one Compose test for the overflow menu. CHANGELOG and ROADMAP record it, the roadmap naming what is deliberately not done: the copied-to-X message with a jump to the destination.
This commit is contained in:
+9
-3
@@ -1,8 +1,8 @@
|
||||
# Roadmap
|
||||
|
||||
File Manager is built against a fixed milestone plan (**M0–M15**). This file is the
|
||||
single source of truth for what is done and what remains. M16 is specified below but **not scheduled** —
|
||||
it is the first item of the post-1.0 queue that is a feature rather than a safeguard.
|
||||
single source of truth for what is done and what remains. **M16** (Copy to… / Move to…) has since been
|
||||
built and is specified below; the queue records what is left.
|
||||
|
||||
Legend: ✅ done · 🚧 in progress · ⏳ not started · 💡 candidate (proposed, not scheduled)
|
||||
|
||||
@@ -81,7 +81,13 @@ release should not go out without.
|
||||
still unmeasured, and jank on this screen needs a device that reports frame durations.
|
||||
3. **The scaling numbers** — `./tools/benchmark-fixture.sh --count 20000` and the existing benchmarks:
|
||||
answers whether a full SD card is a performance problem before a user with one finds out.
|
||||
4. **Copy to… / Move to… (M16)** — the comfort feature, specified below.
|
||||
4. **Copy to… / Move to… (M16)** — **done**: the selection bar's overflow opens a folder picker (volumes,
|
||||
then folders one level at a time, Up and the trail above them) and confirming copies or moves into the
|
||||
picked folder without leaving the current one. The selection survives a copy so a second destination is
|
||||
two taps; a move clears it. Conflicts ask the same question as a paste, naming the picked folder. Seven
|
||||
tests cover the verbs, the picker's walk, folders-only listing, the conflict target, cancellation, and
|
||||
the selection rule. **Not done**: the "copied to X — Show" message with a jump to the destination; the
|
||||
copy reports itself the way a paste does.
|
||||
5. **A CI run of the benchmarks on an emulator** — removes the phone from the loop and reports
|
||||
`frameDurationCpuMs`, which this device cannot.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user