cosmic-files/src
leyoda 1cf17dcde8 yoda: phase 3 — drag-drop toolbar editor in Settings
Migrates the config model from the phase-2 bag-of-bools (ToolbarItems)
to an ordered Vec<ToolbarAction> so the user can pick BOTH the set of
buttons AND their order in the toolbar.

Config (config.rs):
- new ToolbarAction enum with 11 variants (LocationUp, Reload,
  NewFolder, NewFile, Rename, Delete, Cut, Copy, Paste,
  ToggleShowHidden, OpenTerminal) + to_u8/from_u8 for DnD payload
- Config.toolbar: Vec<ToolbarAction>, default = default_toolbar()
  (NewFolder, Rename, Delete, Cut, Copy, Paste — same 6 as phase 2)

Rendering (view()):
- iterate self.config.toolbar in order and emit a tooltip'd icon button
  per entry via the new toolbar_action_ui(action) helper shared with
  the Settings page. Paste stays disabled when clipboard empty.
- No hardcoded groups or auto-dividers anymore — order is 100% user.

Settings page (toolbar_settings_section):
- two stacked lists:
  * 'Toolbar': currently-enabled actions in their Vec order. Each row
    is wrapped in dnd_source (drags a ToolbarActionPayload carrying
    the enum discriminant) + dnd_destination (accepts drops from other
    rows, fires Message::ToolbarReorder { src, target } to move src
    before target in the Vec). A list-drag-handle icon + a minus button
    (ToolbarRemove) per row.
  * 'Available': actions not yet enabled, each with a plus button
    (ToolbarAdd) that pushes to the end of the Vec.
- 'Reset to defaults' button at the bottom (ToolbarReset).

DnD infra (app.rs top):
- TOOLBAR_MIME constant: 'application/x-cosmic-files-toolbar-action'
- ToolbarActionPayload(u8) with AsMimeTypes + AllowedMimeTypes +
  TryFrom<(Vec<u8>, String)> impls — single-byte wire format matching
  the enum discriminant.

Messages:
- ToolbarAdd(ToolbarAction) — append to toolbar vec if absent
- ToolbarRemove(ToolbarAction)
- ToolbarReorder { src, target } — remove src, reinsert before target
- ToolbarReset — restore default_toolbar()

i18n (en + fr):
- new keys: toolbar-available, toolbar-empty-hint, toolbar-reset

Migration: existing installs with a phase-2 ToolbarItems struct in
their config will error at load time (different shape); cosmic_config
falls back to Self::default() which gives the phase-2 minimal-6 set —
a safe reset rather than a broken partial read.
2026-04-24 08:13:30 +02:00
..
mounter perf: avoid holding async mutex guards across await points 2026-04-14 17:04:48 +02:00
operation Refactor trash handling to improve portability 2026-04-17 12:54:33 -06:00
app.rs yoda: phase 3 — drag-drop toolbar editor in Settings 2026-04-24 08:13:30 +02:00
archive.rs Fix windows compilation issues 2026-04-17 13:31:55 -06:00
channel.rs perf: avoid holding async mutex guards across await points 2026-04-14 17:04:48 +02:00
clipboard.rs fix: handle slight delay in availability of clipboard data 2026-04-13 11:53:25 -06:00
config.rs yoda: phase 3 — drag-drop toolbar editor in Settings 2026-04-24 08:13:30 +02:00
context_action.rs Fix: remove context actions from open/save dialog 2026-04-10 02:58:20 +03:00
dialog.rs Refactor trash handling to improve portability 2026-04-17 12:54:33 -06:00
key_bind.rs chore: update to the latest libcosmic 2026-04-08 15:15:48 -06:00
large_image.rs chore: clippy 2026-01-30 21:05:46 +01:00
lib.rs Only use uzers on unix, do not fork on mac 2026-04-17 12:54:33 -06:00
load_image.rs chore: update to the latest libcosmic 2026-04-08 15:15:48 -06:00
localize.rs chore: clippy 2026-01-30 21:05:46 +01:00
main.rs chore: update dependencies 2026-03-24 11:25:59 -06:00
menu.rs Refactor trash handling to improve portability 2026-04-17 12:54:33 -06:00
mime_app.rs yoda: prefer cosmic-yoterm over upstream cosmic-term in terminal fallback 2026-04-23 19:17:26 +02:00
mime_icon.rs Fix windows compilation issues 2026-04-17 13:31:55 -06:00
mouse_area.rs chore: update to the latest libcosmic 2026-04-08 15:15:48 -06:00
spawn_detached.rs fix: avoid leaving zombie processes on unix 2025-10-12 17:04:54 +10:00
tab.rs Fix windows compilation issues 2026-04-17 13:31:55 -06:00
thumbnail_cacher.rs Fix windows compilation issues 2026-04-17 13:31:55 -06:00
thumbnailer.rs Put libcosmic/desktop behind desktop feature 2026-04-17 12:54:33 -06:00
trash.rs Fix windows compilation issues 2026-04-17 13:31:55 -06:00
zoom.rs perf: general minor performance optimisations 2025-10-29 08:16:50 +10:00