1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 22:57:44 +00:00

Calendar: Add inputs to change event end date/time

This commit is contained in:
lanmonster 2023-10-07 14:54:33 -05:00 committed by Andreas Kling
parent a7c3d39bab
commit e5c9d7ce26
2 changed files with 121 additions and 23 deletions

View file

@ -28,7 +28,7 @@ AddEventDialog::AddEventDialog(Core::DateTime date_time, EventManager& event_man
, m_end_date_time(Core::DateTime::from_timestamp(date_time.timestamp() + (15 * 60)))
, m_event_manager(event_manager)
{
resize(158, 130);
resize(360, 140);
set_title("Add Event");
set_resizable(false);
set_icon(parent_window->icon());
@ -64,6 +64,26 @@ AddEventDialog::AddEventDialog(Core::DateTime date_time, EventManager& event_man
starting_meridiem_input->set_model(MeridiemListModel::create());
starting_meridiem_input->set_selected_index(0);
auto ending_month_input = widget->find_descendant_of_type_named<GUI::ComboBox>("end_month");
ending_month_input->set_model(MonthListModel::create());
ending_month_input->set_selected_index(m_end_date_time.month() - 1);
auto ending_day_input = widget->find_descendant_of_type_named<GUI::SpinBox>("end_day");
ending_day_input->set_value(m_end_date_time.day());
auto ending_year_input = widget->find_descendant_of_type_named<GUI::SpinBox>("end_year");
ending_year_input->set_value(m_end_date_time.year());
auto ending_hour_input = widget->find_descendant_of_type_named<GUI::SpinBox>("end_hour");
ending_hour_input->set_value(m_end_date_time.hour());
auto ending_minute_input = widget->find_descendant_of_type_named<GUI::SpinBox>("end_minute");
ending_minute_input->set_value(m_end_date_time.minute());
auto ending_meridiem_input = widget->find_descendant_of_type_named<GUI::ComboBox>("end_meridiem");
ending_meridiem_input->set_model(MeridiemListModel::create());
ending_meridiem_input->set_selected_index(0);
auto ok_button = widget->find_descendant_of_type_named<GUI::Button>("ok_button");
ok_button->on_click = [&](auto) {
add_event_to_calendar().release_value_but_fixme_should_propagate_errors();
@ -77,7 +97,13 @@ AddEventDialog::AddEventDialog(Core::DateTime date_time, EventManager& event_man
starting_day_input->set_range(1, days_in_month(year, month + 1));
};
auto update_input_values = [=, this]() {
auto update_ending_day_range = [=]() {
auto year = ending_year_input->value();
auto month = ending_month_input->selected_index();
ending_day_input->set_range(1, days_in_month(year, month + 1));
};
auto update_starting_input_values = [=, this]() {
auto year = starting_year_input->value();
auto month = starting_month_input->selected_index() + 1;
auto day = starting_day_input->value();
@ -86,17 +112,38 @@ AddEventDialog::AddEventDialog(Core::DateTime date_time, EventManager& event_man
m_start_date_time = Core::DateTime::create(year, month, day, hour, minute);
};
starting_year_input->on_change = [update_input_values, update_starting_day_range](auto) {
update_input_values();
auto update_ending_input_values = [=, this]() {
auto year = ending_year_input->value();
auto month = ending_month_input->selected_index() + 1;
auto day = ending_day_input->value();
auto hour = ending_hour_input->value();
auto minute = ending_minute_input->value();
m_end_date_time = Core::DateTime::create(year, month, day, hour, minute);
};
starting_year_input->on_change = [update_starting_input_values, update_starting_day_range](auto) {
update_starting_input_values();
update_starting_day_range();
};
starting_month_input->on_change = [update_input_values, update_starting_day_range](auto, auto) {
update_input_values();
starting_month_input->on_change = [update_starting_input_values, update_starting_day_range](auto, auto) {
update_starting_input_values();
update_starting_day_range();
};
starting_day_input->on_change = [update_input_values](auto) { update_input_values(); };
starting_hour_input->on_change = [update_input_values](auto) { update_input_values(); };
starting_minute_input->on_change = [update_input_values](auto) { update_input_values(); };
starting_day_input->on_change = [update_starting_input_values](auto) { update_starting_input_values(); };
starting_hour_input->on_change = [update_starting_input_values](auto) { update_starting_input_values(); };
starting_minute_input->on_change = [update_starting_input_values](auto) { update_starting_input_values(); };
ending_year_input->on_change = [update_ending_input_values, update_ending_day_range](auto) {
update_ending_input_values();
update_ending_day_range();
};
ending_month_input->on_change = [update_ending_input_values, update_ending_day_range](auto, auto) {
update_ending_input_values();
update_ending_day_range();
};
ending_day_input->on_change = [update_ending_input_values](auto) { update_ending_input_values(); };
ending_hour_input->on_change = [update_ending_input_values](auto) { update_ending_input_values(); };
ending_minute_input->on_change = [update_ending_input_values](auto) { update_ending_input_values(); };
}
ErrorOr<void> AddEventDialog::add_event_to_calendar()