diff --git a/plugins/webradioplugin/webradiosettings.cpp b/plugins/webradioplugin/webradiosettings.cpp index eb6bb44..8acfae3 100644 --- a/plugins/webradioplugin/webradiosettings.cpp +++ b/plugins/webradioplugin/webradiosettings.cpp @@ -2,6 +2,24 @@ #include "zeiterfassungsettings.h" +const QString WebRadioSettings::m_urls("WebRadioPlugin/urls"); +const QString WebRadioSettings::m_lastUrl("WebRadioPlugin/lastUrl"); +const QString WebRadioSettings::m_volume("WebRadioPlugin/volume"); +const QStringList WebRadioSettings::m_defaultUrls { + QStringLiteral("http://stream.drumandbass.fm:9002"), + QStringLiteral("http://stream.trap.fm:6002"), + QStringLiteral("http://stream.dubbase.fm:7002"), + QStringLiteral("http://lw1.mp3.tb-group.fm/hb.mp3"), + QStringLiteral("http://lw1.mp3.tb-group.fm/tb.mp3"), + QStringLiteral("http://lw1.mp3.tb-group.fm/tt.mp3"), + QStringLiteral("http://lw1.mp3.tb-group.fm/ht.mp3"), + QStringLiteral("http://lw1.mp3.tb-group.fm/trb.mp3"), + QStringLiteral("http://lw1.mp3.tb-group.fm/ct.mp3"), + QStringLiteral("http://lw1.mp3.tb-group.fm/clt.mp3"), + QStringLiteral("https://live.helsinki.at:8088/live160.ogg") +}; +const int WebRadioSettings::m_defaultVolume(100); + WebRadioSettings::WebRadioSettings(ZeiterfassungSettings &settings) : m_settings(settings) { @@ -9,42 +27,42 @@ WebRadioSettings::WebRadioSettings(ZeiterfassungSettings &settings) : QStringList WebRadioSettings::urls() const { - return m_settings.value(QStringLiteral("WebRadioPlugin/urls"), QStringList { - QStringLiteral("http://stream.drumandbass.fm:9002"), - QStringLiteral("http://stream.trap.fm:6002"), - QStringLiteral("http://stream.dubbase.fm:7002"), - QStringLiteral("http://lw1.mp3.tb-group.fm/hb.mp3"), - QStringLiteral("http://lw1.mp3.tb-group.fm/tb.mp3"), - QStringLiteral("http://lw1.mp3.tb-group.fm/tt.mp3"), - QStringLiteral("http://lw1.mp3.tb-group.fm/ht.mp3"), - QStringLiteral("http://lw1.mp3.tb-group.fm/trb.mp3"), - QStringLiteral("http://lw1.mp3.tb-group.fm/ct.mp3"), - QStringLiteral("http://lw1.mp3.tb-group.fm/clt.mp3"), - QStringLiteral("https://live.helsinki.at:8088/live160.ogg") - }).toStringList(); + return m_settings.value(m_urls, m_defaultUrls).toStringList(); } void WebRadioSettings::setUrls(const QStringList &urls) { - m_settings.setValue(QStringLiteral("WebRadioPlugin/urls"), urls); + if(this->urls() != urls) + { + m_settings.setValue(m_urls, urls); + Q_EMIT urlsChanged(urls); + } } QString WebRadioSettings::lastUrl() const { - return m_settings.value(QStringLiteral("WebRadioPlugin/lastUrl")).toString(); + return m_settings.value(m_lastUrl).toString(); } void WebRadioSettings::setLastUrl(const QString &lastUrl) { - m_settings.setValue(QStringLiteral("WebRadioPlugin/lastUrl"), lastUrl); + if(this->lastUrl() != lastUrl) + { + m_settings.setValue(m_lastUrl, lastUrl); + Q_EMIT lastUrlChanged(lastUrl); + } } int WebRadioSettings::volume() const { - return m_settings.value(QStringLiteral("WebRadioPlugin/volume"), 100).toInt(); + return m_settings.value(m_volume, m_defaultVolume).toInt(); } void WebRadioSettings::setVolume(int volume) { - m_settings.setValue(QStringLiteral("WebRadioPlugin/volume"), volume); + if(this->volume() != volume) + { + m_settings.setValue(m_volume, volume); + Q_EMIT volumeChanged(volume); + } } diff --git a/plugins/webradioplugin/webradiosettings.h b/plugins/webradioplugin/webradiosettings.h index 0f1cc4c..662e614 100644 --- a/plugins/webradioplugin/webradiosettings.h +++ b/plugins/webradioplugin/webradiosettings.h @@ -1,12 +1,18 @@ #ifndef WEBRADIOSETTINGS_H #define WEBRADIOSETTINGS_H +#include #include class ZeiterfassungSettings; -class WebRadioSettings +class WebRadioSettings : public QObject { + Q_OBJECT + Q_PROPERTY(QStringList urls READ urls WRITE setUrls NOTIFY urlsChanged) + Q_PROPERTY(QString lastUrl READ lastUrl WRITE setLastUrl NOTIFY lastUrlChanged) + Q_PROPERTY(int volume READ volume WRITE setVolume NOTIFY volumeChanged) + public: WebRadioSettings(ZeiterfassungSettings &settings); @@ -19,8 +25,19 @@ public: int volume() const; void setVolume(int volume); +Q_SIGNALS: + void urlsChanged(const QStringList &urls); + void lastUrlChanged(const QString &lastUrl); + void volumeChanged(int volume); + private: ZeiterfassungSettings &m_settings; + + static const QString m_urls; + static const QString m_lastUrl; + static const QString m_volume; + static const QStringList m_defaultUrls; + static const int m_defaultVolume; }; #endif // WEBRADIOSETTINGS_H