Add namespace (ui::) for generated C++ Slint code

This commit is contained in:
Vyn 2024-10-15 16:51:05 +02:00
parent f45aa601c7
commit dee7a6fa42
5 changed files with 55 additions and 54 deletions

View file

@ -44,6 +44,7 @@ target_link_libraries(mirai PRIVATE mirai-core)
slint_target_sources(
mirai ui/appwindow.slint
NAMESPACE ui
LIBRARY_PATHS vynui=${CMAKE_CURRENT_SOURCE_DIR}/external/slint-vynui/index.slint
)

View file

@ -34,18 +34,18 @@
UiState::UiState(mirai::Mirai *miraiInstance) : miraiInstance_(miraiInstance), view_(miraiInstance)
{
sources_ = std::make_shared<slint::VectorModel<Source>>();
days_ = std::make_shared<slint::VectorModel<Day>>();
unscheduledTasks_ = std::make_shared<slint::VectorModel<TaskData>>();
sources_ = std::make_shared<slint::VectorModel<ui::Source>>();
days_ = std::make_shared<slint::VectorModel<ui::Day>>();
unscheduledTasks_ = std::make_shared<slint::VectorModel<ui::TaskData>>();
tags_ = std::make_shared<slint::VectorModel<slint::SharedString>>();
auto sourcesNames = std::make_shared<slint::MapModel<Source, slint::SharedString>>(
auto sourcesNames = std::make_shared<slint::MapModel<ui::Source, slint::SharedString>>(
sources_,
[&](const Source &a) {
[&](const ui::Source &a) {
return a.name;
}
);
mainWindow_->global<Backend>().set_sources(sourcesNames);
mainWindow_->global<ui::Backend>().set_sources(sourcesNames);
view_.setAllSources();
view_.update();
@ -56,7 +56,7 @@ UiState::UiState(mirai::Mirai *miraiInstance) : miraiInstance_(miraiInstance), v
setupCallbacks();
}
std::optional<Date> stringToDate(const std::string &dateStr)
std::optional<ui::Date> stringToDate(const std::string &dateStr)
{
using std::operator""sv;
@ -74,12 +74,12 @@ std::optional<Date> stringToDate(const std::string &dateStr)
auto year = dateSplit[0];
auto month = dateSplit[1];
auto day = dateSplit[2];
return Date{.year = year, .month = month, .day = day};
return ui::Date{.year = year, .month = month, .day = day};
}
void UiState::setupUtilsCallbacks()
{
mainWindow_->global<Backend>().on_format_date([&](const Date &date) {
mainWindow_->global<ui::Backend>().on_format_date([&](const ui::Date &date) {
std::chrono::year_month_day chronoDate{
std::chrono::year(date.year),
std::chrono::month(date.month),
@ -91,7 +91,7 @@ void UiState::setupUtilsCallbacks()
void UiState::setupCallbacks()
{
mainWindow_->global<Backend>().on_task_clicked([&](int sourceId, int taskId) {
mainWindow_->global<ui::Backend>().on_task_clicked([&](int sourceId, int taskId) {
auto source = miraiInstance_->getSourceById(sourceId);
assert(source);
auto task = source->getTaskById(taskId);
@ -101,7 +101,7 @@ void UiState::setupCallbacks()
miraiInstance_->save();
});
mainWindow_->global<Backend>().on_source_clicked([&](int index) {
mainWindow_->global<ui::Backend>().on_source_clicked([&](int index) {
// index with value -1 is equal to no selection, aka "All"
if (index == -1) {
view_.setAllSources();
@ -110,13 +110,13 @@ void UiState::setupCallbacks()
const mirai::Source *source = miraiInstance_->getSourceById(index);
view_.addSource(*source);
}
mainWindow_->global<Backend>().set_default_source_index(index == -1 ? 0 : index);
mainWindow_->global<ui::Backend>().set_default_source_index(index == -1 ? 0 : index);
view_.update();
reloadSources();
reloadTasks();
});
mainWindow_->global<Backend>().on_delete_task_clicked([&](int sourceId, int taskId) {
mainWindow_->global<ui::Backend>().on_delete_task_clicked([&](int sourceId, int taskId) {
auto source = miraiInstance_->getSourceById(sourceId);
assert(source);
auto task = source->getTaskById(taskId);
@ -127,17 +127,17 @@ void UiState::setupCallbacks()
reloadTasks();
});
mainWindow_->global<Backend>().on_toggle_show_completed_tasks([&] {
mainWindow_->global<ui::Backend>().on_toggle_show_completed_tasks([&] {
view_.hideCompletedTasks(!view_.shouldHideCompletedTasks());
view_.update();
reloadTasks();
});
mainWindow_->global<Backend>().set_sources_selected(sources_);
mainWindow_->global<Backend>().set_tags(tags_);
mainWindow_->global<Backend>().set_days(days_);
mainWindow_->global<ui::Backend>().set_sources_selected(sources_);
mainWindow_->global<ui::Backend>().set_tags(tags_);
mainWindow_->global<ui::Backend>().set_days(days_);
mainWindow_->global<Backend>().on_save_task([&](SaveTaskData newTaskData) {
mainWindow_->global<ui::Backend>().on_save_task([&](ui::SaveTaskData newTaskData) {
auto source = miraiInstance_->getSourceById(newTaskData.sourceId);
assert(source);
auto task = source->getTaskById(newTaskData.id);
@ -155,7 +155,7 @@ void UiState::setupCallbacks()
reloadTasks();
});
mainWindow_->global<Backend>().on_create_task([&](NewTaskData newTaskData) {
mainWindow_->global<ui::Backend>().on_create_task([&](ui::NewTaskData newTaskData) {
std::optional<mirai::Date> date = std::nullopt;
if (newTaskData.date.year != 0) {
date = SlintDateToMiraiDate(newTaskData.date);
@ -178,7 +178,7 @@ void UiState::setupCallbacks()
reloadTasks();
});
mainWindow_->global<Backend>().on_delete_event_clicked([&](int sourceId, int eventId) {
mainWindow_->global<ui::Backend>().on_delete_event_clicked([&](int sourceId, int eventId) {
auto source = miraiInstance_->getSourceById(sourceId);
assert(source);
auto event = source->getEventById(eventId);
@ -189,8 +189,8 @@ void UiState::setupCallbacks()
reloadTasks();
});
mainWindow_->global<Backend>().on_create_event([&](NewEventParams newEventParams) {
const Date &date = newEventParams.date;
mainWindow_->global<ui::Backend>().on_create_event([&](ui::NewEventParams newEventParams) {
const ui::Date &date = newEventParams.date;
const std::string dateStr = SlintDateToStdString(date);
auto source = miraiInstance_->getSourceById(newEventParams.sourceId);
@ -205,8 +205,8 @@ void UiState::setupCallbacks()
reloadTasks();
});
mainWindow_->global<Backend>().on_save_event([&](SaveEventParams newEventParams) {
const Date &date = newEventParams.date;
mainWindow_->global<ui::Backend>().on_save_event([&](ui::SaveEventParams newEventParams) {
const ui::Date &date = newEventParams.date;
const std::string dateStr = SlintDateToStdString(date);
auto source = miraiInstance_->getSourceById(newEventParams.sourceId);
assert(source);
@ -243,24 +243,24 @@ void UiState::reloadTasks()
}
auto todayDate = mirai::Date(std::chrono::system_clock::now());
auto dates = view_.getDates();
auto slintDays = std::make_shared<slint::VectorModel<Day>>();
auto slintDays = std::make_shared<slint::VectorModel<ui::Day>>();
for (int dayIndex = 0; dayIndex < dates.size(); ++dayIndex) {
auto &currentDate = dates.at(dayIndex);
auto slintEvents = std::make_shared<slint::VectorModel<Event>>();
auto slintDayTasks = std::make_shared<slint::VectorModel<TaskData>>();
auto slintEvents = std::make_shared<slint::VectorModel<ui::Event>>();
auto slintDayTasks = std::make_shared<slint::VectorModel<ui::TaskData>>();
auto relativeDaysDiff = std::chrono::duration_cast<std::chrono::days>(
std::chrono::sys_days(currentDate.toStdChrono()) -
std::chrono::sys_days(todayDate.toStdChrono())
)
.count();
slintDays->push_back(
Day{.date = MiraiDateToSlintDate(currentDate),
slintDays->push_back(ui::Day{
.date = MiraiDateToSlintDate(currentDate),
.events = slintEvents,
.tasks = slintDayTasks,
.isLate = currentDate < todayDate,
.isToday = currentDate == todayDate,
.relativeDaysDiff = static_cast<int>(relativeDaysDiff)}
);
.relativeDaysDiff = static_cast<int>(relativeDaysDiff)
});
// Day's tasks
const std::vector<mirai::Task> tasksForDate = view_.getTasksForDate(currentDate);
for (int taskIndex = 0; taskIndex < tasksForDate.size(); ++taskIndex) {
@ -277,8 +277,8 @@ void UiState::reloadTasks()
const std::vector<mirai::Event> eventsForDate = view_.getEventsForDate(currentDate);
for (int eventIndex = 0; eventIndex < eventsForDate.size(); ++eventIndex) {
auto &currentEvent = eventsForDate.at(eventIndex);
auto slintTasks = std::make_shared<slint::VectorModel<TaskData>>();
slintEvents->push_back(Event{
auto slintTasks = std::make_shared<slint::VectorModel<ui::TaskData>>();
slintEvents->push_back(ui::Event{
.sourceId = currentEvent.sourceId(),
.id = currentEvent.id(),
.title = slint::SharedString(currentEvent.title()),
@ -299,7 +299,7 @@ void UiState::reloadTasks()
}
}
days_ = slintDays;
mainWindow_->global<Backend>().set_days(days_);
mainWindow_->global<ui::Backend>().set_days(days_);
auto unscheduledTasksView = view_.getUnscheduledTasks();
unscheduledTasks_->clear();
@ -312,7 +312,7 @@ void UiState::reloadTasks()
.checked = task.checked(),
});
}
mainWindow_->global<Backend>().set_unscheduled_tasks(unscheduledTasks_);
mainWindow_->global<ui::Backend>().set_unscheduled_tasks(unscheduledTasks_);
}
void UiState::reloadSources()
@ -326,7 +326,7 @@ void UiState::reloadSources()
.selected = isSourceSelected && !noSourceSelected}
);
}
mainWindow_->global<Backend>().set_no_source_selected(noSourceSelected);
mainWindow_->global<ui::Backend>().set_no_source_selected(noSourceSelected);
}
void UiState::run()

View file

@ -26,12 +26,12 @@ class UiState
void setupCallbacks();
void setupUtilsCallbacks();
std::shared_ptr<slint::VectorModel<Source>> sources_;
std::shared_ptr<slint::VectorModel<ui::Source>> sources_;
std::shared_ptr<slint::VectorModel<slint::SharedString>> tags_;
std::shared_ptr<slint::VectorModel<Day>> days_;
std::shared_ptr<slint::VectorModel<TaskData>> unscheduledTasks_;
std::shared_ptr<slint::VectorModel<ui::Day>> days_;
std::shared_ptr<slint::VectorModel<ui::TaskData>> unscheduledTasks_;
slint::ComponentHandle<AppWindow> mainWindow_ = AppWindow::create();
slint::ComponentHandle<ui::AppWindow> mainWindow_ = ui::AppWindow::create();
mirai::Mirai *miraiInstance_;
mirai::View view_;

View file

@ -14,20 +14,20 @@ std::string formatZeroPadding(const int number)
return std::to_string(number);
}
std::string SlintDateToStdString(const Date &date)
std::string SlintDateToStdString(const ui::Date &date)
{
return std::to_string(date.year) + "-" + formatZeroPadding(date.month) + "-" +
formatZeroPadding(date.day);
}
mirai::Date SlintDateToMiraiDate(const Date &date)
mirai::Date SlintDateToMiraiDate(const ui::Date &date)
{
return mirai::Date(
date.year, static_cast<unsigned>(date.month), static_cast<unsigned>(date.day)
);
}
Date MiraiDateToSlintDate(const mirai::Date &date)
ui::Date MiraiDateToSlintDate(const mirai::Date &date)
{
return {
.year = date.year,
@ -36,12 +36,12 @@ Date MiraiDateToSlintDate(const mirai::Date &date)
};
}
Time MiraiTimeToSlintTime(const mirai::Time &time)
ui::Time MiraiTimeToSlintTime(const mirai::Time &time)
{
return {.hour = time.hour, .minute = time.minute, .second = 0};
}
mirai::Time SlintTimeToMiraiTime(const Time &time)
mirai::Time SlintTimeToMiraiTime(const ui::Time &time)
{
return {.hour = time.hour, .minute = time.minute};
}

View file

@ -11,8 +11,8 @@
#include <string>
std::string formatZeroPadding(const int number);
std::string SlintDateToStdString(const Date &date);
mirai::Date SlintDateToMiraiDate(const Date &date);
Date MiraiDateToSlintDate(const mirai::Date &date);
Time MiraiTimeToSlintTime(const mirai::Time &time);
mirai::Time SlintTimeToMiraiTime(const Time &time);
std::string SlintDateToStdString(const ui::Date &date);
mirai::Date SlintDateToMiraiDate(const ui::Date &date);
ui::Date MiraiDateToSlintDate(const mirai::Date &date);
ui::Time MiraiTimeToSlintTime(const mirai::Time &time);
mirai::Time SlintTimeToMiraiTime(const ui::Time &time);