mirror of
https://codeberg.org/vyn/mirai.git
synced 2025-07-03 01:33:19 +00:00
Remove unused code, move logic from .h to their .cpp, clean some things
This commit is contained in:
parent
924e35ecc4
commit
cb6c663833
41 changed files with 492 additions and 978 deletions
212
src/UiState.cpp
212
src/UiState.cpp
|
@ -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()));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -19,21 +19,22 @@ class UiState
|
|||
|
||||
void run();
|
||||
|
||||
void reloadResources();
|
||||
void reloadSources();
|
||||
void reloadTags();
|
||||
void reloadTasks();
|
||||
|
||||
private:
|
||||
void setupCallbacks();
|
||||
void setupTaskWindowCallbacks();
|
||||
void setupEventWindowCallbacks();
|
||||
void setupUtilsCallbacks();
|
||||
|
||||
std::shared_ptr<slint::VectorModel<slint::SharedString>> resources_;
|
||||
std::shared_ptr<slint::VectorModel<slint::SharedString>> sources_;
|
||||
std::shared_ptr<slint::VectorModel<slint::SharedString>> tags_;
|
||||
std::shared_ptr<slint::VectorModel<Day>> days_;
|
||||
|
||||
slint::ComponentHandle<AppWindow> mainWindow_ = AppWindow::create();
|
||||
slint::ComponentHandle<TaskEdit> taskEditWindow_ = TaskEdit::create();
|
||||
slint::ComponentHandle<TaskWindow> taskWindow_ = TaskWindow::create();
|
||||
slint::ComponentHandle<EventWindow> eventWindow_ = EventWindow::create();
|
||||
|
||||
mirai::Mirai *miraiInstance_;
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
#include "UiState.h"
|
||||
#include "mirai-core/Config.h"
|
||||
#include "mirai-core/Mirai.h"
|
||||
#include "mirai-core/StdFileResource.h"
|
||||
#include "mirai-core/StdFileSource.h"
|
||||
#include <cstdlib>
|
||||
#include <string>
|
||||
|
||||
|
@ -18,10 +18,10 @@ int main(int argc, char **argv)
|
|||
mirai::Mirai mirai;
|
||||
|
||||
for (const auto &sourceFilePath : config.sources()) {
|
||||
auto file = std::make_unique<mirai::StdFileResource>(
|
||||
mirai::BaseFileResourceConstructor{.name = sourceFilePath, .path = sourceFilePath}
|
||||
auto file = std::make_unique<mirai::StdFileSource>(
|
||||
mirai::BaseFileSourceConstructor{.name = sourceFilePath, .path = sourceFilePath}
|
||||
);
|
||||
mirai.loadResource(std::move(file));
|
||||
mirai.loadSource(std::move(file));
|
||||
}
|
||||
|
||||
UiState uiState{&mirai};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue