MCPcopy Create free account
hub / github.com/Serial-Studio/Serial-Studio / buildMqttPublishingSection

Method buildMqttPublishingSection

app/src/DataModel/ProjectEditor.cpp:2054–2146  ·  view source on GitHub ↗

* @brief Appends the Publishing section (master toggle, mode, rate, topic, notifications). */

Source from the content-addressed store, hash-verified

2052 * @brief Appends the Publishing section (master toggle, mode, rate, topic, notifications).
2053 */
2054void 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);

Callers

nothing calls this directly

Calls 6

publishFrequencyMethod · 0.80
topicBaseMethod · 0.80
scriptTopicMethod · 0.80
publishNotificationsMethod · 0.80
notificationTopicMethod · 0.80
modeMethod · 0.45

Tested by

no test coverage detected