/* * 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 */ #include "Mirai.h" #include "TaskItem.h" #include namespace mirai { void Mirai::loadFile(const std::string& path) { auto tasksFile = TodoMdFormat::readFile(path); files->push_back(std::move(tasksFile)); tags.clear(); for (auto& task : (*files)[0].getTasks()) { for (auto& tag : task->getTags()) { if (std::find(tags.begin(), tags.end(), tag) == tags.end()) { tags.push_back(tag); } } } } void Mirai::save() { for (auto& file : *files) { TodoMdFormat::writeFile(file); } } void Mirai::addTask(TaskItem taskItem) { (*files)[0].addTask(taskItem); for (auto& view : views) { view->update(); } } void Mirai::addTask(std::string text, std::string date) { /*std::time_t t = std::time(nullptr);*/ /*std::tm tm = *std::localtime(&t);*/ /*std::stringstream ssCreationDate;*/ /*ssCreationDate << std::put_time(&tm, "%Y-%m-%d");*/ (*files)[0].addTask(text, date); for (auto& view : views) { view->update(); } } void Mirai::removeTask(const TaskItem* taskItem) { (*files)[0].removeTask(taskItem); for (auto& view : views) { view->update(); } } std::weak_ptr Mirai::getTasks() { auto view = std::make_shared(files); views.push_back(view); return view; } const std::vector& Mirai::getTags() { return tags; } }