Skip to content

TreeItemModel: Add TreeItem::getUrl/setUrl, TreeItemModel::kUrlRole and SidebarModel::UrlRole - #16835

Open
cr7pt0gr4ph7 wants to merge 1 commit into
mixxxdj:mainfrom
cr7pt0gr4ph7:rtm_treeitem_url
Open

TreeItemModel: Add TreeItem::getUrl/setUrl, TreeItemModel::kUrlRole and SidebarModel::UrlRole#16835
cr7pt0gr4ph7 wants to merge 1 commit into
mixxxdj:mainfrom
cr7pt0gr4ph7:rtm_treeitem_url

Conversation

@cr7pt0gr4ph7

@cr7pt0gr4ph7 cr7pt0gr4ph7 commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

The URLs associated with the tree items will be used during Drag & Drop operations to identify those tree items.

This is required for an upcoming PR for subcrates, but is also useful independently.

…nd SidebarModel::UrlRole

The URLs associated with the tree items are used during Drag & Drop
operations to identify those tree items.
@ronso0

ronso0 commented Aug 4, 2026

Copy link
Copy Markdown
Member

I think it would be good if you'd share some info about the subcrates concept, maybe in the Proposals repo https://github.com/mixxxdj/proposals/ ?

Thing is, even though features like "nested crates" and "playlist folders" have been requested frequently, corresponding PRs got little traction or were closed for other reasons IIRC, so in order to spend dev & review resources wisely it would be good to come up with a design first, discuss and tweak it, then implement it accordingly.
#10997
#13978
#14182
#14352

@cr7pt0gr4ph7

cr7pt0gr4ph7 commented Aug 5, 2026

Copy link
Copy Markdown
Contributor Author

I think it would be good if you'd share some info about the subcrates concept, maybe in the Proposals repo https://github.com/mixxxdj/proposals/ ?

Thing is, even though features like "nested crates" and "playlist folders" have been requested frequently, corresponding PRs got little traction or were closed for other reasons IIRC, so in order to spend dev & review resources wisely it would be good to come up with a design first, discuss and tweak it, then implement it accordingly. #10997 #13978 #14182 #14352

Good point. Not as justification, but as context (also for me, when I'll look at this in 2 more years...):

I've already been part of that discussion (together with you and @daschuer) over at:

Though that was 2 years ago. To summarize the results, as I understand them:

  • Yes, we want some form of hierarchical crate display. There's no real opposition to that.
  • The discussion slightly seems to favor "Nested Crates" over "Crates + Folders". Based on that feedback, I've updated my implementation.
  • There are some UX problems once the number of crates hits a certain threshold:
    • The crate tree in the sidebar becomes unwieldy (which "Nested Crates" would solve).
    • The "Crate"/"Move to Crate" context menu item for tracks becomes unwieldy & takes up a lot of screen space (which "Nested Crates" would not make worse that it is right now anyway, and is probably best solved in a separate PR/proposal).
    • A potential "Move to Parent Crate" context menu item for crates has the same problem, but could be solved using the same approach, once one has been found.
  • Every proposal so far got stuck in discussion limbo, as did every PR which got too large.
  • We need some form of Drag & Drop for sidebar items, no matter which way of implementing crate hierarchies is chosen.
  • There is some disagreement over whether the track list for a parent crate should also list the tracks from its subcrates, and what manipulating that track list should mean.

As a sidenote, I've already invested the development time two years ago, as it's a feature I desperately want & need, and am actively using myself. It is one of the reasons why I'm running my own custom build of Mixxx in production for a few years now.

@cr7pt0gr4ph7

Copy link
Copy Markdown
Contributor Author

My suggested approach:

  • I'll try to upstream my improvements & foundational work for Drag & Drop as well as improved auto-expand of sidebar items (which also has the advantage of replacing some handrolled code with the default "Qt-way" of doing D&D) that are not tied to any exact implementation or approach (like "Nested Crates" vs. "Crates + Folders").
  • I'll write a proposal over at https://github.com/mixxxdj/proposals/ that summarizes what I've written above, and we try to reach an agreement over a minimal first design.
  • After merging a basic but working implementation of crate hierarchies, we turn our attention to solving the UX problems associated with the context menu.
  • Similarly, we defer the choice of "Should parent crates show tracks from subcrates?" to a later point in time, and choose the simplest implementation first.

@ronso0

ronso0 commented Aug 5, 2026

Copy link
Copy Markdown
Member

Thanks for the explanation, looking forward to the Proposal!

but as context (also for me, when I'll look at this in 2 more years...):

Hahaa..
😄
😬
😶‍🌫️

@cr7pt0gr4ph7

cr7pt0gr4ph7 commented Aug 5, 2026

Copy link
Copy Markdown
Contributor Author

Thanks for the explanation, looking forward to the Proposal!

Proposal can be found at mixxxdj/proposals#21 :) Thank you for the feedback!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants