From 8fdacc3ef75b7a8b8890e20bf85a6b14a28e4224 Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Sat, 27 Nov 2021 16:48:55 +0100 Subject: [PATCH] Suggest file name when saving settings --- src/advanced-scene-switcher.cpp | 30 +---------------- src/general.cpp | 43 ++++++++++++++++++++++++- src/headers/advanced-scene-switcher.hpp | 5 +++ 3 files changed, 48 insertions(+), 30 deletions(-) diff --git a/src/advanced-scene-switcher.cpp b/src/advanced-scene-switcher.cpp index cc9d84db..18ce42c6 100644 --- a/src/advanced-scene-switcher.cpp +++ b/src/advanced-scene-switcher.cpp @@ -88,34 +88,6 @@ void AdvSceneSwitcher::loadUI() /****************************************************************************** * Saving and loading ******************************************************************************/ -void AskBackup(obs_data_t *obj) -{ - bool backupSettings = DisplayMessage( - obs_module_text("AdvSceneSwitcher.askBackup"), true); - - if (!backupSettings) { - return; - } - - QString directory = QFileDialog::getSaveFileName( - nullptr, - obs_module_text( - "AdvSceneSwitcher.generalTab.saveOrLoadsettings.importWindowTitle"), - QDir::currentPath(), - obs_module_text( - "AdvSceneSwitcher.generalTab.saveOrLoadsettings.textType")); - if (directory.isEmpty()) { - return; - } - - QFile file(directory); - if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { - return; - } - - obs_data_save_json(obj, file.fileName().toUtf8().constData()); -} - static void SaveSceneSwitcher(obs_data_t *save_data, bool saving, void *) { if (saving) { @@ -133,7 +105,7 @@ static void SaveSceneSwitcher(obs_data_t *save_data, bool saving, void *) obj = obs_data_create(); } if (switcher->versionChanged(obj, g_GIT_SHA1)) { - AskBackup(obj); + AskForBackup(obj); } switcher->loadSettings(obj); obs_data_release(obj); diff --git a/src/general.cpp b/src/general.cpp index df4a1277..7184ff3a 100644 --- a/src/general.cpp +++ b/src/general.cpp @@ -4,6 +4,7 @@ #include #include +#include #if __linux__ #include #endif @@ -231,13 +232,53 @@ void AdvSceneSwitcher::on_uiHintsDisable_stateChanged(int state) switcher->disableHints = state; } +QString getDefaultSaveLocation() +{ + QString desktopPath = QStandardPaths::writableLocation( + QStandardPaths::DesktopLocation); + auto scName = obs_frontend_get_current_scene_collection(); + QString sceneCollectionName(scName); + bfree(scName); + auto timestamp = QDateTime::currentDateTime(); + return desktopPath + "/adv-ss-" + sceneCollectionName + "-" + + timestamp.toString("yyyy.MM.dd.hh.mm.ss"); +} + +void AskForBackup(obs_data_t *obj) +{ + bool backupSettings = DisplayMessage( + obs_module_text("AdvSceneSwitcher.askBackup"), true); + + if (!backupSettings) { + return; + } + + QString path = QFileDialog::getSaveFileName( + nullptr, + obs_module_text( + "AdvSceneSwitcher.generalTab.saveOrLoadsettings.importWindowTitle"), + getDefaultSaveLocation(), + obs_module_text( + "AdvSceneSwitcher.generalTab.saveOrLoadsettings.textType")); + if (path.isEmpty()) { + return; + } + + QFile file(path); + if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { + return; + } + + obs_data_save_json(obj, file.fileName().toUtf8().constData()); +} + void AdvSceneSwitcher::on_exportSettings_clicked() { QString directory = QFileDialog::getSaveFileName( this, tr(obs_module_text( "AdvSceneSwitcher.generalTab.saveOrLoadsettings.exportWindowTitle")), - QDir::currentPath(), + getDefaultSaveLocation(), tr(obs_module_text( "AdvSceneSwitcher.generalTab.saveOrLoadsettings.textType"))); if (directory.isEmpty()) { diff --git a/src/headers/advanced-scene-switcher.hpp b/src/headers/advanced-scene-switcher.hpp index edefd5d6..9d26b887 100644 --- a/src/headers/advanced-scene-switcher.hpp +++ b/src/headers/advanced-scene-switcher.hpp @@ -285,6 +285,11 @@ void restoreTransitionOverride(obs_source_t *scene, const transitionData &td); void switchScene(const sceneSwitchInfo &ssi); void switchPreviewScene(const OBSWeakSource &ws); +/****************************************************************************** + * Settings helper + ******************************************************************************/ +void AskForBackup(obs_data_t *obj); + /****************************************************************************** * Main SwitcherData ******************************************************************************/