You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
VideoClient98/src/communicationsettingdlg.cpp

127 lines
3.9 KiB
C++

#include "communicationsettingdlg.h"
#include "ui_communicationsettingdlg.h"
CommunicationSettingDlg::CommunicationSettingDlg(QWidget *parent)
: QDialog(parent), ui(new Ui::CommunicationSettingDlg) {
ui->setupUi(this);
this->setWindowTitle("通信设置");
initCombobox();
initNetworkSetting();
}
CommunicationSettingDlg::~CommunicationSettingDlg() {
delete ui;
}
void CommunicationSettingDlg::showEvent(QShowEvent *event) {
setSaveSettingParms();
}
void CommunicationSettingDlg::initCombobox() {
ui->dataSourceCombox->addItem(QStringLiteral("L测控"));
ui->dataSourceCombox->addItem(QStringLiteral("卫通1路"));
ui->dataSourceCombox->addItem(QStringLiteral("卫通2路"));
ui->dataSourceCombox->setCurrentIndex(0);
}
void CommunicationSettingDlg::initNetworkSetting() {
QStringList localIPList;
getLocalIP(localIPList);
ui->localIP->addItems(localIPList);
ui->remoteIPEdit->setText(QStringLiteral("223.0.0.1"));
ui->remotePort->setValue(8080);
ui->localPort->setValue(8082);
}
void CommunicationSettingDlg::setSaveSettingParms() {
if (!g_networkSettingInfo) return;
int dataSourceType = g_networkSettingInfo->value("DataSource").toInt();
ui->dataSourceCombox->setCurrentIndex(dataSourceType);
QString groupName = "";
switch (dataSourceType) {
case 0:
groupName = "LLink";
break;
case 1:
groupName = "SATCOM1";
break;
case 2:
groupName = "SATCOM2";
break;
default:
break;
}
ui->remoteIPEdit->setText(
g_networkSettingInfo->value(groupName + "/remoteIP").toString());
ui->remotePort->setValue(
g_networkSettingInfo->value(groupName + "/remotePort").toInt());
ui->localPort->setValue(
g_networkSettingInfo->value(groupName + "/localPort").toInt());
QString localIP =
g_networkSettingInfo->value(groupName + "/localIP").toString();
for (int i = 0; i < ui->dataSourceCombox->count(); ++i) {
if (localIP == ui->localIP->itemText(i)) {
ui->localIP->setCurrentIndex(i);
}
}
}
// 保存设置
void CommunicationSettingDlg::on_saveSettingBtn_clicked() {
ui->saveSettingBtn->setDisabled(true);
int dataType = ui->dataSourceCombox->currentIndex();
QString remoteIP = ui->remoteIPEdit->text();
if (dataType == 0) { // L链为组播
if (!isMulticastAddress(remoteIP)) {
emit sendErrorMessage("当前IP地址为单播地址请改为组播地址!", 2);
ui->saveSettingBtn->setDisabled(false);
return;
};
} else { // 卫通为单播
if (isMulticastAddress(remoteIP)) {
emit sendErrorMessage("当前IP地址为组播地址请改为单播地址!", 2);
ui->saveSettingBtn->setDisabled(false);
return;
};
}
// 保存配置参数
if (!g_networkSettingInfo) {
this->close();
return;
};
g_networkSettingInfo->setValue("DataSource", dataType);
QString groupName = "";
switch (dataType) {
case 0:
groupName = "LLink";
break;
case 1:
groupName = "SATCOM1";
break;
case 2:
groupName = "SATCOM2";
break;
default:
break;
}
g_networkSettingInfo->setValue(groupName + "/localIP",
ui->localIP->currentText());
g_networkSettingInfo->setValue(groupName + "/localPort",
ui->localPort->value());
g_networkSettingInfo->setValue(groupName + "/remoteIP",
ui->remoteIPEdit->text());
g_networkSettingInfo->setValue(groupName + "/remotePort",
ui->remotePort->value());
ui->saveSettingBtn->setDisabled(false);
emit sendErrorMessage("保存成功!", 1);
this->close();
}