defuze.me
Client
|
00001 /************************************************************************** 00002 ** defuze.me Epitech Innovative Project 00003 ** 00004 ** Copyright 2010-2011 00005 ** Athena Calmettes - Jocelyn De La Rosa - Francois Gaillard 00006 ** Adrien Jarthon - Alexandre Moore - Luc Peres - Arnaud Sellier 00007 ** 00008 ** All rights reserved. 00009 **************************************************************************/ 00010 00011 namespace Library { 00012 class AudioTrack; 00013 } 00014 00015 #ifndef AUDIOTRACK_HPP 00016 #define AUDIOTRACK_HPP 00017 00018 #include "source.hpp" 00019 #include <QVariantMap> 00020 #include <QMap> 00021 #include <QHash> 00022 #include <QObject> 00023 #include <QImage> 00024 #include <QMutex> 00025 #include <QPixmap> 00026 #include "audiotrackloader.hpp" 00027 00028 namespace Library 00029 { 00034 class AudioTrack : public QObject 00035 { 00036 Q_OBJECT 00037 public: 00038 AudioTrack(const QString &path, Source *source); 00039 static AudioTrack* getTrack(int id); 00040 static bool isLoaded(int id); 00041 static void loadAndCall(int id, QObject* obj, const char* slot); 00042 const QString& getTitle() const; 00043 const QString& getArtist() const; 00044 const QString& getAlbumArtist() const; 00045 const QString& getAlbum() const; 00046 const QString& getGenre() const; 00047 const QString& getPath() const; 00048 const QString getAbsolutePath() const; 00049 int getUid() const; 00050 int getYear() const; 00051 int getTrack() const; 00052 int getDuration() const; 00053 const QVariant getAttribute(const QString& name) const; 00054 Source* getSource() const; 00055 void setSource(Source *source); 00056 void setTitle(const QString& title); 00057 void setArtist(const QString& artist); 00058 void setAlbumArtist(const QString& albumArtist); 00059 void setAlbum(const QString& album); 00060 void setGenre(const QString& genre); 00061 void setPath(const QString &path); 00062 void setUid(int uid); 00063 void setYear(int year); 00064 void setTrack(int track); 00065 void setDuration(int duration); 00066 void setAttribute(const QString& name, const QVariant& value); 00067 bool newRecord() const; 00068 bool valid() const; 00069 void save(); 00070 void remove(); 00071 static const QMap<int, AudioTrack*>& getTracksMap(); 00072 const QImage& getAlbumArt() const; 00073 const QPixmap& getAlbumArtAtSize(int size); 00074 const QImage& getArtistArt() const; 00075 const QPixmap& getArtistArtAtSize(int size); 00076 00077 signals: 00078 void removed(Library::AudioTrack*); 00079 00080 private: 00081 AudioTrack(int id); 00082 void extractTags(); 00083 void extractCover(); 00084 00085 Source *source; 00086 int uid, year, track, duration; 00087 QString title, artist, albumArtist, album, genre, path; 00088 QVariantMap attributes; 00089 QImage image; 00090 QHash<int, QPixmap> resizedImages; 00091 00092 static QMap<int, AudioTrack*> tracksMap; 00093 static QMap<int, AudioTrackLoader*> trackLoaders; 00094 static QImage defaultImage, artistImage; 00095 static QHash<int, QPixmap> resizedArtist; 00096 static QMutex taglibMutex; 00097 static QMutex trackMapMutex; 00098 }; 00099 } 00100 00101 #endif // AUDIOTRACK_HPP