File indexing completed on 2025-10-26 03:35:35
0001 /* 0002 File : MQTTConnectionManagerWidget.h 0003 Project : LabPlot 0004 Description : widget for managing MQTT connections 0005 -------------------------------------------------------------------- 0006 SPDX-FileCopyrightText: 2018 Ferencz Kovacs <kferike98@gmail.com> 0007 SPDX-FileCopyrightText: 2018-2019 Alexander Semke <alexander.semke@web.de> 0008 SPDX-License-Identifier: GPL-2.0-or-later 0009 */ 0010 0011 #ifndef MQTTCONNECTIONMANAGERWIDGET_H 0012 #define MQTTCONNECTIONMANAGERWIDGET_H 0013 0014 #include "ui_mqttconnectionmanagerwidget.h" 0015 0016 class QMqttClient; 0017 class QTimer; 0018 0019 class MQTTConnectionManagerWidget : public QWidget { 0020 Q_OBJECT 0021 0022 public: 0023 explicit MQTTConnectionManagerWidget(QWidget*, const QString&); 0024 ~MQTTConnectionManagerWidget() override; 0025 0026 struct MQTTConnection { 0027 QString name; 0028 int port{1883}; 0029 QString hostName; 0030 bool useAuthentication{false}; 0031 QString userName; 0032 QString password; 0033 bool useID{false}; 0034 QString clientID; 0035 bool retain{false}; 0036 }; 0037 0038 QString connection() const; 0039 void setCurrentConnection(const QString&); 0040 void saveConnections(); 0041 bool checkConnections(); 0042 0043 private: 0044 Ui::MQTTConnectionManagerWidget ui; 0045 QList<MQTTConnection> m_connections; 0046 MQTTConnection* m_currentConnection = nullptr; 0047 bool m_initializing{false}; 0048 QString m_configPath; 0049 QString m_initConnName; 0050 QMqttClient* m_client{nullptr}; 0051 bool m_testing{false}; 0052 QTimer* m_testTimer{nullptr}; 0053 0054 QString uniqueName(); 0055 void loadConnection(); 0056 void dataChanged(); 0057 0058 private Q_SLOTS: 0059 void testConnection(); 0060 void loadConnections(); 0061 void addConnection(); 0062 void deleteConnection(); 0063 void connectionChanged(int); 0064 void nameChanged(const QString&); 0065 void hostChanged(const QString&); 0066 void portChanged(const QString&); 0067 void userNameChanged(const QString&); 0068 void passwordChanged(const QString&); 0069 void clientIdChanged(const QString&); 0070 void authenticationChecked(bool); 0071 void idChecked(bool); 0072 void retainChecked(bool); 0073 void onConnect(); 0074 void onDisconnect(); 0075 void testTimeout(); 0076 0077 Q_SIGNALS: 0078 void changed(); 0079 }; 0080 0081 #endif // MQTTCONNECTIONMANAGERWIDGET_H