mirror of
https://codeberg.org/vyn/mirai.git
synced 2025-07-01 17:03:19 +00:00
Add namespace (ui::) for generated C++ Slint code
This commit is contained in:
parent
f45aa601c7
commit
dee7a6fa42
5 changed files with 55 additions and 54 deletions
|
@ -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
|
||||
)
|
||||
|
||||
|
|
|
@ -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 ¤tDate = 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),
|
||||
.events = slintEvents,
|
||||
.tasks = slintDayTasks,
|
||||
.isLate = currentDate < todayDate,
|
||||
.isToday = currentDate == todayDate,
|
||||
.relativeDaysDiff = static_cast<int>(relativeDaysDiff)}
|
||||
);
|
||||
slintDays->push_back(ui::Day{
|
||||
.date = MiraiDateToSlintDate(currentDate),
|
||||
.events = slintEvents,
|
||||
.tasks = slintDayTasks,
|
||||
.isLate = currentDate < todayDate,
|
||||
.isToday = currentDate == todayDate,
|
||||
.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 ¤tEvent = 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()
|
||||
|
|
|
@ -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_;
|
||||
|
|
|
@ -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};
|
||||
}
|
||||
|
|
10
src/Utils.h
10
src/Utils.h
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue