Fix wrong source when creating new task or event

This commit is contained in:
Vyn 2024-11-05 16:55:13 +01:00
parent 893fcc11e3
commit ab2200ecc1
3 changed files with 18 additions and 1 deletions

View file

@ -28,13 +28,13 @@ class Mirai
void deleteSource(int id);
void unloadAllSources();
void save();
std::optional<std::reference_wrapper<DataProvider>> getSourceByName(const std::string &name);
std::vector<std::unique_ptr<Source>> &getSources();
const std::vector<std::string> &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<void(Source *)> f);
void onSourceEdited(std::function<void(Source *)> f);

View file

@ -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> &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<void(Source *)> f)
{
sourceAdded.registerCallback(f);

View file

@ -93,6 +93,11 @@ std::optional<ui::Date> 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();
});