diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2014-07-11 05:59:55 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2014-07-11 05:59:55 +0000 |
| commit | 4beb7f075d0cc4001d40406823b415602aeef2f5 (patch) | |
| tree | e6f0fc557873d139c4bceb873d110681f3fbcc8c /src/plugins | |
| parent | 887f15da100abe6fed9ff8cd83f8678fbf20b8de (diff) | |
| download | qmmp-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
Diffstat (limited to 'src/plugins')
| -rw-r--r-- | src/plugins/Input/mad/decodermadfactory.cpp | 26 | ||||
| -rw-r--r-- | src/plugins/Input/mad/decodermadfactory.h | 8 | ||||
| -rw-r--r-- | src/plugins/Input/mad/mpegmetadatamodel.cpp | 19 | ||||
| -rw-r--r-- | src/plugins/Input/mad/mpegmetadatamodel.h | 7 | ||||
| -rw-r--r-- | src/plugins/Input/mad/settingsdialog.cpp | 48 | ||||
| -rw-r--r-- | src/plugins/Input/mad/settingsdialog.h | 9 |
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; }; |
