diff --git a/src/library/baseexternalplaylistmodel.h b/src/library/baseexternalplaylistmodel.h index 7d0c89ee6220..2d7495e6a6b6 100644 --- a/src/library/baseexternalplaylistmodel.h +++ b/src/library/baseexternalplaylistmodel.h @@ -1,16 +1,18 @@ #pragma once -#include #include -#include -#include #include +#include +#include +#include +#include -#include "library/trackmodel.h" #include "library/basesqltablemodel.h" -#include "library/librarytablemodel.h" #include "library/dao/playlistdao.h" #include "library/dao/trackdao.h" +#include "library/librarytablemodel.h" +#include "library/trackmodel.h" +#include "util/string.h" class BaseExternalPlaylistModel : public BaseSqlTableModel { Q_OBJECT @@ -27,13 +29,13 @@ class BaseExternalPlaylistModel : public BaseSqlTableModel { TrackId getTrackId(const QModelIndex& index) const override; bool isColumnInternal(int column) override; Qt::ItemFlags flags(const QModelIndex &index) const override; - Capabilities getCapabilities() const override; - QString modelKey() override { - return QString("0x%1/%2#%3") - .arg((quintptr)this, 0, 16, QChar('0')) - .arg(m_currentPlaylistId) - .arg(currentSearch()); + QString modelKey() const override { + return pointerToQString(this) + + QLatin1String("/") + + QString::number(m_currentPlaylistId) + + QLatin1String("#") + + currentSearch(); } private: diff --git a/src/library/browse/browsetablemodel.h b/src/library/browse/browsetablemodel.h index b2ca1c10db66..a8104fa264b2 100644 --- a/src/library/browse/browsetablemodel.h +++ b/src/library/browse/browsetablemodel.h @@ -77,14 +77,16 @@ class BrowseTableModel final : public QStandardItemModel, public virtual TrackMo bool isColumnSortable(int column) const override; TrackModel::SortColumnId sortColumnIdFromColumnIndex(int index) const override; int columnIndexFromSortColumnId(TrackModel::SortColumnId sortColumn) const override; - QString modelKey() override { - return QString("0x%1/%2#%3") - .arg((quintptr)this, 0, 16, QChar('0')) - // TODO re-introduce m_current_directory / m_currentPath - // see https://github.com/mixxxdj/mixxx/commit/dcc6f9e71aac3ee56627bb93c4e37e93cf675bfd#diff-12546d29721e9b62bfba012a790de93c1e5c045a9ac4cc47f48d9c7d93b99d70L166 - // or make m_pBrowseThread->m_path public - .arg(QString("directory Unknown")) - .arg(currentSearch()); + QString modelKey() const override { + // TODO re-introduce m_current_directory / m_currentPath + // see https://github.com/mixxxdj/mixxx/commit/dcc6f9e71aac3ee56627bb93c4e37e93cf675bfd#diff-12546d29721e9b62bfba012a790de93c1e5c045a9ac4cc47f48d9c7d93b99d70L166 + // or make m_pBrowseThread->m_path public + //m_current_directory.dir().path() + + return pointerToQString(this) + + QLatin1String("/") + + QString("directory Unknown") + + QLatin1String("#") + + currentSearch(); } signals: diff --git a/src/library/playlisttablemodel.h b/src/library/playlisttablemodel.h index 2aa0ca795740..b99be70cae90 100644 --- a/src/library/playlisttablemodel.h +++ b/src/library/playlisttablemodel.h @@ -1,7 +1,10 @@ #pragma once +#include + #include "library/basesqltablemodel.h" #include "library/trackset/tracksettablemodel.h" +#include "util/string.h" class PlaylistTableModel final : public TrackSetTableModel { Q_OBJECT @@ -29,11 +32,12 @@ class PlaylistTableModel final : public TrackSetTableModel { bool isLocked() final; Capabilities getCapabilities() const final; - virtual QString modelKey() override { - return QString("0x%1/%2#%3") - .arg((quintptr)this, 0, 16, QChar('0')) - .arg(m_iPlaylistId) - .arg(currentSearch()); + virtual QString modelKey() const override { + return pointerToQString(this) + + QLatin1String("/") + + QString::number(m_iPlaylistId) + + QLatin1String("#") + + currentSearch(); } private slots: diff --git a/src/library/proxytrackmodel.cpp b/src/library/proxytrackmodel.cpp index 167f1e2d90c0..6ca7af7ac6b6 100644 --- a/src/library/proxytrackmodel.cpp +++ b/src/library/proxytrackmodel.cpp @@ -69,7 +69,7 @@ void ProxyTrackModel::search(const QString& searchText, const QString& extraFilt } } -QString ProxyTrackModel::modelKey() { +QString ProxyTrackModel::modelKey() const { return m_pTrackModel ? m_pTrackModel->modelKey() : QString(); } diff --git a/src/library/proxytrackmodel.h b/src/library/proxytrackmodel.h index 1e2d0a7f4dbd..56d8ecd545b1 100644 --- a/src/library/proxytrackmodel.h +++ b/src/library/proxytrackmodel.h @@ -46,7 +46,7 @@ class ProxyTrackModel : public QSortFilterProxyModel, public TrackModel { // Inherited from QAbstractItemModel void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) final; - QString modelKey() override; + QString modelKey() const override; private: TrackModel* m_pTrackModel; diff --git a/src/library/trackmodel.h b/src/library/trackmodel.h index 41013bd9b498..01b9640632c5 100644 --- a/src/library/trackmodel.h +++ b/src/library/trackmodel.h @@ -2,6 +2,7 @@ #include #include +#include #include #include @@ -9,6 +10,7 @@ #include "library/dao/settingsdao.h" #include "track/track_decl.h" #include "track/trackref.h" +#include "util/string.h" /// Pure virtual (abstract) class that provides an interface for data models /// which display track lists. @@ -203,10 +205,10 @@ class TrackModel { virtual void select() { } - virtual QString modelKey() { - return QString("0x%1#%2") - .arg((quintptr)this, 0, 16, QChar('0')) - .arg(currentSearch()); + virtual QString modelKey() const { + return pointerToQString(this) + + QLatin1String("#") + + currentSearch(); } private: diff --git a/src/library/trackset/crate/cratetablemodel.cpp b/src/library/trackset/crate/cratetablemodel.cpp index bfa76a6db4ab..e26e64ddbd39 100644 --- a/src/library/trackset/crate/cratetablemodel.cpp +++ b/src/library/trackset/crate/cratetablemodel.cpp @@ -182,16 +182,16 @@ void CrateTableModel::removeTracks(const QModelIndexList& indices) { select(); } -QString CrateTableModel::modelKey() { +QString CrateTableModel::modelKey() const { if (this->m_selectedCrate.isValid()) { - return QString("0x%1/%2#%3") - .arg((quintptr)this, 0, 16, QChar('0')) - .arg((quintptr)this->m_selectedCrate.value()) - //.arg((quintptr)this->m_selectedCrate.CrateId()) - .arg(currentSearch()); + return pointerToQString(this) + + QLatin1String("/") + + QString::number(m_selectedCrate.value()) + + QLatin1String("#") + + currentSearch(); } else { - return QString("0x%1#%2") - .arg((quintptr)this, 0, 16, QChar('0')) - .arg(currentSearch()); + return pointerToQString(this) + + QLatin1String("#") + + currentSearch(); } } diff --git a/src/library/trackset/crate/cratetablemodel.h b/src/library/trackset/crate/cratetablemodel.h index 538dc70b5883..2450c6ff6a4c 100644 --- a/src/library/trackset/crate/cratetablemodel.h +++ b/src/library/trackset/crate/cratetablemodel.h @@ -23,7 +23,7 @@ class CrateTableModel final : public TrackSetTableModel { int addTracks(const QModelIndex& index, const QList& locations) final; Capabilities getCapabilities() const final; - QString modelKey() override; + QString modelKey() const override; private: CrateId m_selectedCrate; diff --git a/src/util/string.h b/src/util/string.h index 630d59165660..eb5349d02524 100644 --- a/src/util/string.h +++ b/src/util/string.h @@ -99,3 +99,11 @@ inline QString coloredLinkString( QStringLiteral(";\" href=\"") + baseUrl + extUrl + QStringLiteral("\">") + text + QStringLiteral(""); } + +/// writes the hexadecimal version of the pointer address in a QString +static inline QString pointerToQString(const void* ptr) { + return QString("0x%1").arg(reinterpret_cast(ptr), + QT_POINTER_SIZE * 2, + 16, + QChar('0')); +} diff --git a/src/widget/wlibrarytableview.h b/src/widget/wlibrarytableview.h index 2a2ed39a578e..dfa8aae0014d 100644 --- a/src/widget/wlibrarytableview.h +++ b/src/widget/wlibrarytableview.h @@ -58,7 +58,7 @@ class WLibraryTableView : public QTableView, public virtual LibraryView { protected: void focusInEvent(QFocusEvent* event) override; - virtual QString getStateKey() = 0; + virtual QString getStateKey() const = 0; private: const UserSettingsPointer m_pConfig; diff --git a/src/widget/wtracktableview.cpp b/src/widget/wtracktableview.cpp index ff13832a56d9..feb5589d96a8 100644 --- a/src/widget/wtracktableview.cpp +++ b/src/widget/wtracktableview.cpp @@ -1006,7 +1006,7 @@ bool WTrackTableView::hasFocus() const { return QWidget::hasFocus(); } -QString WTrackTableView::getStateKey() { +QString WTrackTableView::getStateKey() const { TrackModel* rv = getTrackModel(); if (rv) { return rv->modelKey(); diff --git a/src/widget/wtracktableview.h b/src/widget/wtracktableview.h index 7bbedc74caa4..ca027af8b960 100644 --- a/src/widget/wtracktableview.h +++ b/src/widget/wtracktableview.h @@ -76,7 +76,7 @@ class WTrackTableView : public WLibraryTableView { void keyNotationChanged(); protected: - QString getStateKey() override; + QString getStateKey() const override; private: void addToAutoDJ(PlaylistDAO::AutoDJSendLoc loc);