* @brief Appends the Publishing section (master toggle, mode, rate, topic, notifications). */
| 2052 | * @brief Appends the Publishing section (master toggle, mode, rate, topic, notifications). |
| 2053 | */ |
| 2054 | void DataModel::ProjectEditor::buildMqttPublishingSection(const MQTT::Publisher& pub, bool enabled) |
| 2055 | { |
| 2056 | auto* pubHdr = new QStandardItem(); |
| 2057 | pubHdr->setData(SectionHeader, WidgetType); |
| 2058 | pubHdr->setData(tr("Publishing"), PlaceholderValue); |
| 2059 | pubHdr->setData("qrc:/icons/project-editor/model/mqtt-publishing.svg", ParameterIcon); |
| 2060 | m_mqttPublisherModel->appendRow(pubHdr); |
| 2061 | |
| 2062 | auto* enabledItem = new QStandardItem(); |
| 2063 | enabledItem->setEditable(true); |
| 2064 | enabledItem->setData(true, Active); |
| 2065 | enabledItem->setData(CheckBox, WidgetType); |
| 2066 | enabledItem->setData(enabled, EditableValue); |
| 2067 | enabledItem->setData(kMqttPublisher_Enabled, ParameterType); |
| 2068 | enabledItem->setData(tr("Enable Publishing"), ParameterName); |
| 2069 | enabledItem->setData(tr("Broadcast frames, raw bytes and notifications to the broker"), |
| 2070 | ParameterDescription); |
| 2071 | m_mqttPublisherModel->appendRow(enabledItem); |
| 2072 | |
| 2073 | auto* modeItem = new QStandardItem(); |
| 2074 | modeItem->setEditable(true); |
| 2075 | modeItem->setData(enabled, Active); |
| 2076 | modeItem->setData(ComboBox, WidgetType); |
| 2077 | modeItem->setData(pub.modes(), ComboBoxData); |
| 2078 | modeItem->setData(pub.mode(), EditableValue); |
| 2079 | modeItem->setData(kMqttPublisher_Mode, ParameterType); |
| 2080 | modeItem->setData(tr("Payload"), ParameterName); |
| 2081 | modeItem->setData(tr("Selects what gets published: parsed dashboard data or raw RX bytes"), |
| 2082 | ParameterDescription); |
| 2083 | m_mqttPublisherModel->appendRow(modeItem); |
| 2084 | |
| 2085 | auto* freqItem = new QStandardItem(); |
| 2086 | freqItem->setEditable(true); |
| 2087 | freqItem->setData(enabled, Active); |
| 2088 | freqItem->setData(IntField, WidgetType); |
| 2089 | freqItem->setData(pub.publishFrequency(), EditableValue); |
| 2090 | freqItem->setData(kMqttPublisher_PublishFrequency, ParameterType); |
| 2091 | freqItem->setData(tr("Publish Rate (Hz)"), ParameterName); |
| 2092 | freqItem->setData(tr("How many times per second to publish (1-30 Hz). Higher rates increase " |
| 2093 | "broker load; dashboard data is rate-limited so a slow broker never blocks " |
| 2094 | "frame parsing."), |
| 2095 | ParameterDescription); |
| 2096 | m_mqttPublisherModel->appendRow(freqItem); |
| 2097 | |
| 2098 | auto* topicItem = new QStandardItem(); |
| 2099 | topicItem->setEditable(true); |
| 2100 | topicItem->setData(enabled, Active); |
| 2101 | topicItem->setData(TextField, WidgetType); |
| 2102 | topicItem->setData(pub.topicBase(), EditableValue); |
| 2103 | topicItem->setData(kMqttPublisher_TopicBase, ParameterType); |
| 2104 | topicItem->setData(tr("Topic Base"), ParameterName); |
| 2105 | topicItem->setData(tr("serial-studio/device"), PlaceholderValue); |
| 2106 | topicItem->setData(tr("Base topic used for frame and raw-byte publishing"), ParameterDescription); |
| 2107 | m_mqttPublisherModel->appendRow(topicItem); |
| 2108 | |
| 2109 | if (pub.mode() == static_cast<int>(MQTT::Publisher::Mode::ScriptDriven)) { |
| 2110 | auto* scriptTopicItem = new QStandardItem(); |
| 2111 | scriptTopicItem->setEditable(true); |
nothing calls this directly
no test coverage detected