Implemented changed signals in LunchMealSettings

This commit is contained in:
Daniel Brunner
2018-03-24 12:53:26 +01:00
parent a3818d13ed
commit 5061cfcdba
2 changed files with 35 additions and 9 deletions

View File

@@ -2,7 +2,13 @@
#include "zeiterfassungsettings.h" #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) m_settings(settings)
{ {
@@ -10,22 +16,28 @@ LunchMealSettings::LunchMealSettings(ZeiterfassungSettings &settings) :
QString LunchMealSettings::url() const QString LunchMealSettings::url() const
{ {
return m_settings.value(QStringLiteral("LunchMealPlugin/url"), return m_settings.value(m_url, m_defaultUrl).toString();
QStringLiteral("https://brunner.ninja/lunch/%0.txt"))
.toString();
} }
void LunchMealSettings::setUrl(const QString &url) 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 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) 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);
}
} }

View File

@@ -1,14 +1,19 @@
#ifndef LUNCHMEALSETTINGS_H #ifndef LUNCHMEALSETTINGS_H
#define LUNCHMEALSETTINGS_H #define LUNCHMEALSETTINGS_H
#include <QObject>
#include <QUrl> #include <QUrl>
class ZeiterfassungSettings; 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: public:
LunchMealSettings(ZeiterfassungSettings &settings); LunchMealSettings(ZeiterfassungSettings &settings, QObject *parent = Q_NULLPTR);
// no QString becuase placeholder %0 encodes wrong in urls! // no QString becuase placeholder %0 encodes wrong in urls!
QString url() const; QString url() const;
@@ -17,8 +22,17 @@ public:
QString dateFormat() const; QString dateFormat() const;
void setDateFormat(const QString &dateFormat); void setDateFormat(const QString &dateFormat);
Q_SIGNALS:
void urlChanged(const QString &url);
void dateFormatChanged(const QString &dateFormat);
private: private:
ZeiterfassungSettings &m_settings; 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 #endif // LUNCHMEALSETTINGS_H