forked from SteliosMitas/MQTTmessenger
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmydialog.cpp
103 lines (85 loc) · 2.92 KB
/
mydialog.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include "mydialog.h"
#include "ui_mydialog.h"
#include "user1.h"
#include<QDebug>
#include <QtCore/QDateTime>
#include <QtMqtt/QMqttClient>
#include <QtWidgets/QMessageBox>
#include <iostream>
using namespace std;
Mydialog::Mydialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Mydialog)
{
ui->setupUi(this);
m_client = new QMqttClient(this);
m_client->setHostname(ui->hostlbl->text());
m_client->setPort(ui->portlbl->value());
connect(m_client, &QMqttClient::stateChanged, this, &Mydialog::updateLogStateChange);
connect(m_client, &QMqttClient::disconnected, this, &Mydialog::brokerDisconnected);
connect(m_client, &QMqttClient::messageReceived, this, [this](const QByteArray &message, const QMqttTopicName &topic) {
const QString content = QDateTime::currentDateTime().toString()
+ QLatin1String(" Received Topic: ")
+ topic.name()
+ QLatin1String(" Message: ")
+ message
+ QLatin1Char('\n');
ui->meslog->insertPlainText(content);
});
connect(ui->hostlbl, &QLineEdit::textChanged, m_client, &QMqttClient::setHostname);
connect(ui->portlbl, QOverload<int>::of(&QSpinBox::valueChanged), this, &Mydialog::setClientPort);
updateLogStateChange();
}
Mydialog::~Mydialog()
{
delete ui;
}
void Mydialog::on_subscribeBtn_clicked()
{
auto subscription = m_client->subscribe(ui->topiclbl->text());
if (!subscription) {
QMessageBox::critical(this, QLatin1String("Error"), QLatin1String("Could not subscribe. Is there a valid connection?"));
return;
}
}
void Mydialog::on_connectBt_clicked()
{
if (m_client->state() == QMqttClient::Disconnected) {
ui->hostlbl->setEnabled(false);
ui->portlbl->setEnabled(false);
ui->connectBt->setText(tr("Disconnect"));
m_client->connectToHost();
} else {
ui->hostlbl->setEnabled(true);
ui->portlbl->setEnabled(true);
ui->connectBt->setText(tr("Connect"));
m_client->disconnectFromHost();
}
}
void Mydialog::on_quitBtn_clicked()
{
QApplication::quit();
}
void Mydialog::updateLogStateChange()
{
const QString content = QDateTime::currentDateTime().toString()
+ QLatin1String(": State Change")
+ QString::number(m_client->state())
+ QLatin1Char('\n');
ui->meslog->insertPlainText(content);
}
void Mydialog::on_publishBtn_clicked()
{
if (m_client->publish(ui->topiclbl->text(), ui->messagelbl->text().toUtf8()) == -1)
QMessageBox::critical(this, QLatin1String("Error"), QLatin1String("Could not publish message"));
}
void Mydialog::brokerDisconnected()
{
ui->hostlbl->setEnabled(true);
ui->portlbl->setEnabled(true);
ui->connectBt->setText(tr("Connect"));
}
void Mydialog::setClientPort(int p)
{
m_client->setPort(p);
}