Handle errors when restoring/saving settings

This commit is contained in:
Martchus 2023-02-18 18:46:27 +01:00
parent a19424a05d
commit 37a6d14dc5
4 changed files with 26 additions and 5 deletions

View File

@ -196,7 +196,7 @@ if (WIDGETS_GUI OR QUICK_GUI)
set(CONFIGURATION_PACKAGE_SUFFIX_QTUTILITIES
"${CONFIGURATION_PACKAGE_SUFFIX}"
CACHE STRING "sets the suffix for qtutilities")
find_package(qtutilities${CONFIGURATION_PACKAGE_SUFFIX_QTUTILITIES} 6.8.0 REQUIRED)
find_package(qtutilities${CONFIGURATION_PACKAGE_SUFFIX_QTUTILITIES} 6.11.0 REQUIRED)
use_qt_utilities()
endif ()

View File

@ -50,6 +50,7 @@ void restore()
auto s = QtUtilities::getSettings(QStringLiteral(PROJECT_NAME));
auto &settings = *s;
auto &v = values();
v.error = QtUtilities::errorMessageForSettings(settings);
settings.beginGroup(QStringLiteral("editor"));
switch (settings.value(QStringLiteral("adoptfields"), static_cast<int>(v.editor.adoptFields)).toInt()) {
@ -221,7 +222,7 @@ void save()
{
auto s = QtUtilities::getSettings(QStringLiteral(PROJECT_NAME));
auto &settings = *s;
const auto &v = values();
auto &v = values();
settings.beginGroup(QStringLiteral("editor"));
settings.setValue(QStringLiteral("adoptfields"), static_cast<int>(v.editor.adoptFields));
@ -311,6 +312,9 @@ void save()
settings.endGroup();
v.qt.save(settings);
settings.sync();
v.error = QtUtilities::errorMessageForSettings(settings);
}
} // namespace Settings

View File

@ -109,6 +109,7 @@ struct RenamingUtility {
};
struct Settings {
QString error;
Editor editor;
FileBrowser fileBrowser;
TagProcessing tagPocessing;

View File

@ -13,6 +13,7 @@
#include <qtutilities/settingsdialog/qtsettings.h>
#include <QApplication>
#include <QMessageBox>
ENABLE_QT_RESOURCES_OF_STATIC_DEPENDENCIES
@ -20,6 +21,19 @@ using namespace CppUtilities;
namespace QtGui {
static void showSettingsError(const QString &settingsError)
{
if (!settingsError.isEmpty()) {
QMessageBox::critical(nullptr, QCoreApplication::applicationName(), settingsError);
}
}
static void saveSettings()
{
Settings::save();
showSettingsError(Settings::values().error);
}
int runWidgetsGui(int argc, char *argv[], const QtConfigArguments &qtConfigArgs, const QString &path, bool launchRenamingUtility)
{
SET_QT_APPLICATION_INFO;
@ -27,12 +41,14 @@ int runWidgetsGui(int argc, char *argv[], const QtConfigArguments &qtConfigArgs,
Settings::restore();
// apply settings specified via command line args after the settings chosen in the GUI to give the CLI options precedence
Settings::values().qt.apply();
qtConfigArgs.applySettings(Settings::values().qt.hasCustomFont());
auto &settings = Settings::values();
settings.qt.apply();
qtConfigArgs.applySettings(settings.qt.hasCustomFont());
LOAD_QT_TRANSLATIONS;
QObject::connect(&application, &QCoreApplication::aboutToQuit, &Settings::save);
showSettingsError(settings.error);
QObject::connect(&application, &QCoreApplication::aboutToQuit, &saveSettings);
if (launchRenamingUtility) {
RenameFilesDialog window;