aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2014-07-11 05:59:55 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2014-07-11 05:59:55 +0000
commit4beb7f075d0cc4001d40406823b415602aeef2f5 (patch)
treee6f0fc557873d139c4bceb873d110681f3fbcc8c
parent887f15da100abe6fed9ff8cd83f8678fbf20b8de (diff)
downloadqmmp-4beb7f075d0cc4001d40406823b415602aeef2f5.tar.gz
qmmp-4beb7f075d0cc4001d40406823b415602aeef2f5.tar.bz2
qmmp-4beb7f075d0cc4001d40406823b415602aeef2f5.zip
improved rusxmms autodetection
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@4351 90c681e8-e032-0410-971d-27865f9a5e38
-rw-r--r--src/plugins/Input/mad/decodermadfactory.cpp26
-rw-r--r--src/plugins/Input/mad/decodermadfactory.h8
-rw-r--r--src/plugins/Input/mad/mpegmetadatamodel.cpp19
-rw-r--r--src/plugins/Input/mad/mpegmetadatamodel.h7
-rw-r--r--src/plugins/Input/mad/settingsdialog.cpp48
-rw-r--r--src/plugins/Input/mad/settingsdialog.h9
6 files changed, 67 insertions, 50 deletions
diff --git a/src/plugins/Input/mad/decodermadfactory.cpp b/src/plugins/Input/mad/decodermadfactory.cpp
index 2c8ca8f86..e45bc5d6c 100644
--- a/src/plugins/Input/mad/decodermadfactory.cpp
+++ b/src/plugins/Input/mad/decodermadfactory.cpp
@@ -38,6 +38,20 @@
// DecoderMADFactory
+DecoderMADFactory::DecoderMADFactory()
+{
+ //detecting rusxmms patch
+ m_using_rusxmms = false;
+ char str[] = { char(0xF2), char(0xE5), char(0xF1), char(0xF2), '\0'};
+ QTextCodec *codec = QTextCodec::codecForName ("windows-1251");
+ TagLib::String tstr(str);
+ if(codec->toUnicode(str) == QString::fromUtf8(tstr.toCString(true)))
+ {
+ qDebug("DecoderMADFactory: found taglib with rusxmms patch");
+ m_using_rusxmms = true;
+ }
+}
+
bool DecoderMADFactory::supports(const QString &source) const
{
QString ext = source.right(4).toLower();
@@ -153,10 +167,8 @@ QList<FileInfo *> DecoderMADFactory::createPlayList(const QString &fileName, boo
}
settings.endGroup();
-#ifdef Q_OS_WIN //rusxmms autodetection
- if(QFile::exists(qApp->applicationDirPath() + "/librcc.dll"))
- codec = QTextCodec::codecForName ("UTF-8");
-#endif
+ if(m_using_rusxmms)
+ codec = QTextCodec::codecForName ("UTF-8");
if (!codec)
codec = QTextCodec::codecForName ("UTF-8");
@@ -211,13 +223,13 @@ QList<FileInfo *> DecoderMADFactory::createPlayList(const QString &fileName, boo
MetaDataModel* DecoderMADFactory::createMetaDataModel(const QString &path, QObject *parent)
{
- return new MPEGMetaDataModel(path, parent);
+ return new MPEGMetaDataModel(m_using_rusxmms, path, parent);
}
void DecoderMADFactory::showSettings(QWidget *parent)
{
- SettingsDialog *s = new SettingsDialog(parent);
- s -> show();
+ SettingsDialog *s = new SettingsDialog(m_using_rusxmms, parent);
+ s->show();
}
void DecoderMADFactory::showAbout(QWidget *parent)
diff --git a/src/plugins/Input/mad/decodermadfactory.h b/src/plugins/Input/mad/decodermadfactory.h
index fdfdf881b..67fbad20a 100644
--- a/src/plugins/Input/mad/decodermadfactory.h
+++ b/src/plugins/Input/mad/decodermadfactory.h
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2006-2008 by Ilya Kotov *
+ * Copyright (C) 2006-2014 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -34,9 +34,10 @@ class DecoderMADFactory : public QObject,
DecoderFactory
{
Q_OBJECT
-Q_INTERFACES(DecoderFactory);
+Q_INTERFACES(DecoderFactory)
public:
+ DecoderMADFactory();
bool supports(const QString &source) const;
bool canDecode(QIODevice *input) const;
const DecoderProperties properties() const;
@@ -46,6 +47,9 @@ public:
void showSettings(QWidget *parent);
void showAbout(QWidget *parent);
QTranslator *createTranslator(QObject *parent);
+
+private:
+ bool m_using_rusxmms;
};
#endif
diff --git a/src/plugins/Input/mad/mpegmetadatamodel.cpp b/src/plugins/Input/mad/mpegmetadatamodel.cpp
index 0fb6d674a..49defe84f 100644
--- a/src/plugins/Input/mad/mpegmetadatamodel.cpp
+++ b/src/plugins/Input/mad/mpegmetadatamodel.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2009-2013 by Ilya Kotov *
+ * Copyright (C) 2009-2014 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -35,12 +35,12 @@
#include "mpegmetadatamodel.h"
-MPEGMetaDataModel::MPEGMetaDataModel(const QString &path, QObject *parent) : MetaDataModel(parent)
+MPEGMetaDataModel::MPEGMetaDataModel(bool using_rusxmms, const QString &path, QObject *parent) : MetaDataModel(parent)
{
m_file = new TagLib::MPEG::File(path.toLocal8Bit().constData());
- m_tags << new MpegFileTagModel(m_file, TagLib::MPEG::File::ID3v1);
- m_tags << new MpegFileTagModel(m_file, TagLib::MPEG::File::ID3v2);
- m_tags << new MpegFileTagModel(m_file, TagLib::MPEG::File::APE);
+ m_tags << new MpegFileTagModel(using_rusxmms, m_file, TagLib::MPEG::File::ID3v1);
+ m_tags << new MpegFileTagModel(using_rusxmms, m_file, TagLib::MPEG::File::ID3v2);
+ m_tags << new MpegFileTagModel(using_rusxmms, m_file, TagLib::MPEG::File::APE);
}
MPEGMetaDataModel::~MPEGMetaDataModel()
@@ -131,11 +131,12 @@ QPixmap MPEGMetaDataModel::cover()
return QPixmap();
}
-MpegFileTagModel::MpegFileTagModel(TagLib::MPEG::File *file, TagLib::MPEG::File::TagTypes tagType)
+MpegFileTagModel::MpegFileTagModel(bool using_rusxmms, TagLib::MPEG::File *file, TagLib::MPEG::File::TagTypes tagType)
: TagModel()
{
m_tagType = tagType;
m_file = file;
+ m_using_rusxmms = using_rusxmms;
QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
settings.beginGroup("MAD");
if (m_tagType == TagLib::MPEG::File::ID3v1)
@@ -157,6 +158,10 @@ MpegFileTagModel::MpegFileTagModel(TagLib::MPEG::File *file, TagLib::MPEG::File:
m_tag = m_file->APETag();
m_codec = QTextCodec::codecForName ("UTF-8");
}
+ if(m_using_rusxmms)
+ {
+ m_codec = QTextCodec::codecForName ("UTF-8");
+ }
settings.endGroup();
}
@@ -237,7 +242,7 @@ void MpegFileTagModel::setValue(Qmmp::MetaData key, const QString &value)
if (m_tagType == TagLib::MPEG::File::ID3v1)
{
- if(m_codec->name().contains("UTF")) //utf is unsupported
+ if(m_codec->name().contains("UTF") && !m_using_rusxmms) //utf is unsupported
return;
}
else if (m_tagType == TagLib::MPEG::File::ID3v2)
diff --git a/src/plugins/Input/mad/mpegmetadatamodel.h b/src/plugins/Input/mad/mpegmetadatamodel.h
index 6d191fa63..86831f741 100644
--- a/src/plugins/Input/mad/mpegmetadatamodel.h
+++ b/src/plugins/Input/mad/mpegmetadatamodel.h
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2009 by Ilya Kotov *
+ * Copyright (C) 2009-2014 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -30,7 +30,7 @@ class MPEGMetaDataModel : public MetaDataModel
{
Q_OBJECT
public:
- MPEGMetaDataModel(const QString &path, QObject *parent);
+ MPEGMetaDataModel(bool using_rusxmms, const QString &path, QObject *parent);
~MPEGMetaDataModel();
QHash<QString, QString> audioProperties();
QList<TagModel* > tags();
@@ -44,7 +44,7 @@ private:
class MpegFileTagModel : public TagModel
{
public:
- MpegFileTagModel(TagLib::MPEG::File *file, TagLib::MPEG::File::TagTypes tagType);
+ MpegFileTagModel(bool using_rusxmms, TagLib::MPEG::File *file, TagLib::MPEG::File::TagTypes tagType);
~MpegFileTagModel();
const QString name();
QList<Qmmp::MetaData> keys();
@@ -56,6 +56,7 @@ public:
void save();
private:
+ bool m_using_rusxmms;
QTextCodec *m_codec;
TagLib::MPEG::File *m_file;
TagLib::Tag *m_tag;
diff --git a/src/plugins/Input/mad/settingsdialog.cpp b/src/plugins/Input/mad/settingsdialog.cpp
index 07743c604..cf1dc794c 100644
--- a/src/plugins/Input/mad/settingsdialog.cpp
+++ b/src/plugins/Input/mad/settingsdialog.cpp
@@ -21,43 +21,41 @@
#include <QSettings>
#include <QFile>
#include <qmmp/qmmp.h>
-
#include "settingsdialog.h"
-SettingsDialog::SettingsDialog(QWidget *parent)
+SettingsDialog::SettingsDialog(bool using_rusxmms, QWidget *parent)
: QDialog(parent)
{
- ui.setupUi(this);
+ m_ui.setupUi(this);
setAttribute(Qt::WA_DeleteOnClose);
findCodecs();
foreach (QTextCodec *codec, codecs)
{
- ui.id3v1EncComboBox->addItem(codec->name());
- ui.id3v2EncComboBox->addItem(codec->name());
+ m_ui.id3v1EncComboBox->addItem(codec->name());
+ m_ui.id3v2EncComboBox->addItem(codec->name());
}
QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
settings.beginGroup("MAD");
- int pos = ui.id3v1EncComboBox->findText
+ int pos = m_ui.id3v1EncComboBox->findText
(settings.value("ID3v1_encoding","ISO-8859-1").toString());
- ui.id3v1EncComboBox->setCurrentIndex(pos);
- pos = ui.id3v2EncComboBox->findText
+ m_ui.id3v1EncComboBox->setCurrentIndex(pos);
+ pos = m_ui.id3v2EncComboBox->findText
(settings.value("ID3v2_encoding","UTF-8").toString());
- ui.id3v2EncComboBox->setCurrentIndex(pos);
+ m_ui.id3v2EncComboBox->setCurrentIndex(pos);
- ui.firstTagComboBox->setCurrentIndex(settings.value("tag_1", ID3v2).toInt());
- ui.secondTagComboBox->setCurrentIndex(settings.value("tag_2", Disabled).toInt());
- ui.thirdTagComboBox->setCurrentIndex(settings.value("tag_3", Disabled).toInt());
+ m_ui.firstTagComboBox->setCurrentIndex(settings.value("tag_1", ID3v2).toInt());
+ m_ui.secondTagComboBox->setCurrentIndex(settings.value("tag_2", Disabled).toInt());
+ m_ui.thirdTagComboBox->setCurrentIndex(settings.value("tag_3", Disabled).toInt());
settings.endGroup();
- connect(ui.buttonBox, SIGNAL(accepted()), SLOT(writeSettings()));
+ connect(m_ui.buttonBox, SIGNAL(accepted()), SLOT(writeSettings()));
-#ifdef Q_OS_WIN //rusxmms autodetection
- if(QFile::exists(qApp->applicationDirPath() + "/librcc.dll"))
- {
- ui.id3v1EncComboBox->setEnabled(false);
- ui.id3v2EncComboBox->setEnabled(false);
- }
-#endif
+
+ if(using_rusxmms)
+ {
+ m_ui.id3v1EncComboBox->setEnabled(false);
+ m_ui.id3v2EncComboBox->setEnabled(false);
+ }
}
@@ -68,11 +66,11 @@ void SettingsDialog::writeSettings()
{
QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
settings.beginGroup("MAD");
- settings.setValue("ID3v1_encoding", ui.id3v1EncComboBox->currentText());
- settings.setValue("ID3v2_encoding", ui.id3v2EncComboBox->currentText());
- settings.setValue("tag_1", ui.firstTagComboBox->currentIndex());
- settings.setValue("tag_2", ui.secondTagComboBox->currentIndex());
- settings.setValue("tag_3", ui.thirdTagComboBox->currentIndex());
+ settings.setValue("ID3v1_encoding", m_ui.id3v1EncComboBox->currentText());
+ settings.setValue("ID3v2_encoding", m_ui.id3v2EncComboBox->currentText());
+ settings.setValue("tag_1", m_ui.firstTagComboBox->currentIndex());
+ settings.setValue("tag_2", m_ui.secondTagComboBox->currentIndex());
+ settings.setValue("tag_3", m_ui.thirdTagComboBox->currentIndex());
settings.endGroup();
accept();
}
diff --git a/src/plugins/Input/mad/settingsdialog.h b/src/plugins/Input/mad/settingsdialog.h
index 178c05909..26840e86b 100644
--- a/src/plugins/Input/mad/settingsdialog.h
+++ b/src/plugins/Input/mad/settingsdialog.h
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2009 by Ilya Kotov *
+ * Copyright (C) 2009-2014 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -21,8 +21,6 @@
#define SETTINGSDIALOG_H
#include <QDialog>
-
-
#include "ui_settingsdialog.h"
/**
@@ -32,7 +30,7 @@ class SettingsDialog : public QDialog
{
Q_OBJECT
public:
- SettingsDialog(QWidget *parent = 0);
+ SettingsDialog(bool using_rusxmms, QWidget *parent = 0);
~SettingsDialog();
@@ -43,8 +41,7 @@ private slots:
private:
void findCodecs();
-
- Ui::SettingsDialog ui;
+ Ui::SettingsDialog m_ui;
QList<QTextCodec *> codecs;
};