From 39165b31a5dd72d61d81ab4ead0966168094844b Mon Sep 17 00:00:00 2001
From: Raul Radu <raul.radu@mail.polimi.it>
Date: Wed, 24 Jan 2024 21:27:49 +0100
Subject: [PATCH] [Modules] Fixed wrong Module class design

- Changed replaceMe function to use normal pointers as oldModule.
    I could not use shared_ptr because I cannot give a shared_ptr of a
    module whithin the module.
- Used new SkywardHubCore method to add menu actions
---
 src/shared/Modules/Module.cpp | 9 ++-------
 src/shared/Modules/Module.h   | 3 +--
 2 files changed, 3 insertions(+), 9 deletions(-)

diff --git a/src/shared/Modules/Module.cpp b/src/shared/Modules/Module.cpp
index 57d452ab..a3474ea5 100644
--- a/src/shared/Modules/Module.cpp
+++ b/src/shared/Modules/Module.cpp
@@ -55,9 +55,7 @@ Module::Module(ModuleId id) : id(id)
 
                     // Load hub actions
                     menu.addSeparator();
-                    menu.addActions(
-                        SkywardHubCore::getInstance().getHubMenuActions());
-
+                    SkywardHubCore::getInstance().addActionsToMenu(menu);
                     menu.exec(mapToGlobal(pos));
                 });
     }
@@ -93,10 +91,7 @@ void Module::onReplaceMe()
         });
 
     auto NewModuleEventEmitter = [this](ModuleId id)
-    {
-        emit replaceMe(std::shared_ptr<Module>(this),
-                       ModulesList::getInstance().instantiateModule(id));
-    };
+    { emit replaceMe(this, ModulesList::getInstance().instantiateModule(id)); };
 
     connect(picker.get(), &ModulesPicker::onModuleSelected, this,
             NewModuleEventEmitter);
diff --git a/src/shared/Modules/Module.h b/src/shared/Modules/Module.h
index f6cdab3d..4766e736 100644
--- a/src/shared/Modules/Module.h
+++ b/src/shared/Modules/Module.h
@@ -57,8 +57,7 @@ public slots:
     // void onCloseMe();
 
 signals:
-    void replaceMe(std::shared_ptr<Module> oldModule,
-                   std::shared_ptr<Module> newModule);
+    void replaceMe(const Module* oldModule, std::shared_ptr<Module> newModule);
     void closeMe(std::shared_ptr<Module> thisModule);
 
 protected:
-- 
GitLab