/* * 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 */ #ifndef MIRAI_TASKSVIEW_H #define MIRAI_TASKSVIEW_H #include "Mirai.h" #include "mirai-core/TaskItem.h" #include "using.h" #include #include #include namespace mirai { struct FilteredEvent { Event *event; std::vector filteredTasks; }; struct FilteredDay { Day *day; std::vector filteredEvents; std::vector filteredTasks; }; class TasksView { public: TasksView(Mirai *mirai); FilteredDay &operator[](int index); size_t count() const; void update(); void addTagFilter(const std::string &tag); void removeTagFilter(const std::string &tag); void addResourceFilter(const std::string &fileName); void removeResourceFilter(const std::string &fileName); void removeFilters(); const Tags &getActiveTagsFilter(); const std::vector &getActiveFilesFilter(); void hideCompletedTasks(bool hide) { shouldHideCompletedTasks_ = hide; } bool shouldHideCompletedTasks() const { return shouldHideCompletedTasks_; } /*auto begin()*/ // TODO REWORK /*{*/ /*return tasksToShow.begin();*/ /*}*/ /*auto begin() const*/ /*{*/ /*return tasksToShow.cbegin();*/ /*}*/ /*auto end() const*/ /*{*/ /*return tasksToShow.cend();*/ /*}*/ /*auto end()*/ /*{*/ /*return tasksToShow.end();*/ /*}*/ private: std::vector filteredDays; Mirai *mirai; Tags tagsFilter; std::vector resourcesFilter; bool shouldHideCompletedTasks_ = true; }; } // namespace mirai #endif