From d6c781faa2d2393c897805099a0c3ebd31b86712 Mon Sep 17 00:00:00 2001 From: Vyn Date: Mon, 4 Nov 2024 12:36:18 +0100 Subject: [PATCH] Add default path when creating new source --- CMakeLists.txt | 2 ++ external/evalyte-cpp-common | 2 +- external/mirai-core/src/Mirai.cpp | 8 ++++++-- src/AppWindowBackend.cpp | 7 +++++++ src/main.cpp | 5 +++-- ui/components/SideBar.slint | 2 +- ui/windows/AddSourceWindow.slint | 4 ++++ 7 files changed, 24 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6c19acb..083ba41 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,6 +26,7 @@ set(CMAKE_BUILD_RPATH_USE_ORIGIN ON) add_subdirectory(external/slint) add_subdirectory(external/selenite/cpp) add_subdirectory(external/mirai-core) +add_subdirectory(external/evalyte-cpp-common) add_executable(mirai src/main.cpp @@ -41,6 +42,7 @@ set_property(TARGET mirai PROPERTY SLINT_EMBED_RESOURCES embed-files) target_link_libraries(mirai PRIVATE Slint::Slint) target_link_libraries(mirai PRIVATE selenite) +target_link_libraries(mirai PRIVATE evalyte-cpp-common) target_include_directories(mirai PRIVATE "external") target_link_libraries(mirai PRIVATE mirai-core) diff --git a/external/evalyte-cpp-common b/external/evalyte-cpp-common index b154a33..20e766b 160000 --- a/external/evalyte-cpp-common +++ b/external/evalyte-cpp-common @@ -1 +1 @@ -Subproject commit b154a3351b89a5962a2bed2feae683b3a8009857 +Subproject commit 20e766badc8f400ac7db8487486b5e8990cefbbe diff --git a/external/mirai-core/src/Mirai.cpp b/external/mirai-core/src/Mirai.cpp index f82ffbd..bf7830b 100644 --- a/external/mirai-core/src/Mirai.cpp +++ b/external/mirai-core/src/Mirai.cpp @@ -136,10 +136,14 @@ std::vector> &Mirai::getSources() Source *Mirai::getSourceById(int id) { - if (id >= sources_.size()) { + auto source = std::ranges::find_if(sources_, [&](const std::unique_ptr &source) { + return source->id == id; + }); + assert(source != sources_.end()); // This should not happen + if (source == sources_.end()) { return nullptr; } - return sources_.at(id).get(); + return source->get(); } } // namespace mirai diff --git a/src/AppWindowBackend.cpp b/src/AppWindowBackend.cpp index fda3156..9f3ece4 100644 --- a/src/AppWindowBackend.cpp +++ b/src/AppWindowBackend.cpp @@ -8,6 +8,7 @@ #include "AppWindow.h" #include "SeleniteSetup.h" #include "Utils.h" +#include "evalyte-cpp-common/evalyte.h" #include "mirai-core/DataProvider.h" #include "mirai-core/DateTime.h" #include "mirai-core/Day.h" @@ -48,6 +49,10 @@ AppWindowBackend::AppWindowBackend(mirai::Mirai *miraiInstance) } ); + addSourceWindow_->set_default_source_path( + slint::SharedString(evalyte::dataDirectoryPath("mirai") + "/") + ); + const auto palettePath = std::string(getenv("HOME")) + "/.config/evalyte/theme.json"; const auto palette = selenite::parseJson(palettePath); if (palette.has_value()) { @@ -138,6 +143,8 @@ void AppWindowBackend::setupCallbacks() std::string(params.name), std::string(params.type), std::move(file) ); addSourceWindow_->hide(); + view_.setAllSources(); + view_.update(); reloadSources(); reloadTasks(); }); diff --git a/src/main.cpp b/src/main.cpp index 9146d72..dfee9a5 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -5,14 +5,15 @@ */ #include "AppWindowBackend.h" -#include "evalyte-cpp-common/config.h" +#include "evalyte-cpp-common/evalyte.h" #include "mirai-core/Mirai.h" #include #include int main(int argc, char **argv) { - const auto configFilePath = evalyte::createConfigDirectoryPath("mirai") + "/config.json"; + evalyte::createRequiredDirectories("mirai"); + const auto configFilePath = evalyte::configDirectoryPath("mirai") + "/config.json"; mirai::Mirai mirai{configFilePath}; AppWindowBackend appWindow{&mirai}; appWindow.run(); diff --git a/ui/components/SideBar.slint b/ui/components/SideBar.slint index cd71a9b..f698bcd 100644 --- a/ui/components/SideBar.slint +++ b/ui/components/SideBar.slint @@ -41,7 +41,7 @@ export component SideBar inherits Rectangle { text: item.name; text-alignment: left; active: item.selected; - clicked => { Backend.source-clicked(index) } + clicked => { Backend.source-clicked(item.id) } VActionButton { visible: parent.active; icon-svg: Svg.cog; diff --git a/ui/windows/AddSourceWindow.slint b/ui/windows/AddSourceWindow.slint index 32e6907..7dfad1d 100644 --- a/ui/windows/AddSourceWindow.slint +++ b/ui/windows/AddSourceWindow.slint @@ -12,14 +12,18 @@ export component AddSourceWindow inherits Window { default-font-size: 16px; background: Palette.background; + in-out property default-source-path; + VerticalLayout { padding: 16px; spacing: 8px; nameInput := VTextInput { label: "Name"; + text: "todo"; } pathInput := VTextInput { label: "Path"; + text: root.default-source-path + nameInput.text + ".md"; } VButton { text: "Create";