kopia lustrzana https://gitlab.com/eliggett/wfview
128 wiersze
3.9 KiB
C++
128 wiersze
3.9 KiB
C++
|
#include "udpserversetup.h"
|
||
|
#include "ui_udpserversetup.h"
|
||
|
#include "logcategories.h"
|
||
|
|
||
|
extern void passcode(QString in,QByteArray& out);
|
||
|
|
||
|
udpServerSetup::udpServerSetup(QWidget* parent) :
|
||
|
QDialog(parent),
|
||
|
ui(new Ui::udpServerSetup)
|
||
|
{
|
||
|
ui->setupUi(this);
|
||
|
addUserLine("", "", 0); // Create a blank row if we never receive config.
|
||
|
|
||
|
// Get any stored config information from the main form.
|
||
|
SERVERCONFIG config;
|
||
|
emit serverConfig(config,false); // Just send blank server config.
|
||
|
}
|
||
|
|
||
|
udpServerSetup::~udpServerSetup()
|
||
|
{
|
||
|
delete ui;
|
||
|
}
|
||
|
|
||
|
// Slot to receive config.
|
||
|
void udpServerSetup::receiveServerConfig(SERVERCONFIG conf)
|
||
|
{
|
||
|
qInfo() << "Getting server config";
|
||
|
|
||
|
ui->enableCheckbox->setChecked(conf.enabled);
|
||
|
ui->controlPortText->setText(QString::number(conf.controlPort));
|
||
|
ui->civPortText->setText(QString::number(conf.civPort));
|
||
|
ui->audioPortText->setText(QString::number(conf.audioPort));
|
||
|
|
||
|
int row = 0;
|
||
|
|
||
|
for (int i = 0; i < ui->usersTable->rowCount(); i++)
|
||
|
{
|
||
|
ui->usersTable->removeRow(i);
|
||
|
}
|
||
|
|
||
|
foreach (SERVERUSER user, conf.users)
|
||
|
{
|
||
|
if (user.username != "" && user.password != "")
|
||
|
{
|
||
|
addUserLine(user.username, user.password, user.userType);
|
||
|
row++;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (row == 0) {
|
||
|
addUserLine("", "", 0);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
void udpServerSetup::accept()
|
||
|
{
|
||
|
qInfo() << "Server config stored";
|
||
|
SERVERCONFIG config;
|
||
|
config.enabled = ui->enableCheckbox->isChecked();
|
||
|
config.controlPort = ui->controlPortText->text().toInt();
|
||
|
config.civPort = ui->civPortText->text().toInt();
|
||
|
config.audioPort = ui->audioPortText->text().toInt();
|
||
|
|
||
|
config.users.clear();
|
||
|
|
||
|
for (int row = 0; row < ui->usersTable->model()->rowCount(); row++)
|
||
|
{
|
||
|
if (ui->usersTable->item(row, 0) != NULL)
|
||
|
{
|
||
|
SERVERUSER user;
|
||
|
user.username = ui->usersTable->item(row, 0)->text();
|
||
|
QLineEdit* password = (QLineEdit*)ui->usersTable->cellWidget(row, 1);
|
||
|
user.password = password->text();
|
||
|
QComboBox* comboBox = (QComboBox*)ui->usersTable->cellWidget(row, 2);
|
||
|
user.userType = comboBox->currentIndex();
|
||
|
config.users.append(user);
|
||
|
|
||
|
}
|
||
|
else {
|
||
|
ui->usersTable->removeRow(row);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
emit serverConfig(config,true);
|
||
|
this->hide();
|
||
|
}
|
||
|
|
||
|
|
||
|
void udpServerSetup::on_usersTable_cellClicked(int row, int col)
|
||
|
{
|
||
|
qInfo() << "Clicked on " << row << "," << col;
|
||
|
if (row == ui->usersTable->model()->rowCount() - 1 && ui->usersTable->item(row, 0) != NULL) {
|
||
|
addUserLine("", "", 0);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void udpServerSetup::onPasswordChanged()
|
||
|
{
|
||
|
int row = sender()->property("row").toInt();
|
||
|
QLineEdit* password = (QLineEdit*)ui->usersTable->cellWidget(row, 1);
|
||
|
QByteArray pass;
|
||
|
passcode(password->text(), pass);
|
||
|
password->setText(pass);
|
||
|
qInfo() << "password row" << row << "changed";
|
||
|
}
|
||
|
|
||
|
void udpServerSetup::addUserLine(const QString& user, const QString& pass, const int& type)
|
||
|
{
|
||
|
ui->usersTable->insertRow(ui->usersTable->rowCount());
|
||
|
ui->usersTable->setItem(ui->usersTable->rowCount() - 1, 0, new QTableWidgetItem(user));
|
||
|
ui->usersTable->setItem(ui->usersTable->rowCount() - 1, 1, new QTableWidgetItem());
|
||
|
ui->usersTable->setItem(ui->usersTable->rowCount() - 1, 2, new QTableWidgetItem());
|
||
|
|
||
|
QLineEdit* password = new QLineEdit();
|
||
|
password->setProperty("row", (int)ui->usersTable->rowCount() - 1);
|
||
|
password->setEchoMode(QLineEdit::PasswordEchoOnEdit);
|
||
|
password->setText(pass);
|
||
|
connect(password, SIGNAL(editingFinished()), this, SLOT(onPasswordChanged()));
|
||
|
ui->usersTable->setCellWidget(ui->usersTable->rowCount() - 1, 1, password);
|
||
|
|
||
|
QComboBox* comboBox = new QComboBox();
|
||
|
comboBox->insertItems(0, { "Full User","Full with no TX","Monitor only" });
|
||
|
comboBox->setCurrentIndex(type);
|
||
|
ui->usersTable->setCellWidget(ui->usersTable->rowCount() - 1, 2, comboBox);
|
||
|
|
||
|
}
|