From 0df9d67dbbb18deca45436bcea70525912b36ea4 Mon Sep 17 00:00:00 2001 From: Sander Speetjens Date: Wed, 16 Apr 2025 19:05:29 +0200 Subject: [PATCH] client simbase move widget retrieving to ui item parser --- client/simulator_base.cpp | 134 ++++++++++---------------------------- client/simulator_base.hpp | 26 ++++---- 2 files changed, 46 insertions(+), 114 deletions(-) diff --git a/client/simulator_base.cpp b/client/simulator_base.cpp index b391f9b..16da477 100644 --- a/client/simulator_base.cpp +++ b/client/simulator_base.cpp @@ -90,83 +90,83 @@ void Simulator_base::UI_item_parser(json &input) { for (auto &ui_item : input["UI_items"]) { + auto widget = id_to_ui(ui_item["id"]); + if (widget == nullptr) + { + SPDLOG_WARN("id_to_ui returned null on {}", QString::number((size_t)ui_item["id"]).toStdString()); + return; + } + if (ui_item["type"] == "UI_button") { - process_ui_button(ui_item); + process_ui_button(ui_item, widget); continue; } if (ui_item["type"] == "UI_led") { - process_ui_led(ui_item); + process_ui_led(ui_item, widget); continue; } if (ui_item["type"] == "UI_slider") { - process_ui_slider(ui_item); + process_ui_slider(ui_item, widget); continue; } if (ui_item["type"] == "UI_dial") { - process_ui_dial(ui_item); + process_ui_dial(ui_item, widget); continue; } if (ui_item["type"] == "UI_thermo") { - process_ui_thermo(ui_item); + process_ui_thermo(ui_item, widget); continue; } if (ui_item["type"] == "UI_textbox") { - process_ui_textbox(ui_item); + process_ui_textbox(ui_item, widget); continue; } if (ui_item["type"] == "UI_label") { - process_ui_label(ui_item); + process_ui_label(ui_item, widget); continue; } if (ui_item["type"] == "UI_combobox") { - process_ui_combobox(ui_item); + process_ui_combobox(ui_item, widget); continue; } if (ui_item["type"] == "UI_RadioButton") { - process_ui_radiobutton(ui_item); + process_ui_radiobutton(ui_item, widget); continue; } if (ui_item["type"] == "UI_checkbox") { - process_ui_checkbox(ui_item); + process_ui_checkbox(ui_item, widget); continue; } if (ui_item["type"] == "UI_plot") { - process_ui_plot(ui_item); + process_ui_plot(ui_item, widget); continue; } if (ui_item["type"] == "UI_table") { - process_ui_table(ui_item); + process_ui_table(ui_item, widget); continue; } if (ui_item["type"] == "UI_can") { - process_ui_can(ui_item); + process_ui_can(ui_item, widget); continue; } } } -void Simulator_base::process_ui_label(json &ui_item) +void Simulator_base::process_ui_label(json &ui_item, QWidget* widget) { - auto widget = id_to_ui(ui_item["id"]); - if (widget == nullptr) - { - SPDLOG_WARN("id_to_ui returned null on {}", QString::number((size_t)ui_item["id"]).toStdString()); - return; - } - auto label = qobject_cast(widget); if (label == nullptr) { @@ -182,15 +182,9 @@ void Simulator_base::process_ui_label(json &ui_item) } } -void Simulator_base::process_ui_slider(json &ui_item) +void Simulator_base::process_ui_slider(json &ui_item, QWidget* widget) { QLabel *label = id_to_label(ui_item["id"]); - auto widget = id_to_ui(ui_item["id"]); - if (widget == nullptr) - { - SPDLOG_WARN("id_to_ui returned null on {}", QString::number((size_t)ui_item["id"]).toStdString()); - return; - } auto slider = qobject_cast(widget); if (slider == nullptr) @@ -227,15 +221,9 @@ void Simulator_base::process_ui_slider(json &ui_item) return; } -void Simulator_base::process_ui_dial(json &ui_item) +void Simulator_base::process_ui_dial(json &ui_item, QWidget* widget) { QLabel *label = id_to_label(ui_item["id"]); - auto widget = id_to_ui(ui_item["id"]); - if (widget == nullptr) - { - SPDLOG_WARN("id_to_ui returned null on {}", QString::number((size_t)ui_item["id"]).toStdString()); - return; - } auto dial = qobject_cast(widget); if (dial == nullptr) @@ -265,15 +253,9 @@ void Simulator_base::process_ui_dial(json &ui_item) return; } -void Simulator_base::process_ui_thermo(json &ui_item) +void Simulator_base::process_ui_thermo(json &ui_item, QWidget* widget) { QLabel *label = id_to_label(ui_item["id"]); - auto widget = id_to_ui(ui_item["id"]); - if (widget == nullptr) - { - SPDLOG_WARN("id_to_ui returned null on {}", QString::number((size_t)ui_item["id"]).toStdString()); - return; - } auto thermo = qobject_cast(widget); if (thermo == nullptr) @@ -303,20 +285,13 @@ void Simulator_base::process_ui_thermo(json &ui_item) return; } -void Simulator_base::process_ui_textbox(json &ui_item) +void Simulator_base::process_ui_textbox(json &ui_item, QWidget* widget) { SPDLOG_CRITICAL("Not implemented"); } -void Simulator_base::process_ui_combobox(json &ui_item) +void Simulator_base::process_ui_combobox(json &ui_item, QWidget* widget) { - auto widget = id_to_ui(ui_item["id"]); - if (widget == nullptr) - { - SPDLOG_WARN("id_to_ui returned null on {}", QString::number((size_t)ui_item["id"]).toStdString()); - return; - } - auto combobox = qobject_cast(widget); if (combobox == nullptr) { @@ -338,20 +313,13 @@ void Simulator_base::process_ui_combobox(json &ui_item) } } -void Simulator_base::process_ui_radiobutton(json &ui_item) +void Simulator_base::process_ui_radiobutton(json &ui_item, QWidget* widget) { SPDLOG_CRITICAL("Not implemented"); } -void Simulator_base::process_ui_checkbox(json &ui_item) +void Simulator_base::process_ui_checkbox(json &ui_item, QWidget* widget) { - auto widget = id_to_ui(ui_item["id"]); - if (widget == nullptr) - { - SPDLOG_WARN("id_to_ui returned null on {}", QString::number((size_t)ui_item["id"]).toStdString()); - return; - } - auto checkbox = qobject_cast(widget); if (checkbox == nullptr) { @@ -410,16 +378,8 @@ void Simulator_base::process_ui_checkbox(json &ui_item) } } -void Simulator_base::process_ui_button(json &ui_item) +void Simulator_base::process_ui_button(json &ui_item, QWidget* widget) { - // TODO: fix bgcolor and color - auto widget = id_to_ui(ui_item["id"]); - if (widget == nullptr) - { - SPDLOG_WARN("id_to_ui returned null on {}", QString::number((size_t)ui_item["id"]).toStdString()); - return; - } - auto button = qobject_cast(widget); if (button == nullptr) { @@ -472,15 +432,8 @@ void Simulator_base::process_ui_button(json &ui_item) } } -void Simulator_base::process_ui_led(json &ui_item) +void Simulator_base::process_ui_led(json &ui_item, QWidget* widget) { - auto widget = id_to_ui(ui_item["id"]); - if (widget == nullptr) - { - SPDLOG_WARN("id_to_ui returned null on {}", QString::number((size_t)ui_item["id"]).toStdString()); - return; - } - auto led = qobject_cast(widget); if (led == nullptr) { @@ -527,15 +480,8 @@ void Simulator_base::process_ui_led(json &ui_item) } } -void Simulator_base::process_ui_plot(json &ui_item) +void Simulator_base::process_ui_plot(json &ui_item, QWidget* widget) { - auto widget = id_to_ui(ui_item["id"]); - if (widget == nullptr) - { - SPDLOG_WARN("id_to_ui returned null on {}", QString::number((size_t)ui_item["id"]).toStdString()); - return; - } - auto plot = qobject_cast(widget); if (plot == nullptr) { @@ -583,15 +529,8 @@ void Simulator_base::process_ui_plot(json &ui_item) plot->replot(); } -void Simulator_base::process_ui_table(json &ui_item) +void Simulator_base::process_ui_table(json &ui_item, QWidget* widget) { - auto widget = id_to_ui(ui_item["id"]); - if (widget == nullptr) - { - SPDLOG_WARN("id_to_ui returned null on {}", QString::number((size_t)ui_item["id"]).toStdString()); - return; - } - auto table = qobject_cast(widget); if (table == nullptr) { @@ -647,15 +586,8 @@ void Simulator_base::process_ui_table(json &ui_item) // table-> } -void Simulator_base::process_ui_can(json &ui_item) +void Simulator_base::process_ui_can(json &ui_item, QWidget* widget) { - auto widget = id_to_ui(ui_item["id"]); - if (widget == nullptr) - { - SPDLOG_WARN("id_to_ui returned null on {}", QString::number((size_t)ui_item["id"]).toStdString()); - return; - } - auto can_ui = qobject_cast(widget); if (can_ui == nullptr) { diff --git a/client/simulator_base.hpp b/client/simulator_base.hpp index 5472f3a..b9acce4 100644 --- a/client/simulator_base.hpp +++ b/client/simulator_base.hpp @@ -38,19 +38,19 @@ class Simulator_base : public QMainWindow void push_ui_item(QWidget *item); void UI_item_parser(json &input); - virtual void process_ui_label(json &ui_item); - virtual void process_ui_slider(json &ui_item); - virtual void process_ui_dial(json &ui_item); - virtual void process_ui_thermo(json &ui_item); - virtual void process_ui_textbox(json &ui_item); - virtual void process_ui_combobox(json &ui_item); - virtual void process_ui_radiobutton(json &ui_item); - virtual void process_ui_checkbox(json &ui_item); - virtual void process_ui_button(json &ui_item); - virtual void process_ui_led(json &ui_item); - virtual void process_ui_plot(json &ui_item); - virtual void process_ui_table(json &ui_item); - virtual void process_ui_can(json &ui_item); + virtual void process_ui_label(json &ui_item, QWidget* widget); + virtual void process_ui_slider(json &ui_item, QWidget* widget); + virtual void process_ui_dial(json &ui_item, QWidget* widget); + virtual void process_ui_thermo(json &ui_item, QWidget* widget); + virtual void process_ui_textbox(json &ui_item, QWidget* widget); + virtual void process_ui_combobox(json &ui_item, QWidget* widget); + virtual void process_ui_radiobutton(json &ui_item, QWidget* widget); + virtual void process_ui_checkbox(json &ui_item, QWidget* widget); + virtual void process_ui_button(json &ui_item, QWidget* widget); + virtual void process_ui_led(json &ui_item, QWidget* widget); + virtual void process_ui_plot(json &ui_item, QWidget* widget); + virtual void process_ui_table(json &ui_item, QWidget* widget); + virtual void process_ui_can(json &ui_item, QWidget* widget); void setup_ui_item(QWidget *item, size_t index); void setup_button(QWidget *item, size_t index);