diff options
Diffstat (limited to 'src/plugins')
| -rw-r--r-- | src/plugins/Input/mad/decodermadfactory.cpp | 10 | ||||
| -rw-r--r-- | src/plugins/Input/mad/mpegmetadatamodel.cpp | 44 |
2 files changed, 50 insertions, 4 deletions
diff --git a/src/plugins/Input/mad/decodermadfactory.cpp b/src/plugins/Input/mad/decodermadfactory.cpp index a55627b60..91214f6fb 100644 --- a/src/plugins/Input/mad/decodermadfactory.cpp +++ b/src/plugins/Input/mad/decodermadfactory.cpp @@ -228,6 +228,16 @@ QList<FileInfo *> DecoderMADFactory::createPlayList(const QString &fileName, boo info->setMetaData(Qmmp::DISCNUMBER, QString(disc.toCString()).trimmed()); } } + else if(tag == fileRef.APETag()) + { + TagLib::APE::Item fld; + if(!(fld = fileRef.APETag()->itemListMap()["ALBUM ARTIST"]).isEmpty()) + info->setMetaData(Qmmp::ALBUMARTIST, + QString::fromUtf8(fld.toString().toCString(true)).trimmed()); + if(!(fld = fileRef.APETag()->itemListMap()["COMPOSER"]).isEmpty()) + info->setMetaData(Qmmp::COMPOSER, + QString::fromUtf8(fld.toString().toCString(true)).trimmed()); + } } } if (fileRef.audioProperties()) diff --git a/src/plugins/Input/mad/mpegmetadatamodel.cpp b/src/plugins/Input/mad/mpegmetadatamodel.cpp index 5d040f013..c51edce34 100644 --- a/src/plugins/Input/mad/mpegmetadatamodel.cpp +++ b/src/plugins/Input/mad/mpegmetadatamodel.cpp @@ -182,7 +182,13 @@ QList<Qmmp::MetaData> MpegFileTagModel::keys() QList<Qmmp::MetaData> list = TagModel::keys(); if (m_tagType == TagLib::MPEG::File::ID3v2) return list; + else if(m_tagType == TagLib::MPEG::File::APE) + { + list.removeAll(Qmmp::DISCNUMBER); + return list; + } list.removeAll(Qmmp::COMPOSER); + list.removeAll(Qmmp::ALBUMARTIST); list.removeAll(Qmmp::DISCNUMBER); return list; } @@ -207,9 +213,16 @@ const QString MpegFileTagModel::value(Qmmp::MetaData key) str = m_tag->artist(); break; case Qmmp::ALBUMARTIST: - if(m_tagType == TagLib::MPEG::File::ID3v2 - && !m_file->ID3v2Tag()->frameListMap()["TPE2"].isEmpty()) + if(m_tagType == TagLib::MPEG::File::ID3v2 && + !m_file->ID3v2Tag()->frameListMap()["TPE2"].isEmpty()) + { str = m_file->ID3v2Tag()->frameListMap()["TPE2"].front()->toString(); + } + else if(m_tagType == TagLib::MPEG::File::APE && + !m_file->APETag()->itemListMap()["ALBUM ARTIST"].isEmpty()) + { + str = m_file->APETag()->itemListMap()["ALBUM ARTIST"].toString(); + } break; case Qmmp::ALBUM: str = m_tag->album(); @@ -221,9 +234,16 @@ const QString MpegFileTagModel::value(Qmmp::MetaData key) str = m_tag->genre(); break; case Qmmp::COMPOSER: - if(m_tagType == TagLib::MPEG::File::ID3v2 - && !m_file->ID3v2Tag()->frameListMap()["TCOM"].isEmpty()) + if(m_tagType == TagLib::MPEG::File::ID3v2 && + !m_file->ID3v2Tag()->frameListMap()["TCOM"].isEmpty()) + { str = m_file->ID3v2Tag()->frameListMap()["TCOM"].front()->toString(); + } + else if(m_tagType == TagLib::MPEG::File::APE && + !m_file->APETag()->itemListMap()["COMPOSER"].isEmpty()) + { + str = m_file->APETag()->itemListMap()["COMPOSER"].toString(); + } break; case Qmmp::YEAR: return QString::number(m_tag->year()); @@ -296,10 +316,26 @@ void MpegFileTagModel::setValue(Qmmp::MetaData key, const QString &value) } } else if(m_tagType == TagLib::MPEG::File::APE) + { type = TagLib::String::UTF8; + } TagLib::String str = TagLib::String(m_codec->fromUnicode(value).constData(), type); + if(m_tagType == TagLib::MPEG::File::APE) + { + if(key == Qmmp::COMPOSER) + { + m_file->APETag()->addValue("COMPOSER", str, true); + return; + } + else if(key == Qmmp::ALBUMARTIST) + { + m_file->APETag()->addValue("ALBUM ARTIST", str, true); + return; + } + } + switch((int) key) { case Qmmp::TITLE: |
