Add option to toggle filter

This commit is contained in:
WarmUpTill 2023-06-08 18:19:28 +02:00 committed by WarmUpTill
parent 8a796efdb3
commit 1e81181312
3 changed files with 19 additions and 1 deletions

View File

@ -511,6 +511,7 @@ AdvSceneSwitcher.action.sceneVisibility.entry="On{{scenes}}{{actions}}{{sourceTy
AdvSceneSwitcher.action.filter="Filter"
AdvSceneSwitcher.action.filter.type.enable="Enable"
AdvSceneSwitcher.action.filter.type.disable="Disable"
AdvSceneSwitcher.action.filter.type.toggle="Toggle"
AdvSceneSwitcher.action.filter.type.settings="Set settings"
AdvSceneSwitcher.action.filter.entry="On {{sources}} {{actions}} {{filters}}"
AdvSceneSwitcher.action.filter.getSettings="Get current settings"

View File

@ -15,6 +15,8 @@ const static std::map<MacroActionFilter::Action, std::string> actionTypes = {
"AdvSceneSwitcher.action.filter.type.enable"},
{MacroActionFilter::Action::DISABLE,
"AdvSceneSwitcher.action.filter.type.disable"},
{MacroActionFilter::Action::TOGGLE,
"AdvSceneSwitcher.action.filter.type.toggle"},
{MacroActionFilter::Action::SETTINGS,
"AdvSceneSwitcher.action.filter.type.settings"},
};
@ -29,6 +31,9 @@ bool MacroActionFilter::PerformAction()
case Action::DISABLE:
obs_source_set_enabled(s, false);
break;
case Action::TOGGLE:
obs_source_set_enabled(s, !obs_source_enabled(s));
break;
case Action::SETTINGS:
SetSourceSettings(s, _settings);
break;
@ -60,6 +65,7 @@ bool MacroActionFilter::Save(obs_data_t *obj) const
_filter.Save(obj, "filter");
obs_data_set_int(obj, "action", static_cast<int>(_action));
_settings.Save(obj, "settings");
obs_data_set_int(obj, "version", 1);
return true;
}
@ -68,7 +74,17 @@ bool MacroActionFilter::Load(obs_data_t *obj)
MacroAction::Load(obj);
_source.Load(obj);
_filter.Load(obj, _source, "filter");
_action = static_cast<Action>(obs_data_get_int(obj, "action"));
// TODO: Remove this fallback in future version
if (!obs_data_has_user_value(obj, "version")) {
const auto value = obs_data_get_int(obj, "action");
if (value == 2) {
_action = Action::SETTINGS;
} else {
_action = static_cast<Action>(value);
}
} else {
_action = static_cast<Action>(obs_data_get_int(obj, "action"));
}
_settings.Load(obj, "settings");
return true;
}

View File

@ -27,6 +27,7 @@ public:
enum class Action {
ENABLE,
DISABLE,
TOGGLE,
SETTINGS,
};