diff --git a/plugins/lunchmealplugin/lunchmealsettings.cpp b/plugins/lunchmealplugin/lunchmealsettings.cpp index 9e09a0b..9c3dcc1 100644 --- a/plugins/lunchmealplugin/lunchmealsettings.cpp +++ b/plugins/lunchmealplugin/lunchmealsettings.cpp @@ -2,7 +2,13 @@ #include "zeiterfassungsettings.h" -LunchMealSettings::LunchMealSettings(ZeiterfassungSettings &settings) : +const QString LunchMealSettings::m_url("LunchMealPlugin/url"); +const QString LunchMealSettings::m_dateFormat("LunchMealPlugin/dateFormat"); +const QString LunchMealSettings::m_defaultUrl("https://brunner.ninja/lunch/%0.txt"); +const QString LunchMealSettings::m_defaultDateFormat("yyyy-MM-dd"); + +LunchMealSettings::LunchMealSettings(ZeiterfassungSettings &settings, QObject *parent) : + QObject(parent), m_settings(settings) { @@ -10,22 +16,28 @@ LunchMealSettings::LunchMealSettings(ZeiterfassungSettings &settings) : QString LunchMealSettings::url() const { - return m_settings.value(QStringLiteral("LunchMealPlugin/url"), - QStringLiteral("https://brunner.ninja/lunch/%0.txt")) - .toString(); + return m_settings.value(m_url, m_defaultUrl).toString(); } void LunchMealSettings::setUrl(const QString &url) { - m_settings.setValue(QStringLiteral("LunchMealPlugin/url"), url); + if(this->url() != url) + { + m_settings.setValue(QStringLiteral("LunchMealPlugin/url"), url); + Q_EMIT urlChanged(url); + } } QString LunchMealSettings::dateFormat() const { - return m_settings.value(QStringLiteral("LunchMealPlugin/dateFormat"), QStringLiteral("yyyy-MM-dd")).toString(); + return m_settings.value(m_dateFormat, m_defaultDateFormat).toString(); } void LunchMealSettings::setDateFormat(const QString &dateFormat) { - m_settings.setValue(QStringLiteral("LunchMealPlugin/dateFormat"), dateFormat); + if(this->dateFormat() != dateFormat) + { + m_settings.setValue(QStringLiteral("LunchMealPlugin/dateFormat"), dateFormat); + Q_EMIT dateFormatChanged(dateFormat); + } } diff --git a/plugins/lunchmealplugin/lunchmealsettings.h b/plugins/lunchmealplugin/lunchmealsettings.h index 6d07af7..daa3d2b 100644 --- a/plugins/lunchmealplugin/lunchmealsettings.h +++ b/plugins/lunchmealplugin/lunchmealsettings.h @@ -1,14 +1,19 @@ #ifndef LUNCHMEALSETTINGS_H #define LUNCHMEALSETTINGS_H +#include #include class ZeiterfassungSettings; -class LunchMealSettings +class LunchMealSettings : public QObject { + Q_OBJECT + Q_PROPERTY(QString url READ url WRITE setUrl NOTIFY urlChanged) + Q_PROPERTY(QString dateFormat READ dateFormat WRITE setDateFormat NOTIFY dateFormatChanged) + public: - LunchMealSettings(ZeiterfassungSettings &settings); + LunchMealSettings(ZeiterfassungSettings &settings, QObject *parent = Q_NULLPTR); // no QString becuase placeholder %0 encodes wrong in urls! QString url() const; @@ -17,8 +22,17 @@ public: QString dateFormat() const; void setDateFormat(const QString &dateFormat); +Q_SIGNALS: + void urlChanged(const QString &url); + void dateFormatChanged(const QString &dateFormat); + private: ZeiterfassungSettings &m_settings; + + static const QString m_url; + static const QString m_dateFormat; + static const QString m_defaultUrl; + static const QString m_defaultDateFormat; }; #endif // LUNCHMEALSETTINGS_H