summaryrefslogtreecommitdiffstats
path: root/desktop-widgets/preferences
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2019-07-05 21:41:21 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2019-07-11 00:24:23 +0900
commit66a5b394d762a1a24723438fca3ce3aea27e43ad (patch)
tree2fca157620f3d930846bf74f5e4203049544f02d /desktop-widgets/preferences
parent9eb860d45d65a822e7336afce59bb06d68a90c72 (diff)
downloadsubsurface-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.cpp28
-rw-r--r--desktop-widgets/preferences/preferences_defaults.h2
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();
};