ID3v2Tag::ID3v2Tag( TagLib::Tag *tag, TagLib::ID3v2::Tag *id3v2Tag ) : Tag( tag ) , m_id3v2Tag( id3v2Tag ) { TagLib::ID3v2::FrameList fList = m_id3v2Tag->frameList(); for( TagLib::ID3v2::FrameList::ConstIterator it = fList.begin(); it != fList.end(); ++it ) { TagLib::String frameId = TagLib::String( (*it)->frameID() ); TagLib::ID3v2::TextIdentificationFrame *frame = dynamic_cast< TagLib::ID3v2::TextIdentificationFrame * >( *it ); if( frame ) { QString val = TStringToQString( frame->fieldList().toString( '\n' ) ); if( frameId == TagLib::String( "TPE2" ) ) //album artist { m_albumArtist = val; } else if( frameId == TagLib::String( "TCOM" ) ) //composer { m_composer = val; } else if( frameId == TagLib::String( "TPOS" ) ) //disc number { m_discNumber = processDiscNumber( val ); } } } }
MP4Tag::MP4Tag( TagLib::Tag *tag, TagLib::MP4::Tag *mp4Tag ) : Tag( tag ) , m_mp4Tag( mp4Tag ) { TagLib::MP4::ItemListMap map = m_mp4Tag->itemListMap(); for( TagLib::MP4::ItemListMap::ConstIterator it = map.begin(); it != map.end(); ++it ) { TagLib::String key = it->first; QString val = TStringToQString( it->second.toStringList().toString( '\n' ) ); if( key == TagLib::String( "aART" ) ) //album artist { m_albumArtist = val; } else if( key == TagLib::String( "\xA9wrt" ) ) //composer { m_composer = val; } else if( key == TagLib::String( "disk" ) ) //disk number { m_discNumber = processDiscNumber( val ); } } }
ASFTag::ASFTag( TagLib::Tag *tag, TagLib::ASF::Tag *asfTag ) : Tag( tag ) , m_asfTag( asfTag ) { TagLib::ASF::AttributeListMap map = m_asfTag->attributeListMap(); for( TagLib::ASF::AttributeListMap::ConstIterator it = map.begin(); it != map.end(); ++it ) { TagLib::String key = it->first; QString val = TStringToQString( it->second[ 0 ].toString() ); if( key == TagLib::String( "WM/AlbumTitle" ) ) //album artist { m_albumArtist = val; } else if( key == TagLib::String( "WM/Composer" ) ) { m_composer = val; } else if( key == TagLib::String( "WM/PartOfSet" ) ) { m_discNumber = processDiscNumber( val ); } } }