Update dependencies and adapt code

This commit is contained in:
Vyn 2024-10-27 22:11:11 +01:00
parent f11f4bf1c9
commit a80515ff90
9 changed files with 72 additions and 29 deletions

3
.gitmodules vendored
View file

@ -7,3 +7,6 @@
[submodule "external/selenite"] [submodule "external/selenite"]
path = external/selenite path = external/selenite
url = https://codeberg.org/vyn/selenite.git url = https://codeberg.org/vyn/selenite.git
[submodule "external/evalyte-cpp-common"]
path = external/evalyte-cpp-common
url = https://codeberg.org/vyn/evalyte-cpp-common.git

View file

@ -6,7 +6,6 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_COMPILE_WARNING_AS_ERROR ON) set(CMAKE_COMPILE_WARNING_AS_ERROR ON)
set(CMAKE_BUILD_RPATH_USE_ORIGIN ON) set(CMAKE_BUILD_RPATH_USE_ORIGIN ON)
add_subdirectory(external/slint)
# -- Slint setup # -- Slint setup
#find_package(Slint QUIET) #find_package(Slint QUIET)
#if (NOT Slint_FOUND) #if (NOT Slint_FOUND)
@ -24,28 +23,32 @@ add_subdirectory(external/slint)
#endif (NOT Slint_FOUND) #endif (NOT Slint_FOUND)
# -- End of Slint setup # -- End of Slint setup
add_subdirectory(external/slint)
add_subdirectory(external/selenite/cpp)
add_subdirectory(external/mirai-core) add_subdirectory(external/mirai-core)
add_executable(mirai add_executable(mirai
src/main.cpp src/main.cpp
src/UiState.cpp src/AppWindowBackend.cpp
src/Utils.cpp src/Utils.cpp
) )
target_include_directories(mirai PRIVATE "external/mirai-core/include") target_include_directories(mirai PRIVATE "external/mirai-core/include")
target_include_directories(mirai PRIVATE "external/selenite/cpp/include")
target_include_directories(mirai PRIVATE "external/evalyte-cpp-common/include")
set_property(TARGET mirai PROPERTY SLINT_EMBED_RESOURCES embed-files) set_property(TARGET mirai PROPERTY SLINT_EMBED_RESOURCES embed-files)
target_link_libraries(mirai PRIVATE Slint::Slint) target_link_libraries(mirai PRIVATE Slint::Slint)
target_link_libraries(mirai PRIVATE selenite)
target_include_directories(mirai PRIVATE "external") target_include_directories(mirai PRIVATE "external")
target_link_libraries(mirai PRIVATE mirai-core) target_link_libraries(mirai PRIVATE mirai-core)
slint_target_sources( slint_target_sources(
mirai ui/appwindow.slint mirai ui/AppWindow.slint
NAMESPACE ui NAMESPACE ui
LIBRARY_PATHS selenite=${CMAKE_CURRENT_SOURCE_DIR}/external/selenite/index.slint LIBRARY_PATHS selenite=${CMAKE_CURRENT_SOURCE_DIR}/external/selenite/components/index.slint
) )
# On Windows, copy the Slint DLL next to the application binary so that it's found. # On Windows, copy the Slint DLL next to the application binary so that it's found.

1
external/evalyte-cpp-common vendored Submodule

@ -0,0 +1 @@
Subproject commit b154a3351b89a5962a2bed2feae683b3a8009857

2
external/selenite vendored

@ -1 +1 @@
Subproject commit 65e2a75a09df205a86a09d9dd4f1ca916bb115a3 Subproject commit cbab9dabe784bd3c799d23ead5d2b4d942ec4081

View file

@ -4,35 +4,33 @@
* The license can be found in the LICENSE file or at https://www.gnu.org/licenses/gpl-3.0.txt * The license can be found in the LICENSE file or at https://www.gnu.org/licenses/gpl-3.0.txt
*/ */
#include "UiState.h" #include "AppWindowBackend.h"
#include "SeleniteSetup.h"
#include "Utils.h" #include "Utils.h"
#include "appwindow.h" #include "appwindow.h"
#include "mirai-core/DataProvider.h"
#include "mirai-core/Day.h" #include "mirai-core/Day.h"
#include "mirai-core/Mirai.h" #include "mirai-core/Mirai.h"
#include "slint.h" #include "slint.h"
#include "slint_sharedvector.h"
#include "slint_string.h" #include "slint_string.h"
#include <algorithm>
#include <bits/chrono.h> #include <bits/chrono.h>
#include <cassert> #include <cassert>
#include <charconv> #include <charconv>
#include <chrono> #include <chrono>
#include <cstdio>
#include <cstdlib>
#include <ctime> #include <ctime>
#include <format> #include <format>
#include <iomanip>
#include <iostream> #include <iostream>
#include <iterator>
#include <memory> #include <memory>
#include <optional> #include <optional>
#include <ostream> #include <ostream>
#include <ranges> #include <ranges>
#include <stdexcept>
#include <string> #include <string>
#include <string_view> #include <string_view>
#include <vector> #include <vector>
UiState::UiState(mirai::Mirai *miraiInstance) : miraiInstance_(miraiInstance), view_(miraiInstance) AppWindowBackend::AppWindowBackend(mirai::Mirai *miraiInstance)
: miraiInstance_(miraiInstance), view_(miraiInstance)
{ {
sources_ = std::make_shared<slint::VectorModel<ui::Source>>(); sources_ = std::make_shared<slint::VectorModel<ui::Source>>();
days_ = std::make_shared<slint::VectorModel<ui::Day>>(); days_ = std::make_shared<slint::VectorModel<ui::Day>>();
@ -45,6 +43,13 @@ UiState::UiState(mirai::Mirai *miraiInstance) : miraiInstance_(miraiInstance), v
} }
); );
const auto palette =
selenite::parseJson(std::string(getenv("HOME")) + "/.config/evalyte/theme.json");
if (palette.has_value()) {
std::cerr << "Warning, no evalyte/theme.json found" << std::endl;
setSelenitePalette(mainWindow_, palette.value());
}
mainWindow_->global<ui::Backend>().set_sources(sourcesNames); mainWindow_->global<ui::Backend>().set_sources(sourcesNames);
view_.setAllSources(); view_.setAllSources();
@ -77,7 +82,7 @@ std::optional<ui::Date> stringToDate(const std::string &dateStr)
return ui::Date{.year = year, .month = month, .day = day}; return ui::Date{.year = year, .month = month, .day = day};
} }
void UiState::setupUtilsCallbacks() void AppWindowBackend::setupUtilsCallbacks()
{ {
mainWindow_->global<ui::Backend>().on_format_date([&](const ui::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{
@ -89,7 +94,7 @@ void UiState::setupUtilsCallbacks()
}); });
} }
void UiState::setupCallbacks() void AppWindowBackend::setupCallbacks()
{ {
mainWindow_->global<ui::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);
@ -243,7 +248,7 @@ stdToSlintStringVector(const std::vector<std::string> &stdVector)
return slintVector; return slintVector;
} }
void UiState::reloadTasks() void AppWindowBackend::reloadTasks()
{ {
days_->clear(); days_->clear();
if (miraiInstance_->getSources().size() == 0) { if (miraiInstance_->getSources().size() == 0) {
@ -323,7 +328,7 @@ void UiState::reloadTasks()
mainWindow_->global<ui::Backend>().set_unscheduled_tasks(unscheduledTasks_); mainWindow_->global<ui::Backend>().set_unscheduled_tasks(unscheduledTasks_);
} }
void UiState::reloadSources() void AppWindowBackend::reloadSources()
{ {
sources_->clear(); sources_->clear();
bool noSourceSelected = miraiInstance_->getSources().size() == view_.activeSourceCount(); bool noSourceSelected = miraiInstance_->getSources().size() == view_.activeSourceCount();
@ -337,7 +342,7 @@ void UiState::reloadSources()
mainWindow_->global<ui::Backend>().set_no_source_selected(noSourceSelected); mainWindow_->global<ui::Backend>().set_no_source_selected(noSourceSelected);
} }
void UiState::run() void AppWindowBackend::run()
{ {
mainWindow_->run(); mainWindow_->run();
} }

View file

@ -11,11 +11,11 @@
#include "mirai-core/View.h" #include "mirai-core/View.h"
#include "slint.h" #include "slint.h"
class UiState class AppWindowBackend
{ {
public: public:
UiState(mirai::Mirai *mirai); AppWindowBackend(mirai::Mirai *mirai);
void run(); void run();

30
src/SeleniteSetup.h Normal file
View file

@ -0,0 +1,30 @@
/*
* Mirai. Copyright (C) 2024 Vyn
* This file is licensed under version 3 of the GNU General Public License (GPL-3.0-only)
* The license can be found in the LICENSE file or at https://www.gnu.org/licenses/gpl-3.0.txt
*/
#pragma once
#include "appwindow.h"
#include "selenite/palette.h"
#include "slint_color.h"
slint::Color seleniteColorToSlint(const selenite::Color &color)
{
return slint::Color::from_rgb_uint8(color.r, color.g, color.b);
}
void setSelenitePalette(slint::ComponentHandle<ui::AppWindow> ui, const selenite::Palette &palette)
{
auto &uiPalette = ui->global<ui::Palette>();
uiPalette.set_background(seleniteColorToSlint(palette.background));
uiPalette.set_pane(seleniteColorToSlint(palette.pane));
uiPalette.set_foreground(seleniteColorToSlint(palette.foreground));
uiPalette.set_foreground_hint(seleniteColorToSlint(palette.foregroundHint));
uiPalette.set_control_background(seleniteColorToSlint(palette.background3));
uiPalette.set_control_foreground(seleniteColorToSlint(palette.foreground));
uiPalette.set_card_background(seleniteColorToSlint(palette.background2));
uiPalette.set_accent(seleniteColorToSlint(palette.primary));
}

View file

@ -4,30 +4,30 @@
* The license can be found in the LICENSE file or at https://www.gnu.org/licenses/gpl-3.0.txt * The license can be found in the LICENSE file or at https://www.gnu.org/licenses/gpl-3.0.txt
*/ */
#include "UiState.h" #include "AppWindowBackend.h"
#include "evalyte-cpp-common/config.h"
#include "mirai-core/Config.h" #include "mirai-core/Config.h"
#include "mirai-core/DataProvider.h" #include "mirai-core/DataProvider.h"
#include "mirai-core/MarkdownDataProvider.h" #include "mirai-core/MarkdownDataProvider.h"
#include "mirai-core/Mirai.h" #include "mirai-core/Mirai.h"
#include <algorithm>
#include <cstdlib> #include <cstdlib>
#include <memory> #include <memory>
#include <string> #include <string>
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
mirai::Config config(std::string(getenv("HOME")) + "/.config/mirai/config.json");
mirai::Mirai mirai; mirai::Mirai mirai;
const auto configFilePath = evalyte::createConfigDirectoryPath("mirai") + "/config.json";
mirai::Config config(configFilePath);
for (const auto &sourceFilePath : config.sources()) { for (const auto &sourceFilePath : config.sources()) {
std::unique_ptr<mirai::DataProvider> file = std::unique_ptr<mirai::DataProvider> file =
std::make_unique<mirai::MarkdownDataProvider>(sourceFilePath); std::make_unique<mirai::MarkdownDataProvider>(sourceFilePath);
mirai.loadSource(std::move(file)); mirai.loadSource(std::move(file));
} }
UiState uiState{&mirai}; AppWindowBackend appWindow{&mirai};
uiState.run(); appWindow.run();
return 0; return 0;
} }

View file

@ -1,7 +1,8 @@
import { Backend } from "Backend.slint"; import { Backend } from "Backend.slint";
import { Button, VerticalBox, CheckBox, Palette } from "std-widgets.slint"; import { Button, VerticalBox, CheckBox } from "std-widgets.slint";
import { SideBar } from "./components/SideBar.slint"; import { SideBar } from "./components/SideBar.slint";
import { MainView } from "MainView.slint"; import { MainView } from "MainView.slint";
import { Palette } from "@selenite";
export component AppWindow inherits Window { export component AppWindow inherits Window {
@ -21,4 +22,4 @@ export component AppWindow inherits Window {
} }
export { Backend } // Export to make it visible to the C++ backend export { Backend, Palette } // Export to make it visible to the C++ backend