aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/Input/gme/decoder_gme.cpp10
-rw-r--r--src/plugins/Input/gme/decodergmefactory.cpp6
-rw-r--r--src/plugins/Input/gme/gmehelper.cpp15
-rw-r--r--src/plugins/Input/gme/gmehelper.h1
-rw-r--r--src/plugins/Input/gme/settingsdialog.cpp14
-rw-r--r--src/plugins/Input/gme/settingsdialog.h3
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;
};