/* * 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 "mirai-core/DateTime.h" #include "mirai-core/Event.h" #include "mirai-core/TaskItem.h" #include "using.h" #include #include #include namespace mirai { class BaseResource; struct DayData { Date date; std::vector events; std::vector tasks; }; class Day { public: Day(BaseResource *source, const DayData &data); void setDate(const Date &date); Event *createEvent(const EventData &eventData); TaskItem *createTask(const TaskItemData &taskData); void deleteTask(const TaskItem &taskToDelete); void deleteEvent(const Event &eventToDelete); std::vector> *events(); std::vector> *tasks(); const Date &getDate() const; Event *getEventById(int eventId) { for (auto &event : events_) { if (event->id() == eventId) { return event.get(); } } return nullptr; } BaseResource *source() { return source_; } private: void onChange(); BaseResource *source_; std::vector> events_; std::vector> tasks_; DayData data_; }; } // namespace mirai