diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-02-18 16:16:17 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-02-18 16:16:17 +0000 |
| commit | 0f0790e535b39ef6dfa7891b771232b58efb3bb6 (patch) | |
| tree | d77b92d602d6aa3d4ea46d0a44c7366665b4e623 | |
| parent | 0bea3c894f442f88da707dbbde308597df44633c (diff) | |
| download | qmmp-0f0790e535b39ef6dfa7891b771232b58efb3bb6.tar.gz qmmp-0f0790e535b39ef6dfa7891b771232b58efb3bb6.tar.bz2 qmmp-0f0790e535b39ef6dfa7891b771232b58efb3bb6.zip | |
fixed UTF-16 ID3v2 tags
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@248 90c681e8-e032-0410-971d-27865f9a5e38
| -rw-r--r-- | src/plugins/Input/mad/decodermadfactory.cpp | 23 | ||||
| -rw-r--r-- | src/plugins/Input/mad/detailsdialog.cpp | 16 | ||||
| -rw-r--r-- | src/plugins/Input/mad/detailsdialog.h | 4 | ||||
| -rw-r--r-- | src/plugins/Input/mad/settingsdialog.cpp | 2 |
4 files changed, 23 insertions, 22 deletions
diff --git a/src/plugins/Input/mad/decodermadfactory.cpp b/src/plugins/Input/mad/decodermadfactory.cpp index 8bb04aca1..95d27c337 100644 --- a/src/plugins/Input/mad/decodermadfactory.cpp +++ b/src/plugins/Input/mad/decodermadfactory.cpp @@ -71,16 +71,6 @@ FileTag *DecoderMADFactory::createTag(const QString &source) QSettings settings(QDir::homePath()+"/.qmmp/qmmprc", QSettings::IniFormat); settings.beginGroup("MAD"); - QTextCodec *codec_v1 = - QTextCodec::codecForName(settings.value("ID3v1_encoding","UTF-8" ) - .toByteArray ()); - QTextCodec *codec_v2 = - QTextCodec::codecForName(settings.value("ID3v2_encoding","UTF-8" ) - .toByteArray ()); - if (!codec_v1) - codec_v1 = QTextCodec::codecForName ("UTF-8"); - if (!codec_v2) - codec_v2 = QTextCodec::codecForName ("UTF-8"); QTextCodec *codec = 0; @@ -96,13 +86,19 @@ FileTag *DecoderMADFactory::createTag(const QString &source) { case SettingsDialog::ID3v1: { - codec = codec_v1; + codec = QTextCodec::codecForName(settings.value("ID3v1_encoding","ISO-8859-1") + .toByteArray ()); tag = fileRef.ID3v1Tag(); break; } case SettingsDialog::ID3v2: { - codec = codec_v2; + 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; } @@ -122,6 +118,9 @@ FileTag *DecoderMADFactory::createTag(const QString &source) } settings.endGroup(); + if(!codec) + codec = QTextCodec::codecForName ("UTF-8"); + if (tag && codec) { bool utf = codec->name ().contains("UTF"); diff --git a/src/plugins/Input/mad/detailsdialog.cpp b/src/plugins/Input/mad/detailsdialog.cpp index af9b466cd..abaf503de 100644 --- a/src/plugins/Input/mad/detailsdialog.cpp +++ b/src/plugins/Input/mad/detailsdialog.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2006 by Ilya Kotov * + * Copyright (C) 2006-2008 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -50,13 +50,13 @@ DetailsDialog::DetailsDialog(QWidget *parent, const QString &path) QSettings settings(QDir::homePath()+"/.qmmp/qmmprc", QSettings::IniFormat); settings.beginGroup("MAD"); m_codec_v1 = - QTextCodec::codecForName(settings.value("ID3v1_encoding","UTF-8" ) + QTextCodec::codecForName(settings.value("ID3v1_encoding", "ISO-8859-1" ) .toByteArray ()); m_codec_v2 = - QTextCodec::codecForName(settings.value("ID3v2_encoding","UTF-8" ) + QTextCodec::codecForName(settings.value("ID3v2_encoding", "UTF-8" ) .toByteArray ()); if (!m_codec_v1) - m_codec_v1 = QTextCodec::codecForName ("UTF-8"); + m_codec_v1 = QTextCodec::codecForName ("ISO-8859-1"); if (!m_codec_v2) m_codec_v2 = QTextCodec::codecForName ("UTF-8"); @@ -171,6 +171,8 @@ void DetailsDialog::loadTag() if (tag) { bool utf = codec->name().contains("UTF"); + if(utf) + codec = QTextCodec::codecForName ("UTF-8"); TagLib::String title = tag->title(); TagLib::String artist = tag->artist(); TagLib::String album = tag->album(); @@ -215,12 +217,14 @@ void DetailsDialog::save() { codec = m_codec_v2; tag = f->ID3v2Tag(TRUE); + if (codec->name().contains("UTF")) { + type = TagLib::String::UTF8; //FIXME add utf-16 (LE, BE) support + codec = QTextCodec::codecForName ("UTF-8"); TagLib::ID3v2::FrameFactory *factory = TagLib::ID3v2::FrameFactory::instance(); - factory->setDefaultTextEncoding(TagLib::String::UTF8); + factory->setDefaultTextEncoding(type); f->setID3v2FrameFactory(factory); - type = TagLib::String::UTF8; } } if (selectedTag() == TagLib::MPEG::File::APE) diff --git a/src/plugins/Input/mad/detailsdialog.h b/src/plugins/Input/mad/detailsdialog.h index bc92724a3..9b53cc77e 100644 --- a/src/plugins/Input/mad/detailsdialog.h +++ b/src/plugins/Input/mad/detailsdialog.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2006 by Ilya Kotov * + * Copyright (C) 2006-2008 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -50,8 +50,6 @@ private slots: private: void loadMPEGInfo(); uint selectedTag(); - //void loadTag(); - //void loadID3v2Tag(); Ui::DetailsDialog ui; QString m_path; QTextCodec *m_codec_v1; diff --git a/src/plugins/Input/mad/settingsdialog.cpp b/src/plugins/Input/mad/settingsdialog.cpp index 667e8598a..ce3ff63cc 100644 --- a/src/plugins/Input/mad/settingsdialog.cpp +++ b/src/plugins/Input/mad/settingsdialog.cpp @@ -37,7 +37,7 @@ SettingsDialog::SettingsDialog(QWidget *parent) QSettings settings(QDir::homePath()+"/.qmmp/qmmprc", QSettings::IniFormat); settings.beginGroup("MAD"); int pos = ui.id3v1EncComboBox->findText - (settings.value("ID3v1_encoding","UTF-8").toString()); + (settings.value("ID3v1_encoding","ISO-8859-1").toString()); ui.id3v1EncComboBox->setCurrentIndex(pos); pos = ui.id3v2EncComboBox->findText (settings.value("ID3v2_encoding","UTF-8").toString()); |
