 |
Sayonara Player
|
21 #ifndef ID3V2_FRAME_H_
22 #define ID3V2_FRAME_H_
24 #include "Utils/Tagging/AbstractFrame.h"
26 #include "taglib/fileref.h"
27 #include "taglib/mpegfile.h"
28 #include "taglib/id3v2tag.h"
29 #include "taglib/id3v2frame.h"
39 template<
typename ModelType_t,
typename FrameType_t>
50 FrameType_t* mFrame=
nullptr;
68 virtual void map_frame_to_model(
const FrameType_t* frame, ModelType_t& model)=0;
73 ID3v2Frame(TagLib::ID3v2::Tag* tag,
const char* four) :
77 TagLib::ByteVector vec(four, 4);
78 TagLib::ID3v2::FrameListMap map = tag->frameListMap();
79 TagLib::ID3v2::FrameList frame_list = map[vec];
80 if(!frame_list.isEmpty())
82 mFrame =
dynamic_cast<FrameType_t*
>(frame_list.front());
96 virtual bool read(ModelType_t& data)
102 map_frame_to_model(mFrame, data);
114 virtual bool write(
const ModelType_t& data_model)
116 TagLib::ID3v2::Tag* tag = this->tag();
121 bool created =
false;
137 tag->addFrame(mFrame);
150 return (mFrame !=
nullptr);
160 #endif // ABSTRACTFRAME_H
Definition: AbstractFrame.h:57
virtual void map_model_to_frame(const ModelType_t &model, FrameType_t *frame)=0
map_model_to_frame maps the model to the frame and vice versa so the frame knows how to get/set data
The AbstractFrame class for example AbstractFrame<Discnumber, TagLib::ID3v2::TextIdentificationFrame>
Definition: ID3v2Frame.h:48
bool is_frame_found() const
if the frame was found when called read()
Definition: ID3v2Frame.h:148
virtual bool write(const ModelType_t &data_model)
insert the _data_model into the frame
Definition: ID3v2Frame.h:114
virtual bool read(ModelType_t &data)
sets the _data_model by reading from the frame
Definition: ID3v2Frame.h:96
The GUI_TagEdit class.
Definition: GenreFetcher.h:34
virtual TagLib::ID3v2::Frame * create_id3v2_frame()=0
create_id3v2_frame creates new id3v2 frame if there's no frame we have to create it manually every su...
ID3v2Frame namespace.
Definition: AlbumArtist.h:27