Remove unused code, move logic from .h to their .cpp, clean some things

This commit is contained in:
Vyn 2024-09-02 11:52:06 +02:00
parent 924e35ecc4
commit cb6c663833
41 changed files with 492 additions and 978 deletions

View file

@ -34,18 +34,18 @@
UiState::UiState(mirai::Mirai *miraiInstance) : miraiInstance_(miraiInstance), view_(miraiInstance)
{
resources_ = std::make_shared<slint::VectorModel<slint::SharedString>>();
sources_ = std::make_shared<slint::VectorModel<slint::SharedString>>();
days_ = std::make_shared<slint::VectorModel<Day>>();
tags_ = std::make_shared<slint::VectorModel<slint::SharedString>>();
taskEditWindow_->global<Backend>().set_resources(resources_);
taskEditWindow_->global<Backend>().set_tags(tags_);
eventWindow_->global<Backend>().set_resources(resources_);
taskWindow_->global<Backend>().set_sources(sources_);
taskWindow_->global<Backend>().set_tags(tags_);
eventWindow_->global<Backend>().set_sources(sources_);
eventWindow_->global<Backend>().set_tags(tags_);
view_.update();
reloadResources();
reloadSources();
reloadTags();
reloadTasks();
@ -73,6 +73,59 @@ std::optional<Date> stringToDate(const std::string &dateStr)
return Date{.year = year, .month = month, .day = day};
}
void UiState::setupTaskWindowCallbacks()
{
taskWindow_->on_save([&](SaveTaskData newTaskData) {
auto source = miraiInstance_->getSourceById(newTaskData.sourceId);
assert(source);
auto task = source->getTaskById(newTaskData.id);
assert(task);
const Date &date = newTaskData.date;
const std::string dateStr = SlintDateToStdString(date);
auto taskData =
mirai::TodoMdFormat::stringToTask("- [ ] " + std::string(newTaskData.title), dateStr);
task->setText(taskData.text);
if (task->day()->getDate() != SlintDateToMiraiDate(date)) {
auto newDate = source->day(SlintDateToMiraiDate(date));
newDate->createTask({
.text = taskData.text,
.state = task->getState(),
.tags = taskData.tags,
});
auto oldDate = task->day();
source->deleteTask(*task);
}
miraiInstance_->save();
view_.update();
reloadTasks();
taskWindow_->hide();
});
taskWindow_->on_create([&](NewTaskData newTaskData) {
const Date &date = newTaskData.date;
const std::string dateStr = SlintDateToStdString(date);
auto source = miraiInstance_->getSourceById(newTaskData.sourceId);
auto task =
mirai::TodoMdFormat::stringToTask("- [ ] " + std::string(newTaskData.title), dateStr);
if (newTaskData.eventId == -1) {
auto day = source->day(SlintDateToMiraiDate(date));
assert(day);
day->createTask(task);
} else {
auto event = source->getEventById(newTaskData.eventId);
assert(event);
event->createTask(task);
}
miraiInstance_->save();
view_.update();
reloadTasks();
taskWindow_->hide();
});
}
void UiState::setupEventWindowCallbacks()
{
mainWindow_->global<Backend>().on_open_new_event_form([&]() {
@ -92,11 +145,11 @@ void UiState::setupEventWindowCallbacks()
});
mainWindow_->global<Backend>().on_open_edit_event_form([&](int sourceId, int eventId) {
auto resource = miraiInstance_->getResourceById(sourceId);
assert(resource);
auto event = resource->getEventById(eventId);
auto source = miraiInstance_->getSourceById(sourceId);
assert(source);
auto event = source->getEventById(eventId);
assert(event);
eventWindow_->global<Backend>().set_resources(resources_);
eventWindow_->global<Backend>().set_sources(sources_);
eventWindow_->global<Backend>().set_tags(tags_);
eventWindow_->set_sourceId(sourceId);
@ -109,9 +162,9 @@ void UiState::setupEventWindowCallbacks()
});
mainWindow_->global<Backend>().on_delete_event_clicked([&](int sourceId, int eventId) {
auto resource = miraiInstance_->getResourceById(sourceId);
assert(resource);
auto event = resource->getEventById(eventId);
auto source = miraiInstance_->getSourceById(sourceId);
assert(source);
auto event = source->getEventById(eventId);
assert(event);
auto day = event->day();
assert(day);
@ -124,9 +177,9 @@ void UiState::setupEventWindowCallbacks()
eventWindow_->on_create([&](NewEventParams newEventParams) {
const Date &date = newEventParams.date;
const std::string dateStr = SlintDateToStdString(date);
auto resource = miraiInstance_->getResourceById(newEventParams.sourceId);
auto source = miraiInstance_->getSourceById(newEventParams.sourceId);
auto day = resource->day(SlintDateToMiraiDate(date));
auto day = source->day(SlintDateToMiraiDate(date));
day->createEvent({
.description = std::string(newEventParams.title),
.date = SlintDateToMiraiDate(newEventParams.date),
@ -142,9 +195,9 @@ void UiState::setupEventWindowCallbacks()
eventWindow_->on_save([&](SaveEventParams newEventParams) {
const Date &date = newEventParams.date;
const std::string dateStr = SlintDateToStdString(date);
auto resource = miraiInstance_->getResourceById(newEventParams.sourceId);
assert(resource);
auto event = resource->getEventById(newEventParams.id);
auto source = miraiInstance_->getSourceById(newEventParams.sourceId);
assert(source);
auto event = source->getEventById(newEventParams.id);
assert(event);
event->setText(std::string(newEventParams.title));
event->setStartTime(SlintTimeToMiraiTime(newEventParams.startsAt));
@ -174,22 +227,22 @@ void UiState::setupUtilsCallbacks()
void UiState::setupCallbacks()
{
mainWindow_->global<Backend>().on_task_clicked([&](int sourceId, int taskId) {
auto resource = miraiInstance_->getResourceById(sourceId);
assert(resource);
auto task = resource->getTaskById(taskId);
auto source = miraiInstance_->getSourceById(sourceId);
assert(source);
auto task = source->getTaskById(taskId);
assert(task);
task->getState() == mirai::DONE ? task->markAsUndone() : task->markAsDone();
miraiInstance_->save();
});
mainWindow_->global<Backend>().on_source_clicked([&](int index) {
const auto &source = miraiInstance_->getResourceById(index);
const auto &source = miraiInstance_->getSourceById(index);
const auto &sourceName = source->getName();
if (std::ranges::find(view_.getActiveFilesFilter(), sourceName) ==
view_.getActiveFilesFilter().end()) {
view_.addResourceFilter(sourceName);
view_.addSourceFilter(sourceName);
} else {
view_.removeResourceFilter(sourceName);
view_.removeSourceFilter(sourceName);
}
view_.update();
reloadTasks();
@ -208,110 +261,58 @@ void UiState::setupCallbacks()
});
mainWindow_->global<Backend>().on_delete_task_clicked([&](int sourceId, int taskId) {
auto resource = miraiInstance_->getResourceById(sourceId);
assert(resource);
auto task = resource->getTaskById(taskId);
auto source = miraiInstance_->getSourceById(sourceId);
assert(source);
auto task = source->getTaskById(taskId);
assert(task);
resource->deleteTask(*task);
source->deleteTask(*task);
miraiInstance_->save();
view_.update();
reloadTasks();
});
mainWindow_->global<Backend>().on_open_edit_task_form([&](int sourceId, int taskId) {
auto resource = miraiInstance_->getResourceById(sourceId);
assert(resource);
auto task = resource->getTaskById(taskId);
auto source = miraiInstance_->getSourceById(sourceId);
assert(source);
auto task = source->getTaskById(taskId);
assert(task);
taskEditWindow_->set_taskResourceIndex(sourceId);
taskEditWindow_->set_taskId(task->id());
taskEditWindow_->set_taskTitle(slint::SharedString(task->getText()));
taskEditWindow_->set_taskDate(MiraiDateToSlintDate(task->day()->getDate()));
taskWindow_->set_taskSourceIndex(sourceId);
taskWindow_->set_taskId(task->id());
taskWindow_->set_taskTitle(slint::SharedString(task->getText()));
taskWindow_->set_taskDate(MiraiDateToSlintDate(task->day()->getDate()));
taskEditWindow_->on_save([&](SaveTaskData newTaskData) {
auto resource = miraiInstance_->getResourceById(newTaskData.sourceId);
assert(resource);
auto task = resource->getTaskById(newTaskData.id);
assert(task);
const Date &date = newTaskData.date;
const std::string dateStr = SlintDateToStdString(date);
auto taskData = mirai::TodoMdFormat::stringToTask(
"- [ ] " + std::string(newTaskData.title), dateStr
);
task->setText(taskData.text);
if (task->day()->getDate() != SlintDateToMiraiDate(date)) {
auto newDate = resource->day(SlintDateToMiraiDate(date));
newDate->createTask({
.text = taskData.text,
.state = task->getState(),
.tags = taskData.tags,
});
auto oldDate = task->day();
resource->deleteTask(*task);
}
miraiInstance_->save();
view_.update();
reloadTasks();
taskEditWindow_->hide();
});
taskEditWindow_->show();
taskWindow_->show();
});
mainWindow_->global<Backend>().on_open_new_task_form([&](OpenNewTaskFormParams params) {
taskEditWindow_->global<Backend>().set_resources(resources_);
taskEditWindow_->global<Backend>().set_tags(tags_);
taskWindow_->global<Backend>().set_sources(sources_);
taskWindow_->global<Backend>().set_tags(tags_);
auto todayDate = std::chrono::year_month_day{
std::chrono::floor<std::chrono::days>(std::chrono::system_clock::now())
};
taskEditWindow_->set_taskId(-1);
taskEditWindow_->set_eventId(params.eventId);
taskEditWindow_->set_taskResourceIndex(
params.eventSourceId == -1 ? 0 : params.eventSourceId
);
taskEditWindow_->set_taskTitle("");
taskWindow_->set_taskId(-1);
taskWindow_->set_eventId(params.eventId);
taskWindow_->set_taskSourceIndex(params.eventSourceId == -1 ? 0 : params.eventSourceId);
taskWindow_->set_taskTitle("");
if (params.eventId == -1) {
taskEditWindow_->set_taskDate({
taskWindow_->set_taskDate({
.year = static_cast<int>(todayDate.year()),
// Try to directly use `unsigned`
.month = static_cast<int>(static_cast<unsigned>(todayDate.month())),
.day = static_cast<int>(static_cast<unsigned>(todayDate.day())),
});
} else {
auto resource = miraiInstance_->getResourceById(params.eventSourceId);
assert(resource);
auto event = resource->getEventById(params.eventId);
auto source = miraiInstance_->getSourceById(params.eventSourceId);
assert(source);
auto event = source->getEventById(params.eventId);
assert(event);
taskEditWindow_->set_taskDate(MiraiDateToSlintDate(event->getDate()));
taskWindow_->set_taskDate(MiraiDateToSlintDate(event->getDate()));
}
taskEditWindow_->on_create([&](NewTaskData newTaskData) {
const Date &date = newTaskData.date;
const std::string dateStr = SlintDateToStdString(date);
auto resource = miraiInstance_->getResourceById(newTaskData.sourceId);
auto task = mirai::TodoMdFormat::stringToTask(
"- [ ] " + std::string(newTaskData.title), dateStr
);
if (newTaskData.eventId == -1) {
auto day = resource->day(SlintDateToMiraiDate(date));
assert(day);
day->createTask(task);
} else {
auto event = resource->getEventById(newTaskData.eventId);
assert(event);
event->createTask(task);
}
miraiInstance_->save();
view_.update();
reloadTasks();
taskEditWindow_->hide();
});
taskEditWindow_->show();
taskWindow_->show();
});
mainWindow_->global<Backend>().on_toggle_show_completed_tasks([&] {
@ -320,10 +321,11 @@ void UiState::setupCallbacks()
reloadTasks();
});
mainWindow_->global<Backend>().set_resources(resources_);
mainWindow_->global<Backend>().set_sources(sources_);
mainWindow_->global<Backend>().set_tags(tags_);
mainWindow_->global<Backend>().set_visible_tasks(days_);
setupTaskWindowCallbacks();
setupEventWindowCallbacks();
setupUtilsCallbacks();
}
@ -341,7 +343,7 @@ stdToSlintStringVector(const std::vector<std::string> &stdVector)
void UiState::reloadTasks()
{
days_->clear();
if (miraiInstance_->getResources().size() == 0) {
if (miraiInstance_->getSources().size() == 0) {
return;
}
auto todayDate = mirai::Date(std::chrono::system_clock::now());
@ -411,11 +413,11 @@ void UiState::reloadTasks()
mainWindow_->global<Backend>().set_visible_tasks(days_);
}
void UiState::reloadResources()
void UiState::reloadSources()
{
resources_->clear();
for (const auto &resource : miraiInstance_->getResources()) {
resources_->push_back(slint::SharedString(resource->getName()));
sources_->clear();
for (const auto &source : miraiInstance_->getSources()) {
sources_->push_back(slint::SharedString(source->getName()));
}
}