From 5547ff6d2bb22e0e28e3326f18e56eb8050de9f6 Mon Sep 17 00:00:00 2001 From: Green Sky Date: Wed, 2 Aug 2023 20:58:16 +0200 Subject: [PATCH] also scen media on message creation --- src/media_meta_info_loader.cpp | 60 ++++++++++++++++++---------------- src/media_meta_info_loader.hpp | 2 ++ 2 files changed, 34 insertions(+), 28 deletions(-) diff --git a/src/media_meta_info_loader.cpp b/src/media_meta_info_loader.cpp index 31f78542..5f6838cf 100644 --- a/src/media_meta_info_loader.cpp +++ b/src/media_meta_info_loader.cpp @@ -9,35 +9,18 @@ #include #include -MediaMetaInfoLoader::MediaMetaInfoLoader(RegistryMessageModel& rmm) : _rmm(rmm) { - // HACK: make them be added externally? - _image_loaders.push_back(std::make_unique()); - _image_loaders.push_back(std::make_unique()); - _image_loaders.push_back(std::make_unique()); - - _rmm.subscribe(this, RegistryMessageModel_Event::message_construct); - _rmm.subscribe(this, RegistryMessageModel_Event::message_updated); -} - -MediaMetaInfoLoader::~MediaMetaInfoLoader(void) { -} - -bool MediaMetaInfoLoader::onEvent(const Message::Events::MessageConstruct& e) { - return false; -} - -bool MediaMetaInfoLoader::onEvent(const Message::Events::MessageUpdated& e) { - if (e.e.any_of()) { - return false; +void MediaMetaInfoLoader::handleMessage(const Message3Handle& m) { + if (m.any_of()) { + return; } - if (!e.e.all_of()) { - return false; + if (!m.all_of()) { + return; } - const auto& fil = e.e.get(); + const auto& fil = m.get(); if (fil.file_list.size() != 1) { - return false; + return; } std::ifstream file(fil.file_list.front(), std::ios::binary); @@ -60,25 +43,46 @@ bool MediaMetaInfoLoader::onEvent(const Message::Events::MessageUpdated& e) { continue; } - e.e.emplace(res.width, res.height); + m.emplace(res.width, res.height); could_load = true; std::cout << "MMIL loaded image info " << fil.file_list.front() << "\n"; - _rmm.throwEventUpdate(e.e); + _rmm.throwEventUpdate(m); break; } if (!could_load) { - e.e.emplace(); + m.emplace(); std::cout << "MMIL loading failed image info " << fil.file_list.front() << "\n"; - _rmm.throwEventUpdate(e.e); + _rmm.throwEventUpdate(m); } } +} +MediaMetaInfoLoader::MediaMetaInfoLoader(RegistryMessageModel& rmm) : _rmm(rmm) { + // HACK: make them be added externally? + _image_loaders.push_back(std::make_unique()); + _image_loaders.push_back(std::make_unique()); + _image_loaders.push_back(std::make_unique()); + + _rmm.subscribe(this, RegistryMessageModel_Event::message_construct); + _rmm.subscribe(this, RegistryMessageModel_Event::message_updated); +} + +MediaMetaInfoLoader::~MediaMetaInfoLoader(void) { +} + +bool MediaMetaInfoLoader::onEvent(const Message::Events::MessageConstruct& e) { + handleMessage(e.e); + return false; +} + +bool MediaMetaInfoLoader::onEvent(const Message::Events::MessageUpdated& e) { + handleMessage(e.e); return false; } diff --git a/src/media_meta_info_loader.hpp b/src/media_meta_info_loader.hpp index 26b1e8f5..0ff30acb 100644 --- a/src/media_meta_info_loader.hpp +++ b/src/media_meta_info_loader.hpp @@ -22,6 +22,8 @@ class MediaMetaInfoLoader : public RegistryMessageModelEventI { std::vector> _image_loaders; + void handleMessage(const Message3Handle& m); + public: MediaMetaInfoLoader(RegistryMessageModel& rmm); virtual ~MediaMetaInfoLoader(void);