/* * 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 "TaskItem.h" #include "BaseResource.h" #include "core/utils.h" #include namespace mirai { TaskItem::TaskItem(BaseResource *parent, TaskItemData data) : parent(parent), data(data) { } void TaskItem::markAsDone() { data.state = DONE; onChange(); } void TaskItem::markAsUndone() { data.state = TODO; onChange(); } void TaskItem::setDate(const std::string &date) { this->data.date = date; onChange(); } void TaskItem::setText(const std::string &text) { this->data.text = text; onChange(); } const std::string &TaskItem::getText() const { return data.text; } const TaskItemState &TaskItem::getState() const { return data.state; } const std::string &TaskItem::getDate() const { return data.date; } const std::string &TaskItem::getStartTime() const { return data.startTime; } const std::string &TaskItem::getEndTime() const { return data.endTime; } const Tags &TaskItem::getTags() const { return data.tags; } bool TaskItem::hasDate() const { return isDate(data.date); } bool TaskItem::hasTime() const { return getStartTime() != "" && getEndTime() != ""; } bool TaskItem::hasTag(const std::string &tag) const { return vectorUtils::contains(data.tags, tag); } void TaskItem::onChange() { if (parent) { parent->setDirty(true); } } } // namespace mirai