From f99c72ebf34a230f17e1676bded6596bbf56cd36 Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Sun, 11 Oct 2020 22:38:40 +0200 Subject: [PATCH] various small code fixes from clang-tidy, clazy and manual review --- src/CMakeLists.txt | 1 - src/models/upnpalbummodel.cpp | 446 ---------------------- src/models/upnpalbummodel.h | 173 --------- src/musiclistenersmanager.h | 4 +- src/upnp/didlparser.cpp | 46 ++- src/upnp/didlparser.h | 30 +- src/upnp/upnpcontentdirectorymodel.h | 32 +- src/upnp/upnpcontrolconnectionmanager.cpp | 4 +- src/upnp/upnpcontrolconnectionmanager.h | 10 +- src/upnp/upnpcontrolcontentdirectory.cpp | 2 +- src/upnp/upnpcontrolcontentdirectory.h | 10 +- src/upnp/upnpcontrolmediaserver.h | 2 +- src/upnp/upnpdiscoverallmusic.h | 4 +- src/viewconfigurationdata.cpp | 29 +- src/viewconfigurationdata.h | 8 +- src/viewmanager.cpp | 24 +- 16 files changed, 112 insertions(+), 713 deletions(-) delete mode 100644 src/models/upnpalbummodel.cpp delete mode 100644 src/models/upnpalbummodel.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 81303616..2e8c3918 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -181,7 +181,6 @@ if (UpnpLibQt_FOUND) upnp/upnpcontrolmediaserver.cpp upnp/didlparser.cpp upnp/upnpdiscoverallmusic.cpp - models/upnpalbummodel.cpp ) endif() diff --git a/src/models/upnpalbummodel.cpp b/src/models/upnpalbummodel.cpp deleted file mode 100644 index aed14c24..00000000 --- a/src/models/upnpalbummodel.cpp +++ /dev/null @@ -1,446 +0,0 @@ -/* - SPDX-FileCopyrightText: 2015 (c) Matthieu Gallien - - SPDX-License-Identifier: LGPL-3.0-or-later - */ - -#include "upnpalbummodel.h" - -#include "upnp/didlparser.h" -#include "upnp/upnpcontrolcontentdirectory.h" - -#include - -#include -#include -#include -#include - -class UpnpAlbumModelPrivate -{ -public: - - UpnpControlContentDirectory *mContentDirectory = nullptr; - - DidlParser mDidlParser; - - QString mBrowseFlag; - - QString mFilter; - - QString mSortCriteria; - - QVector mChilds; - - QHash> mAlbumParsers; - - QString mServerName; - - bool mUseLocalIcons = false; -}; - -UpnpAlbumModel::UpnpAlbumModel(QObject *parent) : QAbstractItemModel(parent), d(new UpnpAlbumModelPrivate) -{ - d->mDidlParser.setSearchCriteria(QStringLiteral("upnp:class = \"object.container.album.musicAlbum\"")); - d->mDidlParser.setParentId(QStringLiteral("0")); - - connect(&d->mDidlParser, &DidlParser::isDataValidChanged, this, &UpnpAlbumModel::contentChanged); -} - -UpnpAlbumModel::~UpnpAlbumModel() -{ - delete d; -} - -int UpnpAlbumModel::rowCount(const QModelIndex &parent) const -{ - if (!parent.isValid()) { - return d->mDidlParser.newMusicTrackIds().size(); - } - - if (!d->mAlbumParsers.contains(d->mChilds[parent.row()])) { - return 0; - } - - auto childParser = d->mAlbumParsers[d->mChilds[parent.row()]]; - - if (!childParser) { - return 0; - } - - return childParser->newMusicTrackIds().size(); -} - -QHash UpnpAlbumModel::roleNames() const -{ - QHash roles; - - roles[static_cast(ColumnsRoles::TitleRole)] = "title"; - roles[static_cast(ColumnsRoles::DurationRole)] = "duration"; - roles[static_cast(ColumnsRoles::ArtistRole)] = "artist"; - roles[static_cast(ColumnsRoles::AlbumRole)] = "album"; - roles[static_cast(ColumnsRoles::TrackNumberRole)] = "trackNumber"; - roles[static_cast(ColumnsRoles::RatingRole)] = "rating"; - roles[static_cast(ColumnsRoles::ImageRole)] = "image"; - roles[static_cast(ColumnsRoles::ItemClassRole)] = "itemClass"; - roles[static_cast(ColumnsRoles::CountRole)] = "count"; - roles[static_cast(ColumnsRoles::IsPlayingRole)] = "isPlaying"; - - return roles; -} - -bool UpnpAlbumModel::canFetchMore(const QModelIndex &parent) const -{ - if (!parent.isValid()) { - return false; - } - - if (parent.internalId() != 0) { - return false; - } - - if (!d->mAlbumParsers.contains(d->mChilds[parent.row()])) { - return true; - } - - auto childParser = d->mAlbumParsers[d->mChilds[parent.row()]]; - - if (!childParser) { - return true; - } - - return false; -} - -void UpnpAlbumModel::fetchMore(const QModelIndex &parent) -{ - if (!d->mAlbumParsers.contains(d->mChilds[parent.row()])) { - d->mAlbumParsers[d->mChilds[parent.row()]] = new DidlParser(this); - - auto newParser = d->mAlbumParsers[d->mChilds[parent.row()]]; - - newParser->setBrowseFlag(d->mDidlParser.browseFlag()); - newParser->setFilter(d->mDidlParser.filter()); - newParser->setSortCriteria(d->mDidlParser.sortCriteria()); - newParser->setContentDirectory(d->mDidlParser.contentDirectory()); - newParser->setParentId(d->mChilds[parent.row()]); - - connect(newParser, &DidlParser::isDataValidChanged, this, &UpnpAlbumModel::contentChanged); - - newParser->browse(); - } -} - -Qt::ItemFlags UpnpAlbumModel::flags(const QModelIndex &index) const -{ - if (!index.isValid()) { - return Qt::NoItemFlags; - } - - return Qt::ItemIsSelectable | Qt::ItemIsEnabled; -} - -QVariant UpnpAlbumModel::data(const QModelIndex &index, int role) const -{ - if (!index.isValid()) { - return {}; - } - - if (index.column() != 0) { - return {}; - } - - if (index.row() < 0) { - return {}; - } - - if (index.row() >= d->mDidlParser.newMusicTrackIds().size()) { - return {}; - } - - if (index.internalId() != 0) { - if (!d->mAlbumParsers.contains(d->mChilds[index.internalId() - 1])) { - return 0; - } - - auto childParser = d->mAlbumParsers[d->mChilds[index.internalId() - 1]]; - - if (!childParser) { - return 0; - } - - return internalDataTrack(index, role, childParser); - } - - return internalDataAlbum(index, role, &d->mDidlParser); -} - -QVariant UpnpAlbumModel::internalDataAlbum(const QModelIndex &index, int role, DidlParser *currentParser) const -{ - ColumnsRoles convertedRole = static_cast(role); - - //const auto &albumId = currentParser->newMusicTrackIds()[index.row()]; - const auto &albumId = index.row(); - - switch(convertedRole) - { - case ColumnsRoles::TitleRole: - return {}/*currentParser->newMusicTracks()[albumId].title()*/; - case ColumnsRoles::DurationRole: - return {}; - case ColumnsRoles::CreatorRole: - return {}; - case ColumnsRoles::ArtistRole: - return {}/*currentParser->newMusicTracks()[albumId].artist()*/; - case ColumnsRoles::AlbumRole: - return {}; - case ColumnsRoles::RatingRole: - return {}; - case ColumnsRoles::ImageRole: - if (false/*currentParser->newMusicTracks()[albumId].albumCover().isValid()*/) { - return {}/*currentParser->newMusicTracks()[albumId].albumCover()*/; - } else { - if (d->mUseLocalIcons) { - return QUrl(QStringLiteral("qrc:/media-optical-audio.svg")); - } else { - return QUrl(QStringLiteral("image://icon/media-optical-audio")); - } - } - case ColumnsRoles::ResourceRole: - return {}/*currentParser->newMusicTracks()[albumId].resourceURI()*/; - case ColumnsRoles::ItemClassRole: - return {}; - case ColumnsRoles::CountRole: - //return currentParser->newMusicTracks()[albumId].mTracksCount; - return 1; - case ColumnsRoles::IdRole: - return {}; - //return currentParser->newMusicTracks()[albumId].mId; - case ColumnsRoles::ParentIdRole: - return {}; - //return currentParser->newMusicTracks()[albumId].mParentId; - case ColumnsRoles::IsPlayingRole: - return {}; - case ColumnsRoles::TrackNumberRole: - return {}; - } - - return {}; -} - -QVariant UpnpAlbumModel::internalDataTrack(const QModelIndex &index, int role, DidlParser *currentParser) const -{ - ColumnsRoles convertedRole = static_cast(role); - - if (index.row() < 0 || index.row() >= currentParser->newMusicTrackIds().size()) { - return {}; - } - - //const auto &musicTrackId = currentParser->newMusicTrackIds()[index.row()]; - const auto &musicTrackId = index.row(); - -// switch(convertedRole) -// { -// case ColumnsRoles::TitleRole: -// return currentParser->newMusicTracks()[musicTrackId].title(); -// case ColumnsRoles::DurationRole: -// if (currentParser->newMusicTracks()[musicTrackId].duration().hour() == 0) { -// return currentParser->newMusicTracks()[musicTrackId].duration().toString(QStringLiteral("mm:ss")); -// } else { -// return currentParser->newMusicTracks()[musicTrackId].duration().toString(); -// } -// case ColumnsRoles::CreatorRole: -// return currentParser->newMusicTracks()[musicTrackId].artist(); -// case ColumnsRoles::ArtistRole: -// return currentParser->newMusicTracks()[musicTrackId].artist(); -// case ColumnsRoles::AlbumRole: -// return currentParser->newMusicTracks()[musicTrackId].album(); -// case ColumnsRoles::TrackNumberRole: -// return currentParser->newMusicTracks()[musicTrackId].trackNumber(); -// case ColumnsRoles::RatingRole: -// return 0; -// case ColumnsRoles::ImageRole: -// return data(index.parent(), role); -// case ColumnsRoles::ResourceRole: -// return currentParser->newMusicTracks()[musicTrackId].resourceURI(); -// case ColumnsRoles::ItemClassRole: -// return {}; -// case ColumnsRoles::CountRole: -// return {}; -// case ColumnsRoles::IdRole: -// return currentParser->newMusicTracks()[musicTrackId].id(); -// case ColumnsRoles::ParentIdRole: -// return currentParser->newMusicTracks()[musicTrackId].parentId(); -// case ColumnsRoles::IsPlayingRole: -// return false; -// } - - return {}; -} - -QModelIndex UpnpAlbumModel::index(int row, int column, const QModelIndex &parent) const -{ - if (!parent.isValid()) { - return createIndex(row, column, quintptr(0)); - } - - return createIndex(row, column, quintptr(parent.row()) + 1); -} - -QModelIndex UpnpAlbumModel::parent(const QModelIndex &child) const -{ - // child is valid - if (!child.isValid()) { - return {}; - } - - if (child.internalId() == 0) { - return {}; - } - - return createIndex(int(child.internalId() - 1), 0, quintptr(0)); -} - -int UpnpAlbumModel::columnCount(const QModelIndex &parent) const -{ - Q_UNUSED(parent) - - return 1; -} - -UpnpControlContentDirectory *UpnpAlbumModel::contentDirectory() const -{ - return d->mContentDirectory; -} - -DidlParser *UpnpAlbumModel::didlParser() const -{ - return &d->mDidlParser; -} - -const QString &UpnpAlbumModel::browseFlag() const -{ - return d->mBrowseFlag; -} - -const QString &UpnpAlbumModel::filter() const -{ - return d->mFilter; -} - -const QString &UpnpAlbumModel::sortCriteria() const -{ - return d->mSortCriteria; -} - -QString UpnpAlbumModel::serverName() const -{ - return d->mServerName; -} - -bool UpnpAlbumModel::useLocalIcons() const -{ - return d->mUseLocalIcons; -} - -void UpnpAlbumModel::setContentDirectory(UpnpControlContentDirectory *directory) -{ - if (directory) { - beginResetModel(); - } - if (d->mContentDirectory) { - disconnect(d->mContentDirectory, &UpnpControlContentDirectory::systemUpdateIDChanged, - &d->mDidlParser, &DidlParser::systemUpdateIDChanged); - } - - d->mContentDirectory = directory; - - if (!d->mContentDirectory) { - Q_EMIT contentDirectoryChanged(); - return; - } - - connect(d->mContentDirectory, &UpnpControlContentDirectory::systemUpdateIDChanged, - &d->mDidlParser, &DidlParser::systemUpdateIDChanged); - - d->mDidlParser.setContentDirectory(directory); - d->mDidlParser.setBrowseFlag(browseFlag()); - d->mDidlParser.setFilter(filter()); - d->mDidlParser.setSortCriteria(sortCriteria()); - d->mDidlParser.search(); - - endResetModel(); - - Q_EMIT contentDirectoryChanged(); -} - -void UpnpAlbumModel::setBrowseFlag(const QString &flag) -{ - d->mBrowseFlag = flag; - Q_EMIT browseFlagChanged(); -} - -void UpnpAlbumModel::setFilter(const QString &flag) -{ - d->mFilter = flag; - Q_EMIT filterChanged(); -} - -void UpnpAlbumModel::setSortCriteria(const QString &criteria) -{ - d->mSortCriteria = criteria; - Q_EMIT sortCriteriaChanged(); -} - -void UpnpAlbumModel::setServerName(QString serverName) -{ - if (d->mServerName == serverName) - return; - - d->mServerName = serverName; - emit serverNameChanged(); -} - -void UpnpAlbumModel::setUseLocalIcons(bool useLocalIcons) -{ - if (d->mUseLocalIcons == useLocalIcons) - return; - - d->mUseLocalIcons = useLocalIcons; - emit useLocalIconsChanged(); -} - -void UpnpAlbumModel::contentChanged(const QString &parentId) -{ - if (parentId == QStringLiteral("0")) { - beginResetModel(); - - d->mChilds = d->mDidlParser.newMusicTrackIds(); - - endResetModel(); - return; - } - - auto indexChild = d->mChilds.indexOf(parentId); - - if (indexChild == -1) { - return; - } - - if (!d->mAlbumParsers.contains(parentId)) { - return; - } - - auto childParser = d->mAlbumParsers[parentId]; - - if (!childParser) { - return; - } - - beginInsertRows(index(indexChild, 0), 0, childParser->newMusicTrackIds().size() - 1); - - endInsertRows(); -} - - -#include "moc_upnpalbummodel.cpp" diff --git a/src/models/upnpalbummodel.h b/src/models/upnpalbummodel.h deleted file mode 100644 index f287dc95..00000000 --- a/src/models/upnpalbummodel.h +++ /dev/null @@ -1,173 +0,0 @@ -/* - SPDX-FileCopyrightText: 2015 (c) Matthieu Gallien - - SPDX-License-Identifier: LGPL-3.0-or-later - */ - -#ifndef UPNPALBUMMODEL_H -#define UPNPALBUMMODEL_H - -#include "datatypes.h" - -#include - -class UpnpAlbumModelPrivate; -class UpnpSsdpEngine; -class UpnpControlAbstractDevice; -class UpnpControlContentDirectory; -class UpnpDiscoveryResult; -class QDomNode; -class DidlParser; - -class UpnpAlbumModel : public QAbstractItemModel -{ - Q_OBJECT - - Q_PROPERTY(UpnpControlContentDirectory* contentDirectory - READ contentDirectory - WRITE setContentDirectory - NOTIFY contentDirectoryChanged) - - Q_PROPERTY(DidlParser* didlParser - READ didlParser - NOTIFY didlParserChanged) - - Q_PROPERTY(QString browseFlag - READ browseFlag - WRITE setBrowseFlag - NOTIFY browseFlagChanged) - - Q_PROPERTY(QString filter - READ filter - WRITE setFilter - NOTIFY filterChanged) - - Q_PROPERTY(QString sortCriteria - READ sortCriteria - WRITE setSortCriteria - NOTIFY sortCriteriaChanged) - - Q_PROPERTY(QString serverName - READ serverName - WRITE setServerName - NOTIFY serverNameChanged) - - Q_PROPERTY(bool useLocalIcons - READ useLocalIcons - WRITE setUseLocalIcons - NOTIFY useLocalIconsChanged) - -public: - - enum ItemClass { - Container = 0, - Album = 1, - Artist = 2, - AudioTrack = 3, - }; - - enum ColumnsRoles { - TitleRole = Qt::UserRole + 1, - DurationRole = TitleRole + 1, - CreatorRole = DurationRole + 1, - ArtistRole = CreatorRole + 1, - AlbumRole = ArtistRole + 1, - TrackNumberRole = AlbumRole + 1, - RatingRole = TrackNumberRole + 1, - ImageRole = RatingRole + 1, - ResourceRole = ImageRole + 1, - ItemClassRole = ResourceRole + 1, - CountRole = ItemClassRole + 1, - IdRole = CountRole + 1, - ParentIdRole = IdRole + 1, - IsPlayingRole = ParentIdRole + 1, - }; - - explicit UpnpAlbumModel(QObject *parent = nullptr); - - ~UpnpAlbumModel() override; - - int rowCount(const QModelIndex &parent = QModelIndex()) const override; - - QHash roleNames() const override; - - bool canFetchMore(const QModelIndex &parent) const override; - - void fetchMore(const QModelIndex &parent) override; - - Qt::ItemFlags flags(const QModelIndex &index) const override; - - QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; - - QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override; - - QModelIndex parent(const QModelIndex &child) const override; - - int columnCount(const QModelIndex &parent = QModelIndex()) const override; - - UpnpControlContentDirectory* contentDirectory() const; - - DidlParser* didlParser() const; - - const QString& browseFlag() const; - - const QString& filter() const; - - const QString& sortCriteria() const; - - QString serverName() const; - - bool useLocalIcons() const; - -Q_SIGNALS: - - void contentDirectoryChanged(); - - void musicDatabaseChanged(); - - void didlParserChanged(); - - void browseFlagChanged(); - - void filterChanged(); - - void sortCriteriaChanged(); - - void newAudioTrack(const DataTypes::TrackDataType &audioTrack); - - void serverNameChanged(); - - void useLocalIconsChanged(); - -public Q_SLOTS: - - void setContentDirectory(UpnpControlContentDirectory *directory); - - void setBrowseFlag(const QString &flag); - - void setFilter(const QString &flag); - - void setSortCriteria(const QString &criteria); - - void setServerName(QString serverName); - - void setUseLocalIcons(bool useLocalIcons); - -private Q_SLOTS: - - void contentChanged(const QString &parentId); - -private: - - QVariant internalDataAlbum(const QModelIndex &index, int role, DidlParser *currentParser) const; - - QVariant internalDataTrack(const QModelIndex &index, int role, DidlParser *currentParser) const; - - UpnpAlbumModelPrivate *d; -}; - - - -Q_DECLARE_METATYPE(UpnpAlbumModel::ItemClass) - -#endif // UPNPALBUMMODEL_H diff --git a/src/musiclistenersmanager.h b/src/musiclistenersmanager.h index f3f196fe..555da716 100644 --- a/src/musiclistenersmanager.h +++ b/src/musiclistenersmanager.h @@ -100,9 +100,9 @@ public: bool androidIndexerAvailable() const; - UpnpSsdpEngine* ssdpEngine() const; + [[nodiscard]] [[nodiscard]] UpnpSsdpEngine* ssdpEngine() const; - UpnpDiscoverAllMusic* upnpServiceDiscovery() const; + [[nodiscard]] [[nodiscard]] UpnpDiscoverAllMusic* upnpServiceDiscovery() const; Q_SIGNALS: diff --git a/src/upnp/didlparser.cpp b/src/upnp/didlparser.cpp index bb837f2c..31f6bf68 100644 --- a/src/upnp/didlparser.cpp +++ b/src/upnp/didlparser.cpp @@ -87,27 +87,43 @@ bool DidlParser::isDataValid() const return d->mIsDataValid; } -void DidlParser::setBrowseFlag(const QString &flag) +void DidlParser::setBrowseFlag(QString flag) { - d->mBrowseFlag = flag; + if (d->mBrowseFlag == flag) { + return; + } + + d->mBrowseFlag = std::move(flag); Q_EMIT browseFlagChanged(); } -void DidlParser::setFilter(const QString &flag) +void DidlParser::setFilter(QString flag) { - d->mFilter = flag; + if (d->mFilter == flag) { + return; + } + + d->mFilter = std::move(flag); Q_EMIT filterChanged(); } -void DidlParser::setSortCriteria(const QString &criteria) +void DidlParser::setSortCriteria(QString criteria) { - d->mSortCriteria = criteria; + if (d->mSortCriteria == criteria) { + return; + } + + d->mSortCriteria = std::move(criteria); Q_EMIT sortCriteriaChanged(); } -void DidlParser::setSearchCriteria(const QString &criteria) +void DidlParser::setSearchCriteria(QString criteria) { - d->mSearchCriteria = criteria; + if (d->mSearchCriteria == criteria) { + return; + } + + d->mSearchCriteria = std::move(criteria); Q_EMIT searchCriteriaChanged(); } @@ -125,19 +141,21 @@ void DidlParser::setContentDirectory(UpnpControlContentDirectory *directory) void DidlParser::setParentId(QString parentId) { - if (d->mParentId == parentId) + if (d->mParentId == parentId) { return; + } - d->mParentId = parentId; + d->mParentId = std::move(parentId); emit parentIdChanged(); } void DidlParser::setDeviceUUID(QString deviceUUID) { - if (d->mDeviceUUID == deviceUUID) + if (d->mDeviceUUID == deviceUUID) { return; + } - d->mDeviceUUID = deviceUUID; + d->mDeviceUUID = std::move(deviceUUID); emit deviceUUIDChanged(); } @@ -471,7 +489,7 @@ void DidlParser::decodeAudioTrackNode(const QDomNode &itemNode, QHash &newMusicTrackIds() const; + [[nodiscard]] const QVector &newMusicTrackIds() const; - const QHash &newMusicTracks() const; + [[nodiscard]] const QHash &newMusicTracks() const; - const QHash& covers() const; + [[nodiscard]] const QHash& covers() const; Q_SIGNALS: @@ -118,13 +118,13 @@ Q_SIGNALS: public Q_SLOTS: - void setBrowseFlag(const QString &flag); + void setBrowseFlag(QString flag); - void setFilter(const QString &flag); + void setFilter(QString flag); - void setSortCriteria(const QString &criteria); + void setSortCriteria(QString criteria); - void setSearchCriteria(const QString &criteria); + void setSearchCriteria(QString criteria); void setContentDirectory(UpnpControlContentDirectory *directory); diff --git a/src/upnp/upnpcontentdirectorymodel.h b/src/upnp/upnpcontentdirectorymodel.h index e53cbd53..4424374d 100644 --- a/src/upnp/upnpcontentdirectorymodel.h +++ b/src/upnp/upnpcontentdirectorymodel.h @@ -69,47 +69,47 @@ public: ~UpnpContentDirectoryModel() override; - int rowCount(const QModelIndex &parent = QModelIndex()) const override; + [[nodiscard]] [[nodiscard]] int rowCount(const QModelIndex &parent = QModelIndex()) const override; - QHash roleNames() const override; + [[nodiscard]] [[nodiscard]] QHash roleNames() const override; - Qt::ItemFlags flags(const QModelIndex &index) const override; + [[nodiscard]] [[nodiscard]] Qt::ItemFlags flags(const QModelIndex &index) const override; - QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; + [[nodiscard]] [[nodiscard]] QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; - QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override; + [[nodiscard]] [[nodiscard]] QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override; - QModelIndex parent(const QModelIndex &child) const override; + [[nodiscard]] [[nodiscard]] QModelIndex parent(const QModelIndex &child) const override; - int columnCount(const QModelIndex &parent = QModelIndex()) const override; + [[nodiscard]] [[nodiscard]] int columnCount(const QModelIndex &parent = QModelIndex()) const override; - bool canFetchMore(const QModelIndex &parent) const override; + [[nodiscard]] [[nodiscard]] bool canFetchMore(const QModelIndex &parent) const override; void fetchMore(const QModelIndex &parent) override; - const QString& parentId() const; + [[nodiscard]] [[nodiscard]] const QString& parentId() const; - const QString& browseFlag() const; + [[nodiscard]] [[nodiscard]] const QString& browseFlag() const; void setBrowseFlag(const QString &flag); - const QString& filter() const; + [[nodiscard]] [[nodiscard]] const QString& filter() const; void setFilter(const QString &flag); - const QString& sortCriteria() const; + [[nodiscard]] [[nodiscard]] const QString& sortCriteria() const; void setSortCriteria(const QString &criteria); - UpnpControlContentDirectory* contentDirectory() const; + [[nodiscard]] [[nodiscard]] UpnpControlContentDirectory* contentDirectory() const; void setContentDirectory(UpnpControlContentDirectory *directory); - bool useLocalIcons() const; + [[nodiscard]] [[nodiscard]] bool useLocalIcons() const; void setUseLocalIcons(bool value); - bool isBusy() const; + [[nodiscard]] [[nodiscard]] bool isBusy() const; Q_SIGNALS: @@ -141,7 +141,7 @@ private Q_SLOTS: private: - QModelIndex indexFromInternalId(quintptr internalId) const; + [[nodiscard]] [[nodiscard]] QModelIndex indexFromInternalId(quintptr internalId) const; std::unique_ptr d; diff --git a/src/upnp/upnpcontrolconnectionmanager.cpp b/src/upnp/upnpcontrolconnectionmanager.cpp index 3d704b0a..44f58246 100644 --- a/src/upnp/upnpcontrolconnectionmanager.cpp +++ b/src/upnp/upnpcontrolconnectionmanager.cpp @@ -213,10 +213,10 @@ void UpnpControlConnectionManager::parseServiceDescription(QIODevice *serviceDes const QList &allActions(actions()); - d->mHasPrepareForConnection = allActions.contains(QLatin1String("PrepareForConnection")); + d->mHasPrepareForConnection = allActions.contains(QStringLiteral("PrepareForConnection")); Q_EMIT hasPrepareForConnectionChanged(); - d->mHasConnectionComplete = allActions.contains(QLatin1String("ConnectionComplete")); + d->mHasConnectionComplete = allActions.contains(QStringLiteral("ConnectionComplete")); Q_EMIT hasConnectionCompleteChanged(); } diff --git a/src/upnp/upnpcontrolconnectionmanager.h b/src/upnp/upnpcontrolconnectionmanager.h index 6355052e..4c8ebe11 100644 --- a/src/upnp/upnpcontrolconnectionmanager.h +++ b/src/upnp/upnpcontrolconnectionmanager.h @@ -44,15 +44,15 @@ public: ~UpnpControlConnectionManager() override; - const QString& sourceProtocolInfo() const; + [[nodiscard]] const QString& sourceProtocolInfo() const; - const QString& sinkProtocolInfo() const; + [[nodiscard]] const QString& sinkProtocolInfo() const; - const QString& currentConnectionIDs() const; + [[nodiscard]] const QString& currentConnectionIDs() const; - bool hasPrepareForConnection() const; + [[nodiscard]] bool hasPrepareForConnection() const; - bool hasConnectionComplete() const; + [[nodiscard]] bool hasConnectionComplete() const; public Q_SLOTS: diff --git a/src/upnp/upnpcontrolcontentdirectory.cpp b/src/upnp/upnpcontrolcontentdirectory.cpp index 7c896750..52e0d4e0 100644 --- a/src/upnp/upnpcontrolcontentdirectory.cpp +++ b/src/upnp/upnpcontrolcontentdirectory.cpp @@ -244,7 +244,7 @@ void UpnpControlContentDirectory::parseServiceDescription(QIODevice *serviceDesc const QList &allVariables(stateVariables()); - d->mHasTransferIDs = allVariables.contains(QLatin1String("TransferIDs")); + d->mHasTransferIDs = allVariables.contains(QStringLiteral("TransferIDs")); Q_EMIT hasTransferIDsChanged(); //const QList &allActions(actions()); diff --git a/src/upnp/upnpcontrolcontentdirectory.h b/src/upnp/upnpcontrolcontentdirectory.h index adfba051..13efa0a0 100644 --- a/src/upnp/upnpcontrolcontentdirectory.h +++ b/src/upnp/upnpcontrolcontentdirectory.h @@ -45,15 +45,15 @@ public: ~UpnpControlContentDirectory() override; - const QString& searchCapabilities() const; + [[nodiscard]] const QString& searchCapabilities() const; - const QString& transferIDs() const; + [[nodiscard]] const QString& transferIDs() const; - bool hasTransferIDs() const; + [[nodiscard]] bool hasTransferIDs() const; - const QString& sortCapabilities() const; + [[nodiscard]] const QString& sortCapabilities() const; - int systemUpdateID() const; + [[nodiscard]] int systemUpdateID() const; public Q_SLOTS: diff --git a/src/upnp/upnpcontrolmediaserver.h b/src/upnp/upnpcontrolmediaserver.h index c15350ed..3ab91e00 100644 --- a/src/upnp/upnpcontrolmediaserver.h +++ b/src/upnp/upnpcontrolmediaserver.h @@ -28,7 +28,7 @@ public: ~UpnpControlMediaServer() override; - bool hasAVTransport() const; + [[nodiscard]] bool hasAVTransport() const; Q_SIGNALS: diff --git a/src/upnp/upnpdiscoverallmusic.h b/src/upnp/upnpdiscoverallmusic.h index 4a7110ec..091bf118 100644 --- a/src/upnp/upnpdiscoverallmusic.h +++ b/src/upnp/upnpdiscoverallmusic.h @@ -30,9 +30,9 @@ public: ~UpnpDiscoverAllMusic() override; - const DataTypes::ListNetworkServiceDataType& existingMediaServers() const; + [[nodiscard]] [[nodiscard]] const DataTypes::ListNetworkServiceDataType& existingMediaServers() const; - const UpnpDeviceDescription &deviceDescriptionByUdn(const QString &udn) const; + [[nodiscard]] [[nodiscard]] const UpnpDeviceDescription &deviceDescriptionByUdn(const QString &udn) const; Q_SIGNALS: diff --git a/src/viewconfigurationdata.cpp b/src/viewconfigurationdata.cpp index 7c6b1674..dd899ae6 100644 --- a/src/viewconfigurationdata.cpp +++ b/src/viewconfigurationdata.cpp @@ -6,6 +6,9 @@ #include "viewconfigurationdata.h" +#include +#include + class ViewConfigurationDataPrivate { public: @@ -16,7 +19,7 @@ public: ViewConfigurationDataPrivate(ElisaUtils::FilterType filterType, int expectedDepth, QString mainTitle, QString secondaryTitle, QUrl imageUrl, ElisaUtils::PlayListEntryType dataType, - QAbstractItemModel *model, QAbstractProxyModel *associatedProxyModel, + std::unique_ptr model, std::unique_ptr associatedProxyModel, QUrl viewDefaultIcon, DataTypes::DataType dataFilter, int sortRole, QVector sortRoles, QVector sortRoleNames, Qt::SortOrder sortOrder, QVector sortOrderNames, @@ -29,8 +32,8 @@ public: , mSecondaryTitle(std::move(secondaryTitle)) , mImageUrl(std::move(imageUrl)) , mDataType(dataType) - , mModel(model) - , mAssociatedProxyModel(associatedProxyModel) + , mModel(model.release()) + , mAssociatedProxyModel(associatedProxyModel.release()) , mViewDefaultIcon(std::move(viewDefaultIcon)) , mDataFilter(std::move(dataFilter)) , mViewShowRating(viewShowRating) @@ -47,7 +50,7 @@ public: ViewConfigurationDataPrivate(ElisaUtils::FilterType filterType, int expectedDepth, QString mainTitle, QString secondaryTitle, QUrl imageUrl, ElisaUtils::PlayListEntryType dataType, - QAbstractItemModel *model, QAbstractProxyModel *associatedProxyModel, + std::unique_ptr model, std::unique_ptr associatedProxyModel, DataTypes::DataType dataFilter, int sortRole, QVector sortRoles, QVector sortRoleNames, Qt::SortOrder sortOrder, QVector sortOrderNames, @@ -61,8 +64,8 @@ public: , mSecondaryTitle(std::move(secondaryTitle)) , mImageUrl(std::move(imageUrl)) , mDataType(dataType) - , mModel(model) - , mAssociatedProxyModel(associatedProxyModel) + , mModel(model.release()) + , mAssociatedProxyModel(associatedProxyModel.release()) , mDataFilter(std::move(dataFilter)) , mIsTreeModel(isTreeModel) , mSortRole(sortRole) @@ -128,7 +131,7 @@ ViewConfigurationData::ViewConfigurationData(QObject *parent) ViewConfigurationData::ViewConfigurationData(ElisaUtils::FilterType filterType, int expectedDepth, QString mainTitle, QString secondaryTitle, QUrl imageUrl, ElisaUtils::PlayListEntryType dataType, - QAbstractItemModel *model, QAbstractProxyModel *associatedProxyModel, + std::unique_ptr model, std::unique_ptr associatedProxyModel, QUrl viewDefaultIcon, DataTypes::DataType dataFilter, int sortRole, QVector sortRoles, QVector sortRoleNames, Qt::SortOrder sortOrder, QVector sortOrderNames, @@ -138,7 +141,7 @@ ViewConfigurationData::ViewConfigurationData(ElisaUtils::FilterType filterType, : QObject(parent) , d(std::make_unique(filterType, expectedDepth, std::move(mainTitle), std::move(secondaryTitle), std::move(imageUrl), - dataType, model, associatedProxyModel, + dataType, std::move(model), std::move(associatedProxyModel), std::move(viewDefaultIcon), std::move(dataFilter), sortRole, std::move(sortRoles), std::move(sortRoleNames), sortOrder, std::move(sortOrderNames), @@ -149,19 +152,17 @@ ViewConfigurationData::ViewConfigurationData(ElisaUtils::FilterType filterType, ViewConfigurationData::ViewConfigurationData(ElisaUtils::FilterType filterType, int expectedDepth, QString mainTitle, QString secondaryTitle, - QUrl imageUrl, ElisaUtils::PlayListEntryType dataType, - QAbstractItemModel *model, QAbstractProxyModel *associatedProxyModel, - DataTypes::DataType dataFilter, + QUrl imageUrl, ElisaUtils::PlayListEntryType dataType, std::unique_ptr model, + std::unique_ptr associatedProxyModel, DataTypes::DataType dataFilter, int sortRole, QVector sortRoles, QVector sortRoleNames, Qt::SortOrder sortOrder, QVector sortOrderNames, ViewManager::AlbumCardinality displaySingleAlbum, - ViewManager::AlbumViewStyle showDiscHeaders, - ViewManager::RadioSpecificStyle radioCase, + ViewManager::AlbumViewStyle showDiscHeaders, ViewManager::RadioSpecificStyle radioCase, ViewManager::IsTreeModelType isTreeModel, QObject *parent) : QObject(parent) , d(std::make_unique(filterType, expectedDepth, std::move(mainTitle), std::move(secondaryTitle), std::move(imageUrl), - dataType, model, associatedProxyModel, std::move(dataFilter), + dataType, std::move(model), std::move(associatedProxyModel), std::move(dataFilter), sortRole, std::move(sortRoles), std::move(sortRoleNames), sortOrder, std::move(sortOrderNames), displaySingleAlbum, showDiscHeaders, radioCase, isTreeModel)) diff --git a/src/viewconfigurationdata.h b/src/viewconfigurationdata.h index f5a8a8ed..56b62575 100644 --- a/src/viewconfigurationdata.h +++ b/src/viewconfigurationdata.h @@ -116,8 +116,8 @@ public: explicit ViewConfigurationData(ElisaUtils::FilterType filterType, int expectedDepth, QString mainTitle, QString secondaryTitle, QUrl imageUrl, - ElisaUtils::PlayListEntryType dataType, QAbstractItemModel *model, - QAbstractProxyModel *associatedProxyModel, QUrl viewDefaultIcon, + ElisaUtils::PlayListEntryType dataType, std::unique_ptr model, + std::unique_ptr associatedProxyModel, QUrl viewDefaultIcon, DataTypes::DataType dataFilter, int sortRole, QVector sortRoles, QVector sortRoleNames, Qt::SortOrder sortOrder, QVector sortOrderNames, @@ -127,8 +127,8 @@ public: explicit ViewConfigurationData(ElisaUtils::FilterType filterType, int expectedDepth, QString mainTitle, QString secondaryTitle, - QUrl imageUrl, ElisaUtils::PlayListEntryType dataType, QAbstractItemModel *model, - QAbstractProxyModel *associatedProxyModel, DataTypes::DataType dataFilter, + QUrl imageUrl, ElisaUtils::PlayListEntryType dataType, std::unique_ptr model, + std::unique_ptr associatedProxyModel, DataTypes::DataType dataFilter, int sortRole, QVector sortRoles, QVector sortRoleNames, Qt::SortOrder sortOrder, QVector sortOrderNames, ViewManager::AlbumCardinality displaySingleAlbum, diff --git a/src/viewmanager.cpp b/src/viewmanager.cpp index 4e4e30f5..adae1346 100644 --- a/src/viewmanager.cpp +++ b/src/viewmanager.cpp @@ -301,23 +301,23 @@ void ViewManager::openViewFromData(const ViewParameters &viewParamaters) d->mViewParametersStack.pop_back(); } - QAbstractItemModel *newModel = nullptr; - QAbstractProxyModel *proxyModel = nullptr; + std::unique_ptr newModel; + std::unique_ptr proxyModel; switch (viewParamaters.mModelType) { case FileBrowserModelType: - newModel = new FileBrowserModel; - proxyModel = new FileBrowserProxyModel; + newModel = std::make_unique(); + proxyModel = std::make_unique(); break; case GenericDataModelType: - newModel = new DataModel; - proxyModel = new GridViewProxyModel; + newModel = std::make_unique(); + proxyModel = std::make_unique(); break; case UpnpContentDirectoryModelType: #if defined UpnpLibQt_FOUND && UpnpLibQt_FOUND - newModel = new UpnpContentDirectoryModel; - proxyModel = new GridViewProxyModel; + newModel = std::make_unique(); + proxyModel = std::make_unique(); #endif break; case UnknownModelType: @@ -325,8 +325,8 @@ void ViewManager::openViewFromData(const ViewParameters &viewParamaters) break; } - QQmlEngine::setObjectOwnership(newModel, QQmlEngine::JavaScriptOwnership); - QQmlEngine::setObjectOwnership(proxyModel, QQmlEngine::JavaScriptOwnership); + QQmlEngine::setObjectOwnership(newModel.get(), QQmlEngine::JavaScriptOwnership); + QQmlEngine::setObjectOwnership(proxyModel.get(), QQmlEngine::JavaScriptOwnership); d->mViewParametersStack.push_back(viewParamaters); switch (viewParamaters.mViewPresentationType) @@ -345,7 +345,7 @@ void ViewManager::openViewFromData(const ViewParameters &viewParamaters) auto configurationData = std::make_unique(viewParamaters.mFilterType, viewParamaters.mDepth, viewParamaters.mMainTitle, viewParamaters.mSecondaryTitle, viewParamaters.mMainImage, viewParamaters.mDataType, - newModel, proxyModel, viewParamaters.mFallbackItemIcon, + std::move(newModel), std::move(proxyModel), viewParamaters.mFallbackItemIcon, viewParamaters.mDataFilter, computePreferredSortRole(viewParamaters.mSortRole), viewParamaters.mSortRoles, viewParamaters.mSortRoleNames, @@ -373,7 +373,7 @@ void ViewManager::openViewFromData(const ViewParameters &viewParamaters) auto configurationData = std::make_unique(viewParamaters.mFilterType, viewParamaters.mDepth, viewParamaters.mMainTitle, viewParamaters.mSecondaryTitle, viewParamaters.mMainImage, viewParamaters.mDataType, - newModel, proxyModel, viewParamaters.mDataFilter, + std::move(newModel), std::move(proxyModel), viewParamaters.mDataFilter, computePreferredSortRole(viewParamaters.mSortRole), viewParamaters.mSortRoles, viewParamaters.mSortRoleNames, computePreferredSortOrder(viewParamaters.mSortOrder), -- GitLab