#pragma once #include "string-list.hpp" #include "list-controls.hpp" #include "variable-line-edit.hpp" #include #include #include #include #include namespace advss { class MqttTopicListWidget : public QWidget { Q_OBJECT public: MqttTopicListWidget(QWidget *parent = nullptr); void SetValues(const std::vector &topics, const std::vector &qos); std::vector GetTopics(); std::vector GetQoS(); private slots: void AddTopic(); void RemoveSelectedRow(); void ModifyRow(QTableWidgetItem *); private: void InsertSorted(const QString &topic, int qos); void SortTable(); void ShowTopicDuplicateWarning(); void ShowTopicEmptyWarning(); void ShowQoSRangeWarning(); QTableWidget *_table; ListControls *_controls; QSet _topicSet; }; class AddMqttTopicDialog : public QDialog { Q_OBJECT public: AddMqttTopicDialog(QWidget *parent = nullptr); QString Topic() const; int QoS() const; private: QLineEdit *_topicEdit; QSpinBox *_qosSpin; }; } // namespace advss