ask for backup of settings if a new version detected (#104)

This commit is contained in:
WarmUpTill
2021-01-23 17:08:17 +01:00
committed by GitHub
parent b42de8d5c8
commit 1f4679433e
7 changed files with 72 additions and 10 deletions

View File

@@ -195,6 +195,8 @@ AdvSceneSwitcher.hotkey.startSwitcherHotkey="Starte den Erweiteren Szenenwechsle
AdvSceneSwitcher.hotkey.stopSwitcherHotkey="Stoppe den Erweiteren Szenenwechsler"
AdvSceneSwitcher.hotkey.startStopToggleSwitcherHotkey="Starte/Stoppe den Erweiteren Szenenwechsler"
AdvSceneSwitcher.askBackup="Neue Version des Erweiterten Automatischen Szenenwechslers wurde erkannt.\nSoll ein Backup der alten Einstellungen angelegt werden?"
AdvSceneSwitcher.close="Schließen"
AdvSceneSwitcher.browse="Öffnen"

View File

@@ -195,6 +195,8 @@ AdvSceneSwitcher.hotkey.startSwitcherHotkey="Start the Advanced Scene Switcher"
AdvSceneSwitcher.hotkey.stopSwitcherHotkey="Stop the Advanced Scene Switcher"
AdvSceneSwitcher.hotkey.startStopToggleSwitcherHotkey="Toggle Start/Stop for the Advanced Scene Switcher"
AdvSceneSwitcher.askBackup="Detected a new version of the Advanced Scene Switcher.\nShould a backup of the old settings be created?"
AdvSceneSwitcher.close="Close"
AdvSceneSwitcher.browse="Browse"

View File

@@ -38,8 +38,9 @@ bool translationAvailable()
void AdvSceneSwitcher::loadUI()
{
if (!translationAvailable()) {
DisplayMessage("Failed to find plug-in's 'data' directory.\n"
"Please check installation instructions!");
(void)DisplayMessage(
"Failed to find plug-in's 'data' directory.\n"
"Please check installation instructions!");
}
#if __APPLE__
@@ -67,12 +68,26 @@ void AdvSceneSwitcher::loadUI()
/********************************************************************************
* UI helpers
********************************************************************************/
void AdvSceneSwitcher::DisplayMessage(QString msg)
bool AdvSceneSwitcher::DisplayMessage(QString msg, bool question)
{
QMessageBox Msgbox;
Msgbox.setWindowTitle("Advanced Scene Switcher");
Msgbox.setText(msg);
Msgbox.exec();
if (question) {
QMessageBox::StandardButton reply;
reply = QMessageBox::question(
nullptr, "Advanced Scene Switcher", msg,
QMessageBox::Yes | QMessageBox::No);
if (reply == QMessageBox::Yes) {
return true;
} else {
return false;
}
} else {
QMessageBox Msgbox;
Msgbox.setWindowTitle("Advanced Scene Switcher");
Msgbox.setText(msg);
Msgbox.exec();
}
return false;
}
void addSelectionEntry(QComboBox *sel, const char *description,
@@ -346,6 +361,7 @@ static void SaveSceneSwitcher(obs_data_t *save_data, bool saving, void *)
switcher->saveAudioSwitches(obj);
switcher->saveGeneralSettings(obj);
switcher->saveHotkeys(obj);
switcher->saveVersion(obj, g_GIT_SHA1);
obs_data_set_obj(save_data, "advanced-scene-switcher", obj);
@@ -358,6 +374,8 @@ static void SaveSceneSwitcher(obs_data_t *save_data, bool saving, void *)
if (!obj)
obj = obs_data_create();
if (switcher->versionChanged(obj, g_GIT_SHA1))
AdvSceneSwitcher::AskBackup(obj);
switcher->loadWindowTitleSwitches(obj);
switcher->loadScreenRegionSwitches(obj);

View File

@@ -302,6 +302,31 @@ void AdvSceneSwitcher::on_uiHintsDisable_stateChanged(int state)
switcher->disableHints = state;
}
void AdvSceneSwitcher::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());
}
void AdvSceneSwitcher::on_exportSettings_clicked()
{
QString directory = QFileDialog::getSaveFileName(
@@ -367,7 +392,7 @@ void AdvSceneSwitcher::on_importSettings_clicked()
file.fileName().toUtf8().constData());
if (!obj) {
DisplayMessage(obs_module_text(
(void)DisplayMessage(obs_module_text(
"AdvSceneSwitcher.generalTab.saveOrLoadsettings.loadFail"));
return;
}
@@ -389,7 +414,7 @@ void AdvSceneSwitcher::on_importSettings_clicked()
obs_data_release(obj);
DisplayMessage(obs_module_text(
(void)DisplayMessage(obs_module_text(
"AdvSceneSwitcher.generalTab.saveOrLoadsettings.loadSuccess"));
close();

View File

@@ -56,7 +56,8 @@ public:
void setupAudioTab();
void setTabOrder();
void DisplayMessage(QString msg);
static bool DisplayMessage(QString msg, bool question = false);
static void AskBackup(obs_data_t *obj);
static void populateSceneSelection(QComboBox *sel,
bool addPrevious = false,
bool addSelect = true);

View File

@@ -153,6 +153,8 @@ struct SwitcherData {
obs_hotkey_id stopHotkey = 0;
obs_hotkey_id toggleHotkey = 0;
bool versionChanged(obs_data_t *obj, std::string currentVersion);
void Thread();
void Start();
void Stop();
@@ -210,6 +212,7 @@ struct SwitcherData {
void saveAudioSwitches(obs_data_t *obj);
void saveGeneralSettings(obs_data_t *obj);
void saveHotkeys(obs_data_t *obj);
void saveVersion(obs_data_t *obj, std::string currentVersion);
void loadWindowTitleSwitches(obs_data_t *obj);
void loadScreenRegionSwitches(obs_data_t *obj);

View File

@@ -93,3 +93,14 @@ void SwitcherData::Prune()
audioSwitches.erase(audioSwitches.begin() + i--);
}
}
bool SwitcherData::versionChanged(obs_data_t *obj, std::string currentVersion)
{
std::string previousVersion = obs_data_get_string(obj, "version");
return previousVersion != currentVersion;
}
void SwitcherData::saveVersion(obs_data_t *obj, std::string currentVersion)
{
obs_data_set_string(obj, "version", currentVersion.c_str());
}