diff --git a/plugins/webradioplugin/translations/webradioplugin_de.ts b/plugins/webradioplugin/translations/webradioplugin_de.ts
index b0a61dd..c21f851 100644
--- a/plugins/webradioplugin/translations/webradioplugin_de.ts
+++ b/plugins/webradioplugin/translations/webradioplugin_de.ts
@@ -5,13 +5,89 @@
WebRadioDialog
- Dialog
-
+ Radio
+ Radio
-
- PushButton
-
+
+ Play
+ Abspielen
+
+
+
+ Pause
+ Pause
+
+
+
+ Stop
+ Stop
+
+
+
+ Stopped
+ Gestoppt
+
+
+
+ Playing
+ Wird abgespielt
+
+
+
+ Paused
+ Pausiert
+
+
+
+
+ Unknown
+ Unbekannt
+
+
+
+ Unknown media
+ Unbekanntes Medium
+
+
+
+ No media
+ Kein Medium
+
+
+
+ Loading media...
+ Lade Medium...
+
+
+
+ Loaded media
+ Medium geladen
+
+
+
+ Stalled media
+ Medium angehalten
+
+
+
+ Buffering media
+ Puffere Medium
+
+
+
+ Buffered media
+ Medium gepuffert
+
+
+
+ End of media
+ Ende des Mediums
+
+
+
+ Invalid media
+ Ungültiges Medium
@@ -19,7 +95,7 @@
Play webradio
-
+ Webradio spielen
diff --git a/plugins/webradioplugin/translations/webradioplugin_en.ts b/plugins/webradioplugin/translations/webradioplugin_en.ts
index 6ed3a57..e84a249 100644
--- a/plugins/webradioplugin/translations/webradioplugin_en.ts
+++ b/plugins/webradioplugin/translations/webradioplugin_en.ts
@@ -5,12 +5,88 @@
WebRadioDialog
- Dialog
+ Radio
-
- PushButton
+
+ Play
+
+
+
+
+ Pause
+
+
+
+
+ Stop
+
+
+
+
+ Stopped
+
+
+
+
+ Playing
+
+
+
+
+ Paused
+
+
+
+
+
+ Unknown
+
+
+
+
+ Unknown media
+
+
+
+
+ No media
+
+
+
+
+ Loading media...
+
+
+
+
+ Loaded media
+
+
+
+
+ Stalled media
+
+
+
+
+ Buffering media
+
+
+
+
+ Buffered media
+
+
+
+
+ End of media
+
+
+
+
+ Invalid media
diff --git a/plugins/webradioplugin/webradiodialog.cpp b/plugins/webradioplugin/webradiodialog.cpp
index 81dcab3..b8ddc01 100644
--- a/plugins/webradioplugin/webradiodialog.cpp
+++ b/plugins/webradioplugin/webradiodialog.cpp
@@ -13,7 +13,9 @@ WebRadioDialog::WebRadioDialog(MainWindow &mainWindow) :
ui->setupUi(this);
connect(m_player, &QMediaPlayer::stateChanged, this, &WebRadioDialog::stateChanged);
+ connect(m_player, &QMediaPlayer::stateChanged, this, &WebRadioDialog::updateWidgets);
connect(m_player, &QMediaPlayer::mediaStatusChanged, this, &WebRadioDialog::mediaStatusChanged);
+ 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 {
@@ -33,11 +35,13 @@ WebRadioDialog::WebRadioDialog(MainWindow &mainWindow) :
ui->comboBox->addItem(url, url);
}
- auto lastUrl = m_mainWindow.settings().value(QStringLiteral("WebRadioPlugin/lastUrl")).toString();
- qDebug() << lastUrl;
- auto index = ui->comboBox->findData(lastUrl);
- qDebug() << index;
- ui->comboBox->setCurrentIndex(index);
+ ui->comboBox->setCurrentIndex(ui->comboBox->findData(m_mainWindow.settings().value(QStringLiteral("WebRadioPlugin/lastUrl")).toString()));
+
+ connect(ui->comboBox, static_cast(&QComboBox::currentIndexChanged),
+ this, &WebRadioDialog::currentIndexChanged);
+
+ connect(ui->comboBox, static_cast(&QComboBox::currentIndexChanged),
+ this, &WebRadioDialog::updateWidgets);
connect(ui->pushButtonPlay, &QAbstractButton::pressed, this, &WebRadioDialog::play);
connect(ui->pushButtonPause, &QAbstractButton::pressed, m_player, &QMediaPlayer::pause);
@@ -46,6 +50,11 @@ WebRadioDialog::WebRadioDialog(MainWindow &mainWindow) :
m_player->setVolume(m_mainWindow.settings().value(QStringLiteral("WebRadioPlugin/volume"), 100).toInt());
ui->horizontalSlider->setValue(m_player->volume());
connect(ui->horizontalSlider, &QAbstractSlider::valueChanged, this, &WebRadioDialog::volumeChanged);
+
+ stateChanged(m_player->state());
+ mediaStatusChanged(m_player->mediaStatus());
+ currentIndexChanged(ui->comboBox->currentIndex());
+ updateWidgets();
}
WebRadioDialog::~WebRadioDialog()
@@ -55,31 +64,69 @@ WebRadioDialog::~WebRadioDialog()
void WebRadioDialog::stateChanged(QMediaPlayer::State newState)
{
- qDebug() << newState;
+ switch(newState)
+ {
+ case QMediaPlayer::StoppedState: ui->labelState->setText(tr("Stopped")); break;
+ case QMediaPlayer::PlayingState: ui->labelState->setText(tr("Playing")); break;
+ case QMediaPlayer::PausedState: ui->labelState->setText(tr("Paused")); break;
+ default:
+ qWarning() << "unknown state" << newState;
+ ui->labelState->setText(tr("Unknown"));
+ }
}
void WebRadioDialog::mediaStatusChanged(QMediaPlayer::MediaStatus status)
{
- qDebug() << status;
+ switch(status)
+ {
+ case QMediaPlayer::UnknownMediaStatus: ui->labelMediaStatus->setText(tr("Unknown media")); break;
+ case QMediaPlayer::NoMedia: ui->labelMediaStatus->setText(tr("No media")); break;
+ case QMediaPlayer::LoadingMedia: ui->labelMediaStatus->setText(tr("Loading media...")); break;
+ case QMediaPlayer::LoadedMedia: ui->labelMediaStatus->setText(tr("Loaded media")); break;
+ case QMediaPlayer::StalledMedia: ui->labelMediaStatus->setText(tr("Stalled media")); break;
+ case QMediaPlayer::BufferingMedia: ui->labelMediaStatus->setText(tr("Buffering media")); break;
+ case QMediaPlayer::BufferedMedia: ui->labelMediaStatus->setText(tr("Buffered media")); break;
+ case QMediaPlayer::EndOfMedia: ui->labelMediaStatus->setText(tr("End of media")); break;
+ case QMediaPlayer::InvalidMedia: ui->labelMediaStatus->setText(tr("Invalid media")); break;
+ default:
+ qWarning() << "unknown mediaStatus" << status;
+ ui->labelMediaStatus->setText(tr("Unknown"));
+ }
}
void WebRadioDialog::error(QMediaPlayer::Error error)
{
- qDebug() << error;
+ qWarning() << error;
+}
+
+void WebRadioDialog::currentIndexChanged(int index)
+{
+ if(index == -1)
+ m_player->setMedia(QMediaContent());
+ else
+ m_player->setMedia(QMediaContent(QUrl(ui->comboBox->currentData().toString())));
}
void WebRadioDialog::play()
{
- qDebug() << "called";
if(ui->comboBox->currentIndex() == -1)
return;
m_mainWindow.settings().setValue(QStringLiteral("WebRadioPlugin/lastUrl"), ui->comboBox->currentData().toString());
- m_player->setMedia(QMediaContent(QUrl(ui->comboBox->currentData().toString())));
m_player->play();
}
+void WebRadioDialog::updateWidgets()
+{
+ ui->comboBox->setEnabled(m_player->state() != QMediaPlayer::PlayingState);
+ ui->pushButtonPlay->setEnabled(ui->comboBox->currentIndex() > -1 &&
+ (m_player->state() == QMediaPlayer::StoppedState || m_player->state() == QMediaPlayer::PausedState) &&
+ (m_player->mediaStatus() == QMediaPlayer::LoadedMedia || m_player->mediaStatus() == QMediaPlayer::BufferedMedia));
+ ui->pushButtonPause->setEnabled(m_player->state() == QMediaPlayer::PlayingState || m_player->state() == QMediaPlayer::PausedState);
+ ui->pushButtonStop->setEnabled(m_player->state() == QMediaPlayer::PlayingState || m_player->state() == QMediaPlayer::PausedState);
+}
+
void WebRadioDialog::volumeChanged(int volume)
{
m_mainWindow.settings().setValue(QStringLiteral("WebRadioPlugin/volume"), volume);
diff --git a/plugins/webradioplugin/webradiodialog.h b/plugins/webradioplugin/webradiodialog.h
index 6a2d1df..ed40035 100644
--- a/plugins/webradioplugin/webradiodialog.h
+++ b/plugins/webradioplugin/webradiodialog.h
@@ -20,11 +20,13 @@ private Q_SLOTS:
void stateChanged(QMediaPlayer::State newState);
void mediaStatusChanged(QMediaPlayer::MediaStatus status);
void error(QMediaPlayer::Error error);
-
+ void currentIndexChanged(int index);
void volumeChanged(int volume);
void play();
private:
+ void updateWidgets();
+
Ui::WebRadioDialog *ui;
MainWindow &m_mainWindow;
diff --git a/plugins/webradioplugin/webradiodialog.ui b/plugins/webradioplugin/webradiodialog.ui
index 07f2387..5758e10 100644
--- a/plugins/webradioplugin/webradiodialog.ui
+++ b/plugins/webradioplugin/webradiodialog.ui
@@ -28,7 +28,7 @@
- play()
+ Play
@@ -41,7 +41,7 @@
- pause()
+ Pause
@@ -54,7 +54,7 @@
- stop()
+ Stop
@@ -68,11 +68,22 @@
-
-
-
- TextLabel
-
-
+
+
-
+
+
+ state
+
+
+
+ -
+
+
+ mediaStatus
+
+
+
+
-