00001 #ifndef METAIO_H_
00002 #define METAIO_H_
00003
00004
00005 #include <QString>
00006
00007
00008 #include "metadata.h"
00009
00010 #define MYTH_MUSICBRAINZ_ALBUMARTIST_UUID "89ad4ac3-39f7-470e-963a-56509c546377"
00011
00012 class MetaIO
00013 {
00014 public:
00015 MetaIO(void);
00016 virtual ~MetaIO(void);
00017
00024 virtual bool write(const Metadata* mdata) = 0;
00025
00032 virtual bool writeVolatileMetadata(const Metadata* mdata)
00033 {
00034 (void)mdata;
00035 return false;
00036 }
00037
00044 virtual Metadata* read(const QString &filename) = 0;
00045
00051 virtual bool supportsEmbeddedImages(void)
00052 {
00053 return false;
00054 }
00055
00062 virtual AlbumArtList getAlbumArtList(const QString &filename)
00063 {
00064 (void)filename;
00065 return AlbumArtList();
00066 }
00067
00068 virtual bool writeAlbumArt(const QString &filename,
00069 const AlbumArtImage *albumart)
00070 {
00071 (void)filename;
00072 (void)albumart;
00073 return false;
00074 }
00075
00076 virtual bool removeAlbumArt(const QString &filename,
00077 const AlbumArtImage *albumart)
00078 {
00079 (void)filename;
00080 (void)albumart;
00081 return false;
00082 }
00083
00084 virtual bool changeImageType(const QString &filename,
00085 const AlbumArtImage *albumart,
00086 ImageType newType)
00087 {
00088 (void)filename;
00089 (void)albumart;
00090 (void)newType;
00091 return false;
00092 }
00093
00094 virtual QImage *getAlbumArt(const QString &filename, ImageType type)
00095 {
00096 (void)filename;
00097 (void)type;
00098 return false;
00099 }
00100
00101 void readFromFilename(const QString &filename, QString &artist,
00102 QString &album, QString &title, QString &genre,
00103 int &tracknum);
00104
00105 Metadata* readFromFilename(const QString &filename, bool blnLength = false);
00106
00107 void readFromFilename(Metadata *metadata);
00108
00109 virtual bool TagExists(const QString &filename)
00110 {
00111 (void)filename;
00112 return false;
00113 }
00114
00115 protected:
00116
00117 private:
00118 virtual int getTrackLength(const QString &filename) = 0;
00119
00120 QString mFilename;
00121 QString mFilenameFormat;
00122 };
00123
00124 #endif
00125