diff --git a/src/lib/utility/TimeStamp.cpp b/src/lib/utility/TimeStamp.cpp index cd92fd7a..7699dd1c 100644 --- a/src/lib/utility/TimeStamp.cpp +++ b/src/lib/utility/TimeStamp.cpp @@ -49,6 +49,26 @@ std::string TimeStamp::getDDMMYYYYString() const return stream.str(); } +std::string TimeStamp::dayOfWeek() const +{ + switch (m_time.date().day_of_week()) + { + case 0: return "Sunday"; + case 1: return "Monday"; + case 2: return "Tuesday"; + case 3: return "Wednesday"; + case 4: return "Thursday"; + case 5: return "Friday"; + case 6: return "Saturday"; + } + return "none"; +} + +std::string TimeStamp::dayOfWeekShort() const +{ + return dayOfWeek().substr(0, 3); +} + size_t TimeStamp::deltaMS(const TimeStamp& other) const { return abs((m_time - other.m_time).total_milliseconds()); diff --git a/src/lib/utility/TimeStamp.h b/src/lib/utility/TimeStamp.h index acdc17d0..49f8bed1 100644 --- a/src/lib/utility/TimeStamp.h +++ b/src/lib/utility/TimeStamp.h @@ -16,6 +16,8 @@ public: std::string toString() const; std::string getDDMMYYYYString() const; + std::string dayOfWeek() const; + std::string dayOfWeekShort() const; inline bool operator==(const TimeStamp& rhs) { return m_time == rhs.m_time; } inline bool operator!=(const TimeStamp& rhs) { return m_time != rhs.m_time; } diff --git a/src/lib_gui/qt/element/QtNewsWidget.cpp b/src/lib_gui/qt/element/QtNewsWidget.cpp index 06e65a10..eb4bcee1 100644 --- a/src/lib_gui/qt/element/QtNewsWidget.cpp +++ b/src/lib_gui/qt/element/QtNewsWidget.cpp @@ -54,6 +54,7 @@ syntax: "os": ["windows", "macOS", "linux"], "min_version": "2017.2.0", "max_version": "2018.4.2", + "weekday": ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"] } // optional @@ -205,6 +206,20 @@ bool QtNewsWidget::checkConditions(const QJsonObject& conditions) const } } + // weekday + { + QJsonArray weekdayStrings = conditions.value("weekday").toArray(); + if (!weekdayStrings.isEmpty()) + { + QString weekdayString = QString::fromStdString(TimeStamp::now().dayOfWeekShort()); + if (!weekdayStrings.contains(QJsonValue(weekdayString))) + { + LOG_INFO_STREAM(<< "Failed condition weekday."); + return false; + } + } + } + return true; }