diff options
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()); |
