diff --git a/Userland/Applications/CalendarSettings/CalendarSettingsWidget.cpp b/Userland/Applications/CalendarSettings/CalendarSettingsWidget.cpp index d354a9ba7f..631f74e166 100644 --- a/Userland/Applications/CalendarSettings/CalendarSettingsWidget.cpp +++ b/Userland/Applications/CalendarSettings/CalendarSettingsWidget.cpp @@ -1,5 +1,6 @@ /* * Copyright (c) 2022-2022, Olivier De Cannière + * Copyright (c) 2022, Tobias Christiansen * * SPDX-License-Identifier: BSD-2-Clause */ @@ -8,17 +9,23 @@ #include #include #include +#include #include +#include void CalendarSettingsWidget::apply_settings() { Config::write_string("Calendar"sv, "View"sv, "FirstDayOfWeek"sv, m_first_day_of_week_combobox->text()); + Config::write_string("Calendar"sv, "View"sv, "FirstDayOfWeekend"sv, m_first_day_of_weekend_combobox->text()); + Config::write_i32("Calendar"sv, "View"sv, "WeekendLength"sv, m_weekend_length_spinbox->value()); Config::write_string("Calendar"sv, "View"sv, "DefaultView"sv, m_default_view_combobox->text()); } void CalendarSettingsWidget::reset_default_values() { m_first_day_of_week_combobox->set_text("Sunday"); + m_first_day_of_weekend_combobox->set_text("Saturday"); + m_weekend_length_spinbox->set_value(2); m_default_view_combobox->set_text("Month"); } @@ -34,6 +41,20 @@ CalendarSettingsWidget::CalendarSettingsWidget() set_modified(true); }; + m_first_day_of_weekend_combobox = *find_descendant_of_type_named("first_day_of_weekend"); + m_first_day_of_weekend_combobox->set_text(Config::read_string("Calendar"sv, "View"sv, "FirstDayOfWeekend"sv, "Saturday"sv)); + m_first_day_of_weekend_combobox->set_only_allow_values_from_model(true); + m_first_day_of_weekend_combobox->set_model(*GUI::ItemListModel>::create(AK::long_day_names)); + m_first_day_of_weekend_combobox->on_change = [&](auto, auto) { + set_modified(true); + }; + + m_weekend_length_spinbox = *find_descendant_of_type_named("weekend_length"); + m_weekend_length_spinbox->set_value(Config::read_i32("Calendar"sv, "View"sv, "WeekendLength"sv, 2)); + m_weekend_length_spinbox->on_change = [&](auto) { + set_modified(true); + }; + m_default_view_combobox = *find_descendant_of_type_named("default_view"); m_default_view_combobox->set_text(Config::read_string("Calendar"sv, "View"sv, "DefaultView"sv, "Month"sv)); m_default_view_combobox->set_only_allow_values_from_model(true); diff --git a/Userland/Applications/CalendarSettings/CalendarSettingsWidget.gml b/Userland/Applications/CalendarSettings/CalendarSettingsWidget.gml index f619bec9c5..67409cd827 100644 --- a/Userland/Applications/CalendarSettings/CalendarSettingsWidget.gml +++ b/Userland/Applications/CalendarSettings/CalendarSettingsWidget.gml @@ -36,6 +36,63 @@ } } + @GUI::GroupBox { + title: "Preferred Weekend Configuration" + fixed_height: 72 + layout: @GUI::VerticalBoxLayout { + margins: [6] + spacing: 2 + } + + @GUI::Label { + text: "Determines the start and length of the weekend." + word_wrap: true + text_alignment: "CenterLeft" + } + + @GUI::Widget { + layout: @GUI::HorizontalBoxLayout { + spacing: 16 + } + + @GUI::Widget { + layout: @GUI::HorizontalBoxLayout {} + + @GUI::Label { + text: "First day:" + text_alignment: "CenterLeft" + fixed_width: 84 + } + + @GUI::ComboBox { + name: "first_day_of_weekend" + } + } + + @GUI::Widget { + layout: @GUI::HorizontalBoxLayout { + spacing: 8 + } + + @GUI::Label { + text: "Length:" + text_alignment: "CenterLeft" + } + + @GUI::SpinBox { + name: "weekend_length" + min: 0 + max: 7 + } + + @GUI::Label { + text: "Days" + text_alignment: "CenterLeft" + } + } + } + } + @GUI::GroupBox { title: "Default view" fixed_height: 72 diff --git a/Userland/Applications/CalendarSettings/CalendarSettingsWidget.h b/Userland/Applications/CalendarSettings/CalendarSettingsWidget.h index 494597100a..d3215df51f 100644 --- a/Userland/Applications/CalendarSettings/CalendarSettingsWidget.h +++ b/Userland/Applications/CalendarSettings/CalendarSettingsWidget.h @@ -1,12 +1,12 @@ /* * Copyright (c) 2022-2022, Olivier De Cannière + * Copyright (c) 2022, Tobias Christiansen * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once -#include #include class CalendarSettingsWidget final : public GUI::SettingsWindow::Tab { @@ -21,5 +21,7 @@ private: static constexpr Array const m_view_modes = { "Month"sv, "Year"sv }; RefPtr m_first_day_of_week_combobox; + RefPtr m_first_day_of_weekend_combobox; + RefPtr m_weekend_length_spinbox; RefPtr m_default_view_combobox; };