00001 #ifndef __MEDIAARTINFO_H
00002 #define __MEDIAARTINFO_H
00003
00004 #include <QMetaType>
00005 #include <QString>
00006 #include <QUrl>
00007
00008 class QDebug;
00009 class QPixmap;
00010
00011 namespace MediaArt {
00012
00082 class Info {
00083 friend uint qHash (MediaArt::Info const &mai);
00084 friend QDebug operator<< (QDebug dbg, const MediaArt::Info& mai);
00085 protected:
00087 QString _b;
00089 QString _c;
00091 QString _d;
00093 QString _type;
00095 QUrl _path;
00096 protected:
00102 static QString md5 (const QString& src);
00103
00112 static QString stripInvalidEntities (const QString& src);
00113
00120 void updatePath ();
00121 public:
00123 static const QString Type;
00124 public:
00129 const QString& type () const;
00134 const QUrl& potentialPath () const;
00140 bool exists() const;
00145 bool remove() const;
00154 Info( const QString& b = QString(),
00155 const QString& c = QString(),
00156 const QString& type = QString() );
00158 Info(const MediaArt::Info& src);
00160 ~Info();
00161 public:
00174 bool setMediaArtImage(const QUrl& source, bool overwrite = false) const;
00175
00188 bool setMediaArtImage(const QPixmap& source, bool overwrite = false) const;
00189 };
00190
00196 class Album : public MediaArt::Info {
00197 public:
00199 static const QString Type;
00201 Album (const QString& artist, const QString& album);
00203 const QString& artist () const;
00205 const QString& album () const;
00206 };
00207
00215 class Artist : public MediaArt::Info {
00216 public:
00218 static const QString Type;
00220 Artist (const QString& artist, const QString& album = QString());
00222 const QString& artist () const;
00224 const QString& album () const;
00225 };
00226
00232 class Radio : public MediaArt::Info {
00233 public:
00235 static const QString Type;
00237 Radio (const QString& radio);
00239 const QString& radio () const;
00240 };
00241
00247 class Podcast : public MediaArt::Info {
00248 public:
00250 static const QString Type;
00252 Podcast (const QString& podcast);
00254 const QString& podcast () const;
00255 };
00256
00262 class Track : public MediaArt::Info {
00263 protected:
00264 void updatePath();
00265 public:
00267 static const QString Type;
00269 Track (const QString& artist, const QString& album, const QString& track);
00271 const QString& artist () const;
00273 const QString& album () const;
00275 const QString& track () const;
00276 };
00277
00279 uint qHash (MediaArt::Info const &mai);
00281 QDebug operator<< (QDebug dbg, const MediaArt::Info& mai);
00283 bool operator== (const MediaArt::Info &mai1, const MediaArt::Info &mai2);
00284
00285 }
00286
00287 Q_DECLARE_METATYPE(MediaArt::Info)
00288
00289 #endif // __MEDIAARTINFO_H