From 74553a82fca25bb4e76bb1d5f52eb4cfbabdfad7 Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Mon, 25 Dec 2023 22:09:51 +0100 Subject: [PATCH] Remove deprecated "on change" toggle of media condition --- data/locale/de-DE.ini | 1 - data/locale/en-US.ini | 1 - data/locale/es-ES.ini | 1 - data/locale/fr-FR.ini | 1 - data/locale/tr-TR.ini | 1 - data/locale/zh-CN.ini | 1 - src/macro-core/macro-condition-media.cpp | 42 +++--------------------- src/macro-core/macro-condition-media.hpp | 7 +--- 8 files changed, 6 insertions(+), 49 deletions(-) diff --git a/data/locale/de-DE.ini b/data/locale/de-DE.ini index 5a0a7f68..c2bbab7a 100644 --- a/data/locale/de-DE.ini +++ b/data/locale/de-DE.ini @@ -159,7 +159,6 @@ AdvSceneSwitcher.condition.media="Medien" AdvSceneSwitcher.condition.media.source="Quelle" AdvSceneSwitcher.condition.media.anyOnScene="Beliebige Medienquelle in" AdvSceneSwitcher.condition.media.allOnScene="Alle Medienquellen in" -AdvSceneSwitcher.condition.media.matchOnChange="Nur bei Änderung übereinstimmen (Hinweis: Diese Option wird in einer zukünftigen Version entfernt werden - bitte stattdessen Dauer-Modifikatoren verwenden)" AdvSceneSwitcher.condition.media.inconsistencyInfo="Leider verhalten sich nicht alle Medien-Quell-Typen gleich (z.B. Medien-Quelle vs. VLC-Video-Quelle \"Gestoppt\"-Status).\nBitte experimentieren, was in eurem Setup funktioniert!" AdvSceneSwitcher.condition.media.entry="{{sourceTypes}}{{mediaSources}}{{scenes}}Status ist{{states}}und{{timeRestrictions}}{{time}}" AdvSceneSwitcher.condition.video="Video" diff --git a/data/locale/en-US.ini b/data/locale/en-US.ini index a768f921..427ec0e5 100644 --- a/data/locale/en-US.ini +++ b/data/locale/en-US.ini @@ -207,7 +207,6 @@ AdvSceneSwitcher.condition.media="Media" AdvSceneSwitcher.condition.media.source="Source" AdvSceneSwitcher.condition.media.anyOnScene="Any media source on" AdvSceneSwitcher.condition.media.allOnScene="All media sources on" -AdvSceneSwitcher.condition.media.matchOnChange="Only match on change (Note: This option will be removed in a future version - please use duration modifiers instead)" AdvSceneSwitcher.condition.media.inconsistencyInfo="Unfortunately not all media source types behave the same (e.g. Media Source vs. VLC Video Source \"Stopped\" state).\nSo please experiment what works for your setup!" AdvSceneSwitcher.condition.media.entry="{{sourceTypes}}{{mediaSources}}{{scenes}}state is{{states}}and{{timeRestrictions}}{{time}}" AdvSceneSwitcher.condition.video="Video" diff --git a/data/locale/es-ES.ini b/data/locale/es-ES.ini index 0ecab8b2..2c806d45 100644 --- a/data/locale/es-ES.ini +++ b/data/locale/es-ES.ini @@ -129,7 +129,6 @@ AdvSceneSwitcher.condition.file.entry.line3="{{checkModificationDate}}{{checkFil AdvSceneSwitcher.condition.media="Medios" AdvSceneSwitcher.condition.media.anyOnScene="Cualquier fuente multimedia activada" AdvSceneSwitcher.condition.media.allOnScene="Todas las fuentes de medios activadas" -AdvSceneSwitcher.condition.media.matchOnChange="Solo coincidir con el cambio (Nota: esta opción se eliminará en una versión futura; use modificadores de duración en su lugar)" AdvSceneSwitcher.condition.media.inconsistencyInfo="Desafortunadamente, no todos los tipos de fuentes de medios se comportan de la misma manera (p. ej., fuente de medios frente a estado \"Detenido\" de fuente de video VLC).\n¡Así que experimente lo que funciona para su configuración!" AdvSceneSwitcher.condition.media.entry="El estado de{{sourceTypes}}{{mediaSources}}{{scenes}}es{{states}}y{{timeRestrictions}}{{time}}" AdvSceneSwitcher.condition.video="Video" diff --git a/data/locale/fr-FR.ini b/data/locale/fr-FR.ini index 376112ac..0b5894d5 100644 --- a/data/locale/fr-FR.ini +++ b/data/locale/fr-FR.ini @@ -197,7 +197,6 @@ AdvSceneSwitcher.condition.media="Média" AdvSceneSwitcher.condition.media.source="Source" AdvSceneSwitcher.condition.media.anyOnScene="Toute source média sur la scène" AdvSceneSwitcher.condition.media.allOnScene="Toutes les sources média sur la scène" -AdvSceneSwitcher.condition.media.matchOnChange="Ne correspondre qu'au changement (Remarque : Cette option sera supprimée dans une version future - veuillez plutôt utiliser les modificateurs de durée)" AdvSceneSwitcher.condition.media.inconsistencyInfo="Malheureusement, toutes les sources média ne se comportent pas de la même manière (par exemple, l'état \"Arrêté\" de la source Media par rapport à la source Vidéo VLC).\nPar conséquent, veuillez expérimenter ce qui fonctionne le mieux pour votre configuration !" AdvSceneSwitcher.condition.media.entry="{{sourceTypes}}{{mediaSources}}{{scenes}}l'état est{{states}}et{{timeRestrictions}}{{time}}" AdvSceneSwitcher.condition.video="Vidéo" diff --git a/data/locale/tr-TR.ini b/data/locale/tr-TR.ini index 31066cf1..3d368d81 100644 --- a/data/locale/tr-TR.ini +++ b/data/locale/tr-TR.ini @@ -119,7 +119,6 @@ AdvSceneSwitcher.condition.file.entry.line3="{{checkModificationDate}}{{checkFil AdvSceneSwitcher.condition.media="Medya" AdvSceneSwitcher.condition.media.anyOnScene="Herhangi bir medya kaynağı" AdvSceneSwitcher.condition.media.allOnScene="Tüm medya kaynakları " -AdvSceneSwitcher.condition.media.matchOnChange="Yalnızca değişiklikle eşleştirin (Not: Bu seçenek gelecekteki bir sürümde kaldırılacaktır - lütfen bunun yerine zaman kısıtlamalarını kullanın)" AdvSceneSwitcher.condition.media.entry="{{sourceTypes}}{{mediaSources}}{{scenes}}durumu{{states}}ve{{timeRestrictions}}{{time}}" AdvSceneSwitcher.condition.video="Video" AdvSceneSwitcher.condition.video.condition.match="Tam olarak eşleşir" diff --git a/data/locale/zh-CN.ini b/data/locale/zh-CN.ini index 81a6d007..6f196988 100644 --- a/data/locale/zh-CN.ini +++ b/data/locale/zh-CN.ini @@ -185,7 +185,6 @@ AdvSceneSwitcher.condition.media="媒体" AdvSceneSwitcher.condition.media.source="源" AdvSceneSwitcher.condition.media.anyOnScene="任何媒体源" AdvSceneSwitcher.condition.media.allOnScene="所有媒体源" -AdvSceneSwitcher.condition.media.matchOnChange="仅在更改时匹配(注意:此选项将在未来版本中删除-请改用时间限制)" AdvSceneSwitcher.condition.media.inconsistencyInfo="不幸的是,并非所有媒体源类型的行为都相同(例如,媒体源与VLC视频源“停止”状态)。\n所以,请尝试适合您的设置!" AdvSceneSwitcher.condition.media.entry="{{sourceTypes}}{{mediaSources}}{{scenes}} 的状态是 {{states}} 和 {{timeRestrictions}}{{time}}" AdvSceneSwitcher.condition.video="视频" diff --git a/src/macro-core/macro-condition-media.cpp b/src/macro-core/macro-condition-media.cpp index 366d10f0..7934d789 100644 --- a/src/macro-core/macro-condition-media.cpp +++ b/src/macro-core/macro-condition-media.cpp @@ -150,20 +150,14 @@ bool MacroConditionMedia::CheckMediaMatch() if (!_source.GetSource()) { return false; } - bool match = false; bool matched = CheckState() && CheckTime(); - if (matched && !(_onlyMatchOnChagne && _alreadyMatched)) { - match = true; - } - _alreadyMatched = matched; - // reset for next check _stopped = false; _ended = false; _next = false; - return match; + return matched; } void MacroConditionMedia::HandleSceneChange() @@ -212,7 +206,6 @@ bool MacroConditionMedia::Save(obs_data_t *obj) const obs_data_set_int(obj, "state", static_cast(_state)); obs_data_set_int(obj, "restriction", static_cast(_restriction)); _time.Save(obj); - obs_data_set_bool(obj, "matchOnChagne", _onlyMatchOnChagne); obs_data_set_int(obj, "version", 0); return true; } @@ -270,7 +263,6 @@ bool MacroConditionMedia::Load(obs_data_t *obj) _restriction = static_cast( obs_data_get_int(obj, "restriction")); _time.Load(obj); - _onlyMatchOnChagne = obs_data_get_bool(obj, "matchOnChagne"); if (_sourceType == Type::SOURCE) { obs_source_t *mediasource = @@ -410,9 +402,7 @@ MacroConditionMediaEdit::MacroConditionMediaEdit( _sources(new SourceSelectionWidget(this, QStringList(), true)), _states(new QComboBox()), _timeRestrictions(new QComboBox()), - _time(new DurationSelection()), - _onChange(new QCheckBox(obs_module_text( - "AdvSceneSwitcher.condition.media.matchOnChange"))) + _time(new DurationSelection()) { _states->setToolTip(obs_module_text( "AdvSceneSwitcher.condition.media.inconsistencyInfo")); @@ -434,14 +424,12 @@ MacroConditionMediaEdit::MacroConditionMediaEdit( this, SLOT(TimeRestrictionChanged(int))); QWidget::connect(_time, SIGNAL(DurationChanged(const Duration &)), this, SLOT(TimeChanged(const Duration &))); - QWidget::connect(_onChange, SIGNAL(stateChanged(int)), this, - SLOT(OnChangeChanged(int))); populateSourceTypes(_sourceTypes); populateMediaStates(_states); populateMediaTimes(_timeRestrictions); - QHBoxLayout *entryLayout = new QHBoxLayout; + auto layout = new QHBoxLayout; std::unordered_map widgetPlaceholders = { {"{{sourceTypes}}", _sourceTypes}, {"{{mediaSources}}", _sources}, @@ -451,11 +439,8 @@ MacroConditionMediaEdit::MacroConditionMediaEdit( {"{{time}}", _time}, }; PlaceWidgets(obs_module_text("AdvSceneSwitcher.condition.media.entry"), - entryLayout, widgetPlaceholders); - QVBoxLayout *mainLayout = new QVBoxLayout; - mainLayout->addLayout(entryLayout); - mainLayout->addWidget(_onChange); - setLayout(mainLayout); + layout, widgetPlaceholders); + setLayout(layout); _entryData = entryData; UpdateEntryData(); @@ -574,28 +559,12 @@ void MacroConditionMediaEdit::TimeChanged(const Duration &dur) } } -void MacroConditionMediaEdit::OnChangeChanged(int value) -{ - if (_loading || !_entryData) { - return; - } - - auto lock = LockContext(); - _entryData->_onlyMatchOnChagne = value; - if (_entryData->_sourceType != MacroConditionMedia::Type::SOURCE) { - _entryData->UpdateMediaSourcesOfSceneList(); - } -} - void MacroConditionMediaEdit::SetWidgetVisibility() { _sources->setVisible(_entryData->_sourceType == MacroConditionMedia::Type::SOURCE); _scenes->setVisible(_entryData->_sourceType != MacroConditionMedia::Type::SOURCE); - if (!_onChange->isChecked()) { - _onChange->hide(); - } } static int getIdxFromMediaState(MacroConditionMedia::State state) @@ -627,7 +596,6 @@ void MacroConditionMediaEdit::UpdateEntryData() MacroConditionMedia::Time::TIME_RESTRICTION_NONE) { _time->setDisabled(true); } - _onChange->setChecked(_entryData->_onlyMatchOnChagne); SetWidgetVisibility(); } diff --git a/src/macro-core/macro-condition-media.hpp b/src/macro-core/macro-condition-media.hpp index 85d02534..11124ba3 100644 --- a/src/macro-core/macro-condition-media.hpp +++ b/src/macro-core/macro-condition-media.hpp @@ -72,7 +72,6 @@ public: OBSWeakSource _rawSource = nullptr; std::vector _sourceGroup; Duration _time; - bool _onlyMatchOnChagne = false; private: bool CheckTime(); @@ -84,9 +83,7 @@ private: bool _stopped = false; bool _ended = false; bool _next = false; - // TODO: Remove _alreadyMatched as it does not make much sense when - // time restrictions for macro conditions are available. - bool _alreadyMatched = false; + // Workaround to enable use of "ended" to specify end of VLC playlist bool _previousStateEnded = false; // Used to keep track of scene changes @@ -119,7 +116,6 @@ private slots: void StateChanged(int index); void TimeRestrictionChanged(int index); void TimeChanged(const Duration &seconds); - void OnChangeChanged(int); signals: void HeaderInfoChanged(const QString &); @@ -130,7 +126,6 @@ protected: QComboBox *_states; QComboBox *_timeRestrictions; DurationSelection *_time; - QCheckBox *_onChange; std::shared_ptr _entryData; private: