File indexing completed on 2025-02-23 04:27:37
0001 /**************************************************************************************** 0002 * Copyright (c) 2007 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 DAAPMETA_H 0018 #define DAAPMETA_H 0019 0020 #include "core/meta/Meta.h" 0021 0022 namespace Collections { 0023 class DaapCollection; 0024 } 0025 0026 namespace Meta 0027 { 0028 0029 class DaapTrack; 0030 class DaapAlbum; 0031 class DaapArtist; 0032 class DaapGenre; 0033 class DaapComposer; 0034 class DaapYear; 0035 0036 typedef AmarokSharedPointer<DaapTrack> DaapTrackPtr; 0037 typedef AmarokSharedPointer<DaapArtist> DaapArtistPtr; 0038 typedef AmarokSharedPointer<DaapAlbum> DaapAlbumPtr; 0039 typedef AmarokSharedPointer<DaapGenre> DaapGenrePtr; 0040 typedef AmarokSharedPointer<DaapComposer> DaapComposerPtr; 0041 typedef AmarokSharedPointer<DaapYear> DaapYearPtr; 0042 0043 class DaapTrack : public Meta::Track 0044 { 0045 public: 0046 DaapTrack( Collections::DaapCollection *collection, const QString &host, quint16 port, const QString &dbId, const QString &itemId, const QString &format); 0047 ~DaapTrack() override; 0048 0049 QString name() const override; 0050 0051 QUrl playableUrl() const override; 0052 QString uidUrl() const override; 0053 QString prettyUrl() const override; 0054 QString notPlayableReason() const override; 0055 0056 AlbumPtr album() const override; 0057 ArtistPtr artist() const override; 0058 GenrePtr genre() const override; 0059 ComposerPtr composer() const override; 0060 YearPtr year() const override; 0061 0062 virtual void setAlbum ( const QString &newAlbum ); 0063 virtual void setArtist ( const QString &newArtist ); 0064 virtual void setGenre ( const QString &newGenre ); 0065 virtual void setComposer ( const QString &newComposer ); 0066 virtual void setYear ( int newYear ); 0067 0068 virtual void setTitle( const QString &newTitle ); 0069 0070 qreal bpm() const override; 0071 0072 QString comment() const override; 0073 virtual void setComment ( const QString &newComment ); 0074 0075 qint64 length() const override; 0076 0077 int filesize() const override; 0078 int sampleRate() const override; 0079 int bitrate() const override; 0080 0081 int trackNumber() const override; 0082 virtual void setTrackNumber ( int newTrackNumber ); 0083 0084 int discNumber() const override; 0085 virtual void setDiscNumber ( int newDiscNumber ); 0086 0087 QString type() const override; 0088 0089 bool inCollection() const override; 0090 Collections::Collection* collection() const override; 0091 0092 //DaapTrack specific methods 0093 void setAlbum( const DaapAlbumPtr &album ); 0094 void setArtist( const DaapArtistPtr &artist ); 0095 void setComposer( const DaapComposerPtr &composer ); 0096 void setGenre( const DaapGenrePtr &genre ); 0097 void setYear( const DaapYearPtr &year ); 0098 0099 void setLength( qint64 length ); 0100 0101 private: 0102 Collections::DaapCollection *m_collection; 0103 0104 DaapArtistPtr m_artist; 0105 DaapAlbumPtr m_album; 0106 DaapGenrePtr m_genre; 0107 DaapComposerPtr m_composer; 0108 DaapYearPtr m_year; 0109 0110 QString m_name; 0111 QString m_type; 0112 qint64 m_length; 0113 int m_trackNumber; 0114 QString m_displayUrl; 0115 QString m_playableUrl; 0116 }; 0117 0118 class DaapArtist : public Meta::Artist 0119 { 0120 public: 0121 explicit DaapArtist( const QString &name ); 0122 ~DaapArtist() override; 0123 0124 QString name() const override; 0125 0126 TrackList tracks() override; 0127 0128 virtual AlbumList albums(); 0129 0130 //DaapArtist specific methods 0131 void addTrack( const DaapTrackPtr &track ); 0132 0133 private: 0134 QString m_name; 0135 TrackList m_tracks; 0136 }; 0137 0138 class DaapAlbum : public Meta::Album 0139 { 0140 public: 0141 explicit DaapAlbum( const QString &name ); 0142 ~DaapAlbum() override; 0143 0144 QString name() const override; 0145 0146 bool isCompilation() const override; 0147 bool hasAlbumArtist() const override; 0148 ArtistPtr albumArtist() const override; 0149 TrackList tracks() override; 0150 0151 //DaapAlbum specific methods 0152 void addTrack( const DaapTrackPtr &track ); 0153 void setAlbumArtist( const DaapArtistPtr &artist ); 0154 0155 private: 0156 QString m_name; 0157 TrackList m_tracks; 0158 bool m_isCompilation; 0159 DaapArtistPtr m_albumArtist; 0160 }; 0161 0162 class DaapGenre : public Meta::Genre 0163 { 0164 public: 0165 explicit DaapGenre( const QString &name ); 0166 ~DaapGenre() override; 0167 0168 QString name() const override; 0169 0170 TrackList tracks() override; 0171 0172 //DaapGenre specific methods 0173 void addTrack( const DaapTrackPtr &track ); 0174 0175 private: 0176 QString m_name; 0177 TrackList m_tracks; 0178 }; 0179 0180 class DaapComposer : public Meta::Composer 0181 { 0182 public: 0183 explicit DaapComposer( const QString &name ); 0184 ~DaapComposer() override; 0185 0186 QString name() const override; 0187 0188 TrackList tracks() override; 0189 0190 //DaapComposer specific methods 0191 void addTrack( const DaapTrackPtr &track ); 0192 0193 private: 0194 QString m_name; 0195 TrackList m_tracks; 0196 }; 0197 0198 class DaapYear : public Meta::Year 0199 { 0200 public: 0201 explicit DaapYear( const QString &name ); 0202 ~DaapYear() override; 0203 0204 QString name() const override; 0205 0206 TrackList tracks() override; 0207 0208 //DaapYear specific methods 0209 void addTrack( const DaapTrackPtr &track ); 0210 0211 private: 0212 QString m_name; 0213 TrackList m_tracks; 0214 }; 0215 0216 } 0217 0218 #endif 0219