diff options
| -rw-r--r-- | src/plugins/Input/gme/decoder_gme.cpp | 10 | ||||
| -rw-r--r-- | src/plugins/Input/gme/decodergmefactory.cpp | 6 | ||||
| -rw-r--r-- | src/plugins/Input/gme/gmehelper.cpp | 15 | ||||
| -rw-r--r-- | src/plugins/Input/gme/gmehelper.h | 1 | ||||
| -rw-r--r-- | src/plugins/Input/gme/settingsdialog.cpp | 14 | ||||
| -rw-r--r-- | src/plugins/Input/gme/settingsdialog.h | 3 |
6 files changed, 39 insertions, 10 deletions
diff --git a/src/plugins/Input/gme/decoder_gme.cpp b/src/plugins/Input/gme/decoder_gme.cpp index a3d3d87cb..043099b54 100644 --- a/src/plugins/Input/gme/decoder_gme.cpp +++ b/src/plugins/Input/gme/decoder_gme.cpp @@ -56,9 +56,13 @@ bool DecoderGme::initialize() } if(track_info->length <= 0) track_info->length = (long) (2.5 * 60 * 1000); - if(track_info->length < m_helper.fadeLength()) - track_info->length += m_helper.fadeLength(); - gme_set_fade(m_emu, track_info->length - m_helper.fadeLength()); + + if(m_helper.fadeLength()) + { + if(track_info->length < m_helper.fadeLength()) + track_info->length += m_helper.fadeLength(); + gme_set_fade(m_emu, track_info->length - m_helper.fadeLength()); + } QMap<Qmmp::MetaData, QString> metadata; metadata.insert(Qmmp::TITLE, track_info->song); metadata.insert(Qmmp::ARTIST, track_info->author); diff --git a/src/plugins/Input/gme/decodergmefactory.cpp b/src/plugins/Input/gme/decodergmefactory.cpp index e2ef81cdc..f9587ac14 100644 --- a/src/plugins/Input/gme/decodergmefactory.cpp +++ b/src/plugins/Input/gme/decodergmefactory.cpp @@ -20,6 +20,7 @@ #include <QtGui> #include <QRegExp> +#include "settingsdialog.h" #include "gmehelper.h" #include "decoder_gme.h" #include "decodergmefactory.h" @@ -52,7 +53,7 @@ const DecoderProperties DecoderGmeFactory::properties() const //properties.contentType = ; properties.shortName = "gme"; properties.hasAbout = true; - properties.hasSettings = false; + properties.hasSettings = true; properties.noInput = true; properties.protocols << "gme"; return properties; @@ -106,7 +107,8 @@ MetaDataModel* DecoderGmeFactory::createMetaDataModel(const QString &path, QObje void DecoderGmeFactory::showSettings(QWidget *parent) { - Q_UNUSED(parent); + SettingsDialog *d = new SettingsDialog(parent); + d->show(); } void DecoderGmeFactory::showAbout(QWidget *parent) diff --git a/src/plugins/Input/gme/gmehelper.cpp b/src/plugins/Input/gme/gmehelper.cpp index 1f250d7db..efcc58e22 100644 --- a/src/plugins/Input/gme/gmehelper.cpp +++ b/src/plugins/Input/gme/gmehelper.cpp @@ -19,13 +19,18 @@ ***************************************************************************/ #include <QRegExp> +#include <QSettings> +#include <qmmp/qmmp.h> #include "gmehelper.h" -#define FADE_LENGTH 8000 - GmeHelper::GmeHelper() { m_emu = 0; + + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + m_fade_length = settings.value("GME/fadeout_length", 7000).toInt(); + if(settings.value("GME/fadeout", false).toBool()) + m_fade_length = 0; } GmeHelper::~GmeHelper() @@ -92,8 +97,8 @@ QList <FileInfo*> GmeHelper::createPlayList(bool meta) } if(track_info->length <= 0) track_info->length = (long) (2.5 * 60 * 1000); - if(track_info->length < FADE_LENGTH) - track_info->length += FADE_LENGTH; + if(track_info->length < m_fade_length) + track_info->length += m_fade_length; if(meta) { info->setMetaData(Qmmp::TITLE, track_info->song); @@ -111,5 +116,5 @@ QList <FileInfo*> GmeHelper::createPlayList(bool meta) int GmeHelper::fadeLength() { - return FADE_LENGTH; + return m_fade_length; } diff --git a/src/plugins/Input/gme/gmehelper.h b/src/plugins/Input/gme/gmehelper.h index 09f293db4..c54506745 100644 --- a/src/plugins/Input/gme/gmehelper.h +++ b/src/plugins/Input/gme/gmehelper.h @@ -41,6 +41,7 @@ public: private: Music_Emu *m_emu; QString m_path; + int m_fade_length; }; #endif // GMEHELPER_H diff --git a/src/plugins/Input/gme/settingsdialog.cpp b/src/plugins/Input/gme/settingsdialog.cpp index 27f448ed1..339f5cd91 100644 --- a/src/plugins/Input/gme/settingsdialog.cpp +++ b/src/plugins/Input/gme/settingsdialog.cpp @@ -18,6 +18,8 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ +#include <QSettings> +#include <qmmp/qmmp.h> #include "settingsdialog.h" #include "ui_settingsdialog.h" @@ -26,9 +28,21 @@ SettingsDialog::SettingsDialog(QWidget *parent) : m_ui(new Ui::SettingsDialog) { m_ui->setupUi(this); + setAttribute(Qt::WA_DeleteOnClose); + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + m_ui->fadeoutCheckBox->setChecked(settings.value("GME/fadeout", false).toBool()); + m_ui->fadeoutSpinBox->setValue(settings.value("GME/fadeout_length", 7000).toInt()); } SettingsDialog::~SettingsDialog() { delete m_ui; } + +void SettingsDialog::accept() +{ + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + settings.setValue("GME/fadeout", m_ui->fadeoutCheckBox->isChecked()); + settings.setValue("GME/fadeout_length", m_ui->fadeoutSpinBox->value()); + QDialog::accept(); +} diff --git a/src/plugins/Input/gme/settingsdialog.h b/src/plugins/Input/gme/settingsdialog.h index 6e49bc6cb..ae9612302 100644 --- a/src/plugins/Input/gme/settingsdialog.h +++ b/src/plugins/Input/gme/settingsdialog.h @@ -35,6 +35,9 @@ public: explicit SettingsDialog(QWidget *parent = 0); ~SettingsDialog(); +public slots: + void accept(); + private: Ui::SettingsDialog *m_ui; }; |
