From 779a21b0089d73d392b110d3ab9fc617754fd77e Mon Sep 17 00:00:00 2001
From: Davide Rosato <73779437+DavideRosato99@users.noreply.github.com>
Date: Sat, 25 Feb 2023 20:38:48 +0100
Subject: [PATCH] First commit: RefuelingVisualizer added as an empty module

---
 SkywardHub.pro                                |  3 +
 src/shared/Modules/ModuleInfo.h               |  1 +
 src/shared/Modules/ModulesList.cpp            |  7 ++
 .../RefuelingVisualizer.cpp                   | 57 +++++++++++
 .../RefuelingVisualizer/RefuelingVisualizer.h | 54 +++++++++++
 .../RefuelingVisualizer.ui                    | 95 +++++++++++++++++++
 6 files changed, 217 insertions(+)
 create mode 100644 src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.cpp
 create mode 100644 src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.h
 create mode 100644 src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.ui

diff --git a/SkywardHub.pro b/SkywardHub.pro
index 75586e3a..27a4769f 100644
--- a/SkywardHub.pro
+++ b/SkywardHub.pro
@@ -33,6 +33,7 @@ SOURCES += \
     src/shared/Modules/Graph/Graph.cpp \
     src/shared/Modules/Test/TestModule.cpp \
     src/shared/Modules/ModulesList.cpp \
+    src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.cpp \
     src/shared/Modules/Splitter/Splitter.cpp \
     src/shared/Modules/DefaultModule/DefaultModule.cpp \
     src/shared/Modules/CommandPad/CommandPad.cpp \
@@ -87,6 +88,7 @@ HEADERS += \
     src/shared/Modules/MainStateViewer/MainStateViewer.h \
     src/shared/Modules/PayloadStateViewer/PayloadStatesList.h \
     src/shared/Modules/PayloadStateViewer/PayloadStateViewer.h \
+    src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.h \
     src/shared/Modules/FileStream/FileStreamModule.h \
     src/shared/Modules/Graph/Graph.h \
     src/shared/Modules/Test/TestModule.h \
@@ -144,6 +146,7 @@ FORMS += \
     src/shared/Modules/MainWindow/Window.ui \
     src/shared/Components/ModulesPicker/ModulesPicker.ui \
     src/shared/Components/SaveConfigurationDialog/SaveConfigurationDialog.ui \
+    src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.ui \
 
 # Default rules for deployment.
 qnx: target.path = /tmp/$${TARGET}/bin
diff --git a/src/shared/Modules/ModuleInfo.h b/src/shared/Modules/ModuleInfo.h
index c28dad47..6dd058ad 100644
--- a/src/shared/Modules/ModuleInfo.h
+++ b/src/shared/Modules/ModuleInfo.h
@@ -25,6 +25,7 @@ class Module;
 enum ModuleId
 {
     EMPTY,
+    REFUELING_VISUALIZER,
     SPLITTER,
     COMMANDPAD,
     COMPACT_COMMAND_PAD,
diff --git a/src/shared/Modules/ModulesList.cpp b/src/shared/Modules/ModulesList.cpp
index 90442806..056f12bd 100644
--- a/src/shared/Modules/ModulesList.cpp
+++ b/src/shared/Modules/ModulesList.cpp
@@ -38,6 +38,7 @@
 #include <Modules/TimerController/TimerControllerModule.h>
 #include <Modules/ValuesConverterViewer/ValuesConverterViewerModule.h>
 #include <Modules/ValvesViewer/ValvesViewer.h>
+#include <Modules/RefuelingVisualizer/RefuelingVisualizer.h>
 
 void ModulesList::createModuleList()
 {
@@ -151,6 +152,12 @@ void ModulesList::createModuleList()
     valvesViewer.setFactory([]() { return new ValvesViewer(); });
     valvesViewer.addModuleSourceFiles("Modules/ValvesViewer/");
     addModuleInfo(valvesViewer);
+    
+    ModuleInfo refuelingVisualizer(ModuleId::REFUELING_VISUALIZER,
+                                "RefuelingVisualizer", ModuleCategory::DATAVISUAL);
+    refuelingVisualizer.setFactory([]() { return new RefuelingVisualizer(); });
+    tabs.addModuleSourceFiles("Modules/RefuelingVisualizer/");
+    modulesInfo.append(refuelingVisualizer);
 }
 
 // ____________________________________________________________________________________________
diff --git a/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.cpp b/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.cpp
new file mode 100644
index 00000000..0da82584
--- /dev/null
+++ b/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.cpp
@@ -0,0 +1,57 @@
+/*
+ * This file is part of Skyward Hub.
+ *
+ * Skyward Hub is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later
+ * version.
+ *
+ * Skyward Hub is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * Skyward Hub. If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "RefuelingVisualizer.h"
+
+#include <Core/ModulesManager/ModulesManager.h>
+
+#include <QAction>
+#include <QMessageBox>
+#include <QPoint>
+
+#include "Components/ContextMenuSeparator/ContextMenuSeparator.h"
+#include "ui_RefuelingVisualizer.h"
+
+RefuelingVisualizer::RefuelingVisualizer() : DefaultModule(), ui(new Ui::RefuelingVisualizer)
+{
+    ui->setupUi(this);
+    defaultContextMenuSetup();
+    connectUiSlots();
+}
+
+RefuelingVisualizer::~RefuelingVisualizer() { delete ui; }
+
+void RefuelingVisualizer::connectUiSlots()
+{
+    connect(ui->selectPanel_button, &QPushButton::clicked, this,
+            &RefuelingVisualizer::onSelectPanelClick);
+}
+
+void RefuelingVisualizer::onSelectPanelClick() { onReplaceClicked(); }
+
+QWidget* RefuelingVisualizer::toWidget() { return this; }
+
+XmlObject RefuelingVisualizer::toXmlObject()
+{
+    return XmlObject(getName(ModuleId::EMPTY));
+}
+
+void RefuelingVisualizer::fromXmlObject(const XmlObject& xmlObject)
+{
+    Q_UNUSED(xmlObject);
+}
diff --git a/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.h b/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.h
new file mode 100644
index 00000000..bfcade2d
--- /dev/null
+++ b/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.h
@@ -0,0 +1,54 @@
+/*
+ * This file is part of Skyward Hub.
+ *
+ * Skyward Hub is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later
+ * version.
+ *
+ * Skyward Hub is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * Skyward Hub. If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
+#pragma once
+
+#include <Core/Module/Module.h>
+#include <Modules/DefaultModule/DefaultModule.h>
+
+#include <QMenu>
+#include <QSharedPointer>
+#include <QWidget>
+
+namespace Ui
+{
+class RefuelingVisualizer;
+}
+
+class RefuelingVisualizer : public DefaultModule
+{
+    Q_OBJECT
+
+public:
+    explicit RefuelingVisualizer();
+    ~RefuelingVisualizer() override;
+
+    QWidget* toWidget() override;
+
+    XmlObject toXmlObject() override;
+    void fromXmlObject(const XmlObject& xmlObject) override;
+
+protected:
+    void connectUiSlots();
+
+protected slots:
+    void onSelectPanelClick();
+
+private:
+    Ui::RefuelingVisualizer* ui;
+};
diff --git a/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.ui b/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.ui
new file mode 100644
index 00000000..03de792d
--- /dev/null
+++ b/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.ui
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>RefuelingVisualizer</class>
+ <widget class="QWidget" name="RefuelingVisualizer">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>448</width>
+    <height>233</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="1" column="0">
+    <widget class="QLabel" name="label">
+     <property name="text">
+      <string>This is an Empty panel.
+In order to select a panel click the following button</string>
+     </property>
+     <property name="alignment">
+      <set>Qt::AlignCenter</set>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="0">
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <item>
+      <spacer name="horizontalSpacer">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="selectPanel_button">
+       <property name="text">
+        <string>Select Panel</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer name="horizontalSpacer_2">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+   <item row="0" column="0">
+    <spacer name="verticalSpacer">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>20</width>
+       <height>40</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="4" column="0">
+    <spacer name="verticalSpacer_2">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>20</width>
+       <height>40</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
-- 
GitLab