Implemented message box if changing settings fails

This commit is contained in:
0xFEEDC0DE64
2018-05-25 19:51:20 +02:00
parent 43cc25b825
commit dd99132ae0
2 changed files with 30 additions and 7 deletions

View File

@@ -82,7 +82,12 @@ void SettingsDialog::submit()
if(ui->comboBoxLanguage->currentData().value<QLocale::Language>() != m_settings.language()) if(ui->comboBoxLanguage->currentData().value<QLocale::Language>() != m_settings.language())
{ {
m_settings.setLanguage(ui->comboBoxLanguage->currentData().value<QLocale::Language>()); if(!m_settings.setLanguage(ui->comboBoxLanguage->currentData().value<QLocale::Language>()))
{
errorOccured();
return;
}
//TODO #73 Allow changing of the language without restart //TODO #73 Allow changing of the language without restart
QMessageBox::information(this, tr("Restart required!"), tr("To apply the new settings a restart is required!")); QMessageBox::information(this, tr("Restart required!"), tr("To apply the new settings a restart is required!"));
} }
@@ -90,9 +95,8 @@ void SettingsDialog::submit()
auto theme = ui->comboBoxTheme->currentData().toString(); auto theme = ui->comboBoxTheme->currentData().toString();
if(theme != m_settings.theme()) if(theme != m_settings.theme())
{ {
if(theme.isEmpty()) QString styleSheet;
qApp->setStyleSheet(QString()); if(!theme.isEmpty())
else
{ {
auto themePath = QDir(QDir(QCoreApplication::applicationDirPath()).absoluteFilePath(QStringLiteral("themes"))).absoluteFilePath(theme); auto themePath = QDir(QDir(QCoreApplication::applicationDirPath()).absoluteFilePath(QStringLiteral("themes"))).absoluteFilePath(theme);
@@ -111,14 +115,31 @@ void SettingsDialog::submit()
} }
QTextStream textStream(&file); QTextStream textStream(&file);
qApp->setStyleSheet(textStream.readAll().replace(QStringLiteral("@THEME_RESOURCES@"), themePath)); styleSheet = textStream.readAll().replace(QStringLiteral("@THEME_RESOURCES@"), themePath);
} }
m_settings.setTheme(theme); if(!m_settings.setTheme(theme))
{
errorOccured();
return;
}
qApp->setStyleSheet(styleSheet);
} }
for(const auto widget : m_settingsWidgets) for(const auto widget : m_settingsWidgets)
widget->apply(); {
if(!widget->apply())
{
errorOccured();
return;
}
}
accept(); accept();
} }
void SettingsDialog::errorOccured()
{
QMessageBox::warning(this, tr("Could not save settings!"), tr("Could not load settings!") % "\n\n" % tr("Make sure you have writing permissions!"));
}

View File

@@ -20,6 +20,8 @@ private Q_SLOTS:
void submit(); void submit();
private: private:
void errorOccured();
Ui::SettingsDialog *ui; Ui::SettingsDialog *ui;
ZeiterfassungSettings &m_settings; ZeiterfassungSettings &m_settings;
QVector<SettingsWidget*> m_settingsWidgets; QVector<SettingsWidget*> m_settingsWidgets;