PR5/PR7: When to introduce QSortFilterProxyModel for grid + filmstrip sync #15

Closed
opened 2026-06-04 16:54:15 +00:00 by Grok · 2 comments
Member

Context

DESIGN.md places QSortFilterProxyModel filter logic in PR8, but PR7 requires a bottom filmstrip sharing the same model/proxy and synced selection with the main grid.

Ambiguity

  • Should PR5 install a pass-through proxy (no filtering yet) so PR7 can attach filmstrip without rewiring MainWindow?
  • Or should PR7 introduce the proxy when filmstrip lands, accepting a one-time view/model rewire?
  • How does sorting (filename, date, tag priority) interact with live scan upserts mid-sort?

Options

  1. PR5 scaffold: ImageSortFilterProxyModel subclass with default accept-all; grid + future filmstrip both use proxy.
  2. PR7 introduce: Keep direct model until viewer PR; refactor when filmstrip added.
  3. PR8 only: Filmstrip uses raw model until filters exist (may complicate PR7 sync).

Requested decision

Pick option + note whether scan-time incremental inserts require invalidateFilter/sort policies.

Blocks

Non-blocking for PR5; should be decided before PR7 filmstrip wiring.

## Context DESIGN.md places `QSortFilterProxyModel` filter logic in PR8, but PR7 requires a bottom filmstrip sharing the same model/proxy and synced selection with the main grid. ## Ambiguity - Should PR5 install a pass-through proxy (no filtering yet) so PR7 can attach filmstrip without rewiring `MainWindow`? - Or should PR7 introduce the proxy when filmstrip lands, accepting a one-time view/model rewire? - How does sorting (filename, date, tag priority) interact with live scan upserts mid-sort? ## Options 1. **PR5 scaffold**: `ImageSortFilterProxyModel` subclass with default accept-all; grid + future filmstrip both use proxy. 2. **PR7 introduce**: Keep direct model until viewer PR; refactor when filmstrip added. 3. **PR8 only**: Filmstrip uses raw model until filters exist (may complicate PR7 sync). ## Requested decision Pick option + note whether scan-time incremental inserts require `invalidateFilter`/`sort` policies. ## Blocks Non-blocking for PR5; should be decided before PR7 filmstrip wiring.
Owner
  • Option 2 PR7 introduce: Keep direct model until viewer PR; refactor when filmstrip added
  • Always run the first scan through the files alphabetically (or in the most efficient order the system call presents them to the application) to populate the names, placeholders, and counts as fast as able with no regard to ordering. Sort the second scan based on the UIs current sort priority, resorting the remaining items if the UI's sort order is changed.
- Option 2 PR7 introduce: Keep direct model until viewer PR; refactor when filmstrip added - Always run the first scan through the files alphabetically (or in the most efficient order the system call presents them to the application) to populate the names, placeholders, and counts as fast as able with no regard to ordering. Sort the second scan based on the UIs current sort priority, resorting the remaining items if the UI's sort order is changed.
Author
Member

Resolved per ValleyGeek comment — recorded as DR-014 in docs/DECISIONS.md and DESIGN.md PR7/PR4.

Decision summary:

  • Option 2 (chosen): direct ImageListModel through PR5–6; introduce QSortFilterProxyModel in PR7 with filmstrip
  • Discovery scan: filesystem/alphabetical order as presented — fast placeholders, no UI sort
  • Metadata scan: follow current UI sort order; re-queue remaining items if sort changes mid-scan

PR5: complete with direct model (no proxy).

Follow-up: new issue #17 tracks metadata-scan sort implementation (not PR5 scope).

Closing as resolved.

**Resolved** per ValleyGeek comment — recorded as **DR-014** in `docs/DECISIONS.md` and DESIGN.md PR7/PR4. **Decision summary:** - **Option 2 (chosen):** direct `ImageListModel` through PR5–6; introduce `QSortFilterProxyModel` in **PR7** with filmstrip - **Discovery scan:** filesystem/alphabetical order as presented — fast placeholders, no UI sort - **Metadata scan:** follow current UI sort order; re-queue remaining items if sort changes mid-scan **PR5:** complete with direct model (no proxy). **Follow-up:** new issue #17 tracks metadata-scan sort implementation (not PR5 scope). Closing as resolved.
Grok closed this issue 2026-06-04 18:08:15 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ai-collab/bulk-image-organizer#15
No description provided.