diff options
| -rw-r--r-- | src/qmmp/qmmpsettings.cpp | 16 | ||||
| -rw-r--r-- | src/qmmp/qmmpsettings.h | 8 | ||||
| -rw-r--r-- | src/qmmpui/configdialog.cpp | 2 | ||||
| -rw-r--r-- | src/qmmpui/playlistmanager.h | 2 | ||||
| -rw-r--r-- | src/qmmpui/qmmpuisettings.cpp | 15 | ||||
| -rw-r--r-- | src/qmmpui/qmmpuisettings.h | 14 |
6 files changed, 47 insertions, 10 deletions
diff --git a/src/qmmp/qmmpsettings.cpp b/src/qmmp/qmmpsettings.cpp index 23fe01698..bd4d0faa4 100644 --- a/src/qmmp/qmmpsettings.cpp +++ b/src/qmmp/qmmpsettings.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2010-2012 by Ilya Kotov * + * Copyright (C) 2010-2013 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -20,6 +20,7 @@ #include <QSettings> #include <QApplication> +#include <QTimer> #include "metadatamanager.h" #include "qmmp.h" #include "qmmpsettings.h" @@ -28,6 +29,8 @@ QmmpSettings *QmmpSettings::m_instance = 0; QmmpSettings::QmmpSettings(QObject *parent) : QObject(parent) { + if(m_instance) + qFatal("QmmpSettings: only one instance is allowed"); m_instance = this; QSettings settings (Qmmp::configFile(), QSettings::IniFormat); //replaygain settings @@ -55,6 +58,11 @@ QmmpSettings::QmmpSettings(QObject *parent) : QObject(parent) m_buffer_size = settings.value("Output/buffer_size", 500).toInt(); //file type determination m_determine_by_content = settings.value("Misc/determine_file_by_content", false).toBool(); + //timer + m_timer = new QTimer(this); + m_timer->setSingleShot(true); + m_timer->setInterval(5000); + connect(m_timer, SIGNAL(timeout()), SLOT(sync())); } QmmpSettings::~QmmpSettings() @@ -89,6 +97,7 @@ void QmmpSettings::setReplayGainSettings(ReplayGainMode mode, double preamp, dou m_rg_preamp = preamp; m_rg_defaut_gain = def_gain; m_rg_prevent_clipping = clip; + m_timer->start(); emit replayGainSettingsChanged(); } @@ -106,6 +115,7 @@ void QmmpSettings::setAudioSettings(bool soft_volume, bool use_16bit) { m_aud_software_volume = soft_volume; m_aud_16bit = use_16bit; + m_timer->start(); emit audioSettingsChanged(); } @@ -131,6 +141,7 @@ void QmmpSettings::setCoverSettings(QStringList inc, QStringList exc, int depth, m_cover_depth = depth; m_cover_use_files = use_files; MetaDataManager::instance()->clearCoverChache(); + m_timer->start(); emit coverSettingsChanged(); } @@ -154,6 +165,7 @@ void QmmpSettings::setNetworkSettings(bool use_proxy, bool auth, const QUrl &pro m_proxy_enabled = use_proxy; m_proxy_auth = auth; m_proxy_url = proxy; + m_timer->start(); emit networkSettingsChanged(); } @@ -165,6 +177,7 @@ EqSettings QmmpSettings::eqSettings() const void QmmpSettings::setEqSettings(const EqSettings &settings) { m_eq_settings = settings; + m_timer->start(); emit eqSettingsChanged(); } @@ -193,6 +206,7 @@ void QmmpSettings::setBufferSize(int msec) void QmmpSettings::sync() { + qDebug("%s", Q_FUNC_INFO); QSettings settings (Qmmp::configFile(), QSettings::IniFormat); //replaygain settings settings.beginGroup("ReplayGain"); diff --git a/src/qmmp/qmmpsettings.h b/src/qmmp/qmmpsettings.h index f7aaba251..8b4392288 100644 --- a/src/qmmp/qmmpsettings.h +++ b/src/qmmp/qmmpsettings.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2010 by Ilya Kotov * + * Copyright (C) 2010-2013 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -26,6 +26,8 @@ #include <QStringList> #include "eqsettings.h" +class QTimer; + /*! @brief The QmmpSettings class provides access to global settings. * @author Ilya Kotov <forkotov02@hotmail.ru> */ @@ -191,7 +193,7 @@ signals: */ void eqSettingsChanged(); -public slots: +private slots: /*! * Writes all unsaved settings to configuration file */ @@ -221,6 +223,8 @@ private: int m_buffer_size; //file type determination bool m_determine_by_content; + //timer + QTimer *m_timer; static QmmpSettings* m_instance; diff --git a/src/qmmpui/configdialog.cpp b/src/qmmpui/configdialog.cpp index 2071a630d..c3899ea27 100644 --- a/src/qmmpui/configdialog.cpp +++ b/src/qmmpui/configdialog.cpp @@ -391,7 +391,6 @@ void ConfigDialog::saveSettings() m_ui->defaultPlayListCheckBox->isChecked()); guis->setAutoSavePlayList(m_ui->autoSavePlayListCheckBox->isChecked()); guis->setUseClipboard(m_ui->clipboardCheckBox->isChecked()); - guis->sync(); } QmmpSettings *gs = QmmpSettings::instance(); @@ -418,7 +417,6 @@ void ConfigDialog::saveSettings() gs->setAudioSettings(m_ui->softVolumeCheckBox->isChecked(), m_ui->use16BitCheckBox->isChecked()); gs->setBufferSize(m_ui->bufferSizeSpinBox->value()); gs->setDetermineFileTypeByContent(m_ui->byContentCheckBox->isChecked()); - gs->sync(); QList<QVariant> var_sizes; var_sizes << m_ui->splitter->sizes().first() << m_ui->splitter->sizes().last(); QSettings settings (Qmmp::configFile(), QSettings::IniFormat); diff --git a/src/qmmpui/playlistmanager.h b/src/qmmpui/playlistmanager.h index 520d7c876..1903fcae3 100644 --- a/src/qmmpui/playlistmanager.h +++ b/src/qmmpui/playlistmanager.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2009-2012 by Ilya Kotov * + * Copyright (C) 2009-2013 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/qmmpui/qmmpuisettings.cpp b/src/qmmpui/qmmpuisettings.cpp index 6e718eb0b..36668c5f8 100644 --- a/src/qmmpui/qmmpuisettings.cpp +++ b/src/qmmpui/qmmpuisettings.cpp @@ -20,6 +20,7 @@ #include <QSettings> #include <QApplication> +#include <QTimer> #include <qmmp/qmmp.h> #include "playlistmanager.h" #include "qmmpuisettings.h" @@ -53,6 +54,10 @@ QmmpUiSettings::QmmpUiSettings(QObject *parent) : QObject(parent) m_default_pl_name = s.value("default_pl_name", tr("Playlist")).toString(); s.endGroup(); m_use_clipboard = s.value("URLDialog/use_clipboard", false).toBool(); + m_timer = new QTimer(this); + m_timer->setInterval(5000); + m_timer->setSingleShot(true); + connect(m_timer, SIGNAL(timeout()), SLOT(sync())); } QmmpUiSettings::~QmmpUiSettings() @@ -172,6 +177,7 @@ bool QmmpUiSettings::useClipboard() const void QmmpUiSettings::sync() { + qDebug("%s", Q_FUNC_INFO); QSettings s(Qmmp::configFile(), QSettings::IniFormat); s.setValue("PlayList/title_format", m_title_format); s.setValue("PlayList/group_format", m_group_format); @@ -197,6 +203,7 @@ void QmmpUiSettings::setRepeatableList(bool r) if(m_repeate_list == r) return; m_repeate_list = r; + m_timer->start(); emit repeatableListChanged(r); } @@ -205,6 +212,7 @@ void QmmpUiSettings::setShuffle(bool s) if(m_shuffle == s) return; m_shuffle = s; + m_timer->start(); emit shuffleChanged(s); } @@ -213,6 +221,7 @@ void QmmpUiSettings::setGroupsEnabled(bool enabled) if(m_groups_enabled == enabled) return; m_groups_enabled = enabled; + m_timer->start(); emit groupsChanged(enabled); } @@ -221,6 +230,7 @@ void QmmpUiSettings::setRepeatableTrack(bool enabled) if(m_repeat_track == enabled) return; m_repeat_track = enabled; + m_timer->start(); emit repeatableTrackChanged(enabled); } @@ -229,6 +239,7 @@ void QmmpUiSettings::setNoPlayListAdvance(bool enabled) if(m_no_pl_advance == enabled) return; m_no_pl_advance = enabled; + m_timer->start(); emit noPlayListAdvanceChanged(enabled); } @@ -240,6 +251,7 @@ QStringList QmmpUiSettings::restrictFilters() const void QmmpUiSettings::setRestrictFilters(const QString &filters) { m_restrict_filters = filters.trimmed().split(";", QString::SkipEmptyParts); + m_timer->start(); } QStringList QmmpUiSettings::excludeFilters() const @@ -250,6 +262,7 @@ QStringList QmmpUiSettings::excludeFilters() const void QmmpUiSettings::setExcludeFilters(const QString &filters) { m_exclude_filters = filters.trimmed().split(";", QString::SkipEmptyParts); + m_timer->start(); } bool QmmpUiSettings::useDefaultPlayList() const @@ -273,11 +286,13 @@ void QmmpUiSettings::setDefaultPlayList(const QString &name, bool enabled) { m_use_default_pl = enabled; m_default_pl_name = name; + m_timer->start(); } void QmmpUiSettings::setAutoSavePlayList(bool enabled) { m_autosave_playlist = enabled; + m_timer->start(); } bool QmmpUiSettings::autoSavePlayList() const diff --git a/src/qmmpui/qmmpuisettings.h b/src/qmmpui/qmmpuisettings.h index c5b63f496..9df54b6ee 100644 --- a/src/qmmpui/qmmpuisettings.h +++ b/src/qmmpui/qmmpuisettings.h @@ -24,6 +24,8 @@ #include <QObject> #include <QStringList> +class QTimer; + /*! @brief The QmmpUiSettings class provides access to global libqmmpui library settings. * @author Ilya Kotov <forkotov02@hotmail.ru> */ @@ -202,10 +204,6 @@ signals: public slots: /*! - * Writes all unsaved settings to configuration file - */ - void sync(); - /*! * Prepares all playlists for repeatable playing (loop mode). * @param r State of the repeatable mode (\b true - enabled, \b false - disabled) */ @@ -232,6 +230,12 @@ public slots: */ void setNoPlayListAdvance(bool enabled); +private slots: + /*! + * Writes all unsaved settings to configuration file + */ + void sync(); + private: static QmmpUiSettings* m_instance; @@ -254,6 +258,8 @@ private: QString m_default_pl_name; //url dialog bool m_use_clipboard; + //timer + QTimer *m_timer; }; #endif // QMMPUISETTINGS_H |
