diff --git a/src/plugins/screenrecorder/export.cpp b/src/plugins/screenrecorder/export.cpp index 24e8a935532..76696250943 100644 --- a/src/plugins/screenrecorder/export.cpp +++ b/src/plugins/screenrecorder/export.cpp @@ -51,7 +51,7 @@ static const QVector &formats() { ExportWidget::Format::AnimatedImage, ExportWidget::Format::Lossy, - "WebP", + "WebP/VP8", ".webp", { "-pix_fmt", "yuv420p", @@ -148,11 +148,17 @@ ExportWidget::ExportWidget(QWidget *parent) connect(exportButton, &QToolButton::clicked, this, [this] { FilePathAspect &lastDir = Internal::settings().exportLastDirectory; - QString selectedFilter; + StringAspect &lastFormat = Internal::settings().exportLastFormat; + const Format &defaultFormat = formats().at(1); + QTC_CHECK(defaultFormat.displayName == lastFormat.defaultValue()); + QString selectedFilter = findOr(formats(), defaultFormat, + [&lastFormat] (const Format &f) { + return f.displayName == lastFormat(); + }).fileDialogFilter(); FilePath file = FileUtils::getSaveFilePath(nullptr, Tr::tr("Save as"), lastDir(), fileDialogFilters(), &selectedFilter); if (!file.isEmpty()) { - m_currentFormat = findOr(formats(), formats().first(), + m_currentFormat = findOr(formats(), defaultFormat, [&selectedFilter] (const Format &fp) { return fp.fileDialogFilter() == selectedFilter; }); @@ -161,6 +167,8 @@ ExportWidget::ExportWidget(QWidget *parent) m_outputClipInfo.file = file; lastDir.setValue(file.parentDir()); lastDir.writeToSettingsImmediatly(); + lastFormat.setValue(m_currentFormat.displayName); + lastFormat.writeToSettingsImmediatly(); startExport(); } }); diff --git a/src/plugins/screenrecorder/screenrecordersettings.cpp b/src/plugins/screenrecorder/screenrecordersettings.cpp index f8cc6018f31..2dec4000873 100644 --- a/src/plugins/screenrecorder/screenrecordersettings.cpp +++ b/src/plugins/screenrecorder/screenrecordersettings.cpp @@ -118,6 +118,9 @@ ScreenRecorderSettings::ScreenRecorderSettings() exportLastDirectory.setExpectedKind(PathChooser::ExistingDirectory); exportLastDirectory.setDefaultValue(FileUtils::homePath().toString()); + exportLastFormat.setSettingsKey("ExportLastFormat"); + exportLastFormat.setDefaultValue("WebP"); + lastSaveImageDirectory.setSettingsKey("LastSaveImageDir"); lastSaveImageDirectory.setExpectedKind(PathChooser::ExistingDirectory); lastSaveImageDirectory.setDefaultValue(FileUtils::homePath().toString()); diff --git a/src/plugins/screenrecorder/screenrecordersettings.h b/src/plugins/screenrecorder/screenrecordersettings.h index 900847ac3f1..18611ce5830 100644 --- a/src/plugins/screenrecorder/screenrecordersettings.h +++ b/src/plugins/screenrecorder/screenrecordersettings.h @@ -38,6 +38,7 @@ public: // Used in other places Utils::FilePathAspect lastOpenDirectory{this}; Utils::FilePathAspect exportLastDirectory{this}; + Utils::StringAspect exportLastFormat{this}; Utils::FilePathAspect lastSaveImageDirectory{this}; Utils::IntegerAspect recordFrameRate{this}; Utils::IntegerAspect recordScreenId{this};