aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-02-18 16:16:17 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-02-18 16:16:17 +0000
commit0f0790e535b39ef6dfa7891b771232b58efb3bb6 (patch)
treed77b92d602d6aa3d4ea46d0a44c7366665b4e623
parent0bea3c894f442f88da707dbbde308597df44633c (diff)
downloadqmmp-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.cpp23
-rw-r--r--src/plugins/Input/mad/detailsdialog.cpp16
-rw-r--r--src/plugins/Input/mad/detailsdialog.h4
-rw-r--r--src/plugins/Input/mad/settingsdialog.cpp2
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());