diff options
author | Tobias Christiansen <tobyase@serenityos.org> | 2022-10-04 11:36:09 +0200 |
---|---|---|
committer | Tim Flynn <trflynn89@pm.me> | 2022-10-04 12:13:54 -0400 |
commit | eca559d65d1f49d0606ef83d66ffe247c037d2e7 (patch) | |
tree | 059175b1a5f3708d2be264798417771f97e28c17 /Userland | |
parent | 2a0a274898e8fbae1d37337b50d3b13d70d0f9ae (diff) | |
download | serenity-eca559d65d1f49d0606ef83d66ffe247c037d2e7.zip |
CalendarSettings: Add Weekend-specific settings
In some calendars, weekends start on other days than saturday and can
also have different lengths than 2 days. This patch allows you to set
these values, however they don't do anything yet as Serenity's Calendar
doesn't care about Weekends at the moment.
Diffstat (limited to 'Userland')
3 files changed, 81 insertions, 1 deletions
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 <olivier.decanniere96@gmail.com> + * Copyright (c) 2022, Tobias Christiansen <tobyase@serenityos.org> * * SPDX-License-Identifier: BSD-2-Clause */ @@ -8,17 +9,23 @@ #include <AK/DateConstants.h> #include <Applications/CalendarSettings/CalendarSettingsWidgetGML.h> #include <LibConfig/Client.h> +#include <LibGUI/ComboBox.h> #include <LibGUI/ItemListModel.h> +#include <LibGUI/SpinBox.h> 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<GUI::ComboBox>("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<StringView, Array<StringView, 7>>::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<GUI::SpinBox>("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<GUI::ComboBox>("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 @@ -37,6 +37,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 layout: @GUI::VerticalBoxLayout { 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 <olivier.decanniere96@gmail.com> + * Copyright (c) 2022, Tobias Christiansen <tobyase@serenityos.org> * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once -#include <LibGUI/ComboBox.h> #include <LibGUI/SettingsWindow.h> class CalendarSettingsWidget final : public GUI::SettingsWindow::Tab { @@ -21,5 +21,7 @@ private: static constexpr Array<StringView, 2> const m_view_modes = { "Month"sv, "Year"sv }; RefPtr<GUI::ComboBox> m_first_day_of_week_combobox; + RefPtr<GUI::ComboBox> m_first_day_of_weekend_combobox; + RefPtr<GUI::SpinBox> m_weekend_length_spinbox; RefPtr<GUI::ComboBox> m_default_view_combobox; }; |