client Sim base

add checkbox

fix
This commit is contained in:
2026-02-14 14:30:51 +01:00
parent 1e7badf08c
commit c9da1c1cfa
2 changed files with 87 additions and 1 deletions
+85 -1
View File
@@ -120,11 +120,16 @@ void Simulator_base::UI_item_parser(json &input)
process_ui_combobox(uiItem); process_ui_combobox(uiItem);
continue; continue;
} }
if (uiItem["type"] == "UIRadioButton") if (uiItem["type"] == "UI_RadioButton")
{ {
process_ui_radiobutton(uiItem); process_ui_radiobutton(uiItem);
continue; continue;
} }
if (uiItem["type"] == "UI_checkbox")
{
process_ui_checkbox(uiItem);
continue;
}
if (uiItem["type"] == "UI_can") if (uiItem["type"] == "UI_can")
{ {
process_ui_can(uiItem); process_ui_can(uiItem);
@@ -318,6 +323,73 @@ void Simulator_base::process_ui_radiobutton(json &uiItem)
SPDLOG_CRITICAL("Not implemented"); SPDLOG_CRITICAL("Not implemented");
} }
void Simulator_base::process_ui_checkbox(json &uiItem)
{
QWidget *widget = id_to_ui(uiItem["id"]);
if (widget == nullptr)
{
SPDLOG_WARN("id_to_ui returned null on {}", QString::number((size_t)uiItem["id"]).toStdString());
return;
}
auto checkbox = qobject_cast<QCheckBox *>(widget);
if (checkbox == nullptr)
{
SPDLOG_WARN("widget is not of type QCheckbox");
return;
}
QColor bg_color = QColor(QString::fromStdString(uiItem["bg_color"]));
QColor fg_color = QColor(QString::fromStdString(uiItem["fg_color"]));
QString text = QString::fromStdString(uiItem["text"]);
bool enabled = uiItem["enabled"];
bool checked = uiItem["checked"];
if (checkbox->isChecked() != checked)
{
checkbox->setChecked(checked);
}
if (checkbox->text() != text)
{
checkbox->setText(text);
}
if (checkbox->isEnabled() != enabled)
{
checkbox->setEnabled(enabled);
}
if (bg_color == QColor(0x83, 0x91, 0x92))
{
reset_widget_color(checkbox);
return;
}
if (bg_color == QColor(0xFF, 0x00, 0x00))
{
set_widget_color(checkbox, QString("black"), QString("darkred"));
return;
}
if (bg_color == QColor(0x00, 0xFF, 0x00))
{
set_widget_color(checkbox, QString("white"), QString("darkgreen"));
return;
}
if (bg_color == QColor(0xFF8800))
{
set_widget_color(checkbox, QString("darkred"), QString("darkorange"));
return;
}
if (bg_color != widget_bg_color(checkbox) || fg_color != widget_color(checkbox))
{
set_widget_color(checkbox, fg_color, bg_color);
}
}
void Simulator_base::process_ui_button(json &uiItem) void Simulator_base::process_ui_button(json &uiItem)
{ {
// TODO: fix bgcolor and color // TODO: fix bgcolor and color
@@ -467,6 +539,7 @@ void Simulator_base::setup_ui_item(QWidget *item, size_t index)
{ {
setup_button(item, index); setup_button(item, index);
setup_combobox(item, index); setup_combobox(item, index);
setup_checkbox(item, index);
setup_dial(item, index); setup_dial(item, index);
setup_slider(item, index); setup_slider(item, index);
setup_can_ui(item, index); setup_can_ui(item, index);
@@ -492,6 +565,17 @@ void Simulator_base::setup_combobox(QWidget *item, size_t index)
}); });
} }
void Simulator_base::setup_checkbox(QWidget *item, size_t index)
{
QCheckBox *checkbox = qobject_cast<QCheckBox *>(item);
if (checkbox == nullptr)
return;
connect(checkbox, &QCheckBox::clicked, this, [=, this] {
m_web_socket->send_event(Web_socket_wrapper::Event::clicked, index);
});
}
void Simulator_base::setup_dial(QWidget *item, size_t index) void Simulator_base::setup_dial(QWidget *item, size_t index)
{ {
QwtDial *dial = qobject_cast<QwtDial *>(item); QwtDial *dial = qobject_cast<QwtDial *>(item);
+2
View File
@@ -42,6 +42,7 @@ class Simulator_base : public QMainWindow
virtual void process_ui_textbox(json &uiItem); virtual void process_ui_textbox(json &uiItem);
virtual void process_ui_combobox(json &uiItem); virtual void process_ui_combobox(json &uiItem);
virtual void process_ui_radiobutton(json &uiItem); virtual void process_ui_radiobutton(json &uiItem);
virtual void process_ui_checkbox(json &uiItem);
virtual void process_ui_button(json &uiItem); virtual void process_ui_button(json &uiItem);
virtual void process_ui_led(json &uiItem); virtual void process_ui_led(json &uiItem);
virtual void process_ui_can(json &uiItem); virtual void process_ui_can(json &uiItem);
@@ -49,6 +50,7 @@ class Simulator_base : public QMainWindow
void setup_ui_item(QWidget *item, size_t index); void setup_ui_item(QWidget *item, size_t index);
void setup_button(QWidget *item, size_t index); void setup_button(QWidget *item, size_t index);
void setup_combobox(QWidget *item, size_t index); void setup_combobox(QWidget *item, size_t index);
void setup_checkbox(QWidget *item, size_t index);
void setup_dial(QWidget *item, size_t index); void setup_dial(QWidget *item, size_t index);
void setup_slider(QWidget *item, size_t index); void setup_slider(QWidget *item, size_t index);
void setup_can_ui(QWidget *item, size_t index); void setup_can_ui(QWidget *item, size_t index);