summaryrefslogtreecommitdiffstats
path: root/qt-ui
diff options
context:
space:
mode:
Diffstat (limited to 'qt-ui')
-rw-r--r--qt-ui/preferences.cpp42
-rw-r--r--qt-ui/preferences.h8
2 files changed, 42 insertions, 8 deletions
diff --git a/qt-ui/preferences.cpp b/qt-ui/preferences.cpp
index 551d7965a..7e2f5c999 100644
--- a/qt-ui/preferences.cpp
+++ b/qt-ui/preferences.cpp
@@ -13,12 +13,22 @@ PreferencesDialog* PreferencesDialog::instance()
#define D(V, P) s.value(#V, default_prefs.P).toDouble()
#define I(V, P) s.value(#V, default_prefs.P).toInt()
-PreferencesDialog::PreferencesDialog(QWidget* parent, Qt::WindowFlags f) : QDialog(parent, f)
-, ui(new Ui::PreferencesDialog())
+PreferencesDialog::PreferencesDialog(QWidget* parent, Qt::WindowFlags f) : QDialog(parent, f),
+ ui(new Ui::PreferencesDialog())
{
ui->setupUi(this);
- connect(ui->buttonBox, SIGNAL(accepted()), this, SLOT(syncSettings()));
- connect(ui->buttonBox, SIGNAL(rejected()), this, SLOT(resetSettings()));
+ connect(ui->buttonBox, SIGNAL(clicked(QAbstractButton*)), this, SLOT(buttonClicked(QAbstractButton*)));
+ reloadPrefs();
+}
+
+void PreferencesDialog::showEvent(QShowEvent *event)
+{
+ reloadPrefs();
+ QDialog::showEvent(event);
+}
+
+void PreferencesDialog::reloadPrefs()
+{
oldPrefs = prefs;
@@ -140,8 +150,30 @@ void PreferencesDialog::syncSettings()
s.endGroup();
s.sync();
- oldPrefs = prefs;
emit settingsChanged();
}
+void PreferencesDialog::buttonClicked(QAbstractButton* button)
+{
+ switch(ui->buttonBox->standardButton(button)){
+ case QDialogButtonBox::Discard:
+ prefs = oldPrefs;
+ close();
+ break;
+ case QDialogButtonBox::Apply:
+ syncSettings();
+ emit settingsChanged();
+ break;
+ case QDialogButtonBox::FirstButton:
+ syncSettings();
+ oldPrefs = prefs;
+ emit settingsChanged();
+ close();
+ break;
+ default:
+ break; // ignore warnings.
+ }
+}
+
+
#undef SB
diff --git a/qt-ui/preferences.h b/qt-ui/preferences.h
index 34fc26b07..f50c05c1b 100644
--- a/qt-ui/preferences.h
+++ b/qt-ui/preferences.h
@@ -6,23 +6,25 @@
#include "../pref.h"
namespace Ui{
- class PreferencesDialog;
+class PreferencesDialog;
}
+class QAbstractButton;
class PreferencesDialog :public QDialog{
Q_OBJECT
public:
static PreferencesDialog* instance();
-
+ void showEvent(QShowEvent* );
signals:
void settingsChanged();
-
public slots:
+ void buttonClicked(QAbstractButton* button);
void syncSettings();
void resetSettings();
private:
explicit PreferencesDialog(QWidget* parent = 0, Qt::WindowFlags f = 0);
+ void reloadPrefs();
Ui::PreferencesDialog* ui;
struct preferences oldPrefs;
};