forked from qt-creator/qt-creator
ScreenRecorder: Remember the last used export format
Requires unique format names, thus the lossy WebP is now "WebP/VP8". Default export format is WebP (lossless). Change-Id: I26ccfb86417787d300afbb986c8202713ab1cbba Reviewed-by: Cristian Adam <cristian.adam@qt.io>
This commit is contained in:
@@ -51,7 +51,7 @@ static const QVector<ExportWidget::Format> &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();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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};
|
||||
|
||||
Reference in New Issue
Block a user