Add hotcue count library column#15462
Conversation
|
Thank you for this PR. I have not understand the use case for this new column. Can you add a brief description how do you use it as user in terms of information aiding your DJing or track perpetration. In which situations is it especially helpful? |
|
I am doing prep, going through many tracks and adding hotcues knowing which tracks have hotcues means I'm not double clicking a which bunch of tracks around where I thought I left things, and also I know where I've left gaps, plus what the prep state is for any subset/filter of the largest create, etc my preferred solution would be hotcue marks on the library waveforms. afaiu, this is trivial in comparison, and is convenient for my direct need, and it's something to help others in my situation vertical space as in the height of the right-click menu? maybe my UI font selections hide that. is it literally causing a problem, or just a long menu that's not too long yet? would the question be; how high is too high for a menu, what proportion of the screen? a menu with two columns would be a first thought, but would that be trivial? |
|
Oh I meant horizontal space. I don't like horizontal scrolling. Bust since you need it only during preparation this shall be no issue. I have no objections to the new column, but let's stress the use cases a bit more.
That would be a very nice addition. Also during DJing. How do you use hot cues? In my case only some tracks have hot cues. So finding non-prepared tracks by number of hot cues will not work for me. I can confirm the use case though. I look whether a track has a reasonable bpm/genre/year. This also does not work if I import pre-prepared tracks with a sloppy set of metadata. The same will happens to you if there are Serato cues set. We already have the BPM lock state as manual flag. But we cannot sort by it. I have been also to lazy to use it for all prepared tracks. I set it only for manual adjusted Tracks. Do you have an idea to improve that situation? We have a "new" filter in the analyzing view. That does also not work for this purpose. |
|
Hi, |
But we can filter: For me a track is 'prepared if it has a rating:
|
|
re: Hotcue on library overviews This may be implemented entirely different from the ground up in QML, but for legacy skins this kind of refactoring is insane. Previewing via the overview delegate is certainly feasible, like click and hold to play, drag to seeek. A 'played' overlay should also be rather possible by adopting some stuff from PreviewDelegate. |
|
CI is complaining about code style.
Thank you for the reminder. Just tested a bit. This feature has the the issue that the library column is not immediately updated when adding/removing hot-cues. Sorting is also not yet working. If we decide to use the info as tooltip, the library column can be reused. I do not expect any regressions because of this additional column. So it is kind of OK for me. What do others think? The underlying use case, might be covered better by an "is new" or "todo" column. This can be at the basic mode just a manual flag, default checked. We may consider to add hints like "missig year" or ... maybe a set of custom rules to check track propertied for completeness. |
|
alternatively: instead of adding a new hotcue column, would a new filter suffice too? I feel like this should be a fairly simple query with a |
|
I also prefer the filter. |
9173a8c to
d13ad33
Compare
I think this is the same situation as described in #14503 / #14689: how to filter "new" tracks?
I think the definition of "new" varies. It may mean "new to Mixxx" or "new to user" (not rated, not sorted into crate, ..). |
|
yeah I think there's several optional and overlapping reasons for calling a track "done" hotcue number is one, but what the count is does not necessarily relate to whether that track counts as done in terms of hotcue quality, and then there are other elements to consider that might be done or not I agree that the further option of a todo/done column would be cool for those who would use it but I don't think it's the same personally I give good+done tracks a green label |
|
having the track not be moved until the user resorts vs. the track jumping out of view and not be followed was frustrating/jarring, and I think any view-change mechanism is a spot deeper, so I parked it as it is |
35c7353 to
53af1b8
Compare
That certainly works, but I see you loose the colorimg feature for other sorting/group properties. Is that one of the reason for this PR? This means a dedicated done flag will help to bring the original coloring feature back for you as well. But the hot-cue column would do it automatically in your case? Conclusion: the hot cue tooltip will not help for this. If we treat the number of hot cues as the first property for this, your work could be the foundation. |
|
no, I don't use hotcue count as a sign that the track is "done" |
I think menus are already split into columns if they don't fit the screen. See crates or playlist submenu when you lots of them. |
53af1b8 to
bea6be8
Compare
apparently, and a bigger screen (mine is 15") and/or eagle eyes.
Jup. |
adds a new 'Hotcues' column to the library table that displays the number of hotcues per track and updates in real-time. database schema: added hotcue_count integer column to library table, automatically maintained via triggers on cue table operations display and sorting: shows hotcue count as right-aligned integer, empty cell when count is 0, fully sortable live updates: basetrackcache returns count from in-memory track object, basesqltablemodel updates cached row data on hotcue changes, tracks stay in place when sorted, database synchronously updated via track::cuesUpdated signal cleanup: removed unused cuedao qobject inheritance and signals fix track reference leak in cuesUpdated lambda use sender() instead of capturing pTrack pointer to avoid keeping track alive after it should be released from cache. fixes test failures in synctrackmetadatatest where use_count was 2 instead of 1
0ba1e24 to
5c5d8f9
Compare
|
Perhaps we could render the hotcues in the waveform overview column? Aligned with the tooltip you are working on @ronso0, this should provide all the information needed? |
I'm sure we can, but with the current design it's not trivial to port all the mark handling /painting from WOverview (setup colors from skin, connect change signals) to waveformOverviewRenderer / OverviewDelegate. |
|
This PR is marked as stale because it has been open 90 days with no activity. |

Implements #15461
Adds a new "Hotcues" column to the library that displays the number of hotcues set on each track.
Implementation
Database schema (v39→v40):
Column infrastructure:
Display formatting:
Automatic maintenance:
WHERE type=1 AND hotcue >= 0Behavior
Files modified
res/schema.xml- schema migrationsrc/database/mixxxdb.cpp- bump required schema versionsrc/library/dao/trackschema.h- column constantsrc/library/columncache.{h,cpp}- column enum and propertiessrc/library/dao/cuedao.{h,cpp}- auto-update logicsrc/library/basetracktablemodel.cpp- display formattingsrc/library/mixxxlibraryfeature.cpp- BaseTrackCache integration