Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Separation of Discs with Disc Subtitle Separator #217

Open
danni-storm opened this issue Oct 16, 2024 · 3 comments
Open

Separation of Discs with Disc Subtitle Separator #217

danni-storm opened this issue Oct 16, 2024 · 3 comments
Labels
enhancement New feature or request

Comments

@danni-storm
Copy link

Is your feature request related to a problem? Please describe.

Currently the tracks for albums with multiple discs are ordered by disc and then track number. However is no heading or separator for the discs which makes it hard for me to read the track list when multiple discs are present (that could just be me?).

Describe the solution you'd like

It would be nice if there was an inclusion of something like Navidrome's interface where the various discs could be seperated by subheadings. These subheads could draw from the corresponding tag, this thread from beets covers how they do their tagging and I know Navidrome uses TPOS for disc number and TSST for disc title/subtitle.

Example Screenshots from Navidrome web UI. image image

Describe alternatives you've considered

The only other alternative I have considered would be the existing setup with simple ordering. However, at least for me, this is not ideal as it makes it hard for my brain to parse the wall of tracks with repeating track numbers. 😅

Additional context

This issue is similar to - but unique from - #153, #188, #27, and #106. Since Submariner reads TPOS to sort the tracks, I hoped the addition of this would be straightforward. However, since I am unfortunately unfamiliar with both C and Swift, my ability to help or judge difficulty is limited.

@danni-storm danni-storm added the enhancement New feature or request label Oct 16, 2024
@NattyNarwhal
Copy link
Member

NattyNarwhal commented Oct 16, 2024

I think this will involve adding some group rows in the NSTableView if we have >1 discs for the tracks. Might be tricky since we're currently binding directly against an array controller that holds the actual track objects. That might involve changing to i.e. a delegate based approach.

@danni-storm
Copy link
Author

Hmm that does seem more complicated than I was hoping for and probably a bit over my head1 but I can take a stab at looking things over in a week or two when things calm down a bit more on my end.

Footnotes

  1. My experience is primarily data science (ie Python/R, some SQL, a smidge of Rust, and a bit of rudimentary C/Java) so I am not sure how much help I will actually be able to contribute to but I definitely am open to taking a look and trying my hand at it.

@NattyNarwhal
Copy link
Member

You'd be surprised how much motivation makes it easier to learn. IME, the harder part when learning isn't languages (the mainstream ones are pretty similar), but the APIs around them. Adding stuff to an existing codebase can also be easier for learning too.

Since this is fresh in my mind, the track table view in lists is usually bound (using Cocoa Bindings) directly to an array controller that sources tracks from the selected album's tracks. The annoying thing with group rows is it looks like we might have to have to rethink how we source data into that table view, because it assumes one row is a track, and a group row is a row. I get the impression group rows were mainly for sidebars (i.e. NSOutlineView as a sidebar). There's also the fact that we're using cells instead of views (old and busted), which might complicate display of the group row. (Long term I plan to rewrite these screens in SwiftUI, so all of this might become unnecessary in the future. But that's a ways away.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants