9 ui->listWidget->clear();
11 ui->buttonBox->button( QDialogButtonBox::Ok )->setEnabled(
false );
21 ui->lineEditPort->setValidator(
new QIntValidator );
23 ui->buttonBox->button( QDialogButtonBox::Ok )->setEnabled(
false );
25 static QString uuid = QString(
"Plotjuggler-") + QString::number(rand());
28 restoreGeometry(settings.value(
"MosquittoMQTT::geometry").toByteArray());
30 QString host = settings.value(
"MosquittoMQTT::host").toString();
31 ui->lineEditHost->setText( host );
33 int port = settings.value(
"MosquittoMQTT::port", 1883).toInt();
34 ui->lineEditPort->setText( QString::number(port) );
36 int qos = settings.value(
"MosquittoMQTT::qos", 0).toInt();
37 ui->comboBoxQoS->setCurrentIndex(qos);
39 int protocol_mqtt = settings.value(
"MosquittoMQTT::protocol_version").toInt();
40 ui->comboBoxVersion->setCurrentIndex(protocol_mqtt);
42 QString topic_filter = settings.value(
"MosquittoMQTT::filter").toString();
43 ui->lineEditTopicFilter->setText(topic_filter );
45 QString username = settings.value(
"MosquittoMQTT::username",
"").toString();
46 ui->lineEditUsername->setText(username);
48 QString password = settings.value(
"MosquittoMQTT::password",
"").toString();
49 ui->lineEditPassword->setText(password);
55 ui->buttonEraseServerCertificate->setEnabled(
true);
62 ui->buttonEraseClientCertificate->setEnabled(
true);
69 ui->buttonErasePrivateKey->setEnabled(
true);
72 bool enable_tls = settings.value(
"MosquittoMQTT::enable_tls",
false).toBool();
73 ui->checkBoxSecurity->setChecked(enable_tls);
77 QString theme = settings.value(
"StyleSheet::theme",
"light").toString();
79 const QPixmap &icon_pixmap =
LoadSvg(
":/resources/svg/import.svg", theme);
80 ui->buttonLoadServerCertificate->setIcon(icon_pixmap);
81 ui->buttonLoadClientCertificate->setIcon(icon_pixmap);
82 ui->buttonLoadPrivateKey->setIcon(icon_pixmap);
84 connect(
ui->buttonConnect, &QPushButton::clicked,
90 connect(
ui->listWidget, &QListWidget::itemSelectionChanged,
93 connect(
ui->buttonLoadServerCertificate, &QPushButton::clicked,
96 connect(
ui->buttonLoadClientCertificate, &QPushButton::clicked,
99 connect(
ui->buttonLoadPrivateKey, &QPushButton::clicked,
102 connect(
ui->buttonEraseServerCertificate, &QPushButton::clicked,
104 ui->buttonEraseServerCertificate->setEnabled(false);
105 ui->labelServerCertificate->setText(
"");
106 _server_certificate_file.clear();
109 connect(
ui->buttonEraseClientCertificate, &QPushButton::clicked,
111 ui->buttonEraseClientCertificate->setEnabled(false);
112 ui->labelClientCertificate->setText(
"");
113 _client_certificate_file.clear();
116 connect(
ui->buttonErasePrivateKey, &QPushButton::clicked,
118 ui->buttonErasePrivateKey->setEnabled(false);
119 ui->labelPrivateKey->setText(
"");
120 _private_key_file.clear();
126 QMessageBox::warning(
this,
"Connection Lost",
127 "Client disconnected. Maybe a problem with autentication?");
134 settings.setValue(
"MosquittoMQTT::geometry", this->saveGeometry());
137 settings.setValue(
"MosquittoMQTT::host",
ui->lineEditHost->text());
138 settings.setValue(
"MosquittoMQTT::port",
ui->lineEditPort->text().toInt());
139 settings.setValue(
"MosquittoMQTT::filter",
ui->lineEditTopicFilter->text());
140 settings.setValue(
"MosquittoMQTT::username",
ui->lineEditPassword->text());
141 settings.setValue(
"MosquittoMQTT::password",
ui->lineEditUsername->text());
142 settings.setValue(
"MosquittoMQTT::protocol_version",
ui->comboBoxVersion->currentIndex());
143 settings.setValue(
"MosquittoMQTT::qos",
ui->comboBoxQoS->currentIndex());
144 settings.setValue(
"MosquittoMQTT::serialization_protocol",
ui->comboBoxProtocol->currentText());
148 settings.setValue(
"MosquittoMQTT::enable_tls",
ui->checkBoxSecurity->isChecked());
153 while(
ui->layoutOptions->count() > 0)
155 auto item =
ui->layoutOptions->takeAt(0);
156 item->widget()->setParent(
nullptr);
174 config.
host =
ui->lineEditHost->text().toStdString();
175 config.
port =
ui->lineEditPort->text().toInt();
177 config.
topics.push_back(
ui->lineEditTopicFilter->text().toStdString());
178 config.
username =
ui->lineEditUsername->text().toStdString();
179 config.
password =
ui->lineEditPassword->text().toStdString();
180 config.
qos =
ui->comboBoxQoS->currentIndex();
182 MQTT_PROTOCOL_V31 +
ui->comboBoxVersion->currentIndex();
190 if(
ui->checkBoxSecurity->isChecked() )
206 auto topic_list =
_client->getTopicList();
208 bool changed =
ui->listWidget->count() != topic_list.size();
211 for(
const auto&
topic: topic_list)
223 ui->listWidget->clear();
224 for(
const auto&
topic: topic_list)
226 ui->listWidget->addItem( QString::fromStdString(
topic) );
229 ui->listWidget->sortItems();
232 if(
_client->isConnected() == false )
240 bool selected =
ui->listWidget->selectedItems().count() > 0;
241 ui->buttonBox->button( QDialogButtonBox::Ok )->setEnabled( selected );
246 ui->connectionFrame->setEnabled(!connected);
247 ui->buttonConnect->setText( connected ?
"Disconnect" :
"Connect");
248 ui->lineEditTopicFilter->setEnabled(!connected);
249 ui->listWidget->setEnabled(connected);
255 QString directory = settings.value(
"MQTT_Dialog.loadDirectory",
256 QDir::currentPath()).toString();
258 QString filename = QFileDialog::getOpenFileName(
259 this,
"Select Server Certificate", directory,tr(
"CRT (*.crt)") );
261 if( !filename.isEmpty() )
264 directory = QFileInfo(filename).absolutePath();
265 settings.setValue(
"MQTT_Dialog.loadDirectory", directory);
267 ui->labelServerCertificate->setText(QFileInfo(filename).fileName());
268 ui->buttonEraseServerCertificate->setEnabled(
true);
275 QString directory = settings.value(
"MQTT_Dialog.loadDirectory",
276 QDir::currentPath()).toString();
278 QString filename = QFileDialog::getOpenFileName(
279 this,
"Select Client Certificate", directory,tr(
"CRT (*.crt)") );
281 if( !filename.isEmpty() )
284 directory = QFileInfo(filename).absolutePath();
285 settings.setValue(
"MQTT_Dialog.loadDirectory", directory);
287 ui->labelClientCertificate->setText(QFileInfo(filename).fileName());
288 ui->buttonEraseClientCertificate->setEnabled(
true);
295 QString directory = settings.value(
"MQTT_Dialog.loadDirectory",
296 QDir::currentPath()).toString();
298 QString filename = QFileDialog::getOpenFileName(
299 this,
"Select PrivateKey", directory,tr(
"Key (*.key)") );
301 if( !filename.isEmpty() )
304 directory = QFileInfo(filename).absolutePath();
305 settings.setValue(
"MQTT_Dialog.loadDirectory", directory);
307 ui->labelPrivateKey->setText(QFileInfo(filename).fileName());
308 ui->buttonErasePrivateKey->setEnabled(
true);
std::shared_ptr< MQTTClient > Ptr
void onLoadServerCertificate()
void onSelectionChanged()
QString _server_certificate_file
const QPixmap & LoadSvg(QString filename, QString style_name="light")
void onLoadClientCertificate()
MQTT_Dialog(MQTTClient::Ptr mosq_client)
QString _private_key_file
unsigned int max_inflight
void onConnectionClosed()
QString _client_certificate_file
void changeConnectionState(bool connected)
std::unordered_set< std::string > _topic_list
std::vector< std::string > topics
QTimer * _topic_list_timer