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

View file

@ -26,12 +26,12 @@ class UiState
void setupCallbacks(); void setupCallbacks();
void setupUtilsCallbacks(); 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<slint::SharedString>> tags_;
std::shared_ptr<slint::VectorModel<Day>> days_; std::shared_ptr<slint::VectorModel<ui::Day>> days_;
std::shared_ptr<slint::VectorModel<TaskData>> unscheduledTasks_; 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::Mirai *miraiInstance_;
mirai::View view_; mirai::View view_;

View file

@ -14,20 +14,20 @@ std::string formatZeroPadding(const int number)
return std::to_string(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) + "-" + return std::to_string(date.year) + "-" + formatZeroPadding(date.month) + "-" +
formatZeroPadding(date.day); formatZeroPadding(date.day);
} }
mirai::Date SlintDateToMiraiDate(const Date &date) mirai::Date SlintDateToMiraiDate(const ui::Date &date)
{ {
return mirai::Date( return mirai::Date(
date.year, static_cast<unsigned>(date.month), static_cast<unsigned>(date.day) 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 { return {
.year = date.year, .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}; 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}; return {.hour = time.hour, .minute = time.minute};
} }

View file

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