Some cleanups, saving of the settings.

This commit is contained in:
Martin Rotter 2016-08-02 09:21:45 +02:00
parent a6a8ca1e40
commit 2bb0543172
2 changed files with 33 additions and 31 deletions

View File

@ -18,30 +18,10 @@
#include "gui/dialogs/formsettings.h" #include "gui/dialogs/formsettings.h"
#include "definitions/definitions.h" #include "definitions/definitions.h"
#include "core/feeddownloader.h"
#include "core/feedsmodel.h"
#include "core/messagesmodel.h"
#include "miscellaneous/application.h" #include "miscellaneous/application.h"
#include "miscellaneous/settings.h" #include "miscellaneous/settings.h"
#include "miscellaneous/databasefactory.h"
#include "miscellaneous/localization.h"
#include "miscellaneous/systemfactory.h"
#include "miscellaneous/iconfactory.h" #include "miscellaneous/iconfactory.h"
#include "miscellaneous/skinfactory.h"
#include "miscellaneous/textfactory.h"
#include "network-web/webfactory.h"
#include "network-web/silentnetworkaccessmanager.h"
#include "gui/systemtrayicon.h"
#include "gui/feedmessageviewer.h"
#include "gui/feedsview.h"
#include "gui/feedstoolbar.h"
#include "gui/messagebox.h" #include "gui/messagebox.h"
#include "gui/basetoolbar.h"
#include "gui/messagestoolbar.h"
#include "gui/messagesview.h"
#include "gui/statusbar.h"
#include "gui/dialogs/formmain.h"
#include "dynamic-shortcuts/dynamicshortcuts.h"
#include "gui/settings/settingsbrowsermail.h" #include "gui/settings/settingsbrowsermail.h"
#include "gui/settings/settingsdatabase.h" #include "gui/settings/settingsdatabase.h"
@ -52,14 +32,6 @@
#include "gui/settings/settingslocalization.h" #include "gui/settings/settingslocalization.h"
#include "gui/settings/settingsshortcuts.h" #include "gui/settings/settingsshortcuts.h"
#include <QProcess>
#include <QNetworkProxy>
#include <QColorDialog>
#include <QFileDialog>
#include <QKeyEvent>
#include <QFontDialog>
#include <QDir>
FormSettings::FormSettings(QWidget *parent) : QDialog(parent), m_panels(QList<SettingsPanel*>()), m_ui(new Ui::FormSettings), m_settings(qApp->settings()) { FormSettings::FormSettings(QWidget *parent) : QDialog(parent), m_panels(QList<SettingsPanel*>()), m_ui(new Ui::FormSettings), m_settings(qApp->settings()) {
m_ui->setupUi(this); m_ui->setupUi(this);
@ -72,7 +44,8 @@ FormSettings::FormSettings(QWidget *parent) : QDialog(parent), m_panels(QList<Se
m_btnApply->setEnabled(false); m_btnApply->setEnabled(false);
// Establish needed connections. // Establish needed connections.
connect(m_ui->m_buttonBox, SIGNAL(accepted()), this, SLOT(saveSettings())); connect(m_ui->m_buttonBox, &QDialogButtonBox::accepted, this, &FormSettings::saveSettings);
connect(m_btnApply, &QPushButton::clicked, this, &FormSettings::applySettings);
addSettingsPanel(new SettingsGeneral(m_settings, this)); addSettingsPanel(new SettingsGeneral(m_settings, this));
addSettingsPanel(new SettingsDatabase(m_settings, this)); addSettingsPanel(new SettingsDatabase(m_settings, this));
@ -105,10 +78,38 @@ void FormSettings::promptForRestart() {
} }
void FormSettings::saveSettings() { void FormSettings::saveSettings() {
applySettings();
accept();
}
void FormSettings::applySettings() {
// Save all settings. // Save all settings.
m_settings->checkSettings(); m_settings->checkSettings();
promptForRestart();
accept(); QStringList panels_for_restart;
foreach (SettingsPanel *panel, m_panels) {
if (panel->requiresRestart()) {
panels_for_restart.append(panel->title().toLower());
}
panel->saveSettings();
}
if (!panels_for_restart.isEmpty()) {
const QStringList changed_settings_description = panels_for_restart.replaceInStrings(QRegExp(QSL("^")), QString::fromUtf8(""));
MessageBox::show(this,
QMessageBox::Question,
tr("Critical settings were changed"),
tr("Some critical settings were changed and will be applied after the application gets restarted. "
"\n\nYou have to restart manually."),
QString(),
tr("Changed categories of settings:\n%1.").arg(changed_settings_description .join(QSL(",\n"))),
QMessageBox::Ok, QMessageBox::Ok);
}
m_btnApply->setEnabled(false);
} }
void FormSettings::addSettingsPanel(SettingsPanel *panel) { void FormSettings::addSettingsPanel(SettingsPanel *panel) {

View File

@ -40,6 +40,7 @@ class FormSettings : public QDialog {
// Saves settings into global configuration. // Saves settings into global configuration.
void saveSettings(); void saveSettings();
void applySettings();
private: private:
void addSettingsPanel(SettingsPanel *panel); void addSettingsPanel(SettingsPanel *panel);