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
|
class LunchMealWidget : public QToolButton
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit LunchMealWidget(StripsWidget &stripsWidget);
|
explicit LunchMealWidget(StripsWidget &stripsWidget);
|
||||||
|
|
||||||
|
@@ -14,6 +14,7 @@ class ZeiterfassungSettings;
|
|||||||
class WeatherSettingsWidget : public SettingsWidget
|
class WeatherSettingsWidget : public SettingsWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit WeatherSettingsWidget(ZeiterfassungSettings &settings, QWidget *parent = Q_NULLPTR);
|
explicit WeatherSettingsWidget(ZeiterfassungSettings &settings, QWidget *parent = Q_NULLPTR);
|
||||||
|
|
||||||
|
@@ -7,7 +7,8 @@
|
|||||||
WebRadioDialog::WebRadioDialog(MainWindow &mainWindow) :
|
WebRadioDialog::WebRadioDialog(MainWindow &mainWindow) :
|
||||||
ZeiterfassungDialog(&mainWindow),
|
ZeiterfassungDialog(&mainWindow),
|
||||||
ui(new Ui::WebRadioDialog),
|
ui(new Ui::WebRadioDialog),
|
||||||
m_mainWindow(mainWindow)
|
m_mainWindow(mainWindow),
|
||||||
|
m_settings(m_mainWindow.settings())
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
|
||||||
@@ -18,24 +19,10 @@ WebRadioDialog::WebRadioDialog(MainWindow &mainWindow) :
|
|||||||
connect(m_player, &QMediaPlayer::mediaStatusChanged, this, &WebRadioDialog::updateWidgets);
|
connect(m_player, &QMediaPlayer::mediaStatusChanged, this, &WebRadioDialog::updateWidgets);
|
||||||
connect(m_player, static_cast<void(QMediaPlayer::*)(QMediaPlayer::Error)>(&QMediaPlayer::error), this, &WebRadioDialog::error);
|
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 {
|
for(const auto &url : m_settings.urls())
|
||||||
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())
|
|
||||||
{
|
|
||||||
ui->comboBox->addItem(url, url);
|
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),
|
connect(ui->comboBox, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
|
||||||
this, &WebRadioDialog::currentIndexChanged);
|
this, &WebRadioDialog::currentIndexChanged);
|
||||||
@@ -47,7 +34,7 @@ WebRadioDialog::WebRadioDialog(MainWindow &mainWindow) :
|
|||||||
connect(ui->pushButtonPause, &QAbstractButton::pressed, m_player, &QMediaPlayer::pause);
|
connect(ui->pushButtonPause, &QAbstractButton::pressed, m_player, &QMediaPlayer::pause);
|
||||||
connect(ui->pushButtonStop, &QAbstractButton::pressed, m_player, &QMediaPlayer::stop);
|
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());
|
ui->horizontalSlider->setValue(m_player->volume());
|
||||||
connect(ui->horizontalSlider, &QAbstractSlider::valueChanged, this, &WebRadioDialog::volumeChanged);
|
connect(ui->horizontalSlider, &QAbstractSlider::valueChanged, this, &WebRadioDialog::volumeChanged);
|
||||||
|
|
||||||
@@ -119,7 +106,7 @@ void WebRadioDialog::play()
|
|||||||
if(ui->comboBox->currentIndex() == -1)
|
if(ui->comboBox->currentIndex() == -1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m_mainWindow.settings().setValue(QStringLiteral("WebRadioPlugin/lastUrl"), ui->comboBox->currentData().toString());
|
m_settings.setLastUrl(ui->comboBox->currentData().toString());
|
||||||
|
|
||||||
m_player->play();
|
m_player->play();
|
||||||
}
|
}
|
||||||
@@ -136,6 +123,6 @@ void WebRadioDialog::updateWidgets()
|
|||||||
|
|
||||||
void WebRadioDialog::volumeChanged(int volume)
|
void WebRadioDialog::volumeChanged(int volume)
|
||||||
{
|
{
|
||||||
m_mainWindow.settings().setValue(QStringLiteral("WebRadioPlugin/volume"), volume);
|
m_settings.setVolume(volume);
|
||||||
m_player->setVolume(volume);
|
m_player->setVolume(volume);
|
||||||
}
|
}
|
||||||
|
@@ -4,6 +4,8 @@
|
|||||||
|
|
||||||
#include "zeiterfassungdialog.h"
|
#include "zeiterfassungdialog.h"
|
||||||
|
|
||||||
|
#include "webradiosettings.h"
|
||||||
|
|
||||||
class MainWindow;
|
class MainWindow;
|
||||||
|
|
||||||
namespace Ui { class WebRadioDialog; }
|
namespace Ui { class WebRadioDialog; }
|
||||||
@@ -30,5 +32,7 @@ private:
|
|||||||
Ui::WebRadioDialog *ui;
|
Ui::WebRadioDialog *ui;
|
||||||
|
|
||||||
MainWindow &m_mainWindow;
|
MainWindow &m_mainWindow;
|
||||||
|
WebRadioSettings m_settings;
|
||||||
|
|
||||||
QMediaPlayer *m_player;
|
QMediaPlayer *m_player;
|
||||||
};
|
};
|
||||||
|
@@ -10,6 +10,7 @@
|
|||||||
#include "mainwindow.h"
|
#include "mainwindow.h"
|
||||||
|
|
||||||
#include "webradiodialog.h"
|
#include "webradiodialog.h"
|
||||||
|
#include "webradiosettingswidget.h"
|
||||||
|
|
||||||
WebRadioPlugin::WebRadioPlugin(QObject *parent) :
|
WebRadioPlugin::WebRadioPlugin(QObject *parent) :
|
||||||
ZeiterfassungPlugin(parent)
|
ZeiterfassungPlugin(parent)
|
||||||
@@ -37,3 +38,8 @@ void WebRadioPlugin::attachTo(MainWindow &mainWindow)
|
|||||||
mainWindow.menuTools()->addAction(QIcon(QStringLiteral(":/zeiterfassung/plugins/webradioplugin/images/web-radio.png")),
|
mainWindow.menuTools()->addAction(QIcon(QStringLiteral(":/zeiterfassung/plugins/webradioplugin/images/web-radio.png")),
|
||||||
tr("Play webradio"), dialog, &QWidget::show);
|
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
|
// ZeiterfassungPlugin interface
|
||||||
void attachTo(MainWindow &mainWindow) Q_DECL_OVERRIDE;
|
void attachTo(MainWindow &mainWindow) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
SettingsWidget *settingsWidget(ZeiterfassungSettings &settings, QWidget *parent = Q_NULLPTR) const Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QTranslator m_translator;
|
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
|
DEFINES += QT_DEPRECATED_WARNINGS QT_DISABLE_DEPRECATED_BEFORE=0x060000 QT_MESSAGELOGCONTEXT
|
||||||
|
|
||||||
HEADERS += webradiodialog.h \
|
HEADERS += webradiodialog.h \
|
||||||
webradioplugin.h
|
webradioplugin.h \
|
||||||
|
webradiosettings.h \
|
||||||
|
webradiosettingswidget.h
|
||||||
|
|
||||||
SOURCES += webradiodialog.cpp \
|
SOURCES += webradiodialog.cpp \
|
||||||
webradioplugin.cpp
|
webradioplugin.cpp \
|
||||||
|
webradiosettings.cpp \
|
||||||
|
webradiosettingswidget.cpp
|
||||||
|
|
||||||
FORMS += webradiodialog.ui
|
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
|
class ZEITERFASSUNGGUILIBSHARED_EXPORT SettingsWidget : public QWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit SettingsWidget(QWidget *parent = Q_NULLPTR);
|
explicit SettingsWidget(QWidget *parent = Q_NULLPTR);
|
||||||
|
|
||||||
|
@@ -49,3 +49,5 @@ TRANSLATIONS += translations/zeiterfassungguilib_en.ts \
|
|||||||
translations/zeiterfassungguilib_de.ts
|
translations/zeiterfassungguilib_de.ts
|
||||||
|
|
||||||
include($${PROJECT_ROOT}/lrelease.pri)
|
include($${PROJECT_ROOT}/lrelease.pri)
|
||||||
|
|
||||||
|
include(QStringListWidget/QStringListWidget.pri)
|
||||||
|
Reference in New Issue
Block a user