From 05fb2f191c646eb25b89637070c462c95f1e589f Mon Sep 17 00:00:00 2001 From: jmigual Date: Tue, 24 Jan 2017 19:52:40 +0100 Subject: [PATCH 01/13] Post VS2015 change adding initializer lists. --- .../mixxxlibrary/mixxxlibraryfeature.cpp | 33 +++++++++---------- 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/src/library/features/mixxxlibrary/mixxxlibraryfeature.cpp b/src/library/features/mixxxlibrary/mixxxlibraryfeature.cpp index 182a0ab51588..6ff03f6c2210 100644 --- a/src/library/features/mixxxlibrary/mixxxlibraryfeature.cpp +++ b/src/library/features/mixxxlibrary/mixxxlibraryfeature.cpp @@ -22,24 +22,21 @@ const QString MixxxLibraryFeature::kLibraryTitle = tr("Tracks"); -const QStringList MixxxLibraryFeature::kGroupingText = - QStringList::fromStdList({ - tr("Artist > Album"), - tr("Album"), - tr("Genre > Artist > Album"), - tr("Genre > Album"), - tr("Folder") -}); - -const QList MixxxLibraryFeature::kGroupingOptions = - QList::fromStdList({ - QStringList::fromStdList({ LIBRARYTABLE_ARTIST, LIBRARYTABLE_ALBUM }), - QStringList::fromStdList({ LIBRARYTABLE_ALBUM }), - QStringList::fromStdList({ LIBRARYTABLE_GENRE, LIBRARYTABLE_ARTIST, - LIBRARYTABLE_ALBUM }), - QStringList::fromStdList({ LIBRARYTABLE_GENRE, LIBRARYTABLE_ALBUM }), - QStringList::fromStdList({ LIBRARYFOLDERMODEL_FOLDER }) -}); +const QStringList MixxxLibraryFeature::kGroupingText { + tr("Artist > Album"), + tr("Album"), + tr("Genre > Artist > Album"), + tr("Genre > Album"), + tr("Folder") +}; + +const QList MixxxLibraryFeature::kGroupingOptions { + { LIBRARYTABLE_ARTIST, LIBRARYTABLE_ALBUM }, + { LIBRARYTABLE_ALBUM }, + { LIBRARYTABLE_GENRE, LIBRARYTABLE_ARTIST, LIBRARYTABLE_ALBUM }, + { LIBRARYTABLE_GENRE, LIBRARYTABLE_ALBUM }, + { LIBRARYFOLDERMODEL_FOLDER } +}; MixxxLibraryFeature::MixxxLibraryFeature(UserSettingsPointer pConfig, Library* pLibrary, From 2e510d018b16b98a76a3e886d202fb3e7abe9553 Mon Sep 17 00:00:00 2001 From: jmigual Date: Tue, 24 Jan 2017 21:09:01 +0100 Subject: [PATCH 02/13] Remove naked new pointer --- src/library/features/baseplaylist/baseplaylistfeature.cpp | 3 +-- src/library/features/baseplaylist/baseplaylistfeature.h | 4 +++- src/library/features/history/historyfeature.cpp | 4 ++-- src/library/features/history/historyfeature.h | 2 +- src/library/features/playlist/playlistfeature.cpp | 1 + 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/library/features/baseplaylist/baseplaylistfeature.cpp b/src/library/features/baseplaylist/baseplaylistfeature.cpp index ec92e3c5d721..207179c096b9 100644 --- a/src/library/features/baseplaylist/baseplaylistfeature.cpp +++ b/src/library/features/baseplaylist/baseplaylistfeature.cpp @@ -27,7 +27,6 @@ BasePlaylistFeature::BasePlaylistFeature(UserSettingsPointer pConfig, m_playlistDao(pTrackCollection->getPlaylistDAO()), m_trackDao(pTrackCollection->getTrackDAO()), m_pPlaylistTableModel(nullptr) { - m_childModel = new TreeItemModel; m_pCreatePlaylistAction = new QAction(tr("Create New Playlist"),this); connect(m_pCreatePlaylistAction, SIGNAL(triggered()), @@ -680,7 +679,7 @@ void BasePlaylistFeature::slotAnalyzePlaylist() { } TreeItemModel* BasePlaylistFeature::getChildModel() { - return m_childModel; + return m_childModel.data(); } QWidget* BasePlaylistFeature::createPaneWidget(KeyboardEventFilter* pKeyboard, diff --git a/src/library/features/baseplaylist/baseplaylistfeature.h b/src/library/features/baseplaylist/baseplaylistfeature.h index 544de2d415bd..e1b86de7dbf0 100644 --- a/src/library/features/baseplaylist/baseplaylistfeature.h +++ b/src/library/features/baseplaylist/baseplaylistfeature.h @@ -9,6 +9,7 @@ #include #include #include +#include #include #include "library/dao/playlistdao.h" @@ -121,9 +122,10 @@ class BasePlaylistFeature : public LibraryFeature { QAction *m_pAnalyzePlaylistAction; QList m_playlistList; QPersistentModelIndex m_lastRightClickedIndex; - TreeItemModel* m_childModel; TrackPointer m_pSelectedTrack; + QSharedPointer m_childModel; + QHash m_lastChildClicked; protected slots: diff --git a/src/library/features/history/historyfeature.cpp b/src/library/features/history/historyfeature.cpp index 2e3bb9176f70..08d16cbeb3ab 100644 --- a/src/library/features/history/historyfeature.cpp +++ b/src/library/features/history/historyfeature.cpp @@ -30,8 +30,8 @@ HistoryFeature::HistoryFeature(UserSettingsPointer pConfig, emit(slotGetNewPlaylist()); //construct child model - delete m_childModel; - m_childModel = m_pHistoryTreeModel = new HistoryTreeModel(this, m_pTrackCollection); + m_childModel = m_pHistoryTreeModel = QSharedPointer( + new HistoryTreeModel(this, m_pTrackCollection)); constructChildModel(-1); connect(&PlayerInfo::instance(), SIGNAL(currentPlayingTrackChanged(TrackPointer)), diff --git a/src/library/features/history/historyfeature.h b/src/library/features/history/historyfeature.h index cc2825901ef4..fe66062dc681 100644 --- a/src/library/features/history/historyfeature.h +++ b/src/library/features/history/historyfeature.h @@ -56,7 +56,7 @@ class HistoryFeature : public BasePlaylistFeature { QLinkedList m_recentTracks; QAction* m_pJoinWithNextAction; QAction* m_pGetNewPlaylist; - HistoryTreeModel* m_pHistoryTreeModel; + QSharedPointer m_pHistoryTreeModel; int m_playlistId; }; diff --git a/src/library/features/playlist/playlistfeature.cpp b/src/library/features/playlist/playlistfeature.cpp index f86aa4b7e24d..3fbfe734be29 100644 --- a/src/library/features/playlist/playlistfeature.cpp +++ b/src/library/features/playlist/playlistfeature.cpp @@ -22,6 +22,7 @@ PlaylistFeature::PlaylistFeature(UserSettingsPointer pConfig, TrackCollection* pTrackCollection) : BasePlaylistFeature(pConfig, pLibrary, parent, pTrackCollection) { //construct child model + m_childModel = QSharedPointer(new TreeItemModel(this)); auto pRootItem = std::make_unique(this); m_childModel->setRootItem(std::move(pRootItem)); constructChildModel(-1); From b724ec7f4c7314145d6abdffb5cf5e909ec5bf58 Mon Sep 17 00:00:00 2001 From: jmigual Date: Tue, 24 Jan 2017 23:44:05 +0100 Subject: [PATCH 03/13] Use make_parented for createPaneWidget function --- .../features/analysis/analysisfeature.cpp | 5 +-- .../features/analysis/analysisfeature.h | 3 +- src/library/features/autodj/autodjfeature.cpp | 6 ++-- src/library/features/autodj/autodjfeature.h | 3 +- .../baseplaylist/baseplaylistfeature.cpp | 20 ++++++------ .../baseplaylist/baseplaylistfeature.h | 3 +- src/library/features/browse/browsefeature.cpp | 18 +++++------ src/library/features/browse/browsefeature.h | 3 +- src/library/features/crates/cratefeature.cpp | 19 +++++------ src/library/features/crates/cratefeature.h | 3 +- .../maintenance/maintenancefeature.cpp | 8 ----- .../features/maintenance/maintenancefeature.h | 1 - .../features/recording/recordingfeature.cpp | 9 +++--- .../features/recording/recordingfeature.h | 3 +- src/library/libraryfeature.cpp | 32 ++++++++++--------- src/library/libraryfeature.h | 8 +++-- src/library/librarypanemanager.cpp | 15 +++------ src/library/librarypanemanager.h | 2 +- src/library/librarysidebarexpandedmanager.cpp | 2 +- src/library/librarysidebarexpandedmanager.h | 2 +- 20 files changed, 82 insertions(+), 83 deletions(-) diff --git a/src/library/features/analysis/analysisfeature.cpp b/src/library/features/analysis/analysisfeature.cpp index ec1c76133904..ff4833126dfb 100644 --- a/src/library/features/analysis/analysisfeature.cpp +++ b/src/library/features/analysis/analysisfeature.cpp @@ -61,8 +61,9 @@ QString AnalysisFeature::getSettingsName() const { return "AnalysisFeature"; } -QWidget* AnalysisFeature::createPaneWidget(KeyboardEventFilter*, int paneId) { - WTrackTableView* pTable = createTableWidget(paneId); +parented_ptr AnalysisFeature::createPaneWidget(KeyboardEventFilter*, + int paneId, const parented_ptr& parent) { + parented_ptr pTable = createTableWidget(paneId, parent); pTable->loadTrackModel(&m_analysisLibraryTableModel); connect(pTable->selectionModel(), SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)), diff --git a/src/library/features/analysis/analysisfeature.h b/src/library/features/analysis/analysisfeature.h index 5fd5af18141e..c3817a100ffe 100644 --- a/src/library/features/analysis/analysisfeature.h +++ b/src/library/features/analysis/analysisfeature.h @@ -36,7 +36,8 @@ class AnalysisFeature : public LibraryFeature { bool dropAccept(QList urls, QObject* pSource); bool dragMoveAccept(QUrl url); - QWidget* createPaneWidget(KeyboardEventFilter*, int paneId) override; + parented_ptr createPaneWidget(KeyboardEventFilter*, + int paneId, const parented_ptr& parent) override; QWidget* createInnerSidebarWidget(KeyboardEventFilter* pKeyboard) override; TreeItemModel* getChildModel(); diff --git a/src/library/features/autodj/autodjfeature.cpp b/src/library/features/autodj/autodjfeature.cpp index 7d3a4578a7a9..d563b69683b5 100644 --- a/src/library/features/autodj/autodjfeature.cpp +++ b/src/library/features/autodj/autodjfeature.cpp @@ -101,8 +101,10 @@ QString AutoDJFeature::getSettingsName() const { return "AutoDJFeature"; } -QWidget* AutoDJFeature::createPaneWidget(KeyboardEventFilter*, int paneId) { - WTrackTableView* pTrackTableView = createTableWidget(paneId); +parented_ptr AutoDJFeature::createPaneWidget(KeyboardEventFilter*, + int paneId, const parented_ptr& parent) { + parented_ptr pTrackTableView = + createTableWidget(paneId, parent); pTrackTableView->loadTrackModel(m_pAutoDJProcessor->getTableModel()); connect(pTrackTableView->selectionModel(), diff --git a/src/library/features/autodj/autodjfeature.h b/src/library/features/autodj/autodjfeature.h index fc155de636b2..8eb1c6749e5e 100644 --- a/src/library/features/autodj/autodjfeature.h +++ b/src/library/features/autodj/autodjfeature.h @@ -45,7 +45,8 @@ class AutoDJFeature : public LibraryFeature { bool dropAccept(QList urls, QObject* pSource); bool dragMoveAccept(QUrl url); - QWidget* createPaneWidget(KeyboardEventFilter*, int paneId) override; + parented_ptr createPaneWidget(KeyboardEventFilter*, + int paneId, const parented_ptr& parent) override; QWidget* createInnerSidebarWidget(KeyboardEventFilter* pKeyboard) override; TreeItemModel* getChildModel(); diff --git a/src/library/features/baseplaylist/baseplaylistfeature.cpp b/src/library/features/baseplaylist/baseplaylistfeature.cpp index ec92e3c5d721..da0f9b7c8c2e 100644 --- a/src/library/features/baseplaylist/baseplaylistfeature.cpp +++ b/src/library/features/baseplaylist/baseplaylistfeature.cpp @@ -683,22 +683,22 @@ TreeItemModel* BasePlaylistFeature::getChildModel() { return m_childModel; } -QWidget* BasePlaylistFeature::createPaneWidget(KeyboardEventFilter* pKeyboard, - int paneId) { - WLibraryStack* pStack = new WLibraryStack(nullptr); - m_panes[paneId] = pStack; +parented_ptr BasePlaylistFeature::createPaneWidget( + KeyboardEventFilter* pKeyboard, int paneId, + const parented_ptr& parent) { + auto pStack = make_parented(parent.get()); + m_panes[paneId] = pStack.get(); - WLibraryTextBrowser* edit = new WLibraryTextBrowser(pStack); + auto edit = make_parented(pStack.get()); edit->setHtml(getRootViewHtml()); edit->setOpenLinks(false); edit->installEventFilter(pKeyboard); - connect(edit, SIGNAL(anchorClicked(const QUrl)), + connect(edit.get(), SIGNAL(anchorClicked(const QUrl)), this, SLOT(htmlLinkClicked(const QUrl))); - m_browseIndexByPaneId[paneId] = pStack->addWidget(edit); + m_browseIndexByPaneId[paneId] = pStack->addWidget(edit.get()); - QWidget* pTable = LibraryFeature::createPaneWidget(pKeyboard, paneId); - pTable->setParent(pStack); - m_tableIndexByPaneId[paneId] = pStack->addWidget(pTable); + auto pTable = LibraryFeature::createPaneWidget(pKeyboard, paneId, pStack); + m_tableIndexByPaneId[paneId] = pStack->addWidget(pTable.get()); return pStack; } diff --git a/src/library/features/baseplaylist/baseplaylistfeature.h b/src/library/features/baseplaylist/baseplaylistfeature.h index 544de2d415bd..3cbf2ecfc37a 100644 --- a/src/library/features/baseplaylist/baseplaylistfeature.h +++ b/src/library/features/baseplaylist/baseplaylistfeature.h @@ -34,7 +34,8 @@ class BasePlaylistFeature : public LibraryFeature { TreeItemModel* getChildModel(); - QWidget* createPaneWidget(KeyboardEventFilter*pKeyboard, int paneId) override; + parented_ptr createPaneWidget(KeyboardEventFilter*pKeyboard, + int paneId, const parented_ptr& parent) override; signals: void showPage(const QUrl& page); diff --git a/src/library/features/browse/browsefeature.cpp b/src/library/features/browse/browsefeature.cpp index e1af2a69dfe5..8c921d5461bb 100644 --- a/src/library/features/browse/browsefeature.cpp +++ b/src/library/features/browse/browsefeature.cpp @@ -197,19 +197,19 @@ TreeItemModel* BrowseFeature::getChildModel() { return &m_childModel; } -QWidget* BrowseFeature::createPaneWidget(KeyboardEventFilter* pKeyboard, - int paneId) { - WLibraryStack* pStack = new WLibraryStack(nullptr); - m_panes[paneId] = pStack; +parented_ptr BrowseFeature::createPaneWidget( + KeyboardEventFilter* pKeyboard, int paneId, + const parented_ptr& parent) { + auto pStack = make_parented(parent.get()); + m_panes[paneId] = pStack.get(); - WLibraryTextBrowser* pEdit = new WLibraryTextBrowser(nullptr); + auto pEdit = make_parented(pStack.get()); pEdit->setHtml(getRootViewHtml()); pEdit->installEventFilter(pKeyboard); - m_idBrowse[paneId] = pStack->addWidget(pEdit); + m_idBrowse[paneId] = pStack->addWidget(pEdit.get()); - QWidget* pTable = LibraryFeature::createPaneWidget(pKeyboard, paneId); - pTable->setParent(pStack); - m_idTable[paneId] = pStack->addWidget(pTable); + auto pTable = LibraryFeature::createPaneWidget(pKeyboard, paneId, pStack); + m_idTable[paneId] = pStack->addWidget(pTable.get()); return pStack; } diff --git a/src/library/features/browse/browsefeature.h b/src/library/features/browse/browsefeature.h index a11874b43420..9aba77ff45f1 100644 --- a/src/library/features/browse/browsefeature.h +++ b/src/library/features/browse/browsefeature.h @@ -40,7 +40,8 @@ class BrowseFeature : public LibraryFeature { QString getIconPath() override; QString getSettingsName() const override; - QWidget* createPaneWidget(KeyboardEventFilter*pKeyboard, int paneId) override; + parented_ptr createPaneWidget(KeyboardEventFilter*pKeyboard, + int paneId, const parented_ptr& parent) override; TreeItemModel* getChildModel(); diff --git a/src/library/features/crates/cratefeature.cpp b/src/library/features/crates/cratefeature.cpp index 77b9b35b4f9b..7bd5fe124250 100644 --- a/src/library/features/crates/cratefeature.cpp +++ b/src/library/features/crates/cratefeature.cpp @@ -193,22 +193,23 @@ bool CrateFeature::dragMoveAcceptChild(const QModelIndex& index, QUrl url) { return !locked && formatSupported; } -QWidget* CrateFeature::createPaneWidget(KeyboardEventFilter *pKeyboard, - int paneId) { - WLibraryStack* pContainer = new WLibraryStack(nullptr); - m_panes[paneId] = pContainer; +parented_ptr CrateFeature::createPaneWidget( + KeyboardEventFilter* pKeyboard, int paneId, + const parented_ptr& parent) { + auto pContainer = make_parented(parent.get()); + m_panes[paneId] = pContainer.get(); - WLibraryTextBrowser* pEdit = new WLibraryTextBrowser(pContainer); + auto pEdit = make_parented(pContainer.get()); pEdit->setHtml(getRootViewHtml()); pEdit->setOpenLinks(false); pEdit->installEventFilter(pKeyboard); - connect(pEdit, SIGNAL(anchorClicked(const QUrl)), + connect(pEdit.get(), SIGNAL(anchorClicked(const QUrl)), this, SLOT(htmlLinkClicked(const QUrl))); - m_idBrowse[paneId] = pContainer->addWidget(pEdit); + m_idBrowse[paneId] = pContainer->addWidget(pEdit.get()); - QWidget* pTable = LibraryFeature::createPaneWidget(pKeyboard, paneId); - m_idTable[paneId] = pContainer->addWidget(pTable); + auto pTable = LibraryFeature::createPaneWidget(pKeyboard, paneId, pContainer); + m_idTable[paneId] = pContainer->addWidget(pTable.get()); return pContainer; } diff --git a/src/library/features/crates/cratefeature.h b/src/library/features/crates/cratefeature.h index 3cc82efe1670..a8318a89278d 100644 --- a/src/library/features/crates/cratefeature.h +++ b/src/library/features/crates/cratefeature.h @@ -43,7 +43,8 @@ class CrateFeature : public LibraryFeature { QObject* pSource); bool dragMoveAcceptChild(const QModelIndex& index, QUrl url); - QWidget* createPaneWidget(KeyboardEventFilter* pKeyboard, int paneId) override; + parented_ptr createPaneWidget(KeyboardEventFilter* pKeyboard, + int paneId, const parented_ptr& parent) override; TreeItemModel* getChildModel(); diff --git a/src/library/features/maintenance/maintenancefeature.cpp b/src/library/features/maintenance/maintenancefeature.cpp index ba88809745d2..3a43003141dd 100644 --- a/src/library/features/maintenance/maintenancefeature.cpp +++ b/src/library/features/maintenance/maintenancefeature.cpp @@ -104,14 +104,6 @@ QWidget* MaintenanceFeature::createInnerSidebarWidget(KeyboardEventFilter* pKeyb return m_pTab; } -QWidget* MaintenanceFeature::createPaneWidget(KeyboardEventFilter* pKeyboard, - int paneId) { - Q_UNUSED(pKeyboard); - WTrackTableView* pTable = LibraryFeature::createTableWidget(paneId); - - return pTable; -} - void MaintenanceFeature::slotTabIndexChanged(int index) { QPointer pTable = getFocusedTable(); if (pTable.isNull()) { diff --git a/src/library/features/maintenance/maintenancefeature.h b/src/library/features/maintenance/maintenancefeature.h index c4a794235178..820e549c4efd 100644 --- a/src/library/features/maintenance/maintenancefeature.h +++ b/src/library/features/maintenance/maintenancefeature.h @@ -33,7 +33,6 @@ class MaintenanceFeature : public LibraryFeature protected: QWidget* createInnerSidebarWidget(KeyboardEventFilter* pKeyboard); - QWidget* createPaneWidget(KeyboardEventFilter* pKeyboard, int paneId); private: diff --git a/src/library/features/recording/recordingfeature.cpp b/src/library/features/recording/recordingfeature.cpp index 2665d8f7ba25..887f40acaaf4 100644 --- a/src/library/features/recording/recordingfeature.cpp +++ b/src/library/features/recording/recordingfeature.cpp @@ -45,15 +45,14 @@ TreeItemModel* RecordingFeature::getChildModel() { return &m_childModel; } -QWidget* RecordingFeature::createPaneWidget( - KeyboardEventFilter* pKeyboard, int paneId) { - Q_UNUSED(pKeyboard); - WTrackTableView* pTable = LibraryFeature::createTableWidget(paneId); +parented_ptr RecordingFeature::createPaneWidget(KeyboardEventFilter*, + int paneId, const parented_ptr& parent) { + auto pTable = LibraryFeature::createTableWidget(paneId, parent); pTable->setSorting(false); return pTable; } -QWidget *RecordingFeature::createInnerSidebarWidget( +QWidget* RecordingFeature::createInnerSidebarWidget( KeyboardEventFilter* pKeyboard) { m_pRecordingView = new DlgRecording(nullptr, m_pTrackCollection, diff --git a/src/library/features/recording/recordingfeature.h b/src/library/features/recording/recordingfeature.h index d83b80cae3c5..cc2b4ef056fb 100644 --- a/src/library/features/recording/recordingfeature.h +++ b/src/library/features/recording/recordingfeature.h @@ -32,7 +32,8 @@ class RecordingFeature : public LibraryFeature { QString getIconPath() override; QString getSettingsName() const override; - QWidget* createPaneWidget(KeyboardEventFilter *pKeyboard, int paneId) override; + parented_ptr createPaneWidget(KeyboardEventFilter*, + int paneId, const parented_ptr& parent) override; QWidget* createInnerSidebarWidget(KeyboardEventFilter* pKeyboard) override; TreeItemModel* getChildModel(); diff --git a/src/library/libraryfeature.cpp b/src/library/libraryfeature.cpp index 1e9eaf563878..fd482efdaec7 100644 --- a/src/library/libraryfeature.cpp +++ b/src/library/libraryfeature.cpp @@ -66,10 +66,10 @@ bool LibraryFeature::dragMoveAcceptChild(const QModelIndex &, QUrl) { return false; } -QWidget* LibraryFeature::createPaneWidget(KeyboardEventFilter* pKeyboard, - int paneId) { +parented_ptr LibraryFeature::createPaneWidget(KeyboardEventFilter* pKeyboard, + int paneId, const parented_ptr& parent) { Q_UNUSED(pKeyboard); - return createTableWidget(paneId); + return createTableWidget(paneId, parent); } QWidget *LibraryFeature::createSidebarWidget(KeyboardEventFilter* pKeyboard) { @@ -176,27 +176,29 @@ QList LibraryFeature::getSavedQueries() const { return m_savedDAO.getSavedQueries(this); } -WTrackTableView* LibraryFeature::createTableWidget(int paneId) { - WTrackTableView* pTrackTableView = - new WTrackTableView(nullptr, m_pConfig, m_pTrackCollection, true); - m_trackTablesByPaneId[paneId] = pTrackTableView; +parented_ptr LibraryFeature::createTableWidget(int paneId, + const parented_ptr& parent) { + auto pTrackTableView = make_parented( + parent.get(), m_pConfig, m_pTrackCollection, true); + + m_trackTablesByPaneId[paneId] = pTrackTableView.get(); - WMiniViewScrollBar* pScrollBar = new WMiniViewScrollBar(pTrackTableView); - pTrackTableView->setScrollBar(pScrollBar); + auto pScrollBar = make_parented(pTrackTableView.get()); + pTrackTableView->setScrollBar(pScrollBar.get()); - connect(pTrackTableView, SIGNAL(loadTrack(TrackPointer)), + connect(pTrackTableView.get(), SIGNAL(loadTrack(TrackPointer)), this, SIGNAL(loadTrack(TrackPointer))); - connect(pTrackTableView, SIGNAL(loadTrackToPlayer(TrackPointer, QString, bool)), + connect(pTrackTableView.get(), SIGNAL(loadTrackToPlayer(TrackPointer, QString, bool)), this, SIGNAL(loadTrackToPlayer(TrackPointer, QString, bool))); - connect(pTrackTableView, SIGNAL(trackSelected(TrackPointer)), + connect(pTrackTableView.get(), SIGNAL(trackSelected(TrackPointer)), this, SIGNAL(trackSelected(TrackPointer))); - connect(pTrackTableView, SIGNAL(tableChanged()), + connect(pTrackTableView.get(), SIGNAL(tableChanged()), this, SLOT(restoreSaveButton())); connect(m_pLibrary, SIGNAL(setTrackTableFont(QFont)), - pTrackTableView, SLOT(setTrackTableFont(QFont))); + pTrackTableView.get(), SLOT(setTrackTableFont(QFont))); connect(m_pLibrary, SIGNAL(setTrackTableRowHeight(int)), - pTrackTableView, SLOT(setTrackTableRowHeight(int))); + pTrackTableView.get(), SLOT(setTrackTableRowHeight(int))); return pTrackTableView; } diff --git a/src/library/libraryfeature.h b/src/library/libraryfeature.h index 5f38dfac1cab..c8cc0a401e40 100644 --- a/src/library/libraryfeature.h +++ b/src/library/libraryfeature.h @@ -14,6 +14,7 @@ #include "preferences/usersettings.h" #include "library/dao/savedqueriesdao.h" #include "track/track.h" +#include "util/parented_ptr.h" class Library; class KeyboardEventFilter; @@ -60,8 +61,8 @@ class LibraryFeature : public QObject { // Reimplement this to register custom views with the library widget // at the right pane. - virtual QWidget* createPaneWidget(KeyboardEventFilter* pKeyboard, - int paneId); + virtual parented_ptr createPaneWidget(KeyboardEventFilter* pKeyboard, + int paneId, const parented_ptr& parent); // Reimplement this to register custom views with the library widget, // at the sidebar expanded pane @@ -140,7 +141,8 @@ class LibraryFeature : public QObject { } // Creates a table widget with no model - WTrackTableView* createTableWidget(int paneId); + parented_ptr createTableWidget(int paneId, + const parented_ptr& parent); // Creates a WLibrarySidebar widget with the getChildModel() function as // model diff --git a/src/library/librarypanemanager.cpp b/src/library/librarypanemanager.cpp index 8e5ad4ad5e2d..30c1125c2851 100644 --- a/src/library/librarypanemanager.cpp +++ b/src/library/librarypanemanager.cpp @@ -19,7 +19,7 @@ LibraryPaneManager::LibraryPaneManager(int paneId, Library *pLibrary, QObject* p LibraryPaneManager::~LibraryPaneManager() { } -void LibraryPaneManager::bindPaneWidget(WBaseLibrary* pPaneWidget, +void LibraryPaneManager::bindPaneWidget(QPointer pPaneWidget, KeyboardEventFilter* pKeyboard) { //qDebug() << "LibraryPaneManager::bindLibraryWidget" << libraryWidget; m_pPaneWidget = pPaneWidget; @@ -34,15 +34,10 @@ void LibraryPaneManager::bindPaneWidget(WBaseLibrary* pPaneWidget, if (qobject_cast(pPaneWidget) == nullptr) { return; } - for (LibraryFeature* f : m_features) { - //f->bindPaneWidget(pPaneWidget, pKeyboard, m_paneId); - - QWidget* pFeaturePaneWidget = f->createPaneWidget(pKeyboard, m_paneId); - if (pFeaturePaneWidget == nullptr) { - continue; - } - pFeaturePaneWidget->setParent(pPaneWidget); - pPaneWidget->registerView(f, pFeaturePaneWidget); + for (LibraryFeature* f : m_features) { + parented_ptr pFeaturePaneWidget = f->createPaneWidget( + pKeyboard, m_paneId, make_parented(pPaneWidget)); + pPaneWidget->registerView(f, pFeaturePaneWidget.get()); } } diff --git a/src/library/librarypanemanager.h b/src/library/librarypanemanager.h index 52cd0f9a8f01..b8bcd8acd074 100644 --- a/src/library/librarypanemanager.h +++ b/src/library/librarypanemanager.h @@ -26,7 +26,7 @@ class LibraryPaneManager : public QObject { bool initialize(); // All features must be added before adding a pane - virtual void bindPaneWidget(WBaseLibrary* pLibraryWidget, + virtual void bindPaneWidget(QPointer pLibraryWidget, KeyboardEventFilter* pKeyboard); void bindSearchBar(WSearchLineEdit* pSearchBar); void setBreadCrumb(WLibraryBreadCrumb* pBreadCrumb); diff --git a/src/library/librarysidebarexpandedmanager.cpp b/src/library/librarysidebarexpandedmanager.cpp index 60da9906c79f..47b6e2c3c84b 100644 --- a/src/library/librarysidebarexpandedmanager.cpp +++ b/src/library/librarysidebarexpandedmanager.cpp @@ -7,7 +7,7 @@ LibrarySidebarExpandedManager::LibrarySidebarExpandedManager(Library *pLibrary, } -void LibrarySidebarExpandedManager::bindPaneWidget(WBaseLibrary* sidebarWidget, +void LibrarySidebarExpandedManager::bindPaneWidget(QPointer sidebarWidget, KeyboardEventFilter* pKeyboard) { m_pPaneWidget = sidebarWidget; diff --git a/src/library/librarysidebarexpandedmanager.h b/src/library/librarysidebarexpandedmanager.h index 7a29eb9ada91..5311e1ba0699 100644 --- a/src/library/librarysidebarexpandedmanager.h +++ b/src/library/librarysidebarexpandedmanager.h @@ -7,7 +7,7 @@ class LibrarySidebarExpandedManager : public LibraryPaneManager public: LibrarySidebarExpandedManager(Library* pLibrary, QObject* parent = nullptr); - void bindPaneWidget(WBaseLibrary* sidebarWidget, + void bindPaneWidget(QPointer sidebarWidget, KeyboardEventFilter* pKeyboard) override; }; From 222a7d5e083913f10381ea1f856b34b781c4d9e0 Mon Sep 17 00:00:00 2001 From: jmigual Date: Thu, 26 Jan 2017 00:00:08 +0100 Subject: [PATCH 04/13] Add shared pointer instead of QShared --- src/library/features/baseplaylist/baseplaylistfeature.cpp | 2 +- src/library/features/baseplaylist/baseplaylistfeature.h | 2 +- src/library/features/history/historyfeature.cpp | 4 ++-- src/library/features/history/historyfeature.h | 2 +- src/library/features/playlist/playlistfeature.cpp | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/library/features/baseplaylist/baseplaylistfeature.cpp b/src/library/features/baseplaylist/baseplaylistfeature.cpp index 239dc4c69374..ea8a6fb24875 100644 --- a/src/library/features/baseplaylist/baseplaylistfeature.cpp +++ b/src/library/features/baseplaylist/baseplaylistfeature.cpp @@ -679,7 +679,7 @@ void BasePlaylistFeature::slotAnalyzePlaylist() { } TreeItemModel* BasePlaylistFeature::getChildModel() { - return m_childModel.data(); + return m_childModel.get(); } parented_ptr BasePlaylistFeature::createPaneWidget( diff --git a/src/library/features/baseplaylist/baseplaylistfeature.h b/src/library/features/baseplaylist/baseplaylistfeature.h index dd3ffe69d742..27e711d32c54 100644 --- a/src/library/features/baseplaylist/baseplaylistfeature.h +++ b/src/library/features/baseplaylist/baseplaylistfeature.h @@ -125,7 +125,7 @@ class BasePlaylistFeature : public LibraryFeature { QPersistentModelIndex m_lastRightClickedIndex; TrackPointer m_pSelectedTrack; - QSharedPointer m_childModel; + std::shared_ptr m_childModel; QHash m_lastChildClicked; diff --git a/src/library/features/history/historyfeature.cpp b/src/library/features/history/historyfeature.cpp index 08d16cbeb3ab..bc2ff4d204bb 100644 --- a/src/library/features/history/historyfeature.cpp +++ b/src/library/features/history/historyfeature.cpp @@ -30,8 +30,8 @@ HistoryFeature::HistoryFeature(UserSettingsPointer pConfig, emit(slotGetNewPlaylist()); //construct child model - m_childModel = m_pHistoryTreeModel = QSharedPointer( - new HistoryTreeModel(this, m_pTrackCollection)); + m_childModel = m_pHistoryTreeModel = + std::make_shared(this, m_pTrackCollection); constructChildModel(-1); connect(&PlayerInfo::instance(), SIGNAL(currentPlayingTrackChanged(TrackPointer)), diff --git a/src/library/features/history/historyfeature.h b/src/library/features/history/historyfeature.h index fe66062dc681..acae636c36d5 100644 --- a/src/library/features/history/historyfeature.h +++ b/src/library/features/history/historyfeature.h @@ -56,7 +56,7 @@ class HistoryFeature : public BasePlaylistFeature { QLinkedList m_recentTracks; QAction* m_pJoinWithNextAction; QAction* m_pGetNewPlaylist; - QSharedPointer m_pHistoryTreeModel; + std::shared_ptr m_pHistoryTreeModel; int m_playlistId; }; diff --git a/src/library/features/playlist/playlistfeature.cpp b/src/library/features/playlist/playlistfeature.cpp index 3fbfe734be29..efd0527207b8 100644 --- a/src/library/features/playlist/playlistfeature.cpp +++ b/src/library/features/playlist/playlistfeature.cpp @@ -22,7 +22,7 @@ PlaylistFeature::PlaylistFeature(UserSettingsPointer pConfig, TrackCollection* pTrackCollection) : BasePlaylistFeature(pConfig, pLibrary, parent, pTrackCollection) { //construct child model - m_childModel = QSharedPointer(new TreeItemModel(this)); + m_childModel = std::make_shared(); auto pRootItem = std::make_unique(this); m_childModel->setRootItem(std::move(pRootItem)); constructChildModel(-1); From 3bf9d76cc8e400e315c35b6a2e319165bec0f312 Mon Sep 17 00:00:00 2001 From: jmigual Date: Thu, 26 Jan 2017 00:00:28 +0100 Subject: [PATCH 05/13] Remove some duplicated headers in BasePlaylistFeature --- src/library/features/baseplaylist/baseplaylistfeature.h | 8 -------- src/library/features/history/historyfeature.h | 3 --- src/library/features/playlist/playlistfeature.h | 8 -------- src/library/libraryfeature.h | 1 - 4 files changed, 20 deletions(-) diff --git a/src/library/features/baseplaylist/baseplaylistfeature.h b/src/library/features/baseplaylist/baseplaylistfeature.h index 27e711d32c54..eb7c094a7d16 100644 --- a/src/library/features/baseplaylist/baseplaylistfeature.h +++ b/src/library/features/baseplaylist/baseplaylistfeature.h @@ -1,23 +1,15 @@ #ifndef BASEPLAYLISTFEATURE_H #define BASEPLAYLISTFEATURE_H -#include #include -#include -#include #include -#include #include #include -#include -#include #include "library/dao/playlistdao.h" #include "library/dao/trackdao.h" #include "library/libraryfeature.h" -#include "track/track.h" -class KeyboardEventFilter; class PlaylistTableModel; class TrackCollection; class TreeItem; diff --git a/src/library/features/history/historyfeature.h b/src/library/features/history/historyfeature.h index acae636c36d5..9db20406c56f 100644 --- a/src/library/features/history/historyfeature.h +++ b/src/library/features/history/historyfeature.h @@ -4,11 +4,8 @@ #define SETLOGFEATURE_H #include -#include -#include #include "library/features/baseplaylist/baseplaylistfeature.h" -#include "preferences/usersettings.h" class TrackCollection; class TreeItem; diff --git a/src/library/features/playlist/playlistfeature.h b/src/library/features/playlist/playlistfeature.h index 7aa63d5c53e9..ac7a2e522d46 100644 --- a/src/library/features/playlist/playlistfeature.h +++ b/src/library/features/playlist/playlistfeature.h @@ -4,15 +4,7 @@ #ifndef PLAYLISTFEATURE_H #define PLAYLISTFEATURE_H -#include -#include -#include -#include -#include -#include - #include "library/features/baseplaylist/baseplaylistfeature.h" -#include "preferences/usersettings.h" class TrackCollection; class TreeItem; diff --git a/src/library/libraryfeature.h b/src/library/libraryfeature.h index c8cc0a401e40..0a18d547c90d 100644 --- a/src/library/libraryfeature.h +++ b/src/library/libraryfeature.h @@ -8,7 +8,6 @@ #include #include #include -#include #include #include "preferences/usersettings.h" From fbfe6321b6bbd00d8aaa6081e7b06a8885942c0c Mon Sep 17 00:00:00 2001 From: jmigual Date: Thu, 26 Jan 2017 00:21:15 +0100 Subject: [PATCH 06/13] Add parented_ptr to all functions that require it It has been added to LibraryPaneManager and LibrarySidebarExpandedManager and also to the library and the legacy skin parser calls. --- src/library/library.cpp | 4 +- src/library/library.h | 13 ++-- src/library/librarypanemanager.cpp | 16 ++-- src/library/librarypanemanager.h | 2 +- src/library/librarysidebarexpandedmanager.cpp | 8 +- src/library/librarysidebarexpandedmanager.h | 2 +- src/skin/legacyskinparser.cpp | 76 ++++++++++--------- 7 files changed, 62 insertions(+), 59 deletions(-) diff --git a/src/library/library.cpp b/src/library/library.cpp index cdd1e47fa184..4efda5f69f6e 100644 --- a/src/library/library.cpp +++ b/src/library/library.cpp @@ -137,7 +137,7 @@ void Library::bindSidebarButtons(WButtonBar* sidebar) { } } -void Library::bindPaneWidget(WLibraryPane* pPaneWidget, +void Library::bindPaneWidget(const parented_ptr& pPaneWidget, KeyboardEventFilter* pKeyboard, int paneId) { // Get the value once to avoid searching again in the hash @@ -153,7 +153,7 @@ void Library::bindPaneWidget(WLibraryPane* pPaneWidget, emit(setTrackTableRowHeight(m_iTrackTableRowHeight)); } -void Library::bindSidebarExpanded(WBaseLibrary* expandedPane, +void Library::bindSidebarExpanded(const parented_ptr& expandedPane, KeyboardEventFilter* pKeyboard) { //qDebug() << "Library::bindSidebarExpanded"; m_pSidebarExpanded = new LibrarySidebarExpandedManager(this); diff --git a/src/library/library.h b/src/library/library.h index 40d9bcad77e4..85de4f3b04f7 100644 --- a/src/library/library.h +++ b/src/library/library.h @@ -7,16 +7,17 @@ #ifndef LIBRARY_H #define LIBRARY_H -#include -#include #include #include #include +#include +#include +#include "library/scanner/libraryscanner.h" #include "preferences/usersettings.h" -#include "track/track.h" #include "recording/recordingmanager.h" -#include "library/scanner/libraryscanner.h" +#include "track/track.h" +#include "util/parented_ptr.h" class AnalysisFeature; class CrateFeature; @@ -59,9 +60,9 @@ class Library : public QObject { void bindSearchBar(WSearchLineEdit* searchLine, int id); void bindSidebarButtons(WButtonBar* sidebar); - void bindPaneWidget(WLibraryPane* libraryWidget, + void bindPaneWidget(const parented_ptr&libraryWidget, KeyboardEventFilter* pKeyboard, int paneId); - void bindSidebarExpanded(WBaseLibrary* expandedPane, + void bindSidebarExpanded(const parented_ptr&expandedPane, KeyboardEventFilter* pKeyboard); void bindBreadCrumb(WLibraryBreadCrumb *pBreadCrumb, int paneId); diff --git a/src/library/librarypanemanager.cpp b/src/library/librarypanemanager.cpp index 30c1125c2851..67fc34705492 100644 --- a/src/library/librarypanemanager.cpp +++ b/src/library/librarypanemanager.cpp @@ -19,25 +19,25 @@ LibraryPaneManager::LibraryPaneManager(int paneId, Library *pLibrary, QObject* p LibraryPaneManager::~LibraryPaneManager() { } -void LibraryPaneManager::bindPaneWidget(QPointer pPaneWidget, +void LibraryPaneManager::bindPaneWidget(const parented_ptr& pPaneWidget, KeyboardEventFilter* pKeyboard) { //qDebug() << "LibraryPaneManager::bindLibraryWidget" << libraryWidget; - m_pPaneWidget = pPaneWidget; + m_pPaneWidget = pPaneWidget.get(); - connect(pPaneWidget, SIGNAL(focused()), + connect(m_pPaneWidget, SIGNAL(focused()), this, SLOT(slotPaneFocused())); - connect(pPaneWidget, SIGNAL(collapsed()), + connect(m_pPaneWidget, SIGNAL(collapsed()), this, SLOT(slotPaneCollapsed())); - connect(pPaneWidget, SIGNAL(uncollapsed()), + connect(m_pPaneWidget, SIGNAL(uncollapsed()), this, SLOT(slotPaneUncollapsed())); - if (qobject_cast(pPaneWidget) == nullptr) { + if (qobject_cast(m_pPaneWidget) == nullptr) { return; } for (LibraryFeature* f : m_features) { parented_ptr pFeaturePaneWidget = f->createPaneWidget( - pKeyboard, m_paneId, make_parented(pPaneWidget)); - pPaneWidget->registerView(f, pFeaturePaneWidget.get()); + pKeyboard, m_paneId, make_parented(m_pPaneWidget)); + m_pPaneWidget->registerView(f, pFeaturePaneWidget.get()); } } diff --git a/src/library/librarypanemanager.h b/src/library/librarypanemanager.h index b8bcd8acd074..4273058d2229 100644 --- a/src/library/librarypanemanager.h +++ b/src/library/librarypanemanager.h @@ -26,7 +26,7 @@ class LibraryPaneManager : public QObject { bool initialize(); // All features must be added before adding a pane - virtual void bindPaneWidget(QPointer pLibraryWidget, + virtual void bindPaneWidget(const parented_ptr&pLibraryWidget, KeyboardEventFilter* pKeyboard); void bindSearchBar(WSearchLineEdit* pSearchBar); void setBreadCrumb(WLibraryBreadCrumb* pBreadCrumb); diff --git a/src/library/librarysidebarexpandedmanager.cpp b/src/library/librarysidebarexpandedmanager.cpp index 47b6e2c3c84b..dc4eb6d427aa 100644 --- a/src/library/librarysidebarexpandedmanager.cpp +++ b/src/library/librarysidebarexpandedmanager.cpp @@ -7,17 +7,17 @@ LibrarySidebarExpandedManager::LibrarySidebarExpandedManager(Library *pLibrary, } -void LibrarySidebarExpandedManager::bindPaneWidget(QPointer sidebarWidget, +void LibrarySidebarExpandedManager::bindPaneWidget(const parented_ptr&sidebarWidget, KeyboardEventFilter* pKeyboard) { - m_pPaneWidget = sidebarWidget; + m_pPaneWidget = sidebarWidget.get(); for (LibraryFeature* f : m_features) { QWidget* pPane = f->createSidebarWidget(pKeyboard); if (pPane == nullptr) { continue; } - pPane->setParent(sidebarWidget); - sidebarWidget->registerView(f, pPane); + pPane->setParent(m_pPaneWidget); + m_pPaneWidget->registerView(f, pPane); } } diff --git a/src/library/librarysidebarexpandedmanager.h b/src/library/librarysidebarexpandedmanager.h index 5311e1ba0699..02c5c4a4a2e3 100644 --- a/src/library/librarysidebarexpandedmanager.h +++ b/src/library/librarysidebarexpandedmanager.h @@ -7,7 +7,7 @@ class LibrarySidebarExpandedManager : public LibraryPaneManager public: LibrarySidebarExpandedManager(Library* pLibrary, QObject* parent = nullptr); - void bindPaneWidget(QPointer sidebarWidget, + void bindPaneWidget(const parented_ptr& sidebarWidget, KeyboardEventFilter* pKeyboard) override; }; diff --git a/src/skin/legacyskinparser.cpp b/src/skin/legacyskinparser.cpp index 5a0cfc0dd65e..27a60a45949e 100644 --- a/src/skin/legacyskinparser.cpp +++ b/src/skin/legacyskinparser.cpp @@ -1280,7 +1280,9 @@ QWidget* LegacySkinParser::parseLibraryPane(const QDomElement& node) { return nullptr; } //qDebug() << "LegacySkinParser::parseLibrary:ID" << id; - WLibraryPane* pLibraryPaneWidget = new WLibraryPane(m_pParent); + // Create the parented pointer here, actually all the parse.. functions + // should use the parented_ptr + auto pLibraryPaneWidget = make_parented(m_pParent); pLibraryPaneWidget->installEventFilter(m_pKeyboard); pLibraryPaneWidget->installEventFilter( m_pControllerManager->getControllerLearningEventFilter()); @@ -1289,73 +1291,73 @@ QWidget* LegacySkinParser::parseLibraryPane(const QDomElement& node) { // This must come after the bindWidget or we will not style any of the // LibraryView's because they have not been added yet. - commonWidgetSetup(node, pLibraryPaneWidget, false); - return pLibraryPaneWidget; + commonWidgetSetup(node, pLibraryPaneWidget.get(), false); + return pLibraryPaneWidget.get(); } QWidget* LegacySkinParser::parseLibrary(const QDomElement& node) { // Must add both a SearchBox and a LibraryPane - QFrame* pContainer = new QFrame(m_pParent); - QVBoxLayout* pLayout = new QVBoxLayout(pContainer); - pContainer->setLayout(pLayout); + auto pContainer = make_parented(m_pParent); + auto pLayout = make_parented(pContainer.get()); + pContainer->setLayout(pLayout.get()); - WLibraryBreadCrumb* pBreadCrumb = new WLibraryBreadCrumb(pContainer); - m_pLibrary->bindBreadCrumb(pBreadCrumb, m_paneId); - setupWidget(node, pBreadCrumb); - pLayout->addWidget(pBreadCrumb); + auto pBreadCrumb = make_parented(pContainer.get()); + m_pLibrary->bindBreadCrumb(pBreadCrumb.get(), m_paneId); + setupWidget(node, pBreadCrumb.get()); + pLayout->addWidget(pBreadCrumb.get()); - WSearchLineEdit* pSearchBox = new WSearchLineEdit(pContainer); + auto pSearchBox = make_parented(pContainer.get()); pSearchBox->setup(node, *m_pContext); - m_pLibrary->bindSearchBar(pSearchBox, m_paneId); - commonWidgetSetup(node, pSearchBox); - pLayout->addWidget(pSearchBox); + m_pLibrary->bindSearchBar(pSearchBox.get(), m_paneId); + commonWidgetSetup(node, pSearchBox.get()); + pLayout->addWidget(pSearchBox.get()); - WLibraryPane* pLibraryWidget = new WLibraryPane(pContainer); + auto pLibraryWidget = make_parented(pContainer.get()); pLibraryWidget->installEventFilter(m_pKeyboard); pLibraryWidget->installEventFilter( m_pControllerManager->getControllerLearningEventFilter()); - pLayout->addWidget(pLibraryWidget); + pLayout->addWidget(pLibraryWidget.get()); m_pLibrary->bindPaneWidget(pLibraryWidget, m_pKeyboard, m_paneId); - commonWidgetSetup(node, pLibraryWidget, false); + commonWidgetSetup(node, pLibraryWidget.get(), false); qDebug() << "LegacySkinParser::parseLibrary"; ++m_paneId; - return pContainer; + return pContainer.get(); } QWidget* LegacySkinParser::parseLibrarySidebar(const QDomElement& node) { // We must create both LibrarySidebarButtons and LibrarySidebarExpanded // to allow support for old skins - QFrame* pContainer = new QFrame(m_pParent); - QHBoxLayout* pLayout = new QHBoxLayout(pContainer); - pContainer->setLayout(pLayout); + auto pContainer = make_parented(m_pParent); + auto pLayout = make_parented(pContainer.get()); + pContainer->setLayout(pLayout.get()); // Create config object for WButtonBar ConfigKey confKey("[Library]", "show_icon_text"); controlFromConfigKey(confKey, true, nullptr); m_pConfig->set(confKey, QString::number(1.0)); - WVerticalScrollArea* scroll = new WVerticalScrollArea(pContainer); + auto scroll = make_parented(pContainer.get()); scroll->installEventFilter(m_pKeyboard); - pLayout->addWidget(scroll); + pLayout->addWidget(scroll.get()); - WButtonBar* pLibrarySidebar = new WButtonBar(scroll); - m_pLibrary->bindSidebarButtons(pLibrarySidebar); - scroll->setWidget(pLibrarySidebar); - connect(pLibrarySidebar, SIGNAL(ensureVisible(QWidget*)), - scroll, SLOT(slotEnsureVisible(QWidget*))); + auto pLibrarySidebar = make_parented(scroll.get()); + m_pLibrary->bindSidebarButtons(pLibrarySidebar.get()); + scroll->setWidget(pLibrarySidebar.get()); + connect(pLibrarySidebar.get(), SIGNAL(ensureVisible(QWidget*)), + scroll.get(), SLOT(slotEnsureVisible(QWidget*))); - WBaseLibrary* pLibrarySidebarExpanded = new WBaseLibrary(pContainer); + auto pLibrarySidebarExpanded = make_parented(pContainer.get()); pLibrarySidebarExpanded->installEventFilter(m_pKeyboard); pLibrarySidebarExpanded->installEventFilter(m_pControllerManager->getControllerLearningEventFilter()); m_pLibrary->bindSidebarExpanded(pLibrarySidebarExpanded, m_pKeyboard); - pLayout->addWidget(pLibrarySidebarExpanded); + pLayout->addWidget(pLibrarySidebarExpanded.get()); - setupWidget(node, pLibrarySidebar); - commonWidgetSetup(node, pLibrarySidebarExpanded, false); - return pContainer; + setupWidget(node, pLibrarySidebar.get()); + commonWidgetSetup(node, pLibrarySidebarExpanded.get(), false); + return pContainer.get(); } QWidget* LegacySkinParser::parseLibrarySidebarButtons(const QDomElement& node) { @@ -1373,13 +1375,13 @@ QWidget* LegacySkinParser::parseLibrarySidebarButtons(const QDomElement& node) { return scroll; } -QWidget *LegacySkinParser::parseLibrarySidebarExpanded(const QDomElement &node) { - WBaseLibrary* pLibrarySidebarExpanded = new WBaseLibrary(m_pParent); +QWidget* LegacySkinParser::parseLibrarySidebarExpanded(const QDomElement &node) { + auto pLibrarySidebarExpanded = make_parented(m_pParent); pLibrarySidebarExpanded->installEventFilter(m_pKeyboard); pLibrarySidebarExpanded->installEventFilter(m_pControllerManager->getControllerLearningEventFilter()); m_pLibrary->bindSidebarExpanded(pLibrarySidebarExpanded, m_pKeyboard); - commonWidgetSetup(node, pLibrarySidebarExpanded, false); - return pLibrarySidebarExpanded; + commonWidgetSetup(node, pLibrarySidebarExpanded.get(), false); + return pLibrarySidebarExpanded.get(); } QWidget* LegacySkinParser::parseLibraryBreadCrumb(const QDomElement& node) { From 36db4b15b0781e6b6599dd808d7cb7b7afdf262a Mon Sep 17 00:00:00 2001 From: jmigual Date: Thu, 9 Feb 2017 20:32:01 +0100 Subject: [PATCH 07/13] Add unique_ptr only when it's necessary --- .../features/analysis/analysisfeature.cpp | 6 +++--- .../features/analysis/analysisfeature.h | 4 ++-- src/library/features/autodj/autodjfeature.cpp | 7 +++---- src/library/features/autodj/autodjfeature.h | 4 ++-- .../baseplaylist/baseplaylistfeature.cpp | 15 +++++++-------- .../baseplaylist/baseplaylistfeature.h | 4 ++-- src/library/features/browse/browsefeature.cpp | 15 +++++++-------- src/library/features/browse/browsefeature.h | 4 ++-- src/library/features/crates/cratefeature.cpp | 18 +++++++++--------- src/library/features/crates/cratefeature.h | 4 ++-- .../features/recording/recordingfeature.cpp | 6 +++--- .../features/recording/recordingfeature.h | 4 ++-- src/library/library.cpp | 10 +++++----- src/library/library.h | 7 ++++--- src/library/libraryfeature.cpp | 11 +++++------ src/library/libraryfeature.h | 8 ++++---- src/library/librarypanemanager.cpp | 10 +++++----- src/library/librarypanemanager.h | 2 +- src/library/librarysidebarexpandedmanager.cpp | 4 ++-- src/library/librarysidebarexpandedmanager.h | 2 +- src/skin/legacyskinparser.cpp | 8 ++++---- 21 files changed, 75 insertions(+), 78 deletions(-) diff --git a/src/library/features/analysis/analysisfeature.cpp b/src/library/features/analysis/analysisfeature.cpp index ff4833126dfb..630355633e23 100644 --- a/src/library/features/analysis/analysisfeature.cpp +++ b/src/library/features/analysis/analysisfeature.cpp @@ -61,9 +61,9 @@ QString AnalysisFeature::getSettingsName() const { return "AnalysisFeature"; } -parented_ptr AnalysisFeature::createPaneWidget(KeyboardEventFilter*, - int paneId, const parented_ptr& parent) { - parented_ptr pTable = createTableWidget(paneId, parent); +QWidget* AnalysisFeature::createPaneWidget(KeyboardEventFilter*, + int paneId, QWidget* parent) { + WTrackTableView* pTable = createTableWidget(paneId, parent); pTable->loadTrackModel(&m_analysisLibraryTableModel); connect(pTable->selectionModel(), SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)), diff --git a/src/library/features/analysis/analysisfeature.h b/src/library/features/analysis/analysisfeature.h index c3817a100ffe..98f48bc6db07 100644 --- a/src/library/features/analysis/analysisfeature.h +++ b/src/library/features/analysis/analysisfeature.h @@ -36,8 +36,8 @@ class AnalysisFeature : public LibraryFeature { bool dropAccept(QList urls, QObject* pSource); bool dragMoveAccept(QUrl url); - parented_ptr createPaneWidget(KeyboardEventFilter*, - int paneId, const parented_ptr& parent) override; + QWidget* createPaneWidget(KeyboardEventFilter*, + int paneId, QWidget* parent) override; QWidget* createInnerSidebarWidget(KeyboardEventFilter* pKeyboard) override; TreeItemModel* getChildModel(); diff --git a/src/library/features/autodj/autodjfeature.cpp b/src/library/features/autodj/autodjfeature.cpp index caa64f7a48cf..e56049091241 100644 --- a/src/library/features/autodj/autodjfeature.cpp +++ b/src/library/features/autodj/autodjfeature.cpp @@ -104,10 +104,9 @@ QString AutoDJFeature::getSettingsName() const { return "AutoDJFeature"; } -parented_ptr AutoDJFeature::createPaneWidget(KeyboardEventFilter*, - int paneId, const parented_ptr& parent) { - parented_ptr pTrackTableView = - createTableWidget(paneId, parent); +QWidget* AutoDJFeature::createPaneWidget(KeyboardEventFilter*, + int paneId, QWidget* parent) { + WTrackTableView* pTrackTableView = createTableWidget(paneId, parent); pTrackTableView->loadTrackModel(m_pAutoDJProcessor->getTableModel()); connect(pTrackTableView->selectionModel(), diff --git a/src/library/features/autodj/autodjfeature.h b/src/library/features/autodj/autodjfeature.h index d2d775ad7e7f..9ac94f39b829 100644 --- a/src/library/features/autodj/autodjfeature.h +++ b/src/library/features/autodj/autodjfeature.h @@ -46,8 +46,8 @@ class AutoDJFeature : public LibraryFeature { bool dropAccept(QList urls, QObject* pSource); bool dragMoveAccept(QUrl url); - parented_ptr createPaneWidget(KeyboardEventFilter*, - int paneId, const parented_ptr& parent) override; + QWidget* createPaneWidget(KeyboardEventFilter*, + int paneId, QWidget* parent) override; QWidget* createInnerSidebarWidget(KeyboardEventFilter* pKeyboard) override; TreeItemModel* getChildModel(); diff --git a/src/library/features/baseplaylist/baseplaylistfeature.cpp b/src/library/features/baseplaylist/baseplaylistfeature.cpp index a5827166b03b..254d4c385392 100644 --- a/src/library/features/baseplaylist/baseplaylistfeature.cpp +++ b/src/library/features/baseplaylist/baseplaylistfeature.cpp @@ -682,11 +682,10 @@ TreeItemModel* BasePlaylistFeature::getChildModel() { return m_childModel.get(); } -parented_ptr BasePlaylistFeature::createPaneWidget( - KeyboardEventFilter* pKeyboard, int paneId, - const parented_ptr& parent) { - auto pStack = make_parented(parent.get()); - m_panes[paneId] = pStack.get(); +QWidget* BasePlaylistFeature::createPaneWidget(KeyboardEventFilter* pKeyboard, + int paneId, QWidget* parent) { + auto pStack = make_parented(parent); + m_panes[paneId] = pStack.toWeakRef(); auto edit = make_parented(pStack.get()); edit->setHtml(getRootViewHtml()); @@ -696,10 +695,10 @@ parented_ptr BasePlaylistFeature::createPaneWidget( this, SLOT(htmlLinkClicked(const QUrl))); m_browseIndexByPaneId[paneId] = pStack->addWidget(edit.get()); - auto pTable = LibraryFeature::createPaneWidget(pKeyboard, paneId, pStack); - m_tableIndexByPaneId[paneId] = pStack->addWidget(pTable.get()); + QWidget* pTable = LibraryFeature::createPaneWidget(pKeyboard, paneId, pStack.get()); + m_tableIndexByPaneId[paneId] = pStack->addWidget(pTable); - return pStack; + return pStack.get(); } void BasePlaylistFeature::htmlLinkClicked(const QUrl& link) { diff --git a/src/library/features/baseplaylist/baseplaylistfeature.h b/src/library/features/baseplaylist/baseplaylistfeature.h index eb7c094a7d16..53f66e4ed71b 100644 --- a/src/library/features/baseplaylist/baseplaylistfeature.h +++ b/src/library/features/baseplaylist/baseplaylistfeature.h @@ -27,8 +27,8 @@ class BasePlaylistFeature : public LibraryFeature { TreeItemModel* getChildModel(); - parented_ptr createPaneWidget(KeyboardEventFilter*pKeyboard, - int paneId, const parented_ptr& parent) override; + QWidget* createPaneWidget(KeyboardEventFilter*pKeyboard, + int paneId, QWidget* parent) override; signals: void showPage(const QUrl& page); diff --git a/src/library/features/browse/browsefeature.cpp b/src/library/features/browse/browsefeature.cpp index 7846e840bdaa..34b039a23590 100644 --- a/src/library/features/browse/browsefeature.cpp +++ b/src/library/features/browse/browsefeature.cpp @@ -197,21 +197,20 @@ TreeItemModel* BrowseFeature::getChildModel() { return &m_childModel; } -parented_ptr BrowseFeature::createPaneWidget( - KeyboardEventFilter* pKeyboard, int paneId, - const parented_ptr& parent) { - auto pStack = make_parented(parent.get()); - m_panes[paneId] = pStack.get(); +QWidget* BrowseFeature::createPaneWidget(KeyboardEventFilter* pKeyboard, + int paneId, QWidget* parent) { + auto pStack = make_parented(parent); + m_panes[paneId] = pStack.toWeakRef(); auto pEdit = make_parented(pStack.get()); pEdit->setHtml(getRootViewHtml()); pEdit->installEventFilter(pKeyboard); m_idBrowse[paneId] = pStack->addWidget(pEdit.get()); - auto pTable = LibraryFeature::createPaneWidget(pKeyboard, paneId, pStack); - m_idTable[paneId] = pStack->addWidget(pTable.get()); + QWidget* pTable = LibraryFeature::createPaneWidget(pKeyboard, paneId, pStack.get()); + m_idTable[paneId] = pStack->addWidget(pTable); - return pStack; + return pStack.get(); } void BrowseFeature::activate() { diff --git a/src/library/features/browse/browsefeature.h b/src/library/features/browse/browsefeature.h index 9aba77ff45f1..f23e7a608b2c 100644 --- a/src/library/features/browse/browsefeature.h +++ b/src/library/features/browse/browsefeature.h @@ -40,8 +40,8 @@ class BrowseFeature : public LibraryFeature { QString getIconPath() override; QString getSettingsName() const override; - parented_ptr createPaneWidget(KeyboardEventFilter*pKeyboard, - int paneId, const parented_ptr& parent) override; + QWidget* createPaneWidget(KeyboardEventFilter*pKeyboard, + int paneId, QWidget* parent) override; TreeItemModel* getChildModel(); diff --git a/src/library/features/crates/cratefeature.cpp b/src/library/features/crates/cratefeature.cpp index edfe2c0a8a58..83506bd5d43a 100644 --- a/src/library/features/crates/cratefeature.cpp +++ b/src/library/features/crates/cratefeature.cpp @@ -250,14 +250,13 @@ bool CrateFeature::dragMoveAcceptChild(const QModelIndex& index, QUrl url) { Parser::isPlaylistFilenameSupported(url.toLocalFile()); } -parented_ptr CrateFeature::createPaneWidget( - KeyboardEventFilter* pKeyboard, int paneId, - const parented_ptr& parent) { - auto pContainer = make_parented(parent.get()); - m_panes[paneId] = pContainer.get(); +QWidget* CrateFeature::createPaneWidget(KeyboardEventFilter* pKeyboard, + int paneId, QWidget* parent) { + auto pContainer = make_parented(parent); + m_panes[paneId] = pContainer.toWeakRef(); auto pEdit = make_parented(pContainer.get()); - pEdit->setHtml(getRootViewHtml()); + pEdit->setHtml(formatRootViewHtml()); pEdit->setOpenLinks(false); pEdit->installEventFilter(pKeyboard); connect(pEdit.get(), SIGNAL(anchorClicked(const QUrl)), @@ -265,10 +264,11 @@ parented_ptr CrateFeature::createPaneWidget( m_idBrowse[paneId] = pContainer->addWidget(pEdit.get()); - auto pTable = LibraryFeature::createPaneWidget(pKeyboard, paneId, pContainer); - m_idTable[paneId] = pContainer->addWidget(pTable.get()); + QWidget* pTable = LibraryFeature::createPaneWidget(pKeyboard, paneId, + pContainer.get()); + m_idTable[paneId] = pContainer->addWidget(pTable); - return pContainer; + return pContainer.get(); } TreeItemModel* CrateFeature::getChildModel() { diff --git a/src/library/features/crates/cratefeature.h b/src/library/features/crates/cratefeature.h index 048a31dd044f..17c5d372831d 100644 --- a/src/library/features/crates/cratefeature.h +++ b/src/library/features/crates/cratefeature.h @@ -44,8 +44,8 @@ class CrateFeature : public LibraryFeature { QObject* pSource) override; bool dragMoveAcceptChild(const QModelIndex& index, QUrl url) override; - parented_ptr createPaneWidget(KeyboardEventFilter* pKeyboard, - int paneId, const parented_ptr& parent) override; + QWidget* createPaneWidget(KeyboardEventFilter* pKeyboard, + int paneId, QWidget* parent) override; TreeItemModel* getChildModel() override; diff --git a/src/library/features/recording/recordingfeature.cpp b/src/library/features/recording/recordingfeature.cpp index 5cb65ac94528..3762e061af2a 100644 --- a/src/library/features/recording/recordingfeature.cpp +++ b/src/library/features/recording/recordingfeature.cpp @@ -45,9 +45,9 @@ TreeItemModel* RecordingFeature::getChildModel() { return &m_childModel; } -parented_ptr RecordingFeature::createPaneWidget(KeyboardEventFilter*, - int paneId, const parented_ptr& parent) { - auto pTable = LibraryFeature::createTableWidget(paneId, parent); +QWidget* RecordingFeature::createPaneWidget(KeyboardEventFilter*, + int paneId, QWidget* parent) { + WTrackTableView* pTable = LibraryFeature::createTableWidget(paneId, parent); pTable->setSorting(false); return pTable; } diff --git a/src/library/features/recording/recordingfeature.h b/src/library/features/recording/recordingfeature.h index cc2b4ef056fb..f7b20684787d 100644 --- a/src/library/features/recording/recordingfeature.h +++ b/src/library/features/recording/recordingfeature.h @@ -32,8 +32,8 @@ class RecordingFeature : public LibraryFeature { QString getIconPath() override; QString getSettingsName() const override; - parented_ptr createPaneWidget(KeyboardEventFilter*, - int paneId, const parented_ptr& parent) override; + QWidget* createPaneWidget(KeyboardEventFilter*, int paneId, + QWidget* parent) override; QWidget* createInnerSidebarWidget(KeyboardEventFilter* pKeyboard) override; TreeItemModel* getChildModel(); diff --git a/src/library/library.cpp b/src/library/library.cpp index 9908d2034bf5..41849c8dde7a 100644 --- a/src/library/library.cpp +++ b/src/library/library.cpp @@ -137,7 +137,7 @@ void Library::bindSidebarButtons(WButtonBar* sidebar) { } } -void Library::bindPaneWidget(const parented_ptr& pPaneWidget, +void Library::bindPaneWidget(WLibraryPane* pPaneWidget, KeyboardEventFilter* pKeyboard, int paneId) { // Get the value once to avoid searching again in the hash @@ -153,10 +153,10 @@ void Library::bindPaneWidget(const parented_ptr& pPaneWidget, emit(setTrackTableRowHeight(m_iTrackTableRowHeight)); } -void Library::bindSidebarExpanded(const parented_ptr& expandedPane, +void Library::bindSidebarExpanded(WBaseLibrary* expandedPane, KeyboardEventFilter* pKeyboard) { //qDebug() << "Library::bindSidebarExpanded"; - m_pSidebarExpanded = new LibrarySidebarExpandedManager(this); + m_pSidebarExpanded = std::make_unique(this); m_pSidebarExpanded->addFeatures(m_features); m_pSidebarExpanded->bindPaneWidget(expandedPane, pKeyboard); } @@ -169,7 +169,7 @@ void Library::bindBreadCrumb(WLibraryBreadCrumb* pBreadCrumb, int paneId) { void Library::destroyInterface() { m_pSidebarExpanded->deleteLater(); - m_pSidebarExpanded = nullptr; + m_pSidebarExpanded.reset(nullptr); for (LibraryPaneManager* p : m_panes) { p->deleteLater(); @@ -295,7 +295,7 @@ void Library::paneFocused(LibraryPaneManager* pPane) { return; } - if (pPane != m_pSidebarExpanded) { + if (pPane != m_pSidebarExpanded.get()) { m_focusedPaneId = pPane->getPaneId(); pPane->getCurrentFeature()->setFeaturePaneId(m_focusedPaneId); VERIFY_OR_DEBUG_ASSERT(m_focusedPaneId != -1) { diff --git a/src/library/library.h b/src/library/library.h index 85de4f3b04f7..8ec87f3e465d 100644 --- a/src/library/library.h +++ b/src/library/library.h @@ -18,6 +18,7 @@ #include "recording/recordingmanager.h" #include "track/track.h" #include "util/parented_ptr.h" +#include "util/memory.h" class AnalysisFeature; class CrateFeature; @@ -60,9 +61,9 @@ class Library : public QObject { void bindSearchBar(WSearchLineEdit* searchLine, int id); void bindSidebarButtons(WButtonBar* sidebar); - void bindPaneWidget(const parented_ptr&libraryWidget, + void bindPaneWidget(WLibraryPane *libraryWidget, KeyboardEventFilter* pKeyboard, int paneId); - void bindSidebarExpanded(const parented_ptr&expandedPane, + void bindSidebarExpanded(WBaseLibrary *expandedPane, KeyboardEventFilter* pKeyboard); void bindBreadCrumb(WLibraryBreadCrumb *pBreadCrumb, int paneId); @@ -174,7 +175,7 @@ class Library : public QObject { QScopedPointer m_pKeyNotation; QHash m_panes; - LibraryPaneManager* m_pSidebarExpanded; + std::unique_ptr m_pSidebarExpanded; QList m_features; QSet m_collapsedPanes; QHash m_savedFeatures; diff --git a/src/library/libraryfeature.cpp b/src/library/libraryfeature.cpp index 6df1cdada627..e0c21195aefc 100644 --- a/src/library/libraryfeature.cpp +++ b/src/library/libraryfeature.cpp @@ -66,8 +66,8 @@ bool LibraryFeature::dragMoveAcceptChild(const QModelIndex &, QUrl) { return false; } -parented_ptr LibraryFeature::createPaneWidget(KeyboardEventFilter* pKeyboard, - int paneId, const parented_ptr& parent) { +QWidget *LibraryFeature::createPaneWidget(KeyboardEventFilter* pKeyboard, + int paneId, QWidget *parent) { Q_UNUSED(pKeyboard); return createTableWidget(paneId, parent); } @@ -176,10 +176,9 @@ QList LibraryFeature::getSavedQueries() const { return m_savedDAO.getSavedQueries(this); } -parented_ptr LibraryFeature::createTableWidget(int paneId, - const parented_ptr& parent) { +WTrackTableView* LibraryFeature::createTableWidget(int paneId, QWidget* parent) { auto pTrackTableView = make_parented( - parent.get(), m_pConfig, m_pTrackCollection, true); + parent, m_pConfig, m_pTrackCollection, true); m_trackTablesByPaneId[paneId] = pTrackTableView.get(); @@ -200,7 +199,7 @@ parented_ptr LibraryFeature::createTableWidget(int paneId, connect(m_pLibrary, SIGNAL(setTrackTableRowHeight(int)), pTrackTableView.get(), SLOT(setTrackTableRowHeight(int))); - return pTrackTableView; + return pTrackTableView.get(); } QWidget* LibraryFeature::createInnerSidebarWidget(KeyboardEventFilter *pKeyboard) { diff --git a/src/library/libraryfeature.h b/src/library/libraryfeature.h index 7d84e4e0e149..e6ceee449125 100644 --- a/src/library/libraryfeature.h +++ b/src/library/libraryfeature.h @@ -60,8 +60,8 @@ class LibraryFeature : public QObject { // Reimplement this to register custom views with the library widget // at the right pane. - virtual parented_ptr createPaneWidget(KeyboardEventFilter* pKeyboard, - int paneId, const parented_ptr& parent); + virtual QWidget* createPaneWidget(KeyboardEventFilter* pKeyboard, + int paneId, QWidget* parent); // Reimplement this to register custom views with the library widget, // at the sidebar expanded pane @@ -141,8 +141,8 @@ class LibraryFeature : public QObject { } // Creates a table widget with no model - parented_ptr createTableWidget(int paneId, - const parented_ptr& parent); + WTrackTableView *createTableWidget(int paneId, + QWidget *parent); // Creates a WLibrarySidebar widget with the getChildModel() function as // model diff --git a/src/library/librarypanemanager.cpp b/src/library/librarypanemanager.cpp index b25048a445b1..e72a81b12e28 100644 --- a/src/library/librarypanemanager.cpp +++ b/src/library/librarypanemanager.cpp @@ -19,10 +19,10 @@ LibraryPaneManager::LibraryPaneManager(int paneId, Library *pLibrary, QObject* p LibraryPaneManager::~LibraryPaneManager() { } -void LibraryPaneManager::bindPaneWidget(const parented_ptr& pPaneWidget, +void LibraryPaneManager::bindPaneWidget(WBaseLibrary* pPaneWidget, KeyboardEventFilter* pKeyboard) { //qDebug() << "LibraryPaneManager::bindLibraryWidget" << libraryWidget; - m_pPaneWidget = pPaneWidget.get(); + m_pPaneWidget = pPaneWidget; connect(m_pPaneWidget, SIGNAL(focused()), this, SLOT(slotPaneFocused())); @@ -35,9 +35,9 @@ void LibraryPaneManager::bindPaneWidget(const parented_ptr& pPaneW return; } for (LibraryFeature* f : m_features) { - parented_ptr pFeaturePaneWidget = f->createPaneWidget( - pKeyboard, m_paneId, make_parented(m_pPaneWidget)); - m_pPaneWidget->registerView(f, pFeaturePaneWidget.get()); + QWidget* pFeaturePaneWidget = f->createPaneWidget(pKeyboard, m_paneId, + m_pPaneWidget); + m_pPaneWidget->registerView(f, pFeaturePaneWidget); } } diff --git a/src/library/librarypanemanager.h b/src/library/librarypanemanager.h index 4273058d2229..7a7d4e6d3e4f 100644 --- a/src/library/librarypanemanager.h +++ b/src/library/librarypanemanager.h @@ -26,7 +26,7 @@ class LibraryPaneManager : public QObject { bool initialize(); // All features must be added before adding a pane - virtual void bindPaneWidget(const parented_ptr&pLibraryWidget, + virtual void bindPaneWidget(WBaseLibrary *pLibraryWidget, KeyboardEventFilter* pKeyboard); void bindSearchBar(WSearchLineEdit* pSearchBar); void setBreadCrumb(WLibraryBreadCrumb* pBreadCrumb); diff --git a/src/library/librarysidebarexpandedmanager.cpp b/src/library/librarysidebarexpandedmanager.cpp index dc4eb6d427aa..23d979c20497 100644 --- a/src/library/librarysidebarexpandedmanager.cpp +++ b/src/library/librarysidebarexpandedmanager.cpp @@ -7,9 +7,9 @@ LibrarySidebarExpandedManager::LibrarySidebarExpandedManager(Library *pLibrary, } -void LibrarySidebarExpandedManager::bindPaneWidget(const parented_ptr&sidebarWidget, +void LibrarySidebarExpandedManager::bindPaneWidget(WBaseLibrary *sidebarWidget, KeyboardEventFilter* pKeyboard) { - m_pPaneWidget = sidebarWidget.get(); + m_pPaneWidget = sidebarWidget; for (LibraryFeature* f : m_features) { QWidget* pPane = f->createSidebarWidget(pKeyboard); diff --git a/src/library/librarysidebarexpandedmanager.h b/src/library/librarysidebarexpandedmanager.h index 02c5c4a4a2e3..7a29eb9ada91 100644 --- a/src/library/librarysidebarexpandedmanager.h +++ b/src/library/librarysidebarexpandedmanager.h @@ -7,7 +7,7 @@ class LibrarySidebarExpandedManager : public LibraryPaneManager public: LibrarySidebarExpandedManager(Library* pLibrary, QObject* parent = nullptr); - void bindPaneWidget(const parented_ptr& sidebarWidget, + void bindPaneWidget(WBaseLibrary* sidebarWidget, KeyboardEventFilter* pKeyboard) override; }; diff --git a/src/skin/legacyskinparser.cpp b/src/skin/legacyskinparser.cpp index 31f35a68fa71..179a71aaf087 100644 --- a/src/skin/legacyskinparser.cpp +++ b/src/skin/legacyskinparser.cpp @@ -1286,7 +1286,7 @@ QWidget* LegacySkinParser::parseLibraryPane(const QDomElement& node) { pLibraryPaneWidget->installEventFilter( m_pControllerManager->getControllerLearningEventFilter()); - m_pLibrary->bindPaneWidget(pLibraryPaneWidget, m_pKeyboard, id); + m_pLibrary->bindPaneWidget(pLibraryPaneWidget.get(), m_pKeyboard, id); // This must come after the bindWidget or we will not style any of the // LibraryView's because they have not been added yet. @@ -1317,7 +1317,7 @@ QWidget* LegacySkinParser::parseLibrary(const QDomElement& node) { m_pControllerManager->getControllerLearningEventFilter()); pLayout->addWidget(pLibraryWidget.get()); - m_pLibrary->bindPaneWidget(pLibraryWidget, m_pKeyboard, m_paneId); + m_pLibrary->bindPaneWidget(pLibraryWidget.get(), m_pKeyboard, m_paneId); commonWidgetSetup(node, pLibraryWidget.get(), false); qDebug() << "LegacySkinParser::parseLibrary"; @@ -1351,7 +1351,7 @@ QWidget* LegacySkinParser::parseLibrarySidebar(const QDomElement& node) { auto pLibrarySidebarExpanded = make_parented(pContainer.get()); pLibrarySidebarExpanded->installEventFilter(m_pKeyboard); pLibrarySidebarExpanded->installEventFilter(m_pControllerManager->getControllerLearningEventFilter()); - m_pLibrary->bindSidebarExpanded(pLibrarySidebarExpanded, m_pKeyboard); + m_pLibrary->bindSidebarExpanded(pLibrarySidebarExpanded.get(), m_pKeyboard); pLayout->addWidget(pLibrarySidebarExpanded.get()); setupWidget(node, pLibrarySidebar.get()); @@ -1378,7 +1378,7 @@ QWidget* LegacySkinParser::parseLibrarySidebarExpanded(const QDomElement &node) auto pLibrarySidebarExpanded = make_parented(m_pParent); pLibrarySidebarExpanded->installEventFilter(m_pKeyboard); pLibrarySidebarExpanded->installEventFilter(m_pControllerManager->getControllerLearningEventFilter()); - m_pLibrary->bindSidebarExpanded(pLibrarySidebarExpanded, m_pKeyboard); + m_pLibrary->bindSidebarExpanded(pLibrarySidebarExpanded.get(), m_pKeyboard); commonWidgetSetup(node, pLibrarySidebarExpanded.get(), false); return pLibrarySidebarExpanded.get(); } From 91d2fc280f314a1e1812a4c7b985860907cec02b Mon Sep 17 00:00:00 2001 From: jmigual Date: Thu, 9 Feb 2017 20:46:18 +0100 Subject: [PATCH 08/13] Add parent to sidebar expanded --- src/library/libraryfeature.cpp | 28 +++++++++---------- src/library/libraryfeature.h | 5 ++-- src/library/librarysidebarexpandedmanager.cpp | 4 +-- 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/src/library/libraryfeature.cpp b/src/library/libraryfeature.cpp index e0c21195aefc..5d2d5c34e36e 100644 --- a/src/library/libraryfeature.cpp +++ b/src/library/libraryfeature.cpp @@ -66,41 +66,41 @@ bool LibraryFeature::dragMoveAcceptChild(const QModelIndex &, QUrl) { return false; } -QWidget *LibraryFeature::createPaneWidget(KeyboardEventFilter* pKeyboard, - int paneId, QWidget *parent) { +QWidget* LibraryFeature::createPaneWidget(KeyboardEventFilter* pKeyboard, + int paneId, QWidget* parent) { Q_UNUSED(pKeyboard); return createTableWidget(paneId, parent); } -QWidget *LibraryFeature::createSidebarWidget(KeyboardEventFilter* pKeyboard) { +QWidget* LibraryFeature::createSidebarWidget(KeyboardEventFilter* pKeyboard, QWidget* parent) { //qDebug() << "LibraryFeature::bindSidebarWidget"; - QFrame* pContainer = new QFrame(nullptr); + auto pContainer = make_parented(parent); pContainer->setContentsMargins(0,0,0,0); - QVBoxLayout* pLayout = new QVBoxLayout(pContainer); + auto pLayout = make_parented(pContainer.get()); pLayout->setContentsMargins(0,0,0,0); pLayout->setSpacing(0); - pContainer->setLayout(pLayout); + pContainer->setLayout(pLayout.get()); - QHBoxLayout* pLayoutTitle = new QHBoxLayout(pContainer); + auto pLayoutTitle = make_parented(pContainer.get()); - QLabel* pIcon = new QLabel(pContainer); + auto pIcon = make_parented(pContainer.get()); int height = pIcon->fontMetrics().height(); pIcon->setPixmap(getIcon().pixmap(height)); - pLayoutTitle->addWidget(pIcon); + pLayoutTitle->addWidget(pIcon.get()); - QLabel* pTitle = new QLabel(title().toString(), pContainer); - pLayoutTitle->addWidget(pTitle); + auto pTitle = make_parented(title().toString(), pContainer.get()); + pLayoutTitle->addWidget(pTitle.get()); pLayoutTitle->addSpacerItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum)); - pLayout->addLayout(pLayoutTitle); + pLayout->addLayout(pLayoutTitle.get()); QWidget* pSidebar = createInnerSidebarWidget(pKeyboard); - pSidebar->setParent(pContainer); + pSidebar->setParent(pContainer.get()); pLayout->addWidget(pSidebar); - return pContainer; + return pContainer.get(); } void LibraryFeature::setFeaturePaneId(int paneId) { diff --git a/src/library/libraryfeature.h b/src/library/libraryfeature.h index e6ceee449125..d6cf9d00f2a1 100644 --- a/src/library/libraryfeature.h +++ b/src/library/libraryfeature.h @@ -61,11 +61,12 @@ class LibraryFeature : public QObject { // Reimplement this to register custom views with the library widget // at the right pane. virtual QWidget* createPaneWidget(KeyboardEventFilter* pKeyboard, - int paneId, QWidget* parent); + int paneId, QWidget* parent); // Reimplement this to register custom views with the library widget, // at the sidebar expanded pane - virtual QWidget* createSidebarWidget(KeyboardEventFilter* pKeyboard); + virtual QWidget* createSidebarWidget(KeyboardEventFilter* pKeyboard, + QWidget* parent); virtual TreeItemModel* getChildModel() = 0; diff --git a/src/library/librarysidebarexpandedmanager.cpp b/src/library/librarysidebarexpandedmanager.cpp index 23d979c20497..e69a71671997 100644 --- a/src/library/librarysidebarexpandedmanager.cpp +++ b/src/library/librarysidebarexpandedmanager.cpp @@ -7,12 +7,12 @@ LibrarySidebarExpandedManager::LibrarySidebarExpandedManager(Library *pLibrary, } -void LibrarySidebarExpandedManager::bindPaneWidget(WBaseLibrary *sidebarWidget, +void LibrarySidebarExpandedManager::bindPaneWidget(WBaseLibrary* sidebarWidget, KeyboardEventFilter* pKeyboard) { m_pPaneWidget = sidebarWidget; for (LibraryFeature* f : m_features) { - QWidget* pPane = f->createSidebarWidget(pKeyboard); + QWidget* pPane = f->createSidebarWidget(pKeyboard, m_pPaneWidget); if (pPane == nullptr) { continue; } From 77dec05a1f9b14f09117c219ed752f55ab60b267 Mon Sep 17 00:00:00 2001 From: jmigual Date: Fri, 10 Feb 2017 09:34:41 +0100 Subject: [PATCH 09/13] Return parented_ptr in createPaneWidget --- src/library/features/analysis/analysisfeature.cpp | 6 +++--- src/library/features/analysis/analysisfeature.h | 4 ++-- src/library/features/autodj/autodjfeature.cpp | 6 +++--- src/library/features/autodj/autodjfeature.h | 4 ++-- .../features/baseplaylist/baseplaylistfeature.cpp | 8 ++++---- .../features/baseplaylist/baseplaylistfeature.h | 4 ++-- src/library/features/browse/browsefeature.cpp | 10 +++++----- src/library/features/browse/browsefeature.h | 4 ++-- src/library/features/crates/cratefeature.cpp | 12 ++++++------ src/library/features/crates/cratefeature.h | 4 ++-- src/library/features/recording/recordingfeature.cpp | 6 +++--- src/library/features/recording/recordingfeature.h | 4 ++-- src/library/libraryfeature.cpp | 6 +++--- src/library/libraryfeature.h | 7 +++---- src/library/librarypanemanager.cpp | 6 +++--- 15 files changed, 45 insertions(+), 46 deletions(-) diff --git a/src/library/features/analysis/analysisfeature.cpp b/src/library/features/analysis/analysisfeature.cpp index 630355633e23..10d3fe9f3d96 100644 --- a/src/library/features/analysis/analysisfeature.cpp +++ b/src/library/features/analysis/analysisfeature.cpp @@ -61,9 +61,9 @@ QString AnalysisFeature::getSettingsName() const { return "AnalysisFeature"; } -QWidget* AnalysisFeature::createPaneWidget(KeyboardEventFilter*, - int paneId, QWidget* parent) { - WTrackTableView* pTable = createTableWidget(paneId, parent); +parented_ptr AnalysisFeature::createPaneWidget(KeyboardEventFilter*, + int paneId, QWidget* parent) { + auto pTable = createTableWidget(paneId, parent); pTable->loadTrackModel(&m_analysisLibraryTableModel); connect(pTable->selectionModel(), SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)), diff --git a/src/library/features/analysis/analysisfeature.h b/src/library/features/analysis/analysisfeature.h index 98f48bc6db07..00a6e32001e1 100644 --- a/src/library/features/analysis/analysisfeature.h +++ b/src/library/features/analysis/analysisfeature.h @@ -36,8 +36,8 @@ class AnalysisFeature : public LibraryFeature { bool dropAccept(QList urls, QObject* pSource); bool dragMoveAccept(QUrl url); - QWidget* createPaneWidget(KeyboardEventFilter*, - int paneId, QWidget* parent) override; + parented_ptr createPaneWidget(KeyboardEventFilter*, int paneId, + QWidget* parent) override; QWidget* createInnerSidebarWidget(KeyboardEventFilter* pKeyboard) override; TreeItemModel* getChildModel(); diff --git a/src/library/features/autodj/autodjfeature.cpp b/src/library/features/autodj/autodjfeature.cpp index e56049091241..c3d4e2065a1b 100644 --- a/src/library/features/autodj/autodjfeature.cpp +++ b/src/library/features/autodj/autodjfeature.cpp @@ -104,9 +104,9 @@ QString AutoDJFeature::getSettingsName() const { return "AutoDJFeature"; } -QWidget* AutoDJFeature::createPaneWidget(KeyboardEventFilter*, - int paneId, QWidget* parent) { - WTrackTableView* pTrackTableView = createTableWidget(paneId, parent); +parented_ptr AutoDJFeature::createPaneWidget(KeyboardEventFilter*, + int paneId, QWidget* parent) { + auto pTrackTableView = createTableWidget(paneId, parent); pTrackTableView->loadTrackModel(m_pAutoDJProcessor->getTableModel()); connect(pTrackTableView->selectionModel(), diff --git a/src/library/features/autodj/autodjfeature.h b/src/library/features/autodj/autodjfeature.h index 9ac94f39b829..58fbda3168d2 100644 --- a/src/library/features/autodj/autodjfeature.h +++ b/src/library/features/autodj/autodjfeature.h @@ -46,8 +46,8 @@ class AutoDJFeature : public LibraryFeature { bool dropAccept(QList urls, QObject* pSource); bool dragMoveAccept(QUrl url); - QWidget* createPaneWidget(KeyboardEventFilter*, - int paneId, QWidget* parent) override; + parented_ptr createPaneWidget(KeyboardEventFilter*, int paneId, + QWidget* parent) override; QWidget* createInnerSidebarWidget(KeyboardEventFilter* pKeyboard) override; TreeItemModel* getChildModel(); diff --git a/src/library/features/baseplaylist/baseplaylistfeature.cpp b/src/library/features/baseplaylist/baseplaylistfeature.cpp index 254d4c385392..5295333f072c 100644 --- a/src/library/features/baseplaylist/baseplaylistfeature.cpp +++ b/src/library/features/baseplaylist/baseplaylistfeature.cpp @@ -682,7 +682,7 @@ TreeItemModel* BasePlaylistFeature::getChildModel() { return m_childModel.get(); } -QWidget* BasePlaylistFeature::createPaneWidget(KeyboardEventFilter* pKeyboard, +parented_ptr BasePlaylistFeature::createPaneWidget(KeyboardEventFilter* pKeyboard, int paneId, QWidget* parent) { auto pStack = make_parented(parent); m_panes[paneId] = pStack.toWeakRef(); @@ -695,10 +695,10 @@ QWidget* BasePlaylistFeature::createPaneWidget(KeyboardEventFilter* pKeyboard, this, SLOT(htmlLinkClicked(const QUrl))); m_browseIndexByPaneId[paneId] = pStack->addWidget(edit.get()); - QWidget* pTable = LibraryFeature::createPaneWidget(pKeyboard, paneId, pStack.get()); - m_tableIndexByPaneId[paneId] = pStack->addWidget(pTable); + auto pTable = LibraryFeature::createPaneWidget(pKeyboard, paneId, pStack.get()); + m_tableIndexByPaneId[paneId] = pStack->addWidget(pTable.get()); - return pStack.get(); + return pStack; } void BasePlaylistFeature::htmlLinkClicked(const QUrl& link) { diff --git a/src/library/features/baseplaylist/baseplaylistfeature.h b/src/library/features/baseplaylist/baseplaylistfeature.h index 53f66e4ed71b..37a097710324 100644 --- a/src/library/features/baseplaylist/baseplaylistfeature.h +++ b/src/library/features/baseplaylist/baseplaylistfeature.h @@ -27,8 +27,8 @@ class BasePlaylistFeature : public LibraryFeature { TreeItemModel* getChildModel(); - QWidget* createPaneWidget(KeyboardEventFilter*pKeyboard, - int paneId, QWidget* parent) override; + parented_ptr createPaneWidget(KeyboardEventFilter*pKeyboard, + int paneId, QWidget* parent) override; signals: void showPage(const QUrl& page); diff --git a/src/library/features/browse/browsefeature.cpp b/src/library/features/browse/browsefeature.cpp index 34b039a23590..79a86d70fcb6 100644 --- a/src/library/features/browse/browsefeature.cpp +++ b/src/library/features/browse/browsefeature.cpp @@ -197,8 +197,8 @@ TreeItemModel* BrowseFeature::getChildModel() { return &m_childModel; } -QWidget* BrowseFeature::createPaneWidget(KeyboardEventFilter* pKeyboard, - int paneId, QWidget* parent) { +parented_ptr BrowseFeature::createPaneWidget(KeyboardEventFilter* pKeyboard, + int paneId, QWidget* parent) { auto pStack = make_parented(parent); m_panes[paneId] = pStack.toWeakRef(); @@ -207,10 +207,10 @@ QWidget* BrowseFeature::createPaneWidget(KeyboardEventFilter* pKeyboard, pEdit->installEventFilter(pKeyboard); m_idBrowse[paneId] = pStack->addWidget(pEdit.get()); - QWidget* pTable = LibraryFeature::createPaneWidget(pKeyboard, paneId, pStack.get()); - m_idTable[paneId] = pStack->addWidget(pTable); + auto pTable = LibraryFeature::createPaneWidget(pKeyboard, paneId, pStack.get()); + m_idTable[paneId] = pStack->addWidget(pTable.get()); - return pStack.get(); + return pStack; } void BrowseFeature::activate() { diff --git a/src/library/features/browse/browsefeature.h b/src/library/features/browse/browsefeature.h index f23e7a608b2c..51ce6826b697 100644 --- a/src/library/features/browse/browsefeature.h +++ b/src/library/features/browse/browsefeature.h @@ -40,8 +40,8 @@ class BrowseFeature : public LibraryFeature { QString getIconPath() override; QString getSettingsName() const override; - QWidget* createPaneWidget(KeyboardEventFilter*pKeyboard, - int paneId, QWidget* parent) override; + parented_ptr createPaneWidget(KeyboardEventFilter*pKeyboard, + int paneId, QWidget* parent) override; TreeItemModel* getChildModel(); diff --git a/src/library/features/crates/cratefeature.cpp b/src/library/features/crates/cratefeature.cpp index 83506bd5d43a..b25271ec7c65 100644 --- a/src/library/features/crates/cratefeature.cpp +++ b/src/library/features/crates/cratefeature.cpp @@ -250,8 +250,8 @@ bool CrateFeature::dragMoveAcceptChild(const QModelIndex& index, QUrl url) { Parser::isPlaylistFilenameSupported(url.toLocalFile()); } -QWidget* CrateFeature::createPaneWidget(KeyboardEventFilter* pKeyboard, - int paneId, QWidget* parent) { +parented_ptr CrateFeature::createPaneWidget(KeyboardEventFilter* pKeyboard, + int paneId, QWidget* parent) { auto pContainer = make_parented(parent); m_panes[paneId] = pContainer.toWeakRef(); @@ -264,11 +264,11 @@ QWidget* CrateFeature::createPaneWidget(KeyboardEventFilter* pKeyboard, m_idBrowse[paneId] = pContainer->addWidget(pEdit.get()); - QWidget* pTable = LibraryFeature::createPaneWidget(pKeyboard, paneId, - pContainer.get()); - m_idTable[paneId] = pContainer->addWidget(pTable); + auto pTable = LibraryFeature::createPaneWidget(pKeyboard, paneId, + pContainer.get()); + m_idTable[paneId] = pContainer->addWidget(pTable.get()); - return pContainer.get(); + return pContainer; } TreeItemModel* CrateFeature::getChildModel() { diff --git a/src/library/features/crates/cratefeature.h b/src/library/features/crates/cratefeature.h index 17c5d372831d..d640740fd92b 100644 --- a/src/library/features/crates/cratefeature.h +++ b/src/library/features/crates/cratefeature.h @@ -44,8 +44,8 @@ class CrateFeature : public LibraryFeature { QObject* pSource) override; bool dragMoveAcceptChild(const QModelIndex& index, QUrl url) override; - QWidget* createPaneWidget(KeyboardEventFilter* pKeyboard, - int paneId, QWidget* parent) override; + parented_ptr createPaneWidget(KeyboardEventFilter* pKeyboard, + int paneId, QWidget* parent) override; TreeItemModel* getChildModel() override; diff --git a/src/library/features/recording/recordingfeature.cpp b/src/library/features/recording/recordingfeature.cpp index 3762e061af2a..6157fa1dfb1d 100644 --- a/src/library/features/recording/recordingfeature.cpp +++ b/src/library/features/recording/recordingfeature.cpp @@ -45,9 +45,9 @@ TreeItemModel* RecordingFeature::getChildModel() { return &m_childModel; } -QWidget* RecordingFeature::createPaneWidget(KeyboardEventFilter*, - int paneId, QWidget* parent) { - WTrackTableView* pTable = LibraryFeature::createTableWidget(paneId, parent); +parented_ptr RecordingFeature::createPaneWidget(KeyboardEventFilter*, + int paneId, QWidget* parent) { + auto pTable = LibraryFeature::createTableWidget(paneId, parent); pTable->setSorting(false); return pTable; } diff --git a/src/library/features/recording/recordingfeature.h b/src/library/features/recording/recordingfeature.h index f7b20684787d..bffa599e46bf 100644 --- a/src/library/features/recording/recordingfeature.h +++ b/src/library/features/recording/recordingfeature.h @@ -32,8 +32,8 @@ class RecordingFeature : public LibraryFeature { QString getIconPath() override; QString getSettingsName() const override; - QWidget* createPaneWidget(KeyboardEventFilter*, int paneId, - QWidget* parent) override; + parented_ptr createPaneWidget(KeyboardEventFilter*, int paneId, + QWidget* parent) override; QWidget* createInnerSidebarWidget(KeyboardEventFilter* pKeyboard) override; TreeItemModel* getChildModel(); diff --git a/src/library/libraryfeature.cpp b/src/library/libraryfeature.cpp index 5d2d5c34e36e..279251c1fc38 100644 --- a/src/library/libraryfeature.cpp +++ b/src/library/libraryfeature.cpp @@ -66,7 +66,7 @@ bool LibraryFeature::dragMoveAcceptChild(const QModelIndex &, QUrl) { return false; } -QWidget* LibraryFeature::createPaneWidget(KeyboardEventFilter* pKeyboard, +parented_ptr LibraryFeature::createPaneWidget(KeyboardEventFilter* pKeyboard, int paneId, QWidget* parent) { Q_UNUSED(pKeyboard); return createTableWidget(paneId, parent); @@ -176,7 +176,7 @@ QList LibraryFeature::getSavedQueries() const { return m_savedDAO.getSavedQueries(this); } -WTrackTableView* LibraryFeature::createTableWidget(int paneId, QWidget* parent) { +parented_ptr LibraryFeature::createTableWidget(int paneId, QWidget* parent) { auto pTrackTableView = make_parented( parent, m_pConfig, m_pTrackCollection, true); @@ -199,7 +199,7 @@ WTrackTableView* LibraryFeature::createTableWidget(int paneId, QWidget* parent) connect(m_pLibrary, SIGNAL(setTrackTableRowHeight(int)), pTrackTableView.get(), SLOT(setTrackTableRowHeight(int))); - return pTrackTableView.get(); + return pTrackTableView; } QWidget* LibraryFeature::createInnerSidebarWidget(KeyboardEventFilter *pKeyboard) { diff --git a/src/library/libraryfeature.h b/src/library/libraryfeature.h index d6cf9d00f2a1..e037424925dc 100644 --- a/src/library/libraryfeature.h +++ b/src/library/libraryfeature.h @@ -60,8 +60,8 @@ class LibraryFeature : public QObject { // Reimplement this to register custom views with the library widget // at the right pane. - virtual QWidget* createPaneWidget(KeyboardEventFilter* pKeyboard, - int paneId, QWidget* parent); + virtual parented_ptr createPaneWidget(KeyboardEventFilter* pKeyboard, + int paneId, QWidget* parent); // Reimplement this to register custom views with the library widget, // at the sidebar expanded pane @@ -142,8 +142,7 @@ class LibraryFeature : public QObject { } // Creates a table widget with no model - WTrackTableView *createTableWidget(int paneId, - QWidget *parent); + parented_ptr createTableWidget(int paneId, QWidget *parent); // Creates a WLibrarySidebar widget with the getChildModel() function as // model diff --git a/src/library/librarypanemanager.cpp b/src/library/librarypanemanager.cpp index e72a81b12e28..2bd48bf0bda3 100644 --- a/src/library/librarypanemanager.cpp +++ b/src/library/librarypanemanager.cpp @@ -35,9 +35,9 @@ void LibraryPaneManager::bindPaneWidget(WBaseLibrary* pPaneWidget, return; } for (LibraryFeature* f : m_features) { - QWidget* pFeaturePaneWidget = f->createPaneWidget(pKeyboard, m_paneId, - m_pPaneWidget); - m_pPaneWidget->registerView(f, pFeaturePaneWidget); + auto pFeaturePaneWidget = f->createPaneWidget(pKeyboard, m_paneId, + m_pPaneWidget); + m_pPaneWidget->registerView(f, pFeaturePaneWidget.get()); } } From 1fa163ecc76a2188ea0df659dd0f4347b828daf0 Mon Sep 17 00:00:00 2001 From: jmigual Date: Fri, 10 Feb 2017 10:06:51 +0100 Subject: [PATCH 10/13] Return parented_ptr in createSidebarWidget() --- .../features/analysis/analysisfeature.cpp | 9 ++-- .../features/analysis/analysisfeature.h | 3 +- src/library/features/autodj/autodjfeature.cpp | 18 ++++---- src/library/features/autodj/autodjfeature.h | 3 +- .../features/history/historyfeature.cpp | 8 ++-- src/library/features/history/historyfeature.h | 3 +- .../maintenance/maintenancefeature.cpp | 14 ++++-- .../features/maintenance/maintenancefeature.h | 4 +- .../mixxxlibrary/mixxxlibraryfeature.cpp | 8 ++-- .../mixxxlibrary/mixxxlibraryfeature.h | 3 +- .../features/recording/recordingfeature.cpp | 13 +++--- .../features/recording/recordingfeature.h | 3 +- src/library/libraryfeature.cpp | 46 +++++++++---------- src/library/libraryfeature.h | 8 ++-- src/library/librarysidebarexpandedmanager.cpp | 7 ++- 15 files changed, 83 insertions(+), 67 deletions(-) diff --git a/src/library/features/analysis/analysisfeature.cpp b/src/library/features/analysis/analysisfeature.cpp index 10d3fe9f3d96..23f3b9a630b7 100644 --- a/src/library/features/analysis/analysisfeature.cpp +++ b/src/library/features/analysis/analysisfeature.cpp @@ -73,9 +73,11 @@ parented_ptr AnalysisFeature::createPaneWidget(KeyboardEventFilter*, return pTable; } -QWidget* AnalysisFeature::createInnerSidebarWidget(KeyboardEventFilter* pKeyboard) { - m_pAnalysisView = new DlgAnalysis(nullptr, this, m_pTrackCollection); +parented_ptr AnalysisFeature::createInnerSidebarWidget( + KeyboardEventFilter* pKeyboard, QWidget* parent) { + auto pAnalysisView = make_parented(parent, this, m_pTrackCollection); + m_pAnalysisView = pAnalysisView.toWeakRef(); m_pAnalysisView->setTableModel(&m_analysisLibraryTableModel); connect(this, SIGNAL(analysisActive(bool)), @@ -88,9 +90,10 @@ QWidget* AnalysisFeature::createInnerSidebarWidget(KeyboardEventFilter* pKeyboar // Let the DlgAnalysis know whether or not analysis is active. bool bAnalysisActive = m_pAnalyzerQueue != nullptr; emit(analysisActive(bAnalysisActive)); + m_pAnalysisView->onShow(); - return m_pAnalysisView; + return pAnalysisView; } TreeItemModel* AnalysisFeature::getChildModel() { diff --git a/src/library/features/analysis/analysisfeature.h b/src/library/features/analysis/analysisfeature.h index 00a6e32001e1..28da30f30a59 100644 --- a/src/library/features/analysis/analysisfeature.h +++ b/src/library/features/analysis/analysisfeature.h @@ -38,7 +38,8 @@ class AnalysisFeature : public LibraryFeature { parented_ptr createPaneWidget(KeyboardEventFilter*, int paneId, QWidget* parent) override; - QWidget* createInnerSidebarWidget(KeyboardEventFilter* pKeyboard) override; + parented_ptr createInnerSidebarWidget(KeyboardEventFilter* pKeyboard, + QWidget* parent) override; TreeItemModel* getChildModel(); void refreshLibraryModels(); diff --git a/src/library/features/autodj/autodjfeature.cpp b/src/library/features/autodj/autodjfeature.cpp index c3d4e2065a1b..e81a0fe70aa0 100644 --- a/src/library/features/autodj/autodjfeature.cpp +++ b/src/library/features/autodj/autodjfeature.cpp @@ -117,26 +117,26 @@ parented_ptr AutoDJFeature::createPaneWidget(KeyboardEventFilter*, return pTrackTableView; } -QWidget* AutoDJFeature::createInnerSidebarWidget(KeyboardEventFilter* pKeyboard) { - QTabWidget* pContainer = new QTabWidget(nullptr); +parented_ptr AutoDJFeature::createInnerSidebarWidget( + KeyboardEventFilter* pKeyboard, QWidget* parent) { + auto pContainer = make_parented(parent); // now the icon loader is set up and get an icon m_pCratesTreeItem->setIcon(WPixmapStore::getLibraryIcon( ":/images/library/ic_library_crates.png")); // Add controls - m_pAutoDJView = new DlgAutoDJ(pContainer, m_pAutoDJProcessor); + auto pAutoDJView = make_parented(pContainer.get(), m_pAutoDJProcessor); + m_pAutoDJView = pAutoDJView.toWeakRef(); m_pAutoDJView->installEventFilter(pKeyboard); - QScrollArea* pScroll = new QScrollArea(pContainer); + auto pScroll = make_parented(pContainer.get()); pScroll->setWidget(m_pAutoDJView); pScroll->setWidgetResizable(true); - pContainer->addTab(pScroll, tr("Controls")); + pContainer->addTab(pScroll.get(), tr("Controls")); // Add drop target - WLibrarySidebar* pSidebar = createLibrarySidebarWidget(pKeyboard); - pSidebar->setParent(pContainer); - - pContainer->addTab(pSidebar, tr("Track source")); + auto pSidebar = createLibrarySidebarWidget(pContainer.get()); + pContainer->addTab(pSidebar.get(), tr("Track source")); // Be informed when the user wants to add another random track. connect(m_pAutoDJProcessor,SIGNAL(randomTrackRequested(int)), diff --git a/src/library/features/autodj/autodjfeature.h b/src/library/features/autodj/autodjfeature.h index 58fbda3168d2..3ff3e2dd93e5 100644 --- a/src/library/features/autodj/autodjfeature.h +++ b/src/library/features/autodj/autodjfeature.h @@ -48,7 +48,8 @@ class AutoDJFeature : public LibraryFeature { parented_ptr createPaneWidget(KeyboardEventFilter*, int paneId, QWidget* parent) override; - QWidget* createInnerSidebarWidget(KeyboardEventFilter* pKeyboard) override; + parented_ptr createInnerSidebarWidget(KeyboardEventFilter* pKeyboard, + QWidget* parent) override; TreeItemModel* getChildModel(); diff --git a/src/library/features/history/historyfeature.cpp b/src/library/features/history/historyfeature.cpp index bc2ff4d204bb..4a307c1ec07f 100644 --- a/src/library/features/history/historyfeature.cpp +++ b/src/library/features/history/historyfeature.cpp @@ -199,10 +199,12 @@ void HistoryFeature::slotGetNewPlaylist() { showTrackModel(m_pPlaylistTableModel); } -QWidget* HistoryFeature::createInnerSidebarWidget(KeyboardEventFilter* pKeyboard) { - m_pSidebar = createLibrarySidebarWidget(pKeyboard); +parented_ptr HistoryFeature::createInnerSidebarWidget( + KeyboardEventFilter*, QWidget* parent) { + auto pSidebar = createLibrarySidebarWidget(parent); + m_pSidebar = pSidebar.toWeakRef(); m_pSidebar->expandAll(); - return m_pSidebar; + return pSidebar; } void HistoryFeature::slotJoinWithNext() { diff --git a/src/library/features/history/historyfeature.h b/src/library/features/history/historyfeature.h index 9db20406c56f..aaa9c14108fb 100644 --- a/src/library/features/history/historyfeature.h +++ b/src/library/features/history/historyfeature.h @@ -32,7 +32,8 @@ class HistoryFeature : public BasePlaylistFeature { void slotGetNewPlaylist(); protected: - QWidget* createInnerSidebarWidget(KeyboardEventFilter* pKeyboard) override; + parented_ptr createInnerSidebarWidget(KeyboardEventFilter*, + QWidget* parent) override; void buildPlaylistList() override; QModelIndex constructChildModel(int selected_id); diff --git a/src/library/features/maintenance/maintenancefeature.cpp b/src/library/features/maintenance/maintenancefeature.cpp index 32345c289281..564bfd14c57c 100644 --- a/src/library/features/maintenance/maintenancefeature.cpp +++ b/src/library/features/maintenance/maintenancefeature.cpp @@ -78,21 +78,25 @@ void MaintenanceFeature::selectAll() { } } -QWidget* MaintenanceFeature::createInnerSidebarWidget(KeyboardEventFilter* pKeyboard) { +parented_ptr MaintenanceFeature::createInnerSidebarWidget( + KeyboardEventFilter* pKeyboard, QWidget* parent) { // The inner widget is a tab with the hidden and the missing controls - m_pTab = new QTabWidget(nullptr); + auto pTab = make_parented(parent); + m_pTab = pTab.toWeakRef(); m_pTab->installEventFilter(pKeyboard); connect(m_pTab, SIGNAL(currentChanged(int)), this, SLOT(slotTabIndexChanged(int))); - m_pHiddenView = new DlgHidden(m_pTab); + auto pHiddenView = make_parented(m_pTab); + m_pHiddenView = pHiddenView.toWeakRef(); m_pHiddenView->setTableModel(getHiddenTableModel()); m_pHiddenView->installEventFilter(pKeyboard); connect(m_pHiddenView, SIGNAL(unhide()), this, SLOT(slotUnhideHidden())); connect(m_pHiddenView, SIGNAL(purge()), this, SLOT(slotPurge())); connect(m_pHiddenView, SIGNAL(selectAll()), this, SLOT(selectAll())); - m_pMissingView = new DlgMissing(m_pTab); + auto pMissingView = make_parented(m_pTab); + m_pMissingView = pMissingView.toWeakRef(); m_pMissingView->setTableModel(getMissingTableModel()); m_pMissingView->installEventFilter(pKeyboard); connect(m_pMissingView, SIGNAL(purge()), this, SLOT(slotPurge())); @@ -101,7 +105,7 @@ QWidget* MaintenanceFeature::createInnerSidebarWidget(KeyboardEventFilter* pKeyb m_idExpandedHidden = m_pTab->addTab(m_pHiddenView, kHiddenTitle); m_idExpandedMissing = m_pTab->addTab(m_pMissingView, kMissingTitle); - return m_pTab; + return pTab; } void MaintenanceFeature::slotTabIndexChanged(int index) { diff --git a/src/library/features/maintenance/maintenancefeature.h b/src/library/features/maintenance/maintenancefeature.h index 820e549c4efd..f91325cd6319 100644 --- a/src/library/features/maintenance/maintenancefeature.h +++ b/src/library/features/maintenance/maintenancefeature.h @@ -31,8 +31,8 @@ class MaintenanceFeature : public LibraryFeature void selectAll(); protected: - - QWidget* createInnerSidebarWidget(KeyboardEventFilter* pKeyboard); + parented_ptr createInnerSidebarWidget(KeyboardEventFilter* pKeyboard, + QWidget* parent); private: diff --git a/src/library/features/mixxxlibrary/mixxxlibraryfeature.cpp b/src/library/features/mixxxlibrary/mixxxlibraryfeature.cpp index 63134f74353a..7aad419b7907 100644 --- a/src/library/features/mixxxlibrary/mixxxlibraryfeature.cpp +++ b/src/library/features/mixxxlibrary/mixxxlibraryfeature.cpp @@ -140,11 +140,13 @@ TreeItemModel* MixxxLibraryFeature::getChildModel() { return m_pChildModel; } -QWidget* MixxxLibraryFeature::createInnerSidebarWidget(KeyboardEventFilter* pKeyboard) { - m_pSidebar = createLibrarySidebarWidget(pKeyboard); +parented_ptr MixxxLibraryFeature::createInnerSidebarWidget( + KeyboardEventFilter*, QWidget* parent) { + auto pSidebaar = createLibrarySidebarWidget(parent); + m_pSidebar = pSidebaar.toWeakRef(); m_pSidebar->setIconSize(m_pChildModel->getDefaultIconSize()); m_pChildModel->reloadTree(); - return m_pSidebar; + return pSidebaar; } void MixxxLibraryFeature::refreshLibraryModels() { diff --git a/src/library/features/mixxxlibrary/mixxxlibraryfeature.h b/src/library/features/mixxxlibrary/mixxxlibraryfeature.h index e83df973af77..3deab1972610 100644 --- a/src/library/features/mixxxlibrary/mixxxlibraryfeature.h +++ b/src/library/features/mixxxlibrary/mixxxlibraryfeature.h @@ -48,7 +48,8 @@ class MixxxLibraryFeature : public LibraryFeature { bool dropAccept(QList urls, QObject* pSource); bool dragMoveAccept(QUrl url); TreeItemModel* getChildModel(); - QWidget* createInnerSidebarWidget(KeyboardEventFilter* pKeyboard) override; + parented_ptr createInnerSidebarWidget(KeyboardEventFilter*, + QWidget* parent) override; public slots: void activate() override; diff --git a/src/library/features/recording/recordingfeature.cpp b/src/library/features/recording/recordingfeature.cpp index 6157fa1dfb1d..fa44c848df94 100644 --- a/src/library/features/recording/recordingfeature.cpp +++ b/src/library/features/recording/recordingfeature.cpp @@ -52,16 +52,17 @@ parented_ptr RecordingFeature::createPaneWidget(KeyboardEventFilter*, return pTable; } -QWidget* RecordingFeature::createInnerSidebarWidget( - KeyboardEventFilter* pKeyboard) { - m_pRecordingView = new DlgRecording(nullptr, - m_pTrackCollection, - m_pRecordingManager); +parented_ptr RecordingFeature::createInnerSidebarWidget( + KeyboardEventFilter* pKeyboard, QWidget* parent) { + auto pRecordingView = make_parented(parent, + m_pTrackCollection, + m_pRecordingManager); + m_pRecordingView = pRecordingView.toWeakRef(); m_pRecordingView->installEventFilter(pKeyboard); m_pRecordingView->setBrowseTableModel(getBrowseTableModel()); m_pRecordingView->setProxyTrackModel(getProxyTrackModel()); - return m_pRecordingView; + return pRecordingView; } diff --git a/src/library/features/recording/recordingfeature.h b/src/library/features/recording/recordingfeature.h index bffa599e46bf..ddcf542c59f4 100644 --- a/src/library/features/recording/recordingfeature.h +++ b/src/library/features/recording/recordingfeature.h @@ -34,7 +34,8 @@ class RecordingFeature : public LibraryFeature { parented_ptr createPaneWidget(KeyboardEventFilter*, int paneId, QWidget* parent) override; - QWidget* createInnerSidebarWidget(KeyboardEventFilter* pKeyboard) override; + parented_ptr createInnerSidebarWidget(KeyboardEventFilter* pKeyboard, + QWidget* parent) override; TreeItemModel* getChildModel(); diff --git a/src/library/libraryfeature.cpp b/src/library/libraryfeature.cpp index 279251c1fc38..f3e2e02a126d 100644 --- a/src/library/libraryfeature.cpp +++ b/src/library/libraryfeature.cpp @@ -72,7 +72,7 @@ parented_ptr LibraryFeature::createPaneWidget(KeyboardEventFilter* pKey return createTableWidget(paneId, parent); } -QWidget* LibraryFeature::createSidebarWidget(KeyboardEventFilter* pKeyboard, QWidget* parent) { +parented_ptr LibraryFeature::createSidebarWidget(KeyboardEventFilter* pKeyboard, QWidget* parent) { //qDebug() << "LibraryFeature::bindSidebarWidget"; auto pContainer = make_parented(parent); pContainer->setContentsMargins(0,0,0,0); @@ -96,11 +96,10 @@ QWidget* LibraryFeature::createSidebarWidget(KeyboardEventFilter* pKeyboard, QWi QSizePolicy::Minimum)); pLayout->addLayout(pLayoutTitle.get()); - QWidget* pSidebar = createInnerSidebarWidget(pKeyboard); - pSidebar->setParent(pContainer.get()); - pLayout->addWidget(pSidebar); + auto pSidebar = createInnerSidebarWidget(pKeyboard, pContainer.get()); + pLayout->addWidget(pSidebar.get()); - return pContainer.get(); + return pContainer; } void LibraryFeature::setFeaturePaneId(int paneId) { @@ -177,8 +176,8 @@ QList LibraryFeature::getSavedQueries() const { } parented_ptr LibraryFeature::createTableWidget(int paneId, QWidget* parent) { - auto pTrackTableView = make_parented( - parent, m_pConfig, m_pTrackCollection, true); + auto pTrackTableView = make_parented(parent, m_pConfig, + m_pTrackCollection, true); m_trackTablesByPaneId[paneId] = pTrackTableView.get(); @@ -202,41 +201,42 @@ parented_ptr LibraryFeature::createTableWidget(int paneId, QWid return pTrackTableView; } -QWidget* LibraryFeature::createInnerSidebarWidget(KeyboardEventFilter *pKeyboard) { - return createLibrarySidebarWidget(pKeyboard); +parented_ptr LibraryFeature::createInnerSidebarWidget(KeyboardEventFilter* pKeyboard, QWidget* parent) { + Q_UNUSED(pKeyboard); + return createLibrarySidebarWidget(parent); } -WLibrarySidebar* LibraryFeature::createLibrarySidebarWidget(KeyboardEventFilter*) { - WLibrarySidebar* pSidebar = new WLibrarySidebar(nullptr); +parented_ptr LibraryFeature::createLibrarySidebarWidget(QWidget* parent) { + auto pSidebar = make_parented(parent); QAbstractItemModel* pModel = getChildModel(); pSidebar->setModel(pModel); // Set sidebar mini view - WMiniViewScrollBar* pMiniView = new WMiniViewScrollBar(pSidebar); - pMiniView->setTreeView(pSidebar); + auto pMiniView = make_parented(pSidebar.get()); + pMiniView->setTreeView(pSidebar.get()); pMiniView->setModel(pModel); - pSidebar->setVerticalScrollBar(pMiniView); + pSidebar->setVerticalScrollBar(pMiniView.get()); // invalidate probably stored QModelIndex invalidateChild(); - connect(pSidebar, SIGNAL(pressed(const QModelIndex&)), + connect(pSidebar.get(), SIGNAL(pressed(const QModelIndex&)), this, SLOT(activateChild(const QModelIndex&))); - connect(pSidebar, SIGNAL(doubleClicked(const QModelIndex&)), + connect(pSidebar.get(), SIGNAL(doubleClicked(const QModelIndex&)), this, SLOT(onLazyChildExpandation(const QModelIndex&))); - connect(pSidebar, SIGNAL(rightClicked(const QPoint&, const QModelIndex&)), + connect(pSidebar.get(), SIGNAL(rightClicked(const QPoint&, const QModelIndex&)), this, SLOT(onRightClickChild(const QPoint&, const QModelIndex&))); - connect(pSidebar, SIGNAL(expanded(const QModelIndex&)), + connect(pSidebar.get(), SIGNAL(expanded(const QModelIndex&)), this, SLOT(onLazyChildExpandation(const QModelIndex&))); connect(this, SIGNAL(selectIndex(const QModelIndex&)), - pSidebar, SLOT(selectIndex(const QModelIndex&))); + pSidebar.get(), SLOT(selectIndex(const QModelIndex&))); - connect(pSidebar, SIGNAL(hovered()), + connect(pSidebar.get(), SIGNAL(hovered()), this, SLOT(slotSetHoveredSidebar())); - connect(pSidebar, SIGNAL(leaved()), + connect(pSidebar.get(), SIGNAL(leaved()), this, SLOT(slotResetHoveredSidebar())); - connect(pSidebar, SIGNAL(focusIn()), + connect(pSidebar.get(), SIGNAL(focusIn()), this, SLOT(slotSetFocusedSidebar())); - connect(pSidebar, SIGNAL(focusOut()), + connect(pSidebar.get(), SIGNAL(focusOut()), this, SLOT(slotResetFocusedSidebar())); return pSidebar; diff --git a/src/library/libraryfeature.h b/src/library/libraryfeature.h index e037424925dc..31e0104dc27e 100644 --- a/src/library/libraryfeature.h +++ b/src/library/libraryfeature.h @@ -65,8 +65,8 @@ class LibraryFeature : public QObject { // Reimplement this to register custom views with the library widget, // at the sidebar expanded pane - virtual QWidget* createSidebarWidget(KeyboardEventFilter* pKeyboard, - QWidget* parent); + virtual parented_ptr createSidebarWidget(KeyboardEventFilter* pKeyboard, + QWidget* parent); virtual TreeItemModel* getChildModel() = 0; @@ -146,11 +146,11 @@ class LibraryFeature : public QObject { // Creates a WLibrarySidebar widget with the getChildModel() function as // model - WLibrarySidebar* createLibrarySidebarWidget(KeyboardEventFilter*); + parented_ptr createLibrarySidebarWidget(QWidget* parent); // Override this function to create a custom inner widget for the sidebar, // the default widget is a WLibrarySidebar widget - virtual QWidget* createInnerSidebarWidget(KeyboardEventFilter* pKeyboard); + virtual parented_ptr createInnerSidebarWidget(KeyboardEventFilter* pKeyboard, QWidget* parent); void showTrackModel(QAbstractItemModel* model); void switchToFeature(); diff --git a/src/library/librarysidebarexpandedmanager.cpp b/src/library/librarysidebarexpandedmanager.cpp index e69a71671997..79ca8700500b 100644 --- a/src/library/librarysidebarexpandedmanager.cpp +++ b/src/library/librarysidebarexpandedmanager.cpp @@ -12,12 +12,11 @@ void LibrarySidebarExpandedManager::bindPaneWidget(WBaseLibrary* sidebarWidget, m_pPaneWidget = sidebarWidget; for (LibraryFeature* f : m_features) { - QWidget* pPane = f->createSidebarWidget(pKeyboard, m_pPaneWidget); - if (pPane == nullptr) { + auto pPane = f->createSidebarWidget(pKeyboard, m_pPaneWidget); + if (pPane.get() == nullptr) { continue; } - pPane->setParent(m_pPaneWidget); - m_pPaneWidget->registerView(f, pPane); + m_pPaneWidget->registerView(f, pPane.get()); } } From 526fc6bd88431c02c4cb9ab5941906e6daf07a75 Mon Sep 17 00:00:00 2001 From: jmigual Date: Fri, 10 Feb 2017 11:01:00 +0100 Subject: [PATCH 11/13] Return std::move instead of parented_ptr --- src/library/features/analysis/analysisfeature.cpp | 4 ++-- src/library/features/autodj/autodjfeature.cpp | 4 ++-- .../features/baseplaylist/baseplaylistfeature.cpp | 2 +- src/library/features/browse/browsefeature.cpp | 2 +- src/library/features/crates/cratefeature.cpp | 2 +- src/library/features/history/historyfeature.cpp | 2 +- .../features/maintenance/maintenancefeature.cpp | 2 +- .../features/mixxxlibrary/mixxxlibraryfeature.cpp | 2 +- src/library/features/recording/recordingfeature.cpp | 4 ++-- src/library/libraryfeature.cpp | 10 +++++----- 10 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/library/features/analysis/analysisfeature.cpp b/src/library/features/analysis/analysisfeature.cpp index 23f3b9a630b7..12ee97b37a41 100644 --- a/src/library/features/analysis/analysisfeature.cpp +++ b/src/library/features/analysis/analysisfeature.cpp @@ -70,7 +70,7 @@ parented_ptr AnalysisFeature::createPaneWidget(KeyboardEventFilter*, this, SLOT(tableSelectionChanged(const QItemSelection&, const QItemSelection&))); - return pTable; + return std::move(pTable); } parented_ptr AnalysisFeature::createInnerSidebarWidget( @@ -93,7 +93,7 @@ parented_ptr AnalysisFeature::createInnerSidebarWidget( m_pAnalysisView->onShow(); - return pAnalysisView; + return std::move(pAnalysisView); } TreeItemModel* AnalysisFeature::getChildModel() { diff --git a/src/library/features/autodj/autodjfeature.cpp b/src/library/features/autodj/autodjfeature.cpp index e81a0fe70aa0..5fb1244fd7ce 100644 --- a/src/library/features/autodj/autodjfeature.cpp +++ b/src/library/features/autodj/autodjfeature.cpp @@ -114,7 +114,7 @@ parented_ptr AutoDJFeature::createPaneWidget(KeyboardEventFilter*, this, SLOT(selectionChanged(const QItemSelection&, const QItemSelection&))); - return pTrackTableView; + return std::move(pTrackTableView); } parented_ptr AutoDJFeature::createInnerSidebarWidget( @@ -144,7 +144,7 @@ parented_ptr AutoDJFeature::createInnerSidebarWidget( connect(m_pAutoDJView, SIGNAL(addRandomButton(bool)), this, SLOT(slotAddRandomTrack())); - return pContainer; + return std::move(pContainer); } TreeItemModel* AutoDJFeature::getChildModel() { diff --git a/src/library/features/baseplaylist/baseplaylistfeature.cpp b/src/library/features/baseplaylist/baseplaylistfeature.cpp index 5295333f072c..8fc3c2031752 100644 --- a/src/library/features/baseplaylist/baseplaylistfeature.cpp +++ b/src/library/features/baseplaylist/baseplaylistfeature.cpp @@ -698,7 +698,7 @@ parented_ptr BasePlaylistFeature::createPaneWidget(KeyboardEventFilter* auto pTable = LibraryFeature::createPaneWidget(pKeyboard, paneId, pStack.get()); m_tableIndexByPaneId[paneId] = pStack->addWidget(pTable.get()); - return pStack; + return std::move(pStack); } void BasePlaylistFeature::htmlLinkClicked(const QUrl& link) { diff --git a/src/library/features/browse/browsefeature.cpp b/src/library/features/browse/browsefeature.cpp index 79a86d70fcb6..4b823e88a996 100644 --- a/src/library/features/browse/browsefeature.cpp +++ b/src/library/features/browse/browsefeature.cpp @@ -210,7 +210,7 @@ parented_ptr BrowseFeature::createPaneWidget(KeyboardEventFilter* pKeyb auto pTable = LibraryFeature::createPaneWidget(pKeyboard, paneId, pStack.get()); m_idTable[paneId] = pStack->addWidget(pTable.get()); - return pStack; + return std::move(pStack); } void BrowseFeature::activate() { diff --git a/src/library/features/crates/cratefeature.cpp b/src/library/features/crates/cratefeature.cpp index b25271ec7c65..e4134e6146f7 100644 --- a/src/library/features/crates/cratefeature.cpp +++ b/src/library/features/crates/cratefeature.cpp @@ -268,7 +268,7 @@ parented_ptr CrateFeature::createPaneWidget(KeyboardEventFilter* pKeybo pContainer.get()); m_idTable[paneId] = pContainer->addWidget(pTable.get()); - return pContainer; + return std::move(pContainer); } TreeItemModel* CrateFeature::getChildModel() { diff --git a/src/library/features/history/historyfeature.cpp b/src/library/features/history/historyfeature.cpp index 4a307c1ec07f..ce8b15502654 100644 --- a/src/library/features/history/historyfeature.cpp +++ b/src/library/features/history/historyfeature.cpp @@ -204,7 +204,7 @@ parented_ptr HistoryFeature::createInnerSidebarWidget( auto pSidebar = createLibrarySidebarWidget(parent); m_pSidebar = pSidebar.toWeakRef(); m_pSidebar->expandAll(); - return pSidebar; + return std::move(pSidebar); } void HistoryFeature::slotJoinWithNext() { diff --git a/src/library/features/maintenance/maintenancefeature.cpp b/src/library/features/maintenance/maintenancefeature.cpp index 564bfd14c57c..a93cabb15d1c 100644 --- a/src/library/features/maintenance/maintenancefeature.cpp +++ b/src/library/features/maintenance/maintenancefeature.cpp @@ -105,7 +105,7 @@ parented_ptr MaintenanceFeature::createInnerSidebarWidget( m_idExpandedHidden = m_pTab->addTab(m_pHiddenView, kHiddenTitle); m_idExpandedMissing = m_pTab->addTab(m_pMissingView, kMissingTitle); - return pTab; + return std::move(pTab); } void MaintenanceFeature::slotTabIndexChanged(int index) { diff --git a/src/library/features/mixxxlibrary/mixxxlibraryfeature.cpp b/src/library/features/mixxxlibrary/mixxxlibraryfeature.cpp index 7aad419b7907..fbf8b4e118af 100644 --- a/src/library/features/mixxxlibrary/mixxxlibraryfeature.cpp +++ b/src/library/features/mixxxlibrary/mixxxlibraryfeature.cpp @@ -146,7 +146,7 @@ parented_ptr MixxxLibraryFeature::createInnerSidebarWidget( m_pSidebar = pSidebaar.toWeakRef(); m_pSidebar->setIconSize(m_pChildModel->getDefaultIconSize()); m_pChildModel->reloadTree(); - return pSidebaar; + return std::move(pSidebaar); } void MixxxLibraryFeature::refreshLibraryModels() { diff --git a/src/library/features/recording/recordingfeature.cpp b/src/library/features/recording/recordingfeature.cpp index fa44c848df94..67a42c7c0f18 100644 --- a/src/library/features/recording/recordingfeature.cpp +++ b/src/library/features/recording/recordingfeature.cpp @@ -49,7 +49,7 @@ parented_ptr RecordingFeature::createPaneWidget(KeyboardEventFilter*, int paneId, QWidget* parent) { auto pTable = LibraryFeature::createTableWidget(paneId, parent); pTable->setSorting(false); - return pTable; + return std::move(pTable); } parented_ptr RecordingFeature::createInnerSidebarWidget( @@ -62,7 +62,7 @@ parented_ptr RecordingFeature::createInnerSidebarWidget( m_pRecordingView->setBrowseTableModel(getBrowseTableModel()); m_pRecordingView->setProxyTrackModel(getProxyTrackModel()); - return pRecordingView; + return std::move(pRecordingView); } diff --git a/src/library/libraryfeature.cpp b/src/library/libraryfeature.cpp index f3e2e02a126d..53b099570826 100644 --- a/src/library/libraryfeature.cpp +++ b/src/library/libraryfeature.cpp @@ -69,7 +69,7 @@ bool LibraryFeature::dragMoveAcceptChild(const QModelIndex &, QUrl) { parented_ptr LibraryFeature::createPaneWidget(KeyboardEventFilter* pKeyboard, int paneId, QWidget* parent) { Q_UNUSED(pKeyboard); - return createTableWidget(paneId, parent); + return std::move(createTableWidget(paneId, parent)); } parented_ptr LibraryFeature::createSidebarWidget(KeyboardEventFilter* pKeyboard, QWidget* parent) { @@ -99,7 +99,7 @@ parented_ptr LibraryFeature::createSidebarWidget(KeyboardEventFilter* p auto pSidebar = createInnerSidebarWidget(pKeyboard, pContainer.get()); pLayout->addWidget(pSidebar.get()); - return pContainer; + return std::move(pContainer); } void LibraryFeature::setFeaturePaneId(int paneId) { @@ -198,12 +198,12 @@ parented_ptr LibraryFeature::createTableWidget(int paneId, QWid connect(m_pLibrary, SIGNAL(setTrackTableRowHeight(int)), pTrackTableView.get(), SLOT(setTrackTableRowHeight(int))); - return pTrackTableView; + return std::move(pTrackTableView); } parented_ptr LibraryFeature::createInnerSidebarWidget(KeyboardEventFilter* pKeyboard, QWidget* parent) { Q_UNUSED(pKeyboard); - return createLibrarySidebarWidget(parent); + return std::move(createLibrarySidebarWidget(parent)); } parented_ptr LibraryFeature::createLibrarySidebarWidget(QWidget* parent) { @@ -239,7 +239,7 @@ parented_ptr LibraryFeature::createLibrarySidebarWidget(QWidget connect(pSidebar.get(), SIGNAL(focusOut()), this, SLOT(slotResetFocusedSidebar())); - return pSidebar; + return std::move(pSidebar); } void LibraryFeature::showTrackModel(QAbstractItemModel *model) { From ea8c2e38cd4d5e29ac1eb292620a1492726e8287 Mon Sep 17 00:00:00 2001 From: jmigual Date: Fri, 10 Feb 2017 23:39:28 +0100 Subject: [PATCH 12/13] Typo --- src/library/features/mixxxlibrary/mixxxlibraryfeature.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/library/features/mixxxlibrary/mixxxlibraryfeature.cpp b/src/library/features/mixxxlibrary/mixxxlibraryfeature.cpp index 7aad419b7907..32f4b9039613 100644 --- a/src/library/features/mixxxlibrary/mixxxlibraryfeature.cpp +++ b/src/library/features/mixxxlibrary/mixxxlibraryfeature.cpp @@ -142,11 +142,11 @@ TreeItemModel* MixxxLibraryFeature::getChildModel() { parented_ptr MixxxLibraryFeature::createInnerSidebarWidget( KeyboardEventFilter*, QWidget* parent) { - auto pSidebaar = createLibrarySidebarWidget(parent); - m_pSidebar = pSidebaar.toWeakRef(); + auto pSidebar = createLibrarySidebarWidget(parent); + m_pSidebar = pSidebar.toWeakRef(); m_pSidebar->setIconSize(m_pChildModel->getDefaultIconSize()); m_pChildModel->reloadTree(); - return pSidebaar; + return pSidebar; } void MixxxLibraryFeature::refreshLibraryModels() { From ceebf6a1ce5517fa8264ba59bbe5c3d3dc7ef4d6 Mon Sep 17 00:00:00 2001 From: jmigual Date: Fri, 10 Feb 2017 23:59:35 +0100 Subject: [PATCH 13/13] Remove unnecessary m_childmodel --- .../baseplaylist/baseplaylistfeature.cpp | 18 ++++++++---------- .../baseplaylist/baseplaylistfeature.h | 7 ++----- .../features/history/historyfeature.cpp | 12 ++++++++++-- src/library/features/history/historyfeature.h | 4 +++- .../features/playlist/playlistfeature.cpp | 12 ++++++++++-- .../features/playlist/playlistfeature.h | 3 +++ 6 files changed, 36 insertions(+), 20 deletions(-) diff --git a/src/library/features/baseplaylist/baseplaylistfeature.cpp b/src/library/features/baseplaylist/baseplaylistfeature.cpp index 5295333f072c..01a0a5096501 100644 --- a/src/library/features/baseplaylist/baseplaylistfeature.cpp +++ b/src/library/features/baseplaylist/baseplaylistfeature.cpp @@ -678,10 +678,6 @@ void BasePlaylistFeature::slotAnalyzePlaylist() { } } -TreeItemModel* BasePlaylistFeature::getChildModel() { - return m_childModel.get(); -} - parented_ptr BasePlaylistFeature::createPaneWidget(KeyboardEventFilter* pKeyboard, int paneId, QWidget* parent) { auto pStack = make_parented(parent); @@ -736,8 +732,9 @@ QModelIndex BasePlaylistFeature::constructChildModel(int selectedId) { } // Append all the newly created TreeItems in a dynamic way to the childmodel - m_childModel->insertTreeItemRows(dataList, 0); - return m_childModel->index(selectedRow, 0); + TreeItemModel *pChildModel = getChildModel(); + pChildModel->insertTreeItemRows(dataList, 0); + return pChildModel->index(selectedRow, 0); } void BasePlaylistFeature::updateChildModel(int selectedId) { @@ -748,7 +745,7 @@ void BasePlaylistFeature::updateChildModel(int selectedId) { return; } - TreeItem* item = m_childModel->getItem(index); + TreeItem* item = getChildModel()->getItem(index); VERIFY_OR_DEBUG_ASSERT(item) { return; } @@ -768,7 +765,7 @@ QModelIndex BasePlaylistFeature::indexFromPlaylistId(int playlistId) const { return QModelIndex(); } - return m_childModel->index(row, 0); + return getConstChildModel()->index(row, 0); } void BasePlaylistFeature::slotTrackSelected(TrackPointer pTrack) { @@ -781,12 +778,13 @@ void BasePlaylistFeature::slotTrackSelected(TrackPointer pTrack) { // Set all playlists the track is in bold (or if there is no track selected, // clear all the bolding). + TreeItemModel* pChildModel = getChildModel(); for (const PlaylistItem& p : m_playlistList) { QModelIndex index = indexFromPlaylistId(p.id); bool shouldBold = m_playlistsSelectedTrackIsIn.contains(p.id); - m_childModel->setData(index, shouldBold, AbstractRole::RoleBold); + pChildModel->setData(index, shouldBold, AbstractRole::RoleBold); } - m_childModel->triggerRepaint(); + pChildModel->triggerRepaint(); } diff --git a/src/library/features/baseplaylist/baseplaylistfeature.h b/src/library/features/baseplaylist/baseplaylistfeature.h index 37a097710324..71eb0f65ebdb 100644 --- a/src/library/features/baseplaylist/baseplaylistfeature.h +++ b/src/library/features/baseplaylist/baseplaylistfeature.h @@ -24,9 +24,6 @@ class BasePlaylistFeature : public LibraryFeature { QObject* parent, TrackCollection* pTrackCollection); virtual ~BasePlaylistFeature(); - - TreeItemModel* getChildModel(); - parented_ptr createPaneWidget(KeyboardEventFilter*pKeyboard, int paneId, QWidget* parent) override; @@ -78,6 +75,8 @@ class BasePlaylistFeature : public LibraryFeature { } }; + virtual const TreeItemModel* getConstChildModel() const = 0; + virtual QModelIndex constructChildModel(int selected_id); virtual void updateChildModel(int selectedId); virtual void buildPlaylistList() = 0; @@ -117,8 +116,6 @@ class BasePlaylistFeature : public LibraryFeature { QPersistentModelIndex m_lastRightClickedIndex; TrackPointer m_pSelectedTrack; - std::shared_ptr m_childModel; - QHash m_lastChildClicked; protected slots: diff --git a/src/library/features/history/historyfeature.cpp b/src/library/features/history/historyfeature.cpp index 4a307c1ec07f..601d5d788d85 100644 --- a/src/library/features/history/historyfeature.cpp +++ b/src/library/features/history/historyfeature.cpp @@ -30,8 +30,8 @@ HistoryFeature::HistoryFeature(UserSettingsPointer pConfig, emit(slotGetNewPlaylist()); //construct child model - m_childModel = m_pHistoryTreeModel = - std::make_shared(this, m_pTrackCollection); + m_pHistoryTreeModel = std::make_unique(this, + m_pTrackCollection); constructChildModel(-1); connect(&PlayerInfo::instance(), SIGNAL(currentPlayingTrackChanged(TrackPointer)), @@ -139,6 +139,10 @@ void HistoryFeature::decorateChild(TreeItem* item, int playlist_id) { } } +TreeItemModel *HistoryFeature::getChildModel() { + return m_pHistoryTreeModel.get(); +} + QModelIndex HistoryFeature::constructChildModel(int selected_id) { buildPlaylistList(); QModelIndex index = m_pHistoryTreeModel->reloadListsTree(selected_id); @@ -207,6 +211,10 @@ parented_ptr HistoryFeature::createInnerSidebarWidget( return pSidebar; } +const TreeItemModel* HistoryFeature::getConstChildModel() const { + return m_pHistoryTreeModel.get(); +} + void HistoryFeature::slotJoinWithNext() { //qDebug() << "slotJoinWithPrevious() row:" << m_lastRightClickedIndex.data(); m_pPlaylistTableModel = getPlaylistTableModel(m_featurePane); diff --git a/src/library/features/history/historyfeature.h b/src/library/features/history/historyfeature.h index aaa9c14108fb..8a256a762bf8 100644 --- a/src/library/features/history/historyfeature.h +++ b/src/library/features/history/historyfeature.h @@ -24,6 +24,7 @@ class HistoryFeature : public BasePlaylistFeature { QString getIconPath() override; QString getSettingsName() const override; void decorateChild(TreeItem *pChild, int playlist_id) override; + TreeItemModel* getChildModel() override; public slots: void onRightClick(const QPoint&) override; @@ -35,6 +36,7 @@ class HistoryFeature : public BasePlaylistFeature { parented_ptr createInnerSidebarWidget(KeyboardEventFilter*, QWidget* parent) override; + const TreeItemModel* getConstChildModel() const override; void buildPlaylistList() override; QModelIndex constructChildModel(int selected_id); PlaylistTableModel* constructTableModel() override; @@ -54,7 +56,7 @@ class HistoryFeature : public BasePlaylistFeature { QLinkedList m_recentTracks; QAction* m_pJoinWithNextAction; QAction* m_pGetNewPlaylist; - std::shared_ptr m_pHistoryTreeModel; + std::unique_ptr m_pHistoryTreeModel; int m_playlistId; }; diff --git a/src/library/features/playlist/playlistfeature.cpp b/src/library/features/playlist/playlistfeature.cpp index 1f0fba7662d6..05069ed7e03d 100644 --- a/src/library/features/playlist/playlistfeature.cpp +++ b/src/library/features/playlist/playlistfeature.cpp @@ -22,9 +22,9 @@ PlaylistFeature::PlaylistFeature(UserSettingsPointer pConfig, TrackCollection* pTrackCollection) : BasePlaylistFeature(pConfig, pLibrary, parent, pTrackCollection) { //construct child model - m_childModel = std::make_shared(); + m_pChildModel = std::make_unique(); auto pRootItem = std::make_unique(this); - m_childModel->setRootItem(std::move(pRootItem)); + m_pChildModel->setRootItem(std::move(pRootItem)); constructChildModel(-1); } @@ -47,6 +47,10 @@ bool PlaylistFeature::isSinglePane() const { return false; } +TreeItemModel* PlaylistFeature::getChildModel() { + return m_pChildModel.get(); +} + void PlaylistFeature::onRightClick(const QPoint& globalPos) { m_lastRightClickedIndex = QModelIndex(); @@ -261,6 +265,10 @@ void PlaylistFeature::slotPlaylistTableRenamed(int playlistId, } } +const TreeItemModel* PlaylistFeature::getConstChildModel() const { + return m_pChildModel.get(); +} + QString PlaylistFeature::getRootViewHtml() const { QString playlistsTitle = tr("Playlists"); QString playlistsSummary = tr("Playlists are ordered lists of songs that allow you to plan your DJ sets."); diff --git a/src/library/features/playlist/playlistfeature.h b/src/library/features/playlist/playlistfeature.h index ac7a2e522d46..50f18e3efd72 100644 --- a/src/library/features/playlist/playlistfeature.h +++ b/src/library/features/playlist/playlistfeature.h @@ -22,6 +22,7 @@ class PlaylistFeature : public BasePlaylistFeature { QString getIconPath() override; QString getSettingsName() const override; bool isSinglePane() const override; + TreeItemModel* getChildModel() override; bool dragMoveAccept(QUrl url); bool dropAcceptChild(const QModelIndex& index, QList urls, QObject* pSource); @@ -37,12 +38,14 @@ class PlaylistFeature : public BasePlaylistFeature { void slotPlaylistTableRenamed(int playlistId, QString a_strName); protected: + const TreeItemModel* getConstChildModel() const override; void buildPlaylistList(); void decorateChild(TreeItem *pChild, int playlist_id); PlaylistTableModel* constructTableModel(); private: QString getRootViewHtml() const; + std::unique_ptr m_pChildModel; }; #endif /* PLAYLISTFEATURE_H */