From ab2200ecc1520aecc0f6bda40713539c4e823f4a Mon Sep 17 00:00:00 2001 From: Vyn Date: Tue, 5 Nov 2024 16:55:13 +0100 Subject: [PATCH] Fix wrong source when creating new task or event --- external/mirai-core/include/mirai-core/Mirai.h | 2 +- external/mirai-core/src/Mirai.cpp | 12 ++++++++++++ src/windows/AppWindow/AppWindow.cpp | 5 +++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/external/mirai-core/include/mirai-core/Mirai.h b/external/mirai-core/include/mirai-core/Mirai.h index ce750e1..2a8d9b8 100644 --- a/external/mirai-core/include/mirai-core/Mirai.h +++ b/external/mirai-core/include/mirai-core/Mirai.h @@ -28,13 +28,13 @@ class Mirai void deleteSource(int id); void unloadAllSources(); void save(); - std::optional> getSourceByName(const std::string &name); std::vector> &getSources(); const std::vector &getTags(); // Returns a non owning pointer to the requested resource or nullptr if not found. Source *getSourceById(int id); + Source *getSourceByName(const std::string &name); void onSourceAdded(std::function f); void onSourceEdited(std::function f); diff --git a/external/mirai-core/src/Mirai.cpp b/external/mirai-core/src/Mirai.cpp index d6d0f71..240ae4c 100644 --- a/external/mirai-core/src/Mirai.cpp +++ b/external/mirai-core/src/Mirai.cpp @@ -149,6 +149,18 @@ Source *Mirai::getSourceById(int id) return source->get(); } +Source *Mirai::getSourceByName(const std::string &name) +{ + auto source = std::ranges::find_if(sources_, [&](const std::unique_ptr &source) { + return source->name() == name; + }); + assert(source != sources_.end()); // This should not happen + if (source == sources_.end()) { + return nullptr; + } + return source->get(); +} + void Mirai::onSourceAdded(std::function f) { sourceAdded.registerCallback(f); diff --git a/src/windows/AppWindow/AppWindow.cpp b/src/windows/AppWindow/AppWindow.cpp index 615e44e..85695e1 100644 --- a/src/windows/AppWindow/AppWindow.cpp +++ b/src/windows/AppWindow/AppWindow.cpp @@ -93,6 +93,11 @@ std::optional stringToDate(const std::string &dateStr) void AppWindow::setupCallbacks() { + models().on_get_source_id_from_name([&](slint::SharedString name) { + auto source = miraiInstance_->getSourceByName(std::string(name)); + assert(source); + return source->id; + }); miraiInstance_->onSourceAdded([&](mirai::Source *source) { refreshModels(); });