From f94d53c0aaa35608b339ec0a69db2d09d4d76870 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 <0xFEEDC0DE64@gmail.com> Date: Fri, 25 May 2018 19:06:35 +0200 Subject: [PATCH] LunchMealSettings error handling --- plugins/lunchmealplugin/lunchmealsettings.cpp | 40 +++++++++++++++---- plugins/lunchmealplugin/lunchmealsettings.h | 6 ++- 2 files changed, 36 insertions(+), 10 deletions(-) diff --git a/plugins/lunchmealplugin/lunchmealsettings.cpp b/plugins/lunchmealplugin/lunchmealsettings.cpp index 9c3dcc1..d560b90 100644 --- a/plugins/lunchmealplugin/lunchmealsettings.cpp +++ b/plugins/lunchmealplugin/lunchmealsettings.cpp @@ -19,13 +19,25 @@ QString LunchMealSettings::url() const return m_settings.value(m_url, m_defaultUrl).toString(); } -void LunchMealSettings::setUrl(const QString &url) +bool LunchMealSettings::setUrl(const QString &url) { - if(this->url() != url) - { - m_settings.setValue(QStringLiteral("LunchMealPlugin/url"), url); + if(this->url() == url) + return true; + + m_settings.setValue(QStringLiteral("LunchMealPlugin/url"), url); + + m_settings.sync(); + + const auto success = m_settings.status() == QSettings::NoError; + if(success) Q_EMIT urlChanged(url); + else + { + Q_EMIT m_settings.saveErrorOccured(); + Q_EMIT saveErrorOccured(); } + + return success; } QString LunchMealSettings::dateFormat() const @@ -33,11 +45,23 @@ QString LunchMealSettings::dateFormat() const return m_settings.value(m_dateFormat, m_defaultDateFormat).toString(); } -void LunchMealSettings::setDateFormat(const QString &dateFormat) +bool LunchMealSettings::setDateFormat(const QString &dateFormat) { - if(this->dateFormat() != dateFormat) - { - m_settings.setValue(QStringLiteral("LunchMealPlugin/dateFormat"), dateFormat); + if(this->dateFormat() == dateFormat) + return true; + + m_settings.setValue(QStringLiteral("LunchMealPlugin/dateFormat"), dateFormat); + + m_settings.sync(); + + const auto success = m_settings.status() == QSettings::NoError; + if(success) Q_EMIT dateFormatChanged(dateFormat); + else + { + Q_EMIT m_settings.saveErrorOccured(); + Q_EMIT saveErrorOccured(); } + + return success; } diff --git a/plugins/lunchmealplugin/lunchmealsettings.h b/plugins/lunchmealplugin/lunchmealsettings.h index 7db1913..6c8eec5 100644 --- a/plugins/lunchmealplugin/lunchmealsettings.h +++ b/plugins/lunchmealplugin/lunchmealsettings.h @@ -16,12 +16,14 @@ public: // no QString becuase placeholder %0 encodes wrong in urls! QString url() const; - void setUrl(const QString &url); + bool setUrl(const QString &url); QString dateFormat() const; - void setDateFormat(const QString &dateFormat); + bool setDateFormat(const QString &dateFormat); Q_SIGNALS: + void saveErrorOccured(); + void urlChanged(const QString &url); void dateFormatChanged(const QString &dateFormat);