From 0510c0e6cda927a8873cbda3921332d0e0472ca2 Mon Sep 17 00:00:00 2001 From: Ahmed Salah <140831492+NeuroXS@users.noreply.github.com> Date: Fri, 12 Sep 2025 22:02:01 +0300 Subject: [PATCH 1/2] Add track count to Tracks item in sidebar --- src/library/librarytablemodel.cpp | 5 +++++ src/library/librarytablemodel.h | 5 +++++ src/library/mixxxlibraryfeature.cpp | 24 ++++++++++++++++++++++-- src/library/mixxxlibraryfeature.h | 5 +++++ 4 files changed, 37 insertions(+), 2 deletions(-) diff --git a/src/library/librarytablemodel.cpp b/src/library/librarytablemodel.cpp index 4ed18d3c2dc8..3c3bf4b2dc5d 100644 --- a/src/library/librarytablemodel.cpp +++ b/src/library/librarytablemodel.cpp @@ -101,3 +101,8 @@ TrackModel::Capabilities LibraryTableModel::getCapabilities() const { Capability::Properties | Capability::Sorting; } + +void LibraryTableModel::select() { + BaseSqlTableModel::select(); + emit updateTrackCount(); +} diff --git a/src/library/librarytablemodel.h b/src/library/librarytablemodel.h index b5a6c359cbad..299e4f42de06 100644 --- a/src/library/librarytablemodel.h +++ b/src/library/librarytablemodel.h @@ -16,4 +16,9 @@ class LibraryTableModel : public BaseSqlTableModel { // number of successful additions. int addTracks(const QModelIndex& index, const QList& locations) final; TrackModel::Capabilities getCapabilities() const final; + + void select() override; + + signals: + void updateTrackCount(); }; diff --git a/src/library/mixxxlibraryfeature.cpp b/src/library/mixxxlibraryfeature.cpp index 519f80f86790..05e8a8d52abc 100644 --- a/src/library/mixxxlibraryfeature.cpp +++ b/src/library/mixxxlibraryfeature.cpp @@ -32,7 +32,9 @@ MixxxLibraryFeature::MixxxLibraryFeature(Library* pLibrary, m_pLibraryTableModel(nullptr), m_pSidebarModel(make_parented(this)), m_pMissingView(nullptr), - m_pHiddenView(nullptr) { + m_pHiddenView(nullptr), + m_pTracksTreeItem(nullptr), + m_trackCount{0} { QString idColumn = LIBRARYTABLE_ID; QStringList columns = { LIBRARYTABLE_ID, @@ -114,7 +116,13 @@ MixxxLibraryFeature::MixxxLibraryFeature(Library* pLibrary, pLibrary->trackCollectionManager(), "mixxx.db.model.library"); + connect(m_pLibraryTableModel, + &LibraryTableModel::updateTrackCount, + this, + &MixxxLibraryFeature::slotUpdateTrackCount); + std::unique_ptr pRootItem = TreeItem::newRoot(this); + m_pTracksTreeItem = pRootItem.get(); pRootItem->appendChild(kMissingTitle); pRootItem->appendChild(kHiddenTitle); @@ -149,7 +157,8 @@ void MixxxLibraryFeature::bindLibraryWidget(WLibrary* pLibraryWidget, } QVariant MixxxLibraryFeature::title() { - return tr("Tracks"); + const QString title = tr("Tracks") + QStringLiteral(" (%1)").arg(m_trackCount); + return title; } TreeItemModel* MixxxLibraryFeature::sidebarModel() const { @@ -183,6 +192,17 @@ void MixxxLibraryFeature::bindSidebarWidget(WLibrarySidebar* pSidebarWidget) { } #endif +void MixxxLibraryFeature::slotUpdateTrackCount() { + m_trackCount = m_pLibraryTableModel->rowCount(); + + if (m_pTracksTreeItem && m_pSidebarModel) { + QModelIndex rootIndex = m_pSidebarModel->getRootIndex(); + QModelIndex tracksIndex = m_pSidebarModel->index( + m_pTracksTreeItem->parentRow(), 0, rootIndex); + m_pSidebarModel->triggerRepaint(tracksIndex); + } +} + void MixxxLibraryFeature::activate() { //qDebug() << "MixxxLibraryFeature::activate()"; emit saveModelState(); diff --git a/src/library/mixxxlibraryfeature.h b/src/library/mixxxlibraryfeature.h index 50eb06258a7c..ffaee3be7dcd 100644 --- a/src/library/mixxxlibraryfeature.h +++ b/src/library/mixxxlibraryfeature.h @@ -50,6 +50,7 @@ class MixxxLibraryFeature final : public LibraryFeature { public slots: void activate() override; void activateChild(const QModelIndex& index) override; + void slotUpdateTrackCount(); #ifdef __ENGINEPRIME__ void onRightClick(const QPoint& globalPos) override; #endif @@ -74,6 +75,10 @@ class MixxxLibraryFeature final : public LibraryFeature { DlgMissing* m_pMissingView; DlgHidden* m_pHiddenView; + TreeItem* m_pTracksTreeItem; + + int m_trackCount; + #ifdef __ENGINEPRIME__ parented_ptr m_pExportLibraryAction; From 524eba90cd8a6cbf0e79c5d7691eed6b21405d5b Mon Sep 17 00:00:00 2001 From: ronso0 Date: Sun, 14 Sep 2025 00:55:08 +0200 Subject: [PATCH 2/2] fixup -- just squash --- src/library/mixxxlibraryfeature.cpp | 11 +++-------- src/library/mixxxlibraryfeature.h | 2 -- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/src/library/mixxxlibraryfeature.cpp b/src/library/mixxxlibraryfeature.cpp index 05e8a8d52abc..e449c5304c34 100644 --- a/src/library/mixxxlibraryfeature.cpp +++ b/src/library/mixxxlibraryfeature.cpp @@ -33,7 +33,6 @@ MixxxLibraryFeature::MixxxLibraryFeature(Library* pLibrary, m_pSidebarModel(make_parented(this)), m_pMissingView(nullptr), m_pHiddenView(nullptr), - m_pTracksTreeItem(nullptr), m_trackCount{0} { QString idColumn = LIBRARYTABLE_ID; QStringList columns = { @@ -122,7 +121,6 @@ MixxxLibraryFeature::MixxxLibraryFeature(Library* pLibrary, &MixxxLibraryFeature::slotUpdateTrackCount); std::unique_ptr pRootItem = TreeItem::newRoot(this); - m_pTracksTreeItem = pRootItem.get(); pRootItem->appendChild(kMissingTitle); pRootItem->appendChild(kHiddenTitle); @@ -195,12 +193,9 @@ void MixxxLibraryFeature::bindSidebarWidget(WLibrarySidebar* pSidebarWidget) { void MixxxLibraryFeature::slotUpdateTrackCount() { m_trackCount = m_pLibraryTableModel->rowCount(); - if (m_pTracksTreeItem && m_pSidebarModel) { - QModelIndex rootIndex = m_pSidebarModel->getRootIndex(); - QModelIndex tracksIndex = m_pSidebarModel->index( - m_pTracksTreeItem->parentRow(), 0, rootIndex); - m_pSidebarModel->triggerRepaint(tracksIndex); - } + // Force updating the Tracks sidebar item. + // `select` must be false as we don't want to select again + emit featureIsLoading(this, false); } void MixxxLibraryFeature::activate() { diff --git a/src/library/mixxxlibraryfeature.h b/src/library/mixxxlibraryfeature.h index ffaee3be7dcd..69f4da83fefe 100644 --- a/src/library/mixxxlibraryfeature.h +++ b/src/library/mixxxlibraryfeature.h @@ -75,8 +75,6 @@ class MixxxLibraryFeature final : public LibraryFeature { DlgMissing* m_pMissingView; DlgHidden* m_pHiddenView; - TreeItem* m_pTracksTreeItem; - int m_trackCount; #ifdef __ENGINEPRIME__