/* * Copyright (c) 2019-2020, Ryan Grieb * Copyright (c) 2022-2023, the SerenityOS developers. * Copyright (c) 2023, David Ganz * * SPDX-License-Identifier: BSD-2-Clause */ #include "AddEventDialog.h" #include "AddEventWidget.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Calendar { AddEventDialog::AddEventDialog(Core::DateTime date_time, EventManager& event_manager, Window* parent_window) : Dialog(parent_window) , m_event_manager(event_manager) { resize(360, 140); set_title("Add Event"); set_resizable(false); set_icon(parent_window->icon()); auto start_date_time = Core::DateTime::create(date_time.year(), date_time.month(), date_time.day(), 12, 0); auto main_widget = MUST(AddEventWidget::create(this, start_date_time, Core::DateTime::from_timestamp(start_date_time.timestamp() + (15 * 60)))); set_main_widget(main_widget); } ErrorOr AddEventDialog::add_event_to_calendar(Core::DateTime start_date_time, Core::DateTime end_date_time) { if (end_date_time < start_date_time) { GUI::MessageBox::show_error(this, "The end date has to be after the start date."sv); return false; } auto summary = find_descendant_of_type_named("event_title_textbox")->get_text(); m_event_manager.add_event(Event { .summary = TRY(String::from_byte_string(summary)), .start = start_date_time, .end = end_date_time, }); return true; } }