From 7365cf55589ae8447bd7e7e9c9011c27370fb432 Mon Sep 17 00:00:00 2001
From: Davide Rosato <73779437+DavideRosato99@users.noreply.github.com>
Date: Fri, 24 Mar 2023 19:44:45 +0100
Subject: [PATCH] [RefuelingVisualizer] Added the background and dynamic valve
 images

---
 .../RefuelingButton/RefuelingButton.cpp       |   4 +-
 .../RefuelingVisualizer.cpp                   | 158 +++++++++++-------
 .../RefuelingVisualizer/RefuelingVisualizer.h |   2 +-
 .../RefuelingVisualizerCommandList.h          |   1 +
 .../RefuelingVisualizer/background.png        | Bin 0 -> 68773 bytes
 .../valve_horiz_closed.png                    | Bin 0 -> 2207 bytes
 .../valve_horiz_opened.png                    | Bin 0 -> 2233 bytes
 .../RefuelingVisualizer/valve_vert_closed.png | Bin 0 -> 2408 bytes
 .../RefuelingVisualizer/valve_vert_opened.png | Bin 0 -> 2410 bytes
 9 files changed, 97 insertions(+), 68 deletions(-)
 create mode 100644 src/shared/Modules/RefuelingVisualizer/background.png
 create mode 100644 src/shared/Modules/RefuelingVisualizer/valve_horiz_closed.png
 create mode 100644 src/shared/Modules/RefuelingVisualizer/valve_horiz_opened.png
 create mode 100644 src/shared/Modules/RefuelingVisualizer/valve_vert_closed.png
 create mode 100644 src/shared/Modules/RefuelingVisualizer/valve_vert_opened.png

diff --git a/src/shared/Modules/RefuelingButton/RefuelingButton.cpp b/src/shared/Modules/RefuelingButton/RefuelingButton.cpp
index 3ba7f23f..3c6a8184 100644
--- a/src/shared/Modules/RefuelingButton/RefuelingButton.cpp
+++ b/src/shared/Modules/RefuelingButton/RefuelingButton.cpp
@@ -232,11 +232,11 @@ void RefuelingButton::setupUi()
                     gse.filling_pressure    = 0;
                     gse.vessel_pressure     = 0;
                     gse.arming_state        = 0;
-                    gse.filling_valve_state = 0;
+                    gse.filling_valve_state = 1;
                     gse.venting_valve_state = 0;
                     gse.release_vlave_state = 0;
                     gse.ignition_state      = 0;
-                    gse.tars_state          = 0;
+                    gse.tars_state          = 1;
 
                     mavlink_msg_gse_tm_encode(171, 96, &msg, &gse);
                 }
diff --git a/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.cpp b/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.cpp
index 8c47e7c1..f9974436 100644
--- a/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.cpp
+++ b/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.cpp
@@ -55,17 +55,51 @@ void RefuelingVisualizer::fromXmlObject(const XmlObject& xmlObject)
 
 void RefuelingVisualizer::setupUi()
 {
-    outerLayout = new QHBoxLayout;
+    outerLayout = new QGridLayout;
     outerLayout->setContentsMargins(0, 0, 0, 0);
     outerLayout->setSpacing(0);
 
-    for (auto labelText : RefuelingVisualizerCommandList::commandLabels)
+    // BACKGROUND IMAGES
+    QLabel* background = new QLabel;
+    background->setStyleSheet(
+        "border-image:url(../skywardhub/src/shared/Modules/RefuelingVisualizer/"
+        "background.png) 0 0 0 0;");
+    outerLayout->addWidget(background, 0, 0, 460, 555);
+
+    // VALVES VISUALIZERS
+    QLabel* fillingValveIm = new QLabel;
+    fillingValveIm->setStyleSheet(
+        "border-image:url(../skywardhub/src/shared/Modules/RefuelingVisualizer/"
+        "valve_horiz_closed.png) 0 0 0 0;");
+    outerLayout->addWidget(fillingValveIm, 355, 330, 25, 55);
+
+    QLabel* releaseValveIm = new QLabel;
+    releaseValveIm->setStyleSheet(
+        "border-image:url(../skywardhub/src/shared/Modules/RefuelingVisualizer/"
+        "valve_vert_closed.png) 0 0 0 0;");
+    outerLayout->addWidget(releaseValveIm, 290, 285, 55, 25);
+
+    QLabel* ventingValveIm = new QLabel;
+    ventingValveIm->setStyleSheet(
+        "border-image:url(../skywardhub/src/shared/Modules/RefuelingVisualizer/"
+        "valve_vert_closed.png) 0 0 0 0;");
+    outerLayout->addWidget(ventingValveIm, 100, 104, 55, 25);
+
+    // TARS STATE
+    QLabel* labelTars = new QLabel;
+    labelTars->setText(RefuelingVisualizerCommandList::commandLabels[0]);
+    labelTars->setAlignment(Qt::AlignCenter);
+    labelTars->setContentsMargins(4, 4, 4, 4);
+    outerLayout->addWidget(labelTars, 460, 0, 20, 555);
+
+    // VALVES STATES
+    for (int i = 1; i < 4; i++)
     {
-        QLabel* label = new QLabel;
-        label->setText(labelText);
-        label->setAlignment(Qt::AlignCenter);
-        label->setContentsMargins(4, 4, 4, 4);
-        outerLayout->addWidget(label);
+        QLabel* labelValve = new QLabel;
+        labelValve->setText(RefuelingVisualizerCommandList::commandLabels[i]);
+        labelValve->setAlignment(Qt::AlignCenter);
+        labelValve->setContentsMargins(4, 4, 4, 4);
+        outerLayout->addWidget(labelValve, 480, (i - 1) * 185, 20, 185);
     }
 
     setLayout(outerLayout);
@@ -98,88 +132,82 @@ void RefuelingVisualizer::setFilter(const Filter& newFilter)
 
 void RefuelingVisualizer::onMsgReceived(const Message& msg)
 {
+    uint64_t tarsState = msg.getField("tars_state").getUnsignedInteger();
     uint64_t release = msg.getField("release_vlave_state").getUnsignedInteger();
     uint64_t filling = msg.getField("filling_valve_state").getUnsignedInteger();
     uint64_t venting = msg.getField("venting_valve_state").getUnsignedInteger();
 
     QString baseStyle =
         "border-bottom-width:1px;border-left-width:1px;border-top-width:"
-        "1px;border-radius:0;";
-    QString completedStyle = "background-color:green;" + baseStyle;
-    QString errorStyle     = "background-color:red;" + baseStyle;
+        "1px;border-radius:0;font:bold-large;font-size:16px";
+    QString completedStyle = "background-color:rgb(51,117,17);" + baseStyle;
+    QString errorStyle     = "background-color:rgb(212,6,6);" + baseStyle;
 
-    if (release == 1)
+    if (tarsState == 1)
     {
-        auto label = outerLayout->itemAt(1)->widget();
-        label->setStyleSheet(completedStyle);
+        auto labelTars = outerLayout->itemAt(4)->widget();
+        labelTars->setStyleSheet(completedStyle);
     }
     else
     {
-        auto label = outerLayout->itemAt(1)->widget();
-        label->setStyleSheet(errorStyle);
+        auto labelTars = outerLayout->itemAt(4)->widget();
+        labelTars->setStyleSheet(errorStyle);
     }
 
     if (filling == 1)
     {
-        auto label = outerLayout->itemAt(0)->widget();
-        label->setStyleSheet(completedStyle);
+        auto labelValve = outerLayout->itemAt(5)->widget();
+        labelValve->setStyleSheet(completedStyle);
+        auto fillingValveIm = outerLayout->itemAt(1)->widget();
+        fillingValveIm->setStyleSheet(
+            "border-image:url(../skywardhub/src/shared/Modules/"
+            "RefuelingVisualizer/valve_horiz_opened.png) 0 0 0 0;");
     }
     else
     {
-        auto label = outerLayout->itemAt(0)->widget();
-        label->setStyleSheet(errorStyle);
+        auto labelValve = outerLayout->itemAt(5)->widget();
+        labelValve->setStyleSheet(errorStyle);
+        auto fillingValveIm = outerLayout->itemAt(1)->widget();
+        fillingValveIm->setStyleSheet(
+            "border-image:url(../skywardhub/src/shared/Modules/"
+            "RefuelingVisualizer/valve_horiz_closed.png) 0 0 0 0;");
     }
 
-    if (venting == 1)
+    if (release == 1)
     {
-        auto label = outerLayout->itemAt(2)->widget();
-        label->setStyleSheet(completedStyle);
+        auto labelValve = outerLayout->itemAt(6)->widget();
+        labelValve->setStyleSheet(completedStyle);
+        auto releaseValveIm = outerLayout->itemAt(2)->widget();
+        releaseValveIm->setStyleSheet(
+            "border-image:url(../skywardhub/src/shared/Modules/"
+            "RefuelingVisualizer/valve_vert_opened.png) 0 0 0 0;");
     }
     else
     {
-        auto label = outerLayout->itemAt(2)->widget();
-        label->setStyleSheet(errorStyle);
+        auto labelValve = outerLayout->itemAt(6)->widget();
+        labelValve->setStyleSheet(errorStyle);
+        auto releaseValveIm = outerLayout->itemAt(2)->widget();
+        releaseValveIm->setStyleSheet(
+            "border-image:url(../skywardhub/src/shared/Modules/"
+            "RefuelingVisualizer/valve_vert_closed.png) 0 0 0 0;");
     }
 
-    // StatesList::State state =
-    //     static_cast<StatesList::State>(field.getUnsignedInteger());
-
-    // if (state == StatesList::State::INVALID)
-    //     return;
-
-    // if (state != currentState)
-    // {
-    //     currentState = static_cast<StatesList::State>(state);
-
-    //     QString baseStyle =
-    //         "border-bottom-width:1px;border-left-width:1px;border-top-width:"
-    //         "1px;border-radius:0;";
-    //     QString currentStateStyle =
-    //         "background-color:yellow; color:black;" + baseStyle;
-    //     QString completedStyle = "background-color:green;" + baseStyle;
-    //     QString errorStyle     = "background-color:red;" + baseStyle;
-
-    //     int index  = StatesList::statesIndexes[currentState];
-    //     auto label = outerLayout->itemAt(index)->widget();
-
-    //     if (currentState == StatesList::State::INIT_ERROR)
-    //         label->setStyleSheet(errorStyle);
-    //     else
-    //         label->setStyleSheet(currentStateStyle);
-
-    //     // Set as completed every state before the current
-    //     for (int i = index - 1; i >= 0; i--)
-    //         outerLayout->itemAt(i)->widget()->setStyleSheet(completedStyle);
-
-    //     // Reset every state after the current
-    //     for (int i = index + 1; i < StatesList::statesLabels.count(); i++)
-    //         outerLayout->itemAt(i)->widget()->setStyleSheet(baseStyle);
-
-    //     auto tmp = outerLayout->itemAt(StatesList::statesLabels.count() - 1)
-    //                    ->widget()
-    //                    ->styleSheet();
-    //     outerLayout->itemAt(StatesList::statesLabels.count() - 1)
-    //         ->widget()
-    //         ->setStyleSheet(tmp + "border-right-width:1px;");
-    // }
+    if (venting == 1)
+    {
+        auto labelValve = outerLayout->itemAt(7)->widget();
+        labelValve->setStyleSheet(completedStyle);
+        auto ventingValveIm = outerLayout->itemAt(3)->widget();
+        ventingValveIm->setStyleSheet(
+            "border-image:url(../skywardhub/src/shared/Modules/"
+            "RefuelingVisualizer/valve_vert_opened.png) 0 0 0 0;");
+    }
+    else
+    {
+        auto labelValve = outerLayout->itemAt(7)->widget();
+        labelValve->setStyleSheet(errorStyle);
+        auto ventingValveIm = outerLayout->itemAt(3)->widget();
+        ventingValveIm->setStyleSheet(
+            "border-image:url(../skywardhub/src/shared/Modules/"
+            "RefuelingVisualizer/valve_vert_closed.png) 0 0 0 0;");
+    }
 }
diff --git a/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.h b/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.h
index d27b9c17..3f5506e1 100644
--- a/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.h
+++ b/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizer.h
@@ -47,7 +47,7 @@ private:
     void setFilter(const Filter& filter);
     void onMsgReceived(const Message& msg);
 
-    QHBoxLayout* outerLayout;
+    QGridLayout* outerLayout;
 
     Filter filter;
     RefuelingVisualizerCommandList::Valve currentState;
diff --git a/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizerCommandList.h b/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizerCommandList.h
index 1aa49777..d2877f83 100644
--- a/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizerCommandList.h
+++ b/src/shared/Modules/RefuelingVisualizer/RefuelingVisualizerCommandList.h
@@ -35,6 +35,7 @@ enum class Valve : int
 
 // Groundstation labels
 static const QList<QString> commandLabels{
+    "TARS",
     "FILLING",
     "RELEASE",
     "VENTING",
diff --git a/src/shared/Modules/RefuelingVisualizer/background.png b/src/shared/Modules/RefuelingVisualizer/background.png
new file mode 100644
index 0000000000000000000000000000000000000000..b873ba1c332172f9388890b27c7255de6a897f3a
GIT binary patch
literal 68773
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

literal 0
HcmV?d00001

diff --git a/src/shared/Modules/RefuelingVisualizer/valve_horiz_closed.png b/src/shared/Modules/RefuelingVisualizer/valve_horiz_closed.png
new file mode 100644
index 0000000000000000000000000000000000000000..cba34f96ddbd09e4da7bd8dc157860aea2094dec
GIT binary patch
literal 2207
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
Q0|Nttr>mdKI;Vst0F6Dyod5s;

literal 0
HcmV?d00001

diff --git a/src/shared/Modules/RefuelingVisualizer/valve_horiz_opened.png b/src/shared/Modules/RefuelingVisualizer/valve_horiz_opened.png
new file mode 100644
index 0000000000000000000000000000000000000000..65695bf639ba44471010d4afc6e8a3fbe77f0e83
GIT binary patch
literal 2233
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

literal 0
HcmV?d00001

diff --git a/src/shared/Modules/RefuelingVisualizer/valve_vert_closed.png b/src/shared/Modules/RefuelingVisualizer/valve_vert_closed.png
new file mode 100644
index 0000000000000000000000000000000000000000..3b92763bb65419717c97ff64320088bb6e9a6aa5
GIT binary patch
literal 2408
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
A3IG5A

literal 0
HcmV?d00001

diff --git a/src/shared/Modules/RefuelingVisualizer/valve_vert_opened.png b/src/shared/Modules/RefuelingVisualizer/valve_vert_opened.png
new file mode 100644
index 0000000000000000000000000000000000000000..7bc121633d072ca30753b9d597c377cb7c0d6c40
GIT binary patch
literal 2410
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
Jmvv4FO#m3jwZ{Me

literal 0
HcmV?d00001

-- 
GitLab