File indexing completed on 2024-04-28 04:48:13
0001 /**************************************************************************************** 0002 * Copyright (c) 2009 Maximilian Kossick <maximilian.kossick@googlemail.com> * 0003 * * 0004 * This program is free software; you can redistribute it and/or modify it under * 0005 * the terms of the GNU General Public License as published by the Free Software * 0006 * Foundation; either version 2 of the License, or (at your option) any later * 0007 * version. * 0008 * * 0009 * This program is distributed in the hope that it will be useful, but WITHOUT ANY * 0010 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A * 0011 * PARTICULAR PURPOSE. See the GNU General Public License for more details. * 0012 * * 0013 * You should have received a copy of the GNU General Public License along with * 0014 * this program. If not, see <http://www.gnu.org/licenses/>. * 0015 ****************************************************************************************/ 0016 0017 #ifndef METAMOCK_H 0018 #define METAMOCK_H 0019 0020 #include "core/meta/Meta.h" 0021 #include "core/meta/Statistics.h" 0022 #include "core/meta/support/MetaConstants.h" 0023 0024 #include <QDateTime> 0025 #include <QVariantMap> 0026 0027 /** 0028 * This class provides simple mocks for meta classes. 0029 * it will look for the keys defined in meta/MetaConstants.h 0030 * in the given QVariantMap and return those values in the respective methods. 0031 */ 0032 class MetaMock : public Meta::Track, Meta::Statistics 0033 { 0034 public: 0035 MetaMock( const QVariantMap &data ) : Meta::Track(), m_data( data ), m_labels( Meta::LabelList() ) {} 0036 ~MetaMock() override {} 0037 0038 Meta::AlbumPtr album() const override { return m_album; } 0039 Meta::YearPtr year() const override { return m_year; } 0040 Meta::GenrePtr genre() const override { return m_genre; } 0041 Meta::ArtistPtr artist() const override { return m_artist; } 0042 Meta::ComposerPtr composer() const override { return m_composer; } 0043 0044 QString name() const override { return m_data.value( Meta::Field::TITLE ).toString(); } 0045 QString prettyName() const override { return name(); } 0046 QUrl playableUrl() const override { return m_data.value( Meta::Field::URL ).value<QUrl>(); } 0047 QString prettyUrl() const override { return playableUrl().url(); } 0048 QString uidUrl() const override { return m_data.value( Meta::Field::UNIQUEID ).toString(); } 0049 QString notPlayableReason() const override { return QStringLiteral( "dummy reason" ); } 0050 QString comment() const override { return m_data.value( Meta::Field::COMMENT ).toString(); } 0051 qreal bpm() const override { return m_data.value( Meta::Field::BPM ).toDouble(); } 0052 qint64 length() const override { return m_data.value( Meta::Field::LENGTH ).toInt(); } 0053 int filesize() const override { return m_data.value( Meta::Field::FILESIZE ).toInt(); } 0054 int sampleRate() const override { return m_data.value( Meta::Field::SAMPLERATE ).toInt(); } 0055 int bitrate() const override { return m_data.value( Meta::Field::BITRATE ).toInt(); } 0056 QDateTime createDate() const override { return QDateTime(); } //field missing 0057 int trackNumber() const override { return m_data.value( Meta::Field::TRACKNUMBER ).toInt(); } 0058 int discNumber() const override { return m_data.value( Meta::Field::DISCNUMBER ).toInt(); } 0059 QString type() const override { return "Mock"; } 0060 0061 Meta::LabelList labels() const override { return m_labels; } 0062 0063 Meta::StatisticsPtr statistics() override { return Meta::StatisticsPtr( this ); } 0064 0065 // Meta::Statistics getters 0066 double score() const override { return m_data.value( Meta::Field::SCORE ).toDouble(); } 0067 int rating() const override { return m_data.value( Meta::Field::RATING ).toInt(); } 0068 QDateTime firstPlayed() const override { return m_data.value( Meta::Field::FIRST_PLAYED ).toDateTime(); } 0069 QDateTime lastPlayed() const override { return m_data.value( Meta::Field::LAST_PLAYED ).toDateTime(); } 0070 int playCount() const override { return m_data.value( Meta::Field::PLAYCOUNT ).toInt(); } 0071 0072 // Meta::Statistics setters 0073 void setScore( double newScore ) override { m_data[Meta::Field::SCORE].setValue( newScore ); } 0074 void setRating( int newRating ) override { m_data[Meta::Field::RATING].setValue( newRating ); } 0075 void setFirstPlayed( const QDateTime &date ) override { m_data[Meta::Field::FIRST_PLAYED].setValue( date ); } 0076 void setLastPlayed( const QDateTime &date ) override { m_data[Meta::Field::LAST_PLAYED].setValue( date ); } 0077 void setPlayCount( int newPlayCount ) override { m_data[Meta::Field::PLAYCOUNT].setValue( newPlayCount ); } 0078 0079 public: 0080 QVariantMap m_data; 0081 Meta::ArtistPtr m_artist; 0082 Meta::AlbumPtr m_album; 0083 Meta::GenrePtr m_genre; 0084 Meta::YearPtr m_year; 0085 Meta::ComposerPtr m_composer; 0086 Meta::LabelList m_labels; 0087 }; 0088 0089 class MockYear : public Meta::Year 0090 { 0091 public: 0092 MockYear( const QString &name ) 0093 : Meta::Year() 0094 , m_name( name ) {} 0095 0096 QString name() const override { return m_name; } 0097 QString prettyName() const override { return m_name; } 0098 Meta::TrackList tracks() override { return Meta::TrackList(); } 0099 0100 QString m_name; 0101 }; 0102 0103 class MockGenre : public Meta::Genre 0104 { 0105 public: 0106 MockGenre( const QString &name ) 0107 : Meta::Genre() 0108 , m_name( name ) {} 0109 0110 QString name() const override { return m_name; } 0111 QString prettyName() const override { return m_name; } 0112 Meta::TrackList tracks() override { return Meta::TrackList(); } 0113 0114 QString m_name; 0115 }; 0116 0117 class MockComposer : public Meta::Composer 0118 { 0119 public: 0120 MockComposer( const QString &name ) 0121 : Meta::Composer() 0122 , m_name( name ) {} 0123 0124 QString name() const override { return m_name; } 0125 QString prettyName() const override { return m_name; } 0126 Meta::TrackList tracks() override { return Meta::TrackList(); } 0127 0128 QString m_name; 0129 }; 0130 0131 class MockArtist : public Meta::Artist 0132 { 0133 public: 0134 MockArtist( const QString &name ) 0135 : Meta::Artist() 0136 , m_name( name ) {} 0137 0138 QString name() const override { return m_name; } 0139 QString prettyName() const override { return m_name; } 0140 Meta::TrackList tracks() override { return Meta::TrackList(); } 0141 Meta::AlbumList albums() { return Meta::AlbumList(); } 0142 0143 QString m_name; 0144 }; 0145 0146 class MockAlbum : public Meta::Album 0147 { 0148 public: 0149 MockAlbum( const QString &name, const Meta::ArtistPtr &albumArtist = Meta::ArtistPtr() ) 0150 : Meta::Album() 0151 , m_name( name ) 0152 , m_albumArtist( albumArtist ) {} 0153 0154 QString name() const override { return m_name; } 0155 QString prettyName() const override { return m_name; } 0156 Meta::TrackList tracks() override { return Meta::TrackList(); } 0157 bool hasAlbumArtist() const override { return ( m_albumArtist ) ? true : false; } 0158 Meta::ArtistPtr albumArtist() const override { return m_albumArtist; } 0159 bool isCompilation() const override { return !hasAlbumArtist(); } 0160 0161 QString m_name; 0162 Meta::ArtistPtr m_albumArtist; 0163 }; 0164 0165 class MockLabel : public Meta::Label 0166 { 0167 public: 0168 MockLabel( const QString &name ) 0169 : Meta::Label() 0170 , m_name( name ) {} 0171 0172 QString name() const override { return m_name; } 0173 0174 QString m_name; 0175 }; 0176 0177 #endif // METAMOCK_H