diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-11-28 15:46:53 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-11-28 15:46:53 +0000 |
| commit | 26724c66d4764a77ca653ce6c0a1573e9e97e97c (patch) | |
| tree | f238f84ed390de31471cb95a20e3775f2ea7e3e7 /src/plugins/Input/mad/decodermadfactory.cpp | |
| parent | d02787b92ad9a220539498ebbc9f1745a075d10d (diff) | |
| download | qmmp-26724c66d4764a77ca653ce6c0a1573e9e97e97c.tar.gz qmmp-26724c66d4764a77ca653ce6c0a1573e9e97e97c.tar.bz2 qmmp-26724c66d4764a77ca653ce6c0a1573e9e97e97c.zip | |
changed decoder api; fixed flac plugin
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@646 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Input/mad/decodermadfactory.cpp')
| -rw-r--r-- | src/plugins/Input/mad/decodermadfactory.cpp | 135 |
1 files changed, 69 insertions, 66 deletions
diff --git a/src/plugins/Input/mad/decodermadfactory.cpp b/src/plugins/Input/mad/decodermadfactory.cpp index ef8de8d45..9ede2f1d8 100644 --- a/src/plugins/Input/mad/decodermadfactory.cpp +++ b/src/plugins/Input/mad/decodermadfactory.cpp @@ -100,87 +100,90 @@ Decoder *DecoderMADFactory::create(QObject *parent, QIODevice *input, Output *ou } //FileInfo *DecoderMADFactory::createFileInfo(const QString &source) -QList<FileInfo *> DecoderMADFactory::createPlayList(const QString &fileName) +QList<FileInfo *> DecoderMADFactory::createPlayList(const QString &fileName, bool useMetaData) { FileInfo *info = new FileInfo(fileName); TagLib::Tag *tag = 0; TagLib::MPEG::File fileRef(fileName.toLocal8Bit ()); - QSettings settings(QDir::homePath()+"/.qmmp/qmmprc", QSettings::IniFormat); - settings.beginGroup("MAD"); + if (useMetaData) + { + QSettings settings(QDir::homePath()+"/.qmmp/qmmprc", QSettings::IniFormat); + settings.beginGroup("MAD"); - QTextCodec *codec = 0; + QTextCodec *codec = 0; - uint tag_array[3]; - tag_array[0] = settings.value("tag_1", SettingsDialog::ID3v2).toInt(); - tag_array[1] = settings.value("tag_2", SettingsDialog::Disabled).toInt(); - tag_array[2] = settings.value("tag_3", SettingsDialog::Disabled).toInt(); + uint tag_array[3]; + tag_array[0] = settings.value("tag_1", SettingsDialog::ID3v2).toInt(); + tag_array[1] = settings.value("tag_2", SettingsDialog::Disabled).toInt(); + tag_array[2] = settings.value("tag_3", SettingsDialog::Disabled).toInt(); - for (int i = 0; i < 3; ++i) - { - switch ((uint) tag_array[i]) + for (int i = 0; i < 3; ++i) { - case SettingsDialog::ID3v1: - { - codec = QTextCodec::codecForName(settings.value("ID3v1_encoding","ISO-8859-1") - .toByteArray ()); - tag = fileRef.ID3v1Tag(); - break; - } - case SettingsDialog::ID3v2: - { - QByteArray name; - name = settings.value("ID3v2_encoding","UTF-8").toByteArray (); - if (name.contains("UTF")) + switch ((uint) tag_array[i]) + { + case SettingsDialog::ID3v1: + { + codec = QTextCodec::codecForName(settings.value("ID3v1_encoding","ISO-8859-1") + .toByteArray ()); + tag = fileRef.ID3v1Tag(); + break; + } + case SettingsDialog::ID3v2: + { + QByteArray name; + name = settings.value("ID3v2_encoding","UTF-8").toByteArray (); + if (name.contains("UTF")) + codec = QTextCodec::codecForName ("UTF-8"); + else + codec = QTextCodec::codecForName(name); + tag = fileRef.ID3v2Tag(); + break; + } + case SettingsDialog::APE: + { codec = QTextCodec::codecForName ("UTF-8"); - else - codec = QTextCodec::codecForName(name); - tag = fileRef.ID3v2Tag(); - break; + tag = fileRef.APETag(); + break; + } + case SettingsDialog::Disabled: + { + break; + } + } + if (tag && !tag->isEmpty()) + break; } - case SettingsDialog::APE: - { + settings.endGroup(); + + if (!codec) codec = QTextCodec::codecForName ("UTF-8"); - tag = fileRef.APETag(); - break; - } - case SettingsDialog::Disabled: + + if (tag && codec) { - break; + bool utf = codec->name ().contains("UTF"); + TagLib::String album = tag->album(); + TagLib::String artist = tag->artist(); + TagLib::String comment = tag->comment(); + TagLib::String genre = tag->genre(); + TagLib::String title = tag->title(); + + info->setMetaData(Qmmp::ALBUM, + codec->toUnicode(album.toCString(utf)).trimmed()); + info->setMetaData(Qmmp::ARTIST, + codec->toUnicode(artist.toCString(utf)).trimmed()); + info->setMetaData(Qmmp::COMMENT, + codec->toUnicode(comment.toCString(utf)).trimmed()); + info->setMetaData(Qmmp::GENRE, + codec->toUnicode(genre.toCString(utf)).trimmed()); + info->setMetaData(Qmmp::TITLE, + codec->toUnicode(title.toCString(utf)).trimmed()); + info->setMetaData(Qmmp::YEAR, + tag->year()); + info->setMetaData(Qmmp::TRACK, + tag->track()); } - } - if (tag && !tag->isEmpty()) - break; - } - settings.endGroup(); - - if (!codec) - codec = QTextCodec::codecForName ("UTF-8"); - - if (tag && codec) - { - bool utf = codec->name ().contains("UTF"); - TagLib::String album = tag->album(); - TagLib::String artist = tag->artist(); - TagLib::String comment = tag->comment(); - TagLib::String genre = tag->genre(); - TagLib::String title = tag->title(); - - info->setMetaData(Qmmp::ALBUM, - codec->toUnicode(album.toCString(utf)).trimmed()); - info->setMetaData(Qmmp::ARTIST, - codec->toUnicode(artist.toCString(utf)).trimmed()); - info->setMetaData(Qmmp::COMMENT, - codec->toUnicode(comment.toCString(utf)).trimmed()); - info->setMetaData(Qmmp::GENRE, - codec->toUnicode(genre.toCString(utf)).trimmed()); - info->setMetaData(Qmmp::TITLE, - codec->toUnicode(title.toCString(utf)).trimmed()); - info->setMetaData(Qmmp::YEAR, - tag->year()); - info->setMetaData(Qmmp::TRACK, - tag->track()); } if (fileRef.audioProperties()) info->setLength(fileRef.audioProperties()->length()); |
