Rework SourceSelectionWidget to support widget caching

This commit is contained in:
WarmUpTill
2025-05-20 21:37:18 +02:00
committed by WarmUpTill
parent 3dd3f576c3
commit ba3e87a761
15 changed files with 125 additions and 78 deletions

View File

@@ -610,6 +610,13 @@ static void populateCheckTypes(QComboBox *list)
static_cast<int>(MacroConditionMedia::CheckType::TIME));
}
static QStringList getMediaSourcesList()
{
auto sources = GetMediaSourceNames();
sources.sort();
return sources;
}
MacroConditionMediaEdit::MacroConditionMediaEdit(
QWidget *parent, std::shared_ptr<MacroConditionMedia> entryData)
: QWidget(parent),
@@ -617,7 +624,7 @@ MacroConditionMediaEdit::MacroConditionMediaEdit(
_checkTypes(new QComboBox()),
_scenes(new SceneSelectionWidget(window(), true, true, true, true,
true)),
_sources(new SourceSelectionWidget(this, QStringList(), true)),
_sources(new SourceSelectionWidget(this, getMediaSourcesList, true)),
_states(new QComboBox()),
_timeRestrictions(new QComboBox()),
_time(new DurationSelection())
@@ -625,10 +632,6 @@ MacroConditionMediaEdit::MacroConditionMediaEdit(
_states->setToolTip(obs_module_text(
"AdvSceneSwitcher.condition.media.inconsistencyInfo"));
auto sources = GetMediaSourceNames();
sources.sort();
_sources->SetSourceNameList(sources);
QWidget::connect(_sourceTypes, SIGNAL(currentIndexChanged(int)), this,
SLOT(SourceTypeChanged(int)));
QWidget::connect(_checkTypes, SIGNAL(currentIndexChanged(int)), this,