From 26f1c820800abb2993a4ec9f31b07048093e843e Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE <0xfeedc0de64@gmail.com> Date: Tue, 13 Mar 2018 21:06:12 +0100 Subject: [PATCH 1/8] Added WebRadioSettings --- plugins/webradioplugin/webradiodialog.cpp | 19 +++---------- plugins/webradioplugin/webradiodialog.h | 4 +++ plugins/webradioplugin/webradioplugin.pro | 6 +++-- plugins/webradioplugin/webradiosettings.cpp | 30 +++++++++++++++++++++ plugins/webradioplugin/webradiosettings.h | 20 ++++++++++++++ 5 files changed, 61 insertions(+), 18 deletions(-) create mode 100644 plugins/webradioplugin/webradiosettings.cpp create mode 100644 plugins/webradioplugin/webradiosettings.h diff --git a/plugins/webradioplugin/webradiodialog.cpp b/plugins/webradioplugin/webradiodialog.cpp index fd5e855..2ca4f89 100644 --- a/plugins/webradioplugin/webradiodialog.cpp +++ b/plugins/webradioplugin/webradiodialog.cpp @@ -7,7 +7,8 @@ WebRadioDialog::WebRadioDialog(MainWindow &mainWindow) : ZeiterfassungDialog(&mainWindow), ui(new Ui::WebRadioDialog), - m_mainWindow(mainWindow) + m_mainWindow(mainWindow), + m_settings(m_mainWindow.settings()) { ui->setupUi(this); @@ -18,22 +19,8 @@ WebRadioDialog::WebRadioDialog(MainWindow &mainWindow) : connect(m_player, &QMediaPlayer::mediaStatusChanged, this, &WebRadioDialog::updateWidgets); connect(m_player, static_cast(&QMediaPlayer::error), this, &WebRadioDialog::error); - for(const auto &url : m_mainWindow.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()) - { + for(const auto &url : m_settings.urls()) ui->comboBox->addItem(url, url); - } ui->comboBox->setCurrentIndex(ui->comboBox->findData(m_mainWindow.settings().value(QStringLiteral("WebRadioPlugin/lastUrl")).toString())); diff --git a/plugins/webradioplugin/webradiodialog.h b/plugins/webradioplugin/webradiodialog.h index 6dbda8d..b1c6c73 100644 --- a/plugins/webradioplugin/webradiodialog.h +++ b/plugins/webradioplugin/webradiodialog.h @@ -4,6 +4,8 @@ #include "zeiterfassungdialog.h" +#include "webradiosettings.h" + class MainWindow; namespace Ui { class WebRadioDialog; } @@ -30,5 +32,7 @@ private: Ui::WebRadioDialog *ui; MainWindow &m_mainWindow; + WebRadioSettings m_settings; + QMediaPlayer *m_player; }; diff --git a/plugins/webradioplugin/webradioplugin.pro b/plugins/webradioplugin/webradioplugin.pro index 1024a95..c796eff 100644 --- a/plugins/webradioplugin/webradioplugin.pro +++ b/plugins/webradioplugin/webradioplugin.pro @@ -17,10 +17,12 @@ DEPENDPATH += $$PWD/$${PROJECT_ROOT}/zeiterfassungcorelib $$PWD/$${PROJECT_ROOT} DEFINES += QT_DEPRECATED_WARNINGS QT_DISABLE_DEPRECATED_BEFORE=0x060000 QT_MESSAGELOGCONTEXT HEADERS += webradiodialog.h \ - webradioplugin.h + webradioplugin.h \ + webradiosettings.h SOURCES += webradiodialog.cpp \ - webradioplugin.cpp + webradioplugin.cpp \ + webradiosettings.cpp FORMS += webradiodialog.ui diff --git a/plugins/webradioplugin/webradiosettings.cpp b/plugins/webradioplugin/webradiosettings.cpp new file mode 100644 index 0000000..652d94d --- /dev/null +++ b/plugins/webradioplugin/webradiosettings.cpp @@ -0,0 +1,30 @@ +#include "webradiosettings.h" + +#include "zeiterfassungsettings.h" + +WebRadioSettings::WebRadioSettings(ZeiterfassungSettings &settings) : + m_settings(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(); +} + +void WebRadioSettings::setUrls(const QStringList &urls) +{ + m_settings.setValue(QStringLiteral("WebRadioPlugin/urls"), urls); +} diff --git a/plugins/webradioplugin/webradiosettings.h b/plugins/webradioplugin/webradiosettings.h new file mode 100644 index 0000000..4993eda --- /dev/null +++ b/plugins/webradioplugin/webradiosettings.h @@ -0,0 +1,20 @@ +#ifndef WEBRADIOSETTINGS_H +#define WEBRADIOSETTINGS_H + +#include + +class ZeiterfassungSettings; + +class WebRadioSettings +{ +public: + WebRadioSettings(ZeiterfassungSettings &settings); + + QStringList urls() const; + void setUrls(const QStringList &urls); + +private: + ZeiterfassungSettings &m_settings; +}; + +#endif // WEBRADIOSETTINGS_H -- 2.50.1 From 6fb58b1b74cdf7d4f825e678ed10515ac95f0e24 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE <0xfeedc0de64@gmail.com> Date: Tue, 13 Mar 2018 21:10:49 +0100 Subject: [PATCH 2/8] Implemented WebRadioSettings::lastUrl and WebRadioSettings::volume --- plugins/webradioplugin/webradiodialog.cpp | 8 ++++---- plugins/webradioplugin/webradiosettings.cpp | 20 ++++++++++++++++++++ plugins/webradioplugin/webradiosettings.h | 6 ++++++ 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/plugins/webradioplugin/webradiodialog.cpp b/plugins/webradioplugin/webradiodialog.cpp index 2ca4f89..236ee90 100644 --- a/plugins/webradioplugin/webradiodialog.cpp +++ b/plugins/webradioplugin/webradiodialog.cpp @@ -22,7 +22,7 @@ WebRadioDialog::WebRadioDialog(MainWindow &mainWindow) : for(const auto &url : m_settings.urls()) ui->comboBox->addItem(url, url); - ui->comboBox->setCurrentIndex(ui->comboBox->findData(m_mainWindow.settings().value(QStringLiteral("WebRadioPlugin/lastUrl")).toString())); + ui->comboBox->setCurrentIndex(ui->comboBox->findData(m_settings.lastUrl())); connect(ui->comboBox, static_cast(&QComboBox::currentIndexChanged), this, &WebRadioDialog::currentIndexChanged); @@ -34,7 +34,7 @@ WebRadioDialog::WebRadioDialog(MainWindow &mainWindow) : connect(ui->pushButtonPause, &QAbstractButton::pressed, m_player, &QMediaPlayer::pause); connect(ui->pushButtonStop, &QAbstractButton::pressed, m_player, &QMediaPlayer::stop); - m_player->setVolume(m_mainWindow.settings().value(QStringLiteral("WebRadioPlugin/volume"), 100).toInt()); + m_player->setVolume(m_settings.volume()); ui->horizontalSlider->setValue(m_player->volume()); connect(ui->horizontalSlider, &QAbstractSlider::valueChanged, this, &WebRadioDialog::volumeChanged); @@ -106,7 +106,7 @@ void WebRadioDialog::play() if(ui->comboBox->currentIndex() == -1) return; - m_mainWindow.settings().setValue(QStringLiteral("WebRadioPlugin/lastUrl"), ui->comboBox->currentData().toString()); + m_settings.setLastUrl(ui->comboBox->currentData().toString()); m_player->play(); } @@ -123,6 +123,6 @@ void WebRadioDialog::updateWidgets() void WebRadioDialog::volumeChanged(int volume) { - m_mainWindow.settings().setValue(QStringLiteral("WebRadioPlugin/volume"), volume); + m_settings.setVolume(volume); m_player->setVolume(volume); } diff --git a/plugins/webradioplugin/webradiosettings.cpp b/plugins/webradioplugin/webradiosettings.cpp index 652d94d..eb6bb44 100644 --- a/plugins/webradioplugin/webradiosettings.cpp +++ b/plugins/webradioplugin/webradiosettings.cpp @@ -28,3 +28,23 @@ void WebRadioSettings::setUrls(const QStringList &urls) { m_settings.setValue(QStringLiteral("WebRadioPlugin/urls"), urls); } + +QString WebRadioSettings::lastUrl() const +{ + return m_settings.value(QStringLiteral("WebRadioPlugin/lastUrl")).toString(); +} + +void WebRadioSettings::setLastUrl(const QString &lastUrl) +{ + m_settings.setValue(QStringLiteral("WebRadioPlugin/lastUrl"), lastUrl); +} + +int WebRadioSettings::volume() const +{ + return m_settings.value(QStringLiteral("WebRadioPlugin/volume"), 100).toInt(); +} + +void WebRadioSettings::setVolume(int volume) +{ + m_settings.setValue(QStringLiteral("WebRadioPlugin/volume"), volume); +} diff --git a/plugins/webradioplugin/webradiosettings.h b/plugins/webradioplugin/webradiosettings.h index 4993eda..0f1cc4c 100644 --- a/plugins/webradioplugin/webradiosettings.h +++ b/plugins/webradioplugin/webradiosettings.h @@ -13,6 +13,12 @@ public: QStringList urls() const; void setUrls(const QStringList &urls); + QString lastUrl() const; + void setLastUrl(const QString &lastUrl); + + int volume() const; + void setVolume(int volume); + private: ZeiterfassungSettings &m_settings; }; -- 2.50.1 From 3cddf79149ca1716bf4eef0c65d7d49d846319c0 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 <0xFEEDC0DE64@gmail.com> Date: Thu, 15 Mar 2018 22:53:09 +0100 Subject: [PATCH 3/8] Added QStringListWidget lib --- .gitmodules | 3 +++ zeiterfassungguilib/QStringListWidget | 1 + zeiterfassungguilib/zeiterfassungguilib.pro | 2 ++ 3 files changed, 6 insertions(+) create mode 100644 .gitmodules create mode 160000 zeiterfassungguilib/QStringListWidget diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..464f0ed --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "zeiterfassungguilib/QStringListWidget"] + path = zeiterfassungguilib/QStringListWidget + url = https://github.com/0xFEEDC0DE64/QStringListWidget.git diff --git a/zeiterfassungguilib/QStringListWidget b/zeiterfassungguilib/QStringListWidget new file mode 160000 index 0000000..03bbb01 --- /dev/null +++ b/zeiterfassungguilib/QStringListWidget @@ -0,0 +1 @@ +Subproject commit 03bbb01a26eb7c7cd81ab59abc35a78b324974b7 diff --git a/zeiterfassungguilib/zeiterfassungguilib.pro b/zeiterfassungguilib/zeiterfassungguilib.pro index 30e4962..15c428a 100644 --- a/zeiterfassungguilib/zeiterfassungguilib.pro +++ b/zeiterfassungguilib/zeiterfassungguilib.pro @@ -49,3 +49,5 @@ TRANSLATIONS += translations/zeiterfassungguilib_en.ts \ translations/zeiterfassungguilib_de.ts include($${PROJECT_ROOT}/lrelease.pri) + +include(QStringListWidget/QStringListWidget.pri) -- 2.50.1 From 67c668ab6c67e15a382e5782f3420d81601e1b12 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 <0xFEEDC0DE64@gmail.com> Date: Thu, 15 Mar 2018 23:38:41 +0100 Subject: [PATCH 4/8] Updated QStringListWidget lib --- zeiterfassungguilib/QStringListWidget | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zeiterfassungguilib/QStringListWidget b/zeiterfassungguilib/QStringListWidget index 03bbb01..0090c29 160000 --- a/zeiterfassungguilib/QStringListWidget +++ b/zeiterfassungguilib/QStringListWidget @@ -1 +1 @@ -Subproject commit 03bbb01a26eb7c7cd81ab59abc35a78b324974b7 +Subproject commit 0090c29663d23293d6d0b90f8dd9f7ac57170df1 -- 2.50.1 From 1f622e80d1fa1d21d6060cba7b78f5b7ea2fe21f Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 <0xFEEDC0DE64@gmail.com> Date: Thu, 15 Mar 2018 23:54:33 +0100 Subject: [PATCH 5/8] Added WebRadioSettingsWidget --- plugins/webradioplugin/webradioplugin.cpp | 6 ++++ plugins/webradioplugin/webradioplugin.h | 2 ++ plugins/webradioplugin/webradioplugin.pro | 6 ++-- .../webradioplugin/webradiosettingswidget.cpp | 28 ++++++++++++++++ .../webradioplugin/webradiosettingswidget.h | 32 +++++++++++++++++++ 5 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 plugins/webradioplugin/webradiosettingswidget.cpp create mode 100644 plugins/webradioplugin/webradiosettingswidget.h diff --git a/plugins/webradioplugin/webradioplugin.cpp b/plugins/webradioplugin/webradioplugin.cpp index 9a749d7..d75bfcb 100644 --- a/plugins/webradioplugin/webradioplugin.cpp +++ b/plugins/webradioplugin/webradioplugin.cpp @@ -10,6 +10,7 @@ #include "mainwindow.h" #include "webradiodialog.h" +#include "webradiosettingswidget.h" WebRadioPlugin::WebRadioPlugin(QObject *parent) : ZeiterfassungPlugin(parent) @@ -37,3 +38,8 @@ void WebRadioPlugin::attachTo(MainWindow &mainWindow) mainWindow.menuTools()->addAction(QIcon(QStringLiteral(":/zeiterfassung/plugins/webradioplugin/images/web-radio.png")), tr("Play webradio"), dialog, &QWidget::show); } + +SettingsWidget *WebRadioPlugin::settingsWidget(ZeiterfassungSettings &settings, QWidget *parent) const +{ + return new WebRadioSettingsWidget(settings, parent); +} diff --git a/plugins/webradioplugin/webradioplugin.h b/plugins/webradioplugin/webradioplugin.h index e11932d..6644b3f 100644 --- a/plugins/webradioplugin/webradioplugin.h +++ b/plugins/webradioplugin/webradioplugin.h @@ -17,6 +17,8 @@ public: // ZeiterfassungPlugin interface void attachTo(MainWindow &mainWindow) Q_DECL_OVERRIDE; + SettingsWidget *settingsWidget(ZeiterfassungSettings &settings, QWidget *parent = Q_NULLPTR) const Q_DECL_OVERRIDE; + private: QTranslator m_translator; }; diff --git a/plugins/webradioplugin/webradioplugin.pro b/plugins/webradioplugin/webradioplugin.pro index c796eff..0c8ee81 100644 --- a/plugins/webradioplugin/webradioplugin.pro +++ b/plugins/webradioplugin/webradioplugin.pro @@ -18,11 +18,13 @@ DEFINES += QT_DEPRECATED_WARNINGS QT_DISABLE_DEPRECATED_BEFORE=0x060000 QT_MESSA HEADERS += webradiodialog.h \ webradioplugin.h \ - webradiosettings.h + webradiosettings.h \ + webradiosettingswidget.h SOURCES += webradiodialog.cpp \ webradioplugin.cpp \ - webradiosettings.cpp + webradiosettings.cpp \ + webradiosettingswidget.cpp FORMS += webradiodialog.ui diff --git a/plugins/webradioplugin/webradiosettingswidget.cpp b/plugins/webradioplugin/webradiosettingswidget.cpp new file mode 100644 index 0000000..5ab799f --- /dev/null +++ b/plugins/webradioplugin/webradiosettingswidget.cpp @@ -0,0 +1,28 @@ +#include "webradiosettingswidget.h" + +#include + +#include "QStringListWidget/qstringlistwidget.h" + +WebRadioSettingsWidget::WebRadioSettingsWidget(ZeiterfassungSettings &settings, QWidget *parent) : + SettingsWidget(parent), + m_settings(settings) +{ + auto layout = new QFormLayout(this); + layout->setMargin(0); + + m_urlsWidget = new QStringListWidget(m_settings.urls(), this); + layout->addRow(tr("URLs:"), m_urlsWidget); + + setLayout(layout); +} + +bool WebRadioSettingsWidget::isValid(QString &message) const +{ + +} + +void WebRadioSettingsWidget::apply() +{ + +} diff --git a/plugins/webradioplugin/webradiosettingswidget.h b/plugins/webradioplugin/webradiosettingswidget.h new file mode 100644 index 0000000..1499985 --- /dev/null +++ b/plugins/webradioplugin/webradiosettingswidget.h @@ -0,0 +1,32 @@ +#ifndef WEBRADIOSETTINGSWIDGET_H +#define WEBRADIOSETTINGSWIDGET_H + +#include + +#include "settingswidget.h" + +#include "webradiosettings.h" + +class QStringListWidget; + +class ZeiterfassungSettings; + +class WebRadioSettingsWidget : public SettingsWidget +{ + Q_OBJECT + +public: + explicit WebRadioSettingsWidget(ZeiterfassungSettings &settings, QWidget *parent = Q_NULLPTR); + + bool isValid(QString &message) const Q_DECL_OVERRIDE; + +public Q_SLOTS: + void apply() Q_DECL_OVERRIDE; + +private: + WebRadioSettings m_settings; + + QStringListWidget *m_urlsWidget; +}; + +#endif // WEBRADIOSETTINGSWIDGET_H -- 2.50.1 From 96b5177c844c8b0a19e1025df747fe67eef61327 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 <0xFEEDC0DE64@gmail.com> Date: Thu, 15 Mar 2018 23:54:44 +0100 Subject: [PATCH 6/8] Code cleanup --- plugins/lunchmealplugin/lunchmealwidget.h | 1 + plugins/weatherplugin/weathersettingswidget.h | 1 + zeiterfassungguilib/settingswidget.h | 1 + 3 files changed, 3 insertions(+) diff --git a/plugins/lunchmealplugin/lunchmealwidget.h b/plugins/lunchmealplugin/lunchmealwidget.h index fb7e3c7..a3a9f77 100644 --- a/plugins/lunchmealplugin/lunchmealwidget.h +++ b/plugins/lunchmealplugin/lunchmealwidget.h @@ -10,6 +10,7 @@ class StripsWidget; class LunchMealWidget : public QToolButton { Q_OBJECT + public: explicit LunchMealWidget(StripsWidget &stripsWidget); diff --git a/plugins/weatherplugin/weathersettingswidget.h b/plugins/weatherplugin/weathersettingswidget.h index d962a33..e291159 100644 --- a/plugins/weatherplugin/weathersettingswidget.h +++ b/plugins/weatherplugin/weathersettingswidget.h @@ -14,6 +14,7 @@ class ZeiterfassungSettings; class WeatherSettingsWidget : public SettingsWidget { Q_OBJECT + public: explicit WeatherSettingsWidget(ZeiterfassungSettings &settings, QWidget *parent = Q_NULLPTR); diff --git a/zeiterfassungguilib/settingswidget.h b/zeiterfassungguilib/settingswidget.h index 56fee50..ed671be 100644 --- a/zeiterfassungguilib/settingswidget.h +++ b/zeiterfassungguilib/settingswidget.h @@ -9,6 +9,7 @@ class ZEITERFASSUNGGUILIBSHARED_EXPORT SettingsWidget : public QWidget { Q_OBJECT + public: explicit SettingsWidget(QWidget *parent = Q_NULLPTR); -- 2.50.1 From 74c7efbc85a11a8d6ec974923a78269a1335eeb8 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 <0xFEEDC0DE64@gmail.com> Date: Thu, 15 Mar 2018 23:57:57 +0100 Subject: [PATCH 7/8] Implemented WebRadioSettingsWidget::isValid --- plugins/webradioplugin/webradiosettingswidget.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/plugins/webradioplugin/webradiosettingswidget.cpp b/plugins/webradioplugin/webradiosettingswidget.cpp index 5ab799f..de171ee 100644 --- a/plugins/webradioplugin/webradiosettingswidget.cpp +++ b/plugins/webradioplugin/webradiosettingswidget.cpp @@ -19,7 +19,16 @@ WebRadioSettingsWidget::WebRadioSettingsWidget(ZeiterfassungSettings &settings, bool WebRadioSettingsWidget::isValid(QString &message) const { + for(const auto &url : m_urlsWidget->stringList()) + { + if(!QUrl::fromUserInput(url).isValid()) + { + message = tr("A web radio url is invalid!"); + return false; + } + } + return true; } void WebRadioSettingsWidget::apply() -- 2.50.1 From 99d0e6dba9f1e73d3e51b1b013b6b9489247f65c Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 <0xFEEDC0DE64@gmail.com> Date: Fri, 16 Mar 2018 01:24:01 +0100 Subject: [PATCH 8/8] Implemented WebRadioSettingsWidget::apply() --- plugins/webradioplugin/webradiosettingswidget.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/webradioplugin/webradiosettingswidget.cpp b/plugins/webradioplugin/webradiosettingswidget.cpp index de171ee..84ab61c 100644 --- a/plugins/webradioplugin/webradiosettingswidget.cpp +++ b/plugins/webradioplugin/webradiosettingswidget.cpp @@ -33,5 +33,6 @@ bool WebRadioSettingsWidget::isValid(QString &message) const void WebRadioSettingsWidget::apply() { - + if(m_urlsWidget->stringList() != m_settings.urls()) + m_settings.setUrls(m_urlsWidget->stringList()); } -- 2.50.1