diff --git a/src/panels/information/informationpanel.cpp b/src/panels/information/informationpanel.cpp --- a/src/panels/information/informationpanel.cpp +++ b/src/panels/information/informationpanel.cpp @@ -176,6 +176,11 @@ previewAction->setCheckable(true); previewAction->setChecked(InformationPanelSettings::previewsShown()); + QAction* previewAutoPlayAction = popup.addAction(i18nc("@action:inmenu", "Preview autoPaly")); + previewAutoPlayAction->setIcon(QIcon::fromTheme(QStringLiteral("media-playback-start"))); + previewAutoPlayAction->setCheckable(true); + previewAutoPlayAction->setChecked(InformationPanelSettings::previewsAutoplay()); + QAction* configureAction = popup.addAction(i18nc("@action:inmenu", "Configure...")); configureAction->setIcon(QIcon::fromTheme(QStringLiteral("configure"))); @@ -209,12 +214,16 @@ dialog->show(); connect(dialog, &FileMetaDataConfigurationDialog::destroyed, m_content, &InformationPanelContent::refreshMetaData); } - if (action == dateformatAction) { + else if (action == dateformatAction) { int dateFormat = static_cast(isChecked ? Baloo::DateFormats::ShortFormat : Baloo::DateFormats::LongFormat); InformationPanelSettings::setDateFormat(dateFormat); m_content->refreshMetaData(); } + else if (action == previewAutoPlayAction) { + InformationPanelSettings::setPreviewsAutoplay(isChecked); + m_content->refreshMetaData(); + } } void InformationPanel::showItemInfo() diff --git a/src/panels/information/informationpanelcontent.cpp b/src/panels/information/informationpanelcontent.cpp --- a/src/panels/information/informationpanelcontent.cpp +++ b/src/panels/information/informationpanelcontent.cpp @@ -195,6 +195,7 @@ const bool usePhonon = mimeType.startsWith(QLatin1String("audio/")) || mimeType.startsWith(QLatin1String("video/")); if (usePhonon) { m_phononWidget->show(); + m_phononWidget->setAutoPlay(InformationPanelSettings::previewsAutoplay()); m_phononWidget->setUrl(item.targetUrl()); if (m_preview->isVisible()) { m_phononWidget->setVideoSize(m_preview->size()); diff --git a/src/panels/information/phononwidget.h b/src/panels/information/phononwidget.h --- a/src/panels/information/phononwidget.h +++ b/src/panels/information/phononwidget.h @@ -26,6 +26,7 @@ #include #include #include +#include namespace Phonon { @@ -51,6 +52,8 @@ void setVideoSize(const QSize& size); QSize videoSize() const; + void setAutoPlay(bool autoPlay); + signals: /** * Is emitted whenever the video-state @@ -87,6 +90,7 @@ Phonon::SeekSlider *m_seekSlider; Phonon::AudioOutput *m_audioOutput; EmbeddedVideoPlayer *m_videoPlayer; + bool m_autoPlay; }; #endif // PHONONWIDGET_H diff --git a/src/panels/information/phononwidget.cpp b/src/panels/information/phononwidget.cpp --- a/src/panels/information/phononwidget.cpp +++ b/src/panels/information/phononwidget.cpp @@ -19,6 +19,7 @@ */ #include "phononwidget.h" +#include "dolphin_generalsettings.h" #include #include @@ -74,6 +75,17 @@ if (m_url != url) { stop(); // emits playingStopped() signal m_url = url; + + if (m_autoPlay) { + play(); + } + } +} + +void PhononWidget::setAutoPlay(bool autoPlay) { + m_autoPlay = autoPlay; + if (m_media != nullptr && m_media->state() != Phonon::State::PlayingState && m_autoPlay) { + play(); } }