diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2019-07-05 21:41:21 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2019-07-11 00:24:23 +0900 |
commit | 66a5b394d762a1a24723438fca3ce3aea27e43ad (patch) | |
tree | 2fca157620f3d930846bf74f5e4203049544f02d /desktop-widgets/preferences | |
parent | 9eb860d45d65a822e7336afce59bb06d68a90c72 (diff) | |
download | subsurface-66a5b394d762a1a24723438fca3ce3aea27e43ad.tar.gz |
Preferences: warn if ffmpeg can't be loaded
In the preferences widget warn the user when they enter a non-executable
path to ffmpeg. Thus they don't have to start thumbnailing just to
find out that the path is wrong.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'desktop-widgets/preferences')
-rw-r--r-- | desktop-widgets/preferences/preferences_defaults.cpp | 28 | ||||
-rw-r--r-- | desktop-widgets/preferences/preferences_defaults.h | 2 |
2 files changed, 29 insertions, 1 deletions
diff --git a/desktop-widgets/preferences/preferences_defaults.cpp b/desktop-widgets/preferences/preferences_defaults.cpp index 7ea704b96..c11927af8 100644 --- a/desktop-widgets/preferences/preferences_defaults.cpp +++ b/desktop-widgets/preferences/preferences_defaults.cpp @@ -8,6 +8,8 @@ #include "core/settings/qPrefDiveComputer.h" #include <QFileDialog> +#include <QProcess> +#include <QMessageBox> PreferencesDefaults::PreferencesDefaults(): AbstractPreferencesWidget(tr("General"), QIcon(":preferences-other-icon"), 0 ), ui(new Ui::PreferencesDefaults()) { @@ -45,13 +47,37 @@ void PreferencesDefaults::on_localDefaultFile_toggled(bool toggle) ui->chooseFile->setEnabled(toggle); } +void PreferencesDefaults::checkFfmpegExecutable() +{ + QString s = ui->ffmpegExecutable->text().trimmed(); + + // If the user didn't provide a string they probably didn't intend to run ffmeg, + // so let's not give an error message. + if (s.isEmpty()) + return; + + // Try to execute ffmpeg. But wait at most 2 sec for startup and execution + // so that the UI doesn't hang unnecessarily. + QProcess ffmpeg; + ffmpeg.start(s); + if (!ffmpeg.waitForStarted(2000) || !ffmpeg.waitForFinished(3000)) + QMessageBox::warning(this, tr("Warning"), tr("Couldn't execute ffmpeg at given location. Thumbnailing will not work.")); +} + void PreferencesDefaults::on_ffmpegFile_clicked() { QFileInfo fi(system_default_filename()); QString ffmpegFileName = QFileDialog::getOpenFileName(this, tr("Select ffmpeg executable")); - if (!ffmpegFileName.isEmpty()) + if (!ffmpegFileName.isEmpty()) { ui->ffmpegExecutable->setText(ffmpegFileName); + checkFfmpegExecutable(); + } +} + +void PreferencesDefaults::on_ffmpegExecutable_editingFinished() +{ + checkFfmpegExecutable(); } void PreferencesDefaults::on_extractVideoThumbnails_toggled(bool toggled) diff --git a/desktop-widgets/preferences/preferences_defaults.h b/desktop-widgets/preferences/preferences_defaults.h index 0fa7bdc1b..48e633ceb 100644 --- a/desktop-widgets/preferences/preferences_defaults.h +++ b/desktop-widgets/preferences/preferences_defaults.h @@ -21,12 +21,14 @@ public slots: void on_btnUseDefaultFile_toggled(bool toggled); void on_localDefaultFile_toggled(bool toggled); void on_ffmpegFile_clicked(); + void on_ffmpegExecutable_editingFinished(); void on_extractVideoThumbnails_toggled(bool toggled); void on_resetSettings_clicked(); void on_resetRememberedDCs_clicked(); private: Ui::PreferencesDefaults *ui; + void checkFfmpegExecutable(); }; |