Webradio plugin settings #75
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
[submodule "zeiterfassungguilib/QStringListWidget"]
|
||||
path = zeiterfassungguilib/QStringListWidget
|
||||
url = https://github.com/0xFEEDC0DE64/QStringListWidget.git
|
@@ -10,6 +10,7 @@ class StripsWidget;
|
||||
class LunchMealWidget : public QToolButton
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit LunchMealWidget(StripsWidget &stripsWidget);
|
||||
|
||||
|
@@ -14,6 +14,7 @@ class ZeiterfassungSettings;
|
||||
class WeatherSettingsWidget : public SettingsWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit WeatherSettingsWidget(ZeiterfassungSettings &settings, QWidget *parent = Q_NULLPTR);
|
||||
|
||||
|
@@ -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,24 +19,10 @@ WebRadioDialog::WebRadioDialog(MainWindow &mainWindow) :
|
||||
connect(m_player, &QMediaPlayer::mediaStatusChanged, this, &WebRadioDialog::updateWidgets);
|
||||
connect(m_player, static_cast<void(QMediaPlayer::*)(QMediaPlayer::Error)>(&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()));
|
||||
ui->comboBox->setCurrentIndex(ui->comboBox->findData(m_settings.lastUrl()));
|
||||
|
||||
connect(ui->comboBox, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
|
||||
this, &WebRadioDialog::currentIndexChanged);
|
||||
@@ -47,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);
|
||||
|
||||
@@ -119,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();
|
||||
}
|
||||
@@ -136,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);
|
||||
}
|
||||
|
@@ -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;
|
||||
};
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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;
|
||||
};
|
||||
|
@@ -17,10 +17,14 @@ 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 \
|
||||
webradiosettingswidget.h
|
||||
|
||||
SOURCES += webradiodialog.cpp \
|
||||
webradioplugin.cpp
|
||||
webradioplugin.cpp \
|
||||
webradiosettings.cpp \
|
||||
webradiosettingswidget.cpp
|
||||
|
||||
FORMS += webradiodialog.ui
|
||||
|
||||
|
50
plugins/webradioplugin/webradiosettings.cpp
Normal file
50
plugins/webradioplugin/webradiosettings.cpp
Normal file
@@ -0,0 +1,50 @@
|
||||
#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);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
26
plugins/webradioplugin/webradiosettings.h
Normal file
26
plugins/webradioplugin/webradiosettings.h
Normal file
@@ -0,0 +1,26 @@
|
||||
#ifndef WEBRADIOSETTINGS_H
|
||||
#define WEBRADIOSETTINGS_H
|
||||
|
||||
#include <QUrl>
|
||||
|
||||
class ZeiterfassungSettings;
|
||||
|
||||
class WebRadioSettings
|
||||
{
|
||||
public:
|
||||
WebRadioSettings(ZeiterfassungSettings &settings);
|
||||
|
||||
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;
|
||||
};
|
||||
|
||||
#endif // WEBRADIOSETTINGS_H
|
38
plugins/webradioplugin/webradiosettingswidget.cpp
Normal file
38
plugins/webradioplugin/webradiosettingswidget.cpp
Normal file
@@ -0,0 +1,38 @@
|
||||
#include "webradiosettingswidget.h"
|
||||
|
||||
#include <QFormLayout>
|
||||
|
||||
#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
|
||||
{
|
||||
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()
|
||||
{
|
||||
if(m_urlsWidget->stringList() != m_settings.urls())
|
||||
m_settings.setUrls(m_urlsWidget->stringList());
|
||||
}
|
32
plugins/webradioplugin/webradiosettingswidget.h
Normal file
32
plugins/webradioplugin/webradiosettingswidget.h
Normal file
@@ -0,0 +1,32 @@
|
||||
#ifndef WEBRADIOSETTINGSWIDGET_H
|
||||
#define WEBRADIOSETTINGSWIDGET_H
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
#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
|
1
zeiterfassungguilib/QStringListWidget
Submodule
1
zeiterfassungguilib/QStringListWidget
Submodule
Submodule zeiterfassungguilib/QStringListWidget added at 0090c29663
@@ -9,6 +9,7 @@
|
||||
class ZEITERFASSUNGGUILIBSHARED_EXPORT SettingsWidget : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit SettingsWidget(QWidget *parent = Q_NULLPTR);
|
||||
|
||||
|
@@ -49,3 +49,5 @@ TRANSLATIONS += translations/zeiterfassungguilib_en.ts \
|
||||
translations/zeiterfassungguilib_de.ts
|
||||
|
||||
include($${PROJECT_ROOT}/lrelease.pri)
|
||||
|
||||
include(QStringListWidget/QStringListWidget.pri)
|
||||
|
Reference in New Issue
Block a user