diff --git a/autotests/localfilelistingtest.cpp b/autotests/localfilelistingtest.cpp --- a/autotests/localfilelistingtest.cpp +++ b/autotests/localfilelistingtest.cpp @@ -292,9 +292,9 @@ } QCOMPARE(errorWatchingFilesSpy.count(), 0); - auto firstNewTracksSignal = tracksListSpy.at(0); + const auto &firstNewTracksSignal = tracksListSpy.at(0); auto firstNewTracks = firstNewTracksSignal.at(0).value>(); - auto secondNewTracksSignal = tracksListSpy.at(1); + const auto &secondNewTracksSignal = tracksListSpy.at(1); auto secondNewTracks = secondNewTracksSignal.at(0).value>(); auto newCovers = secondNewTracksSignal.at(1).value>(); diff --git a/src/musicalbum.h b/src/musicalbum.h --- a/src/musicalbum.h +++ b/src/musicalbum.h @@ -27,6 +27,7 @@ #include #include #include +#include #include @@ -40,11 +41,11 @@ MusicAlbum(); - MusicAlbum(MusicAlbum &&other); + MusicAlbum(MusicAlbum &&other) noexcept; MusicAlbum(const MusicAlbum &other); - MusicAlbum& operator=(MusicAlbum &&other); + MusicAlbum& operator=(MusicAlbum &&other) noexcept; MusicAlbum& operator=(const MusicAlbum &other); @@ -126,14 +127,16 @@ private: - std::unique_ptr d; + QSharedDataPointer d; }; ELISALIB_EXPORT QDebug operator<<(QDebug stream, const MusicAlbum &data); ELISALIB_EXPORT bool operator==(const MusicAlbum &album1, const MusicAlbum &album2); +Q_DECLARE_TYPEINFO(MusicAlbum, Q_MOVABLE_TYPE); + Q_DECLARE_METATYPE(MusicAlbum) #endif // MUSICALBUM_H diff --git a/src/musicalbum.cpp b/src/musicalbum.cpp --- a/src/musicalbum.cpp +++ b/src/musicalbum.cpp @@ -23,10 +23,11 @@ #include #include #include +#include #include -class MusicAlbumPrivate +class MusicAlbumPrivate : public QSharedData { public: @@ -48,47 +49,27 @@ QList mTracks; + QStringList mGenres; + int mTracksCount = 0; bool mIsValid = false; bool mIsSingleDiscAlbum = true; - QStringList mGenres; - }; -MusicAlbum::MusicAlbum() : d(std::make_unique()) -{ -} - -MusicAlbum::MusicAlbum(MusicAlbum &&other) -{ - d.swap(other.d); -} - -MusicAlbum::MusicAlbum(const MusicAlbum &other) : d(std::make_unique(*other.d)) +MusicAlbum::MusicAlbum() : d(new MusicAlbumPrivate()) { } -MusicAlbum& MusicAlbum::operator=(MusicAlbum &&other) -{ - if (&other != this) { - d.reset(); - d.swap(other.d); - } +MusicAlbum::MusicAlbum(MusicAlbum &&other) noexcept = default; - return *this; -} +MusicAlbum::MusicAlbum(const MusicAlbum &other) = default; -MusicAlbum& MusicAlbum::operator=(const MusicAlbum &other) -{ - if (&other != this) { - (*d) = (*other.d); - } +MusicAlbum& MusicAlbum::operator=(MusicAlbum &&other) noexcept = default; - return *this; -} +MusicAlbum& MusicAlbum::operator=(const MusicAlbum &other) = default; MusicAlbum::~MusicAlbum() = default; diff --git a/src/musicartist.h b/src/musicartist.h --- a/src/musicartist.h +++ b/src/musicartist.h @@ -22,6 +22,7 @@ #include #include +#include #include @@ -34,11 +35,11 @@ MusicArtist(); - MusicArtist(MusicArtist &&other); + MusicArtist(MusicArtist &&other) noexcept; MusicArtist(const MusicArtist &other); - MusicArtist& operator=(MusicArtist &&other); + MusicArtist& operator=(MusicArtist &&other) noexcept; MusicArtist& operator=(const MusicArtist &other); @@ -66,14 +67,16 @@ private: - std::unique_ptr d; + QSharedDataPointer d; }; QDebug& operator<<(QDebug &stream, const MusicArtist &data); bool operator==(const MusicArtist &artist1, const MusicArtist &artist2); +Q_DECLARE_TYPEINFO(MusicArtist, Q_MOVABLE_TYPE); + Q_DECLARE_METATYPE(MusicArtist) #endif // MUSICARTIST_H diff --git a/src/musicartist.cpp b/src/musicartist.cpp --- a/src/musicartist.cpp +++ b/src/musicartist.cpp @@ -20,9 +20,11 @@ #include #include #include +#include + #include -class MusicArtistPrivate +class MusicArtistPrivate : public QSharedData { public: @@ -38,37 +40,17 @@ }; -MusicArtist::MusicArtist() : d(std::make_unique()) +MusicArtist::MusicArtist() : d(new MusicArtistPrivate()) { } -MusicArtist::MusicArtist(MusicArtist &&other) -{ - d.swap(other.d); -} +MusicArtist::MusicArtist(MusicArtist &&other) noexcept = default; -MusicArtist::MusicArtist(const MusicArtist &other) : d(std::make_unique(*other.d)) -{ -} +MusicArtist::MusicArtist(const MusicArtist &other) = default; -MusicArtist& MusicArtist::operator=(MusicArtist &&other) -{ - if (&other != this) { - d.reset(); - d.swap(other.d); - } +MusicArtist& MusicArtist::operator=(MusicArtist &&other) noexcept = default; - return *this; -} - -MusicArtist &MusicArtist::operator=(const MusicArtist &other) -{ - if (&other != this) { - (*d) = (*other.d); - } - - return *this; -} +MusicArtist &MusicArtist::operator=(const MusicArtist &other) = default; MusicArtist::~MusicArtist() = default; diff --git a/src/musicaudiogenre.h b/src/musicaudiogenre.h --- a/src/musicaudiogenre.h +++ b/src/musicaudiogenre.h @@ -22,6 +22,7 @@ #include #include +#include #include @@ -35,11 +36,11 @@ MusicAudioGenre(); - MusicAudioGenre(MusicAudioGenre &&other); + MusicAudioGenre(MusicAudioGenre &&other) noexcept; MusicAudioGenre(const MusicAudioGenre &other); - MusicAudioGenre& operator=(MusicAudioGenre &&other); + MusicAudioGenre& operator=(MusicAudioGenre &&other) noexcept; MusicAudioGenre& operator=(const MusicAudioGenre &other); @@ -55,14 +56,16 @@ private: - std::unique_ptr d; + QSharedDataPointer d; }; QDebug& operator<<(QDebug &stream, const MusicAudioGenre &data); bool operator==(const MusicAudioGenre &genre1, const MusicAudioGenre &genre2); +Q_DECLARE_TYPEINFO(MusicAudioGenre, Q_MOVABLE_TYPE); + Q_DECLARE_METATYPE(MusicAudioGenre) #endif // MUSICAUDIOGENRE_H diff --git a/src/musicaudiogenre.cpp b/src/musicaudiogenre.cpp --- a/src/musicaudiogenre.cpp +++ b/src/musicaudiogenre.cpp @@ -17,9 +17,11 @@ #include "musicaudiogenre.h" +#include + #include -class MusicAudioGenrePrivate +class MusicAudioGenrePrivate : public QSharedData { public: @@ -29,37 +31,17 @@ }; -MusicAudioGenre::MusicAudioGenre() : d(std::make_unique()) +MusicAudioGenre::MusicAudioGenre() : d(new MusicAudioGenrePrivate()) { } -MusicAudioGenre::MusicAudioGenre(MusicAudioGenre &&other) -{ - d.swap(other.d); -} +MusicAudioGenre::MusicAudioGenre(MusicAudioGenre &&other) noexcept = default; -MusicAudioGenre::MusicAudioGenre(const MusicAudioGenre &other) : d(std::make_unique(*other.d)) -{ -} +MusicAudioGenre::MusicAudioGenre(const MusicAudioGenre &other) = default; -MusicAudioGenre& MusicAudioGenre::operator=(MusicAudioGenre &&other) -{ - if (&other != this) { - d.reset(); - d.swap(other.d); - } +MusicAudioGenre& MusicAudioGenre::operator=(MusicAudioGenre &&other) noexcept = default; - return *this; -} - -MusicAudioGenre &MusicAudioGenre::operator=(const MusicAudioGenre &other) -{ - if (&other != this) { - (*d) = (*other.d); - } - - return *this; -} +MusicAudioGenre &MusicAudioGenre::operator=(const MusicAudioGenre &other) = default; MusicAudioGenre::~MusicAudioGenre() = default; diff --git a/src/musicaudiotrack.h b/src/musicaudiotrack.h --- a/src/musicaudiotrack.h +++ b/src/musicaudiotrack.h @@ -24,6 +24,7 @@ #include #include #include +#include #include @@ -70,49 +71,49 @@ qulonglong albumId() const; - void setId(const QString &value) const; + void setId(const QString &value); QString id() const; - void setParentId(const QString &value) const; + void setParentId(const QString &value); QString parentId() const; - void setTitle(const QString &value) const; + void setTitle(const QString &value); QString title() const; - void setArtist(const QString &value) const; + void setArtist(const QString &value); QString artist() const; - void setAlbumName(const QString &value) const; + void setAlbumName(const QString &value); QString albumName() const; - void setAlbumArtist(const QString &value) const; + void setAlbumArtist(const QString &value); QString albumArtist() const; - void setGenre(const QString &value) const; + void setGenre(const QString &value); QString genre() const; - void setComposer(const QString &value) const; + void setComposer(const QString &value); QString composer() const; - void setLyricist(const QString &value) const; + void setLyricist(const QString &value); QString lyricist() const; - void setComment(const QString &value) const; + void setComment(const QString &value); QString comment() const; bool isValidAlbumArtist() const; - void setAlbumCover(const QUrl &value) const; + void setAlbumCover(const QUrl &value); QUrl albumCover() const; @@ -152,7 +153,7 @@ const QUrl& resourceURI() const; - void setRating(int value) const; + void setRating(int value); int rating() const; @@ -162,12 +163,14 @@ private: - std::unique_ptr d; + QSharedDataPointer d; }; ELISALIB_EXPORT QDebug operator<<(QDebug stream, const MusicAudioTrack &data); +Q_DECLARE_TYPEINFO(MusicAudioTrack, Q_MOVABLE_TYPE); + Q_DECLARE_METATYPE(MusicAudioTrack) #endif // MUSICAUDIOTRACK_H diff --git a/src/musicaudiotrack.cpp b/src/musicaudiotrack.cpp --- a/src/musicaudiotrack.cpp +++ b/src/musicaudiotrack.cpp @@ -20,8 +20,9 @@ #include #include #include +#include -class MusicAudioTrackPrivate +class MusicAudioTrackPrivate : public QSharedData { public: @@ -33,7 +34,8 @@ QDateTime fileModificationTime, QUrl aAlbumCover, int rating, bool aIsSingleDiscAlbum, QString aGenre, QString aComposer, QString aLyricist) - : mId(std::move(aId)), mParentId(std::move(aParentId)), mTitle(std::move(aTitle)), mArtist(std::move(aArtist)), + : QSharedData(), mId(std::move(aId)), mParentId(std::move(aParentId)), + mTitle(std::move(aTitle)), mArtist(std::move(aArtist)), mAlbumName(std::move(aAlbumName)), mAlbumArtist(std::move(aAlbumArtist)), mGenre(std::move(aGenre)), mComposer(std::move(aComposer)), mLyricist(std::move(aLyricist)), mResourceURI(std::move(aResourceURI)), @@ -96,55 +98,35 @@ }; -MusicAudioTrack::MusicAudioTrack() : d(std::make_unique()) +MusicAudioTrack::MusicAudioTrack() : d(new MusicAudioTrackPrivate()) { } MusicAudioTrack::MusicAudioTrack(bool aValid, QString aId, QString aParentId, QString aTitle, QString aArtist, QString aAlbumName, QString aAlbumArtist, int aTrackNumber, int aDiscNumber, QTime aDuration, QUrl aResourceURI, const QDateTime &fileModificationTime, QUrl aAlbumCover, int rating, bool aIsSingleDiscAlbum, QString aGenre, QString aComposer, QString aLyricist) - : d(std::make_unique(aValid, std::move(aId), std::move(aParentId), - std::move(aTitle), std::move(aArtist), - std::move(aAlbumName), std::move(aAlbumArtist), - aTrackNumber, aDiscNumber, aDuration, - std::move(aResourceURI), fileModificationTime, - std::move(aAlbumCover), rating, - aIsSingleDiscAlbum, std::move(aGenre), - std::move(aComposer), std::move(aLyricist))) + : d(new MusicAudioTrackPrivate(aValid, std::move(aId), std::move(aParentId), + std::move(aTitle), std::move(aArtist), + std::move(aAlbumName), std::move(aAlbumArtist), + aTrackNumber, aDiscNumber, aDuration, + std::move(aResourceURI), fileModificationTime, + std::move(aAlbumCover), rating, + aIsSingleDiscAlbum, std::move(aGenre), + std::move(aComposer), std::move(aLyricist))) { } -MusicAudioTrack::MusicAudioTrack(MusicAudioTrack &&other) noexcept -{ - d.swap(other.d); -} +MusicAudioTrack::MusicAudioTrack(MusicAudioTrack &&other) noexcept = default; -MusicAudioTrack::MusicAudioTrack(const MusicAudioTrack &other) : d(std::make_unique(*other.d)) -{ -} +MusicAudioTrack::MusicAudioTrack(const MusicAudioTrack &other) = default; MusicAudioTrack::~MusicAudioTrack() = default; -MusicAudioTrack& MusicAudioTrack::operator=(MusicAudioTrack &&other) noexcept -{ - if (this != &other) { - d.reset(); - d.swap(other.d); - } - - return *this; -} - -MusicAudioTrack& MusicAudioTrack::operator=(const MusicAudioTrack &other) -{ - if (this != &other) { - (*d) = (*other.d); - } +MusicAudioTrack& MusicAudioTrack::operator=(MusicAudioTrack &&other) noexcept = default; - return *this; -} +MusicAudioTrack& MusicAudioTrack::operator=(const MusicAudioTrack &other) = default; bool MusicAudioTrack::operator <(const MusicAudioTrack &other) const { @@ -211,7 +193,7 @@ return d->mAlbumId; } -void MusicAudioTrack::setId(const QString &value) const +void MusicAudioTrack::setId(const QString &value) { d->mId = value; } @@ -221,7 +203,7 @@ return d->mId; } -void MusicAudioTrack::setParentId(const QString &value) const +void MusicAudioTrack::setParentId(const QString &value) { d->mParentId = value; } @@ -231,7 +213,7 @@ return d->mParentId; } -void MusicAudioTrack::setTitle(const QString &value) const +void MusicAudioTrack::setTitle(const QString &value) { d->mTitle = value; } @@ -241,7 +223,7 @@ return d->mTitle; } -void MusicAudioTrack::setArtist(const QString &value) const +void MusicAudioTrack::setArtist(const QString &value) { d->mArtist = value; } @@ -251,7 +233,7 @@ return d->mArtist; } -void MusicAudioTrack::setAlbumName(const QString &value) const +void MusicAudioTrack::setAlbumName(const QString &value) { d->mAlbumName = value; } @@ -261,7 +243,7 @@ return d->mAlbumName; } -void MusicAudioTrack::setAlbumArtist(const QString &value) const +void MusicAudioTrack::setAlbumArtist(const QString &value) { d->mAlbumArtist = value; } @@ -276,7 +258,7 @@ return !d->mAlbumArtist.isEmpty(); } -void MusicAudioTrack::setAlbumCover(const QUrl &value) const +void MusicAudioTrack::setAlbumCover(const QUrl &value) { d->mAlbumCover = value; } @@ -286,7 +268,7 @@ return d->mAlbumCover; } -void MusicAudioTrack::setGenre(const QString &value) const +void MusicAudioTrack::setGenre(const QString &value) { d->mGenre = value; } @@ -296,7 +278,7 @@ return d->mGenre; } -void MusicAudioTrack::setComposer(const QString &value) const +void MusicAudioTrack::setComposer(const QString &value) { d->mComposer = value; } @@ -306,7 +288,7 @@ return d->mComposer; } -void MusicAudioTrack::setLyricist(const QString &value) const +void MusicAudioTrack::setLyricist(const QString &value) { d->mLyricist = value; } @@ -316,7 +298,7 @@ return d->mLyricist; } -void MusicAudioTrack::setComment(const QString &value) const +void MusicAudioTrack::setComment(const QString &value) { d->mComment = value; } @@ -416,7 +398,7 @@ return d->mResourceURI; } -void MusicAudioTrack::setRating(int value) const +void MusicAudioTrack::setRating(int value) { d->mRating = value; }