Improve error handling of QSettings saving [#88] #90

Merged
0xFEEDC0DE64 merged 9 commits from 88-settings-error-handling into master 2018-05-25 16:04:45 +02:00
4 changed files with 214 additions and 103 deletions
Showing only changes of commit f94d53c0aa - Show all commits

View File

@@ -19,13 +19,25 @@ QString LunchMealSettings::url() const
return m_settings.value(m_url, m_defaultUrl).toString(); 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) if(this->url() == url)
{ return true;
m_settings.setValue(QStringLiteral("LunchMealPlugin/url"), url);
m_settings.setValue(QStringLiteral("LunchMealPlugin/url"), url);
m_settings.sync();
const auto success = m_settings.status() == QSettings::NoError;
if(success)
Q_EMIT urlChanged(url); Q_EMIT urlChanged(url);
else
{
Q_EMIT m_settings.saveErrorOccured();
Q_EMIT saveErrorOccured();
} }
return success;
} }
QString LunchMealSettings::dateFormat() const QString LunchMealSettings::dateFormat() const
@@ -33,11 +45,23 @@ QString LunchMealSettings::dateFormat() const
return m_settings.value(m_dateFormat, m_defaultDateFormat).toString(); 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) if(this->dateFormat() == dateFormat)
{ return true;
m_settings.setValue(QStringLiteral("LunchMealPlugin/dateFormat"), dateFormat);
m_settings.setValue(QStringLiteral("LunchMealPlugin/dateFormat"), dateFormat);
m_settings.sync();
const auto success = m_settings.status() == QSettings::NoError;
if(success)
Q_EMIT dateFormatChanged(dateFormat); Q_EMIT dateFormatChanged(dateFormat);
else
{
Q_EMIT m_settings.saveErrorOccured();
Q_EMIT saveErrorOccured();
} }
return success;
} }

View File

@@ -16,12 +16,14 @@ public:
// no QString becuase placeholder %0 encodes wrong in urls! // no QString becuase placeholder %0 encodes wrong in urls!
QString url() const; QString url() const;
void setUrl(const QString &url); bool setUrl(const QString &url);
QString dateFormat() const; QString dateFormat() const;
void setDateFormat(const QString &dateFormat); bool setDateFormat(const QString &dateFormat);
Q_SIGNALS: Q_SIGNALS:
void saveErrorOccured();
void urlChanged(const QString &url); void urlChanged(const QString &url);
void dateFormatChanged(const QString &dateFormat); void dateFormatChanged(const QString &dateFormat);