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