From 70fb972f84899631fd1c95f9571ea7619bc72a15 Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Thu, 12 May 2022 21:02:28 +0200 Subject: [PATCH] Add option to ignore time component in simple check --- data/locale/en-US.ini | 2 +- data/locale/es-ES.ini | 2 +- data/locale/zh-CN.ini | 2 +- src/headers/macro-condition-date.hpp | 1 + src/macro-condition-date.cpp | 14 ++++++++++++++ 5 files changed, 18 insertions(+), 3 deletions(-) diff --git a/data/locale/en-US.ini b/data/locale/en-US.ini index 91b2e349..e9a0bacf 100644 --- a/data/locale/en-US.ini +++ b/data/locale/en-US.ini @@ -269,7 +269,7 @@ AdvSceneSwitcher.condition.date.ignoreDate="If unchecked the date component will AdvSceneSwitcher.condition.date.ignoreTime="If unchecked the time component will be ignored" AdvSceneSwitcher.condition.date.showAdvancedSettings="Show advanced settings" AdvSceneSwitcher.condition.date.showSimpleSettings="Show simple settings" -AdvSceneSwitcher.condition.date.entry.simple="On {{dayOfWeek}} at {{weekTime}}" +AdvSceneSwitcher.condition.date.entry.simple="On {{dayOfWeek}} at {{ignoreWeekTime}}{{weekTime}}" AdvSceneSwitcher.condition.date.entry.advanced="{{condition}} {{ignoreDate}}{{date}} {{ignoreTime}}{{time}} {{separator}} {{date2}} {{time2}}" AdvSceneSwitcher.condition.date.entry.repeat="{{repeat}} Repeat every {{duration}} on date match" AdvSceneSwitcher.condition.date.entry.nextMatchDate="Next match at: %1" diff --git a/data/locale/es-ES.ini b/data/locale/es-ES.ini index 4b5dd557..cda63f81 100644 --- a/data/locale/es-ES.ini +++ b/data/locale/es-ES.ini @@ -267,7 +267,7 @@ AdvSceneSwitcher.condition.date.ignoreDate="Si no se marca, se ignorará el comp AdvSceneSwitcher.condition.date.ignoreTime="Si no se marca, se ignorará el componente de tiempo" AdvSceneSwitcher.condition.date.showAdvancedSettings="Mostrar configuración avanzada" AdvSceneSwitcher.condition.date.showSimpleSettings="Mostrar configuración simple" -AdvSceneSwitcher.condition.date.entry.simple="El {{dayOfWeek}} a las {{weekTime}}" +AdvSceneSwitcher.condition.date.entry.simple="El {{dayOfWeek}} a las {{ignoreWeekTime}}{{weekTime}}" AdvSceneSwitcher.condition.date.entry.advanced="{{condition}} {{ignoreDate}}{{date}} {{ignoreTime}}{{time}} {{separator}} {{date2}} {{time2}}" AdvSceneSwitcher.condition.date.entry.repeat="{{repeat}} Repetir cada {{duration}} en la coincidencia de fechas" AdvSceneSwitcher.condition.date.entry.nextMatchDate="Próxima coincidencia en: %1" diff --git a/data/locale/zh-CN.ini b/data/locale/zh-CN.ini index 6083ee9d..affd0a7f 100644 --- a/data/locale/zh-CN.ini +++ b/data/locale/zh-CN.ini @@ -251,7 +251,7 @@ AdvSceneSwitcher.condition.date.ignoreDate="如果未选中,日期组件将被 AdvSceneSwitcher.condition.date.ignoreTime="如果未选中,时间组件将被忽略" AdvSceneSwitcher.condition.date.showAdvancedSettings="显示高级设置" AdvSceneSwitcher.condition.date.showSimpleSettings="显示简单设置" -AdvSceneSwitcher.condition.date.entry.simple="在 {{dayOfWeek}} 的 {{weekTime}}" +AdvSceneSwitcher.condition.date.entry.simple="在 {{dayOfWeek}} 的 {{ignoreWeekTime}}{{weekTime}}" AdvSceneSwitcher.condition.date.entry.advanced="{{condition}} {{ignoreDate}}{{date}} {{ignoreTime}}{{time}} {{separator}} {{date2}} {{time2}}" AdvSceneSwitcher.condition.date.entry.repeat="{{repeat}} 在匹配到日期时间后,每隔 {{duration}} 重复一次" AdvSceneSwitcher.condition.sceneTransform="场景项目被改变" diff --git a/src/headers/macro-condition-date.hpp b/src/headers/macro-condition-date.hpp index fdcbee85..351f5176 100644 --- a/src/headers/macro-condition-date.hpp +++ b/src/headers/macro-condition-date.hpp @@ -105,6 +105,7 @@ signals: protected: QComboBox *_dayOfWeek; + QCheckBox *_ignoreWeekTime; QTimeEdit *_weekTime; QComboBox *_condition; diff --git a/src/macro-condition-date.cpp b/src/macro-condition-date.cpp index 8d8105bf..19942939 100644 --- a/src/macro-condition-date.cpp +++ b/src/macro-condition-date.cpp @@ -42,6 +42,9 @@ bool MacroConditionDate::CheckDayOfWeek(int64_t msSinceLastCheck) cur.date().dayOfWeek() != static_cast(_dayOfWeek)) { return false; } + if (_ignoreTime) { + return true; + } _dateTime.setDate(cur.date()); return _dateTime <= cur && _dateTime >= cur.addMSecs(-msSinceLastCheck); } @@ -163,6 +166,9 @@ std::string MacroConditionDate::GetShortDesc() return ""; } std::string dayName = obs_module_text(it->second.c_str()); + if (_ignoreTime) { + return dayName; + } return dayName + " " + _dateTime.time().toString().toStdString(); } else { @@ -234,6 +240,7 @@ MacroConditionDateEdit::MacroConditionDateEdit( QWidget *parent, std::shared_ptr entryData) : QWidget(parent), _dayOfWeek(new QComboBox()), + _ignoreWeekTime(new QCheckBox()), _weekTime(new QTimeEdit()), _condition(new QComboBox()), _date(new QDateEdit()), @@ -255,6 +262,8 @@ MacroConditionDateEdit::MacroConditionDateEdit( _repeatLayout(new QVBoxLayout()), _repeatUpdateLayout(new QHBoxLayout()) { + _ignoreWeekTime->setToolTip( + obs_module_text("AdvSceneSwitcher.condition.date.ignoreTime")); _weekTime->setDisplayFormat("hh:mm:ss"); _date->setDisplayFormat("yyyy.MM.dd "); _date->setCalendarPopup(true); @@ -273,6 +282,8 @@ MacroConditionDateEdit::MacroConditionDateEdit( QWidget::connect(_dayOfWeek, SIGNAL(currentIndexChanged(int)), this, SLOT(DayOfWeekChanged(int))); + QWidget::connect(_ignoreWeekTime, SIGNAL(stateChanged(int)), this, + SLOT(IgnoreTimeChanged(int))); QWidget::connect(_weekTime, SIGNAL(timeChanged(const QTime &)), this, SLOT(TimeChanged(const QTime &))); QWidget::connect(_condition, SIGNAL(currentIndexChanged(int)), this, @@ -305,6 +316,7 @@ MacroConditionDateEdit::MacroConditionDateEdit( std::unordered_map widgetPlaceholders = { {"{{dayOfWeek}}", _dayOfWeek}, + {"{{ignoreWeekTime}}", _ignoreWeekTime}, {"{{weekTime}}", _weekTime}, {"{{condition}}", _condition}, {"{{date}}", _date}, @@ -523,6 +535,7 @@ void MacroConditionDateEdit::UpdateEntryData() _dayOfWeek->setCurrentIndex( static_cast(static_cast(_entryData->_dayOfWeek))); + _ignoreWeekTime->setChecked(!_entryData->_ignoreTime); _weekTime->setDateTime(_entryData->GetDateTime1()); _condition->setCurrentIndex(static_cast(_entryData->_condition)); _date->setDateTime(_entryData->GetDateTime1()); @@ -555,6 +568,7 @@ void MacroConditionDateEdit::SetWidgetStatus() if (_entryData->_dayOfWeekCheck) { _advancedSettingsTooggle->setText(obs_module_text( "AdvSceneSwitcher.condition.date.showAdvancedSettings")); + _weekTime->setDisabled(_entryData->_ignoreTime); } else { _advancedSettingsTooggle->setText(obs_module_text( "AdvSceneSwitcher.condition.date.showSimpleSettings"));