00001 #ifndef METAIOTAGLIB_H_
00002 #define METAIOTAGLIB_H_
00003
00004 #include "metaio.h"
00005 #include "metadata.h"
00006 #include <id3v2tag.h>
00007 #include <textidentificationframe.h>
00008 #include <attachedpictureframe.h>
00009 #include <mpegfile.h>
00010 #include <mpegproperties.h>
00011
00012 using TagLib::MPEG::File;
00013 using TagLib::Tag;
00014 using TagLib::ID3v2::UserTextIdentificationFrame;
00015 using TagLib::ID3v2::TextIdentificationFrame;
00016 using TagLib::ID3v2::AttachedPictureFrame;
00017 using TagLib::String;
00018 using TagLib::MPEG::Properties;
00019
00020 typedef QValueList<struct AlbumArtImage> AlbumArtList;
00021
00022 class MetaIOTagLib : public MetaIO
00023 {
00024 public:
00025 MetaIOTagLib(void);
00026 virtual ~MetaIOTagLib(void);
00027
00028 bool write(Metadata* mdata, bool exclusive = false);
00029 Metadata* read(QString filename);
00030
00031 static QImage getAlbumArt(QString filename, ImageType type);
00032
00033 private:
00034
00035 int getTrackLength(QString filename);
00036
00037 AlbumArtList readAlbumArt(TagLib::ID3v2::Tag *tag);
00038 UserTextIdentificationFrame* find(TagLib::ID3v2::Tag *tag, const String &description);
00039 };
00040
00041 #endif