From ff35008991fbd3d0799d99110de41b3a1ac19f4d Mon Sep 17 00:00:00 2001
From: Giacomo Caironi <giacomo.caironi@skywarder.eu>
Date: Tue, 26 Apr 2022 22:33:21 +0200
Subject: [PATCH] Finish error displayer

---
 .gitignore                                   |  1 +
 Components/ErrorDisplayer/errordisplayer.cpp | 24 +-------------------
 Components/ErrorDisplayer/errordisplayer.h   | 11 ---------
 Modules/DefaultModule/defaultmodule.cpp      |  4 ++++
 Modules/DefaultModule/defaultmodule.h        |  2 ++
 Modules/MainWindow/window.cpp                |  3 +--
 Modules/MainWindow/window.h                  |  3 ++-
 7 files changed, 11 insertions(+), 37 deletions(-)

diff --git a/.gitignore b/.gitignore
index bc5d335c..99c11f8e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
 SkywardHub.pro.user
 SkywardHub.pro.user.*
 SkywardHub.pro.user.*
+.build
diff --git a/Components/ErrorDisplayer/errordisplayer.cpp b/Components/ErrorDisplayer/errordisplayer.cpp
index 436f9530..79aa960e 100644
--- a/Components/ErrorDisplayer/errordisplayer.cpp
+++ b/Components/ErrorDisplayer/errordisplayer.cpp
@@ -34,26 +34,4 @@ void ErrorDisplayer::removeError(Error* error){
 void ErrorDisplayer::reposition() {
   adjustSize();
   move(parent->width() - width(), parent->height() - height());
-}
-
-
-
-QMap<QObject*, ErrorDisplayer*> ErrorDisplayerProxy::displayers;
-
-ErrorDisplayer *ErrorDisplayerProxy::createErrorDisplayer(QWidget* window) {
-    ErrorDisplayer* displayer =  new ErrorDisplayer(window);
-    ErrorDisplayerProxy::displayers[window] = displayer;
-    return displayer;
-}
-
-ErrorDisplayer *ErrorDisplayerProxy::getErrorDisplayer(QWidget* widget) {
-    QObject* parent = widget;
-    while (!ErrorDisplayerProxy::displayers.contains(parent)){
-      parent = parent->parent();
-    }
-    return ErrorDisplayerProxy::displayers[parent];
-}
-
-void ErrorDisplayerProxy::removeErrorDisplayer(QWidget* window){
-  ErrorDisplayerProxy::displayers.remove(window);
-}
+}
\ No newline at end of file
diff --git a/Components/ErrorDisplayer/errordisplayer.h b/Components/ErrorDisplayer/errordisplayer.h
index 139e1b65..38544ca2 100644
--- a/Components/ErrorDisplayer/errordisplayer.h
+++ b/Components/ErrorDisplayer/errordisplayer.h
@@ -34,15 +34,4 @@ class ErrorDisplayer : public QWidget {
 
 };
 
-class ErrorDisplayerProxy {
-
-  public:
-    static ErrorDisplayer* createErrorDisplayer(QWidget* window);
-    static ErrorDisplayer* getErrorDisplayer(QWidget* widget);
-    static void removeErrorDisplayer(QWidget* window);
-
-  private:
-    static QMap<QObject*, ErrorDisplayer*> displayers;
-};
-
 #endif // ERRORDISPLAYER_H
diff --git a/Modules/DefaultModule/defaultmodule.cpp b/Modules/DefaultModule/defaultmodule.cpp
index 9608e3fd..b5ee6214 100644
--- a/Modules/DefaultModule/defaultmodule.cpp
+++ b/Modules/DefaultModule/defaultmodule.cpp
@@ -103,3 +103,7 @@ Window* DefaultModule::getWindow(){
   }
   return dynamic_cast<Window*>(parent);
 }
+
+void DefaultModule::error(QString title, QString description){
+    getWindow()->errorDisplayer->createError(title, description);
+}
\ No newline at end of file
diff --git a/Modules/DefaultModule/defaultmodule.h b/Modules/DefaultModule/defaultmodule.h
index b68b8cf7..8229cf30 100644
--- a/Modules/DefaultModule/defaultmodule.h
+++ b/Modules/DefaultModule/defaultmodule.h
@@ -35,6 +35,8 @@ class DefaultModule : public QWidget, public Module {
     virtual void onReplaceClicked();
     virtual void onCloseClicked();
 
+    void error(QString title, QString description);
+
   private:
     SkywardHubCoreProxy proxyCore;
     QList<QAction*> menuActions;
diff --git a/Modules/MainWindow/window.cpp b/Modules/MainWindow/window.cpp
index 0f510bef..e9b27986 100644
--- a/Modules/MainWindow/window.cpp
+++ b/Modules/MainWindow/window.cpp
@@ -7,12 +7,11 @@
 
 Window::Window(QWidget *parent) : QWidget(parent), ui(new Ui::Window) {
     ui->setupUi(this);
-    errorDisplayer = ErrorDisplayerProxy::createErrorDisplayer(this);
+    errorDisplayer = new ErrorDisplayer(this);
 }
 
 Window::~Window() {
     delete ui;
-    ErrorDisplayerProxy::removeErrorDisplayer(this);
     delete errorDisplayer;
 }
 
diff --git a/Modules/MainWindow/window.h b/Modules/MainWindow/window.h
index 56e1a65b..762bc896 100644
--- a/Modules/MainWindow/window.h
+++ b/Modules/MainWindow/window.h
@@ -24,6 +24,8 @@ class Window : public QWidget {
 
     void setCentralModule(Module *value);
 
+    ErrorDisplayer* errorDisplayer;
+
   protected:
     void closeEvent(QCloseEvent *event) override;
     void onWidgetDestroyed();
@@ -33,7 +35,6 @@ class Window : public QWidget {
   private:
     Ui::Window *ui;
     Module *centralModule = nullptr;
-    ErrorDisplayer* errorDisplayer;
 };
 
 #endif // WINDOW_H
-- 
GitLab