convert selected

move from string to index to reduce data size
This commit is contained in:
2026-02-14 14:32:03 +01:00
parent 99d537ac29
commit 7c91a64d71
8 changed files with 54 additions and 52 deletions
+2 -10
View File
@@ -49,20 +49,12 @@ std::string UI_combobox::selected_text() const
void UI_combobox::from_json(const json &j) void UI_combobox::from_json(const json &j)
{ {
UI_x_boxes::from_json(j); UI_x_boxes::from_json(j);
std::string selected_str = j.at("selected"); m_selected = j.at("selected");
for (size_t i = 0; i < m_options.size(); i++)
{
if (m_options[i] == selected_str)
{
m_selected = i;
break;
}
}
} }
json UI_combobox::to_json(size_t id) const json UI_combobox::to_json(size_t id) const
{ {
json j = UI_x_boxes::to_json(id); json j = UI_x_boxes::to_json(id);
j["selected"] = m_options[m_selected]; j["selected"] = m_selected;
return j; return j;
} }
+2 -2
View File
@@ -14,8 +14,8 @@ class UI_combobox : public UI_x_boxes
QObject *parent = nullptr); QObject *parent = nullptr);
UI_combobox(const json &j, QObject *parent = nullptr); UI_combobox(const json &j, QObject *parent = nullptr);
void set_selected(size_t selected); void set_selected(size_t selected) override;
void set_selected(std::string selected) override; void set_selected(std::string selected);
size_t selected() const; size_t selected() const;
std::string selected_text() const; std::string selected_text() const;
+1 -1
View File
@@ -158,7 +158,7 @@ json UI_item::to_json(size_t id) const
void UI_item::click() {}; void UI_item::click() {};
void UI_item::set_selected(std::string selected) void UI_item::set_selected(size_t selected)
{ {
UNUSED(selected); UNUSED(selected);
}; };
+1 -1
View File
@@ -47,7 +47,7 @@ class UI_item : public QObject
virtual json to_json(size_t id) const; virtual json to_json(size_t id) const;
virtual void click(); virtual void click();
virtual void set_selected(std::string selected); virtual void set_selected(size_t selected);
virtual void set_value(double value); virtual void set_value(double value);
virtual void can_send(uint32_t id, uint8_t dlc, std::array<uint8_t, 8> payload); virtual void can_send(uint32_t id, uint8_t dlc, std::array<uint8_t, 8> payload);
virtual void can_clear(); virtual void can_clear();
+4 -4
View File
@@ -326,7 +326,7 @@ void Simulator_base::process_ui_combobox(json &ui_item, QWidget *widget)
return; return;
} }
QString selected = QString::fromStdString(ui_item["selected"]); size_t selected = ui_item["selected"];
for (json &item : ui_item["options"]) for (json &item : ui_item["options"])
{ {
@@ -334,9 +334,9 @@ void Simulator_base::process_ui_combobox(json &ui_item, QWidget *widget)
combobox->addItem(QString::fromStdString(item)); combobox->addItem(QString::fromStdString(item));
} }
if (combobox->currentText() != selected) if (combobox->currentIndex() != selected)
{ {
combobox->setCurrentText(selected); combobox->setCurrentIndex(selected);
} }
} }
@@ -763,7 +763,7 @@ void Simulator_base::setup_combobox(QWidget *item, size_t index)
return; return;
connect(combobox, &QComboBox::activated, this, [=, this] { connect(combobox, &QComboBox::activated, this, [=, this] {
m_web_socket->send_event(Web_socket_wrapper::Event::selected, index, combobox->currentText()); m_web_socket->send_event(Web_socket_wrapper::Event::selected, index, (size_t)combobox->currentIndex());
}); });
} }
+36 -27
View File
@@ -26,26 +26,23 @@ Web_socket_wrapper::~Web_socket_wrapper()
close(); close();
} }
void Web_socket_wrapper::send_command(Command command, size_t id) void Web_socket_wrapper::send_command(Command c, size_t id)
{ {
json j; json j;
switch (command) j["command"]["type"] = magic_enum::enum_name(c).data();
switch (c)
{ {
case Command::get_UI_element: case Command::get_UI_element:
j["command"]["type"] = magic_enum::enum_name(command).data();
j["command"]["id"] = id; j["command"]["id"] = id;
m_web_socket->sendTextMessage(QString(j.dump().data())); m_web_socket->sendTextMessage(QString(j.dump().data()));
break; break;
case Command::get_UI_elements: case Command::get_UI_elements:
j["command"]["type"] = magic_enum::enum_name(command).data();
m_web_socket->sendTextMessage(QString(j.dump().data())); m_web_socket->sendTextMessage(QString(j.dump().data()));
break; break;
case Command::get_active_simulator_name: case Command::get_active_simulator_name:
j["command"]["type"] = magic_enum::enum_name(command).data();
m_web_socket->sendTextMessage(QString(j.dump().data())); m_web_socket->sendTextMessage(QString(j.dump().data()));
break; break;
case Command::get_simulators: case Command::get_simulators:
j["command"]["type"] = magic_enum::enum_name(command).data();
m_web_socket->sendTextMessage(QString(j.dump().data())); m_web_socket->sendTextMessage(QString(j.dump().data()));
break; break;
default: default:
@@ -53,14 +50,14 @@ void Web_socket_wrapper::send_command(Command command, size_t id)
} }
} }
void Web_socket_wrapper::send_command(Command command, QString id) void Web_socket_wrapper::send_command(Command command, QString val)
{ {
json j; json j;
j["command"]["type"] = magic_enum::enum_name(command).data();
switch (command) switch (command)
{ {
case Command::switch_simulator: case Command::switch_simulator:
j["command"]["type"] = magic_enum::enum_name(command).data(); j["command"]["name"] = val.toStdString();
j["command"]["name"] = id.toStdString();
m_web_socket->sendTextMessage(QString(j.dump().data())); m_web_socket->sendTextMessage(QString(j.dump().data()));
break; break;
default: default:
@@ -68,16 +65,16 @@ void Web_socket_wrapper::send_command(Command command, QString id)
} }
} }
void Web_socket_wrapper::send_event(Event event, size_t id) void Web_socket_wrapper::send_event(Event e, size_t id)
{ {
if (m_inhibit_events) if (m_inhibit_events)
return; return;
json j; json j;
switch (event) j["event"]["type"] = magic_enum::enum_name(e).data();
switch (e)
{ {
case Event::clicked: case Event::clicked:
case Event::can_clear: case Event::can_clear:
j["event"]["type"] = magic_enum::enum_name(event).data();
j["event"]["id"] = id; j["event"]["id"] = id;
m_web_socket->sendTextMessage(QString(j.dump().data())); m_web_socket->sendTextMessage(QString(j.dump().data()));
break; break;
@@ -86,15 +83,33 @@ void Web_socket_wrapper::send_event(Event event, size_t id)
} }
} }
void Web_socket_wrapper::send_event(Event event, size_t id, double val) void Web_socket_wrapper::send_event(Event e, size_t id, size_t val)
{ {
if (m_inhibit_events) if (m_inhibit_events)
return; return;
json j; json j;
switch (event) j["event"]["type"] = magic_enum::enum_name(e).data();
switch (e)
{
case Event::selected:
j["event"]["id"] = id;
j["event"]["selected"] = val;
m_web_socket->sendTextMessage(QString(j.dump().data()));
break;
default:
break;
}
}
void Web_socket_wrapper::send_event(Event e, size_t id, double val)
{
if (m_inhibit_events)
return;
json j;
j["event"]["type"] = magic_enum::enum_name(e).data();
switch (e)
{ {
case Event::value_changed: case Event::value_changed:
j["event"]["type"] = magic_enum::enum_name(event).data();
j["event"]["id"] = id; j["event"]["id"] = id;
j["event"]["value"] = val; j["event"]["value"] = val;
m_web_socket->sendTextMessage(QString(j.dump().data())); m_web_socket->sendTextMessage(QString(j.dump().data()));
@@ -104,39 +119,33 @@ void Web_socket_wrapper::send_event(Event event, size_t id, double val)
} }
} }
void Web_socket_wrapper::send_event(Event event, size_t id, QString val) void Web_socket_wrapper::send_event(Event e, size_t id, QString val)
{ {
if (m_inhibit_events) if (m_inhibit_events)
return; return;
json j; json j;
switch (event) j["event"]["type"] = magic_enum::enum_name(e).data();
switch (e)
{ {
case Event::text_changed: case Event::text_changed:
j["event"]["type"] = magic_enum::enum_name(event).data();
j["event"]["id"] = id; j["event"]["id"] = id;
j["event"]["text"] = val.toStdString(); j["event"]["text"] = val.toStdString();
m_web_socket->sendTextMessage(QString(j.dump().data())); m_web_socket->sendTextMessage(QString(j.dump().data()));
break; break;
case Event::selected:
j["event"]["type"] = magic_enum::enum_name(event).data();
j["event"]["id"] = id;
j["event"]["selected"] = val.toStdString();
m_web_socket->sendTextMessage(QString(j.dump().data()));
break;
default: default:
break; break;
} }
} }
void Web_socket_wrapper::send_event(Event event, size_t id, uint32_t sid, uint8_t dlc, std::array<uint8_t, 8> payload) void Web_socket_wrapper::send_event(Event e, size_t id, uint32_t sid, uint8_t dlc, std::array<uint8_t, 8> payload)
{ {
if (m_inhibit_events) if (m_inhibit_events)
return; return;
json j; json j;
switch (event) j["event"]["type"] = magic_enum::enum_name(e).data();
switch (e)
{ {
case Event::can_send: case Event::can_send:
j["event"]["type"] = magic_enum::enum_name(event).data();
j["event"]["id"] = id; j["event"]["id"] = id;
j["event"]["sid"] = sid; j["event"]["sid"] = sid;
j["event"]["dlc"] = dlc; j["event"]["dlc"] = dlc;
+7 -6
View File
@@ -37,12 +37,13 @@ class Web_socket_wrapper : public QObject
public: public:
explicit Web_socket_wrapper(const QUrl &url, QObject *parent = nullptr); explicit Web_socket_wrapper(const QUrl &url, QObject *parent = nullptr);
~Web_socket_wrapper(); ~Web_socket_wrapper();
void send_command(Command command, size_t id = 0); void send_command(Command c, size_t id = 0);
void send_command(Command command, QString id); void send_command(Command c, QString val);
void send_event(Event event, size_t id); void send_event(Event e, size_t id);
void send_event(Event event, size_t id, double val); void send_event(Event e, size_t id, size_t val);
void send_event(Event event, size_t id, QString val); void send_event(Event e, size_t id, double val);
void send_event(Event event, size_t id, uint32_t sid, uint8_t dlc, std::array<uint8_t, 8> payload); void send_event(Event e, size_t id, QString val);
void send_event(Event e, size_t id, uint32_t sid, uint8_t dlc, std::array<uint8_t, 8> payload);
void close(); void close();
void inhibit_events(bool inhibit); void inhibit_events(bool inhibit);
+1 -1
View File
@@ -99,7 +99,7 @@ void Simulators::event_handler(json event)
} }
case Event::selected: { case Event::selected: {
SPDLOG_DEBUG("Event {}: {} {}", type, (size_t)event.at("id"), std::string(event.at("selected"))); SPDLOG_DEBUG("Event {}: {} {}", type, (size_t)event.at("id"), std::string(event.at("selected")));
invoke_active_simulator()->get_UI_item(event.at("id"))->set_selected(std::string(event.at("selected"))); invoke_active_simulator()->get_UI_item(event.at("id"))->set_selected(event.at("selected"));
break; break;
} }
case Event::can_send: { case Event::can_send: {