mirror of
https://codeberg.org/vyn/mirai.git
synced 2025-07-02 17:23:20 +00:00
Add Unscheduled tasks
This commit is contained in:
parent
07081bb27b
commit
53b1280115
13 changed files with 134 additions and 12 deletions
|
@ -36,6 +36,7 @@ UiState::UiState(mirai::Mirai *miraiInstance) : miraiInstance_(miraiInstance), v
|
|||
{
|
||||
sources_ = std::make_shared<slint::VectorModel<slint::SharedString>>();
|
||||
days_ = std::make_shared<slint::VectorModel<Day>>();
|
||||
unscheduledTasks_ = std::make_shared<slint::VectorModel<TaskData>>();
|
||||
tags_ = std::make_shared<slint::VectorModel<slint::SharedString>>();
|
||||
|
||||
taskWindow_->global<Backend>().set_sources(sources_);
|
||||
|
@ -86,7 +87,7 @@ void UiState::setupTaskWindowCallbacks()
|
|||
mirai::TodoMdFormat::stringToTask("- [ ] " + std::string(newTaskData.title), dateStr);
|
||||
|
||||
task->setText(taskData.text);
|
||||
if (task->day()->getDate() != SlintDateToMiraiDate(date)) {
|
||||
if (task->day() && task->day()->getDate() != SlintDateToMiraiDate(date)) {
|
||||
auto newDate = source->day(SlintDateToMiraiDate(date));
|
||||
newDate->createTask({
|
||||
.text = taskData.text,
|
||||
|
@ -109,7 +110,9 @@ void UiState::setupTaskWindowCallbacks()
|
|||
auto task =
|
||||
mirai::TodoMdFormat::stringToTask("- [ ] " + std::string(newTaskData.title), dateStr);
|
||||
|
||||
if (newTaskData.eventId == -1) {
|
||||
if (!newTaskData.scheduled) {
|
||||
source->addUnscheduledTask(task);
|
||||
} else if (newTaskData.eventId == -1) {
|
||||
auto day = source->day(SlintDateToMiraiDate(date));
|
||||
assert(day);
|
||||
day->createTask(task);
|
||||
|
@ -280,7 +283,12 @@ void UiState::setupCallbacks()
|
|||
taskWindow_->set_taskSourceIndex(sourceId);
|
||||
taskWindow_->set_taskId(task->id());
|
||||
taskWindow_->set_taskTitle(slint::SharedString(task->getText()));
|
||||
taskWindow_->set_taskDate(MiraiDateToSlintDate(task->day()->getDate()));
|
||||
if (task->day() != nullptr) {
|
||||
taskWindow_->set_scheduled(true);
|
||||
taskWindow_->set_taskDate(MiraiDateToSlintDate(task->day()->getDate()));
|
||||
} else {
|
||||
taskWindow_->set_scheduled(false);
|
||||
}
|
||||
|
||||
taskWindow_->show();
|
||||
});
|
||||
|
@ -411,6 +419,26 @@ void UiState::reloadTasks()
|
|||
}
|
||||
days_ = slintDays;
|
||||
mainWindow_->global<Backend>().set_visible_tasks(days_);
|
||||
|
||||
unscheduledTasks_->clear();
|
||||
for (int taskIndex = 0; taskIndex < view_.filteredUnscheduledTasks().size(); ++taskIndex) {
|
||||
auto &task = view_.filteredUnscheduledTasks().at(taskIndex);
|
||||
std::vector<slint::SharedString> tags;
|
||||
std::transform(
|
||||
task->getTags().begin(), task->getTags().end(), std::back_inserter(tags),
|
||||
[&](const std::string &tag) {
|
||||
return slint::SharedString(tag);
|
||||
}
|
||||
);
|
||||
unscheduledTasks_->push_back({
|
||||
.sourceId = task->source()->id(),
|
||||
.id = task->id(),
|
||||
.title = slint::SharedString(task->getText()),
|
||||
.checked = task->getState() == mirai::DONE,
|
||||
.tags = std::make_shared<slint::VectorModel<slint::SharedString>>(tags),
|
||||
});
|
||||
}
|
||||
mainWindow_->global<Backend>().set_unscheduled_tasks(unscheduledTasks_);
|
||||
}
|
||||
|
||||
void UiState::reloadSources()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue