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 @@ -78,6 +78,8 @@ private: QUrl m_url; QSize m_videoSize; + + QTimer* m_autoplaytimer; QToolButton *m_playButton; QToolButton *m_stopButton; 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,8 @@ */ #include "phononwidget.h" +#include "dolphin_generalsettings.h" +#include "dolphinmainwindow.h" #include #include @@ -32,6 +34,7 @@ #include #include #include +#include #include #include #include @@ -79,6 +82,20 @@ if (m_url != url) { stop(); // emits playingStopped() signal m_url = url; + + //TODO: autoplay starts (related to qtimer) even if the target file has changed before the timer has run out + //TODO: stop/destroy the preview once user does not highlight the item/Dolphin main window or use the window + //TODO: the autoplay feature should only apply to audio files, exclude video files (as it works in Caja/Nautilus) + + // Enables autoplay feature if it's enabled in Navigation Settings + // page. Set a single shot time delay (in msec) for media preview. + QTimer *m_autoplaytimer = new QTimer(this); + + if(GeneralSettings::autoPlayMediaFiles()) { //If the this radiobutton is checked, then + connect(m_autoplaytimer, SIGNAL(timeout()), this, SLOT(play())); + m_autoplaytimer->setSingleShot(true); // Play only once, otherwise this loops in 1 sec cycles + m_autoplaytimer->start(1000); // Delay to start the autoplay + } } } diff --git a/src/settings/dolphin_generalsettings.kcfg b/src/settings/dolphin_generalsettings.kcfg --- a/src/settings/dolphin_generalsettings.kcfg +++ b/src/settings/dolphin_generalsettings.kcfg @@ -85,6 +85,10 @@ false + + + false + true diff --git a/src/settings/navigation/navigationsettingspage.h b/src/settings/navigation/navigationsettingspage.h --- a/src/settings/navigation/navigationsettingspage.h +++ b/src/settings/navigation/navigationsettingspage.h @@ -46,6 +46,7 @@ private: QCheckBox* m_openArchivesAsFolder; QCheckBox* m_autoExpandFolders; + QCheckBox* m_autoPlayMediaFiles; }; #endif diff --git a/src/settings/navigation/navigationsettingspage.cpp b/src/settings/navigation/navigationsettingspage.cpp --- a/src/settings/navigation/navigationsettingspage.cpp +++ b/src/settings/navigation/navigationsettingspage.cpp @@ -29,7 +29,8 @@ NavigationSettingsPage::NavigationSettingsPage(QWidget* parent) : SettingsPageBase(parent), m_openArchivesAsFolder(0), - m_autoExpandFolders(0) + m_autoExpandFolders(0), + m_autoPlayMediaFiles(0) { QVBoxLayout* topLayout = new QVBoxLayout(this); QWidget* vBox = new QWidget(this); @@ -43,12 +44,16 @@ m_autoExpandFolders = new QCheckBox(i18nc("option:check", "Open folders during drag operations"), vBox); vBoxLayout->addWidget(m_autoExpandFolders); + m_autoPlayMediaFiles = new QCheckBox(i18nc("@option:check", "Play media files automatically"), vBox); + vBoxLayout->addWidget(m_autoPlayMediaFiles); + topLayout->addWidget(vBox); loadSettings(); connect(m_openArchivesAsFolder, &QCheckBox::toggled, this, &NavigationSettingsPage::changed); connect(m_autoExpandFolders, &QCheckBox::toggled, this, &NavigationSettingsPage::changed); + connect(m_autoPlayMediaFiles, &QCheckBox::toggled, this, &NavigationSettingsPage::changed); } NavigationSettingsPage::~NavigationSettingsPage() @@ -60,6 +65,7 @@ GeneralSettings* settings = GeneralSettings::self(); settings->setBrowseThroughArchives(m_openArchivesAsFolder->isChecked()); settings->setAutoExpandFolders(m_autoExpandFolders->isChecked()); + settings->setAutoPlayMediaFiles(m_autoPlayMediaFiles->isChecked()); settings->save(); } @@ -76,5 +82,6 @@ { m_openArchivesAsFolder->setChecked(GeneralSettings::browseThroughArchives()); m_autoExpandFolders->setChecked(GeneralSettings::autoExpandFolders()); + m_autoPlayMediaFiles->setChecked(GeneralSettings::autoPlayMediaFiles()); }