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 + + + +