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::AnimatedImage,
|
||||||
ExportWidget::Format::Lossy,
|
ExportWidget::Format::Lossy,
|
||||||
"WebP",
|
"WebP/VP8",
|
||||||
".webp",
|
".webp",
|
||||||
{
|
{
|
||||||
"-pix_fmt", "yuv420p",
|
"-pix_fmt", "yuv420p",
|
||||||
@@ -148,11 +148,17 @@ ExportWidget::ExportWidget(QWidget *parent)
|
|||||||
|
|
||||||
connect(exportButton, &QToolButton::clicked, this, [this] {
|
connect(exportButton, &QToolButton::clicked, this, [this] {
|
||||||
FilePathAspect &lastDir = Internal::settings().exportLastDirectory;
|
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(),
|
FilePath file = FileUtils::getSaveFilePath(nullptr, Tr::tr("Save as"), lastDir(),
|
||||||
fileDialogFilters(), &selectedFilter);
|
fileDialogFilters(), &selectedFilter);
|
||||||
if (!file.isEmpty()) {
|
if (!file.isEmpty()) {
|
||||||
m_currentFormat = findOr(formats(), formats().first(),
|
m_currentFormat = findOr(formats(), defaultFormat,
|
||||||
[&selectedFilter] (const Format &fp) {
|
[&selectedFilter] (const Format &fp) {
|
||||||
return fp.fileDialogFilter() == selectedFilter;
|
return fp.fileDialogFilter() == selectedFilter;
|
||||||
});
|
});
|
||||||
@@ -161,6 +167,8 @@ ExportWidget::ExportWidget(QWidget *parent)
|
|||||||
m_outputClipInfo.file = file;
|
m_outputClipInfo.file = file;
|
||||||
lastDir.setValue(file.parentDir());
|
lastDir.setValue(file.parentDir());
|
||||||
lastDir.writeToSettingsImmediatly();
|
lastDir.writeToSettingsImmediatly();
|
||||||
|
lastFormat.setValue(m_currentFormat.displayName);
|
||||||
|
lastFormat.writeToSettingsImmediatly();
|
||||||
startExport();
|
startExport();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -118,6 +118,9 @@ ScreenRecorderSettings::ScreenRecorderSettings()
|
|||||||
exportLastDirectory.setExpectedKind(PathChooser::ExistingDirectory);
|
exportLastDirectory.setExpectedKind(PathChooser::ExistingDirectory);
|
||||||
exportLastDirectory.setDefaultValue(FileUtils::homePath().toString());
|
exportLastDirectory.setDefaultValue(FileUtils::homePath().toString());
|
||||||
|
|
||||||
|
exportLastFormat.setSettingsKey("ExportLastFormat");
|
||||||
|
exportLastFormat.setDefaultValue("WebP");
|
||||||
|
|
||||||
lastSaveImageDirectory.setSettingsKey("LastSaveImageDir");
|
lastSaveImageDirectory.setSettingsKey("LastSaveImageDir");
|
||||||
lastSaveImageDirectory.setExpectedKind(PathChooser::ExistingDirectory);
|
lastSaveImageDirectory.setExpectedKind(PathChooser::ExistingDirectory);
|
||||||
lastSaveImageDirectory.setDefaultValue(FileUtils::homePath().toString());
|
lastSaveImageDirectory.setDefaultValue(FileUtils::homePath().toString());
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ public:
|
|||||||
// Used in other places
|
// Used in other places
|
||||||
Utils::FilePathAspect lastOpenDirectory{this};
|
Utils::FilePathAspect lastOpenDirectory{this};
|
||||||
Utils::FilePathAspect exportLastDirectory{this};
|
Utils::FilePathAspect exportLastDirectory{this};
|
||||||
|
Utils::StringAspect exportLastFormat{this};
|
||||||
Utils::FilePathAspect lastSaveImageDirectory{this};
|
Utils::FilePathAspect lastSaveImageDirectory{this};
|
||||||
Utils::IntegerAspect recordFrameRate{this};
|
Utils::IntegerAspect recordFrameRate{this};
|
||||||
Utils::IntegerAspect recordScreenId{this};
|
Utils::IntegerAspect recordScreenId{this};
|
||||||
|
|||||||
Reference in New Issue
Block a user