Merge pull request #4841 from Cprakhar/feat/first-day-of-week-calendar
feat: add support for configurable first day of the week in calendar
This commit is contained in:
@@ -138,6 +138,11 @@ View all valid format options in *strftime(3)* or have a look https://en.cpprefe
|
|||||||
:[ When enabled, the calendar follows the ISO 8601 standard: weeks begin on
|
:[ When enabled, the calendar follows the ISO 8601 standard: weeks begin on
|
||||||
Monday, and the first week of the year is numbered 1. The default week format is
|
Monday, and the first week of the year is numbered 1. The default week format is
|
||||||
'{:%V}'.
|
'{:%V}'.
|
||||||
|
|[ *first-day-of-week*
|
||||||
|
:[ integer
|
||||||
|
:[
|
||||||
|
:[ The first day of the week, where 0 is Sunday and 6 is Saturday.
|
||||||
|
When not set, the first day of the week is determined by the locale settings.
|
||||||
|
|
||||||
3. Addressed by *clock: calendar: format*
|
3. Addressed by *clock: calendar: format*
|
||||||
[- *Option*
|
[- *Option*
|
||||||
@@ -210,8 +215,9 @@ View all valid format options in *strftime(3)* or have a look https://en.cpprefe
|
|||||||
"mode" : "year",
|
"mode" : "year",
|
||||||
"mode-mon-col" : 3,
|
"mode-mon-col" : 3,
|
||||||
"weeks-pos" : "right",
|
"weeks-pos" : "right",
|
||||||
|
"first-day-of-week": 1,
|
||||||
"on-scroll" : 1,
|
"on-scroll" : 1,
|
||||||
"on-click-right": "mode",
|
"on-click-right" : "mode",
|
||||||
"format": {
|
"format": {
|
||||||
"months": "<span color='#ffead3'><b>{}</b></span>",
|
"months": "<span color='#ffead3'><b>{}</b></span>",
|
||||||
"days": "<span color='#ecc6d9'><b>{}</b></span>",
|
"days": "<span color='#ecc6d9'><b>{}</b></span>",
|
||||||
|
|||||||
@@ -514,6 +514,18 @@ using deleting_unique_ptr = std::unique_ptr<T, deleter_from_fn<fn>>;
|
|||||||
|
|
||||||
// Computations done similarly to Linux cal utility.
|
// Computations done similarly to Linux cal utility.
|
||||||
auto waybar::modules::Clock::first_day_of_week() -> weekday {
|
auto waybar::modules::Clock::first_day_of_week() -> weekday {
|
||||||
|
const auto firstdow = config_[kCldPlaceholder]["first-day-of-week"];
|
||||||
|
if (firstdow.isInt()) {
|
||||||
|
const int firstDay = firstdow.asInt();
|
||||||
|
if (!(firstDay >= 0 && firstDay <= 6)) {
|
||||||
|
spdlog::warn(
|
||||||
|
"Clock calender configuration first-day-of-week = {0} must be in range [0, 6]. Default "
|
||||||
|
"value is used instead",
|
||||||
|
firstDay);
|
||||||
|
} else {
|
||||||
|
return weekday{static_cast<unsigned>(firstDay)};
|
||||||
|
}
|
||||||
|
}
|
||||||
if (iso8601Calendar_) {
|
if (iso8601Calendar_) {
|
||||||
return Monday;
|
return Monday;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user