/* * Mirai. Copyright (C) 2024 Vyn * This file is licensed under version 3 of the GNU General Public License (GPL-3.0-only) * The license can be found in the LICENSE file or at https://www.gnu.org/licenses/gpl-3.0.txt */ #pragma once #include "DateTime.h" #include "Event.h" #include "TaskItem.h" #include "using.h" #include #include #include namespace mirai { class BaseSource; struct DayData { Date date; std::vector events; std::vector tasks; }; class Day { public: Day(BaseSource *source, const DayData &data); void setDate(const Date &date); Event *createEvent(const EventData &eventData); TaskItem *createTask(const TaskItemData &taskData); void insertTask(std::unique_ptr &&task); void deleteTask(const TaskItem &taskToDelete); std::optional> takeTask(const TaskItem &taskToDelete); void deleteEvent(const Event &eventToDelete); std::vector> *events(); std::vector> *tasks(); const Date &getDate() const; Event *getEventById(int eventId); BaseSource *source(); private: void onChange(); BaseSource *source_; std::vector> events_; std::vector> tasks_; DayData data_; }; } // namespace mirai