2023-04-18 14:14:46 +08:00
|
|
|
|
#include "ctrlnetworkpanel.h"
|
2023-10-23 15:08:45 +08:00
|
|
|
|
#include "gutil/qwaitingdlg.h"
|
2024-08-07 18:18:37 +08:00
|
|
|
|
#include "main.h"
|
2023-04-18 14:14:46 +08:00
|
|
|
|
#include "tools.h"
|
2023-05-15 16:06:10 +08:00
|
|
|
|
#include "devicepanel.h"
|
2023-04-18 14:14:46 +08:00
|
|
|
|
#include "gutil/qgui.h"
|
2023-04-23 17:01:35 +08:00
|
|
|
|
#include "gutil/qnetwork.h"
|
2023-04-18 14:14:46 +08:00
|
|
|
|
#include <QJsonArray>
|
|
|
|
|
#include <QMessageBox>
|
|
|
|
|
#include <QStackedLayout>
|
|
|
|
|
#include <QGridLayout>
|
|
|
|
|
|
2023-08-01 11:42:41 +08:00
|
|
|
|
CtrlNetworkPanel::CtrlNetworkPanel() {
|
2023-04-18 14:14:46 +08:00
|
|
|
|
auto vBox = new VBox(this);
|
|
|
|
|
|
|
|
|
|
lbLanCfg = new QLabel;
|
2023-04-27 15:06:24 +08:00
|
|
|
|
auto ftTitle = lbLanCfg->font();
|
|
|
|
|
ftTitle.setPixelSize(16);
|
|
|
|
|
lbLanCfg->setFont(ftTitle);
|
2023-04-18 14:14:46 +08:00
|
|
|
|
lbLanCfg->setAlignment(Qt::AlignCenter);
|
|
|
|
|
vBox->addWidget(lbLanCfg);
|
|
|
|
|
|
|
|
|
|
auto hBox = new HBox(vBox);
|
|
|
|
|
hBox->addStretch();
|
|
|
|
|
|
|
|
|
|
fdDhcp = new QRadioButton;
|
|
|
|
|
fdDhcp->setChecked(true);
|
|
|
|
|
hBox->addWidget(fdDhcp, 0, Qt::AlignTop);
|
|
|
|
|
|
|
|
|
|
hBox->addSpacing(30);
|
|
|
|
|
|
|
|
|
|
auto vBoxSpecifyIp = new VBox(hBox);
|
|
|
|
|
vBoxSpecifyIp->setContentsMargins(0, 0, 0, 0);
|
|
|
|
|
|
|
|
|
|
fdSpecifyIp = new QRadioButton;
|
|
|
|
|
vBoxSpecifyIp->addWidget(fdSpecifyIp, 0, Qt::AlignCenter);
|
|
|
|
|
|
|
|
|
|
auto grp = new QButtonGroup(this);
|
|
|
|
|
grp->addButton(fdDhcp);
|
|
|
|
|
grp->addButton(fdSpecifyIp);
|
|
|
|
|
|
|
|
|
|
gBoxSpecifyIp = new QGroupBox;
|
|
|
|
|
gBoxSpecifyIp->setMaximumWidth(340);
|
|
|
|
|
gBoxSpecifyIp->setVisible(false);
|
|
|
|
|
connect(fdSpecifyIp, &QRadioButton::toggled, gBoxSpecifyIp, &QWidget::setVisible);
|
|
|
|
|
{
|
|
|
|
|
auto vvv = new VBox(gBoxSpecifyIp);
|
|
|
|
|
auto hhh = new HBox(vvv);
|
|
|
|
|
|
2023-04-19 14:42:06 +08:00
|
|
|
|
hhh->addWidget(labelIpAddress = new QLabel);
|
2023-04-18 14:14:46 +08:00
|
|
|
|
|
2023-04-19 14:42:06 +08:00
|
|
|
|
fdIP = new QLineEdit;
|
2023-05-05 17:22:54 +08:00
|
|
|
|
auto ft = fdIP->font();
|
|
|
|
|
ft.setFamilies({"Monaco", "Consolas", "Mono-space"});
|
|
|
|
|
fdIP->setFont(ft);
|
|
|
|
|
fdIP->setInputMask("000.000.000.000");
|
2023-04-23 14:30:16 +08:00
|
|
|
|
fdIP->setAlignment(Qt::AlignCenter);
|
2023-04-18 14:14:46 +08:00
|
|
|
|
fdIP->setFixedWidth(160);
|
|
|
|
|
hhh->addWidget(fdIP);
|
|
|
|
|
|
|
|
|
|
hhh = new HBox(vvv);
|
|
|
|
|
|
2023-04-19 14:42:06 +08:00
|
|
|
|
hhh->addWidget(labelMaskAddress = new QLabel);
|
2023-04-18 14:14:46 +08:00
|
|
|
|
|
2023-04-19 14:42:06 +08:00
|
|
|
|
fdMask = new QLineEdit;
|
2023-05-05 17:22:54 +08:00
|
|
|
|
fdMask->setFont(ft);
|
|
|
|
|
fdMask->setInputMask("000.000.000.000");
|
2023-04-23 14:30:16 +08:00
|
|
|
|
fdMask->setAlignment(Qt::AlignCenter);
|
2023-04-18 14:14:46 +08:00
|
|
|
|
fdMask->setFixedWidth(160);
|
|
|
|
|
hhh->addWidget(fdMask);
|
|
|
|
|
|
|
|
|
|
hhh = new HBox(vvv);
|
|
|
|
|
|
2023-04-19 14:42:06 +08:00
|
|
|
|
hhh->addWidget(labelGateway = new QLabel);
|
2023-04-18 14:14:46 +08:00
|
|
|
|
|
2023-04-19 14:42:06 +08:00
|
|
|
|
fdGateWay = new QLineEdit;
|
2023-05-05 17:22:54 +08:00
|
|
|
|
fdGateWay->setFont(ft);
|
|
|
|
|
fdGateWay->setInputMask("000.000.000.000");
|
2023-04-23 14:30:16 +08:00
|
|
|
|
fdGateWay->setAlignment(Qt::AlignCenter);
|
2023-04-18 14:14:46 +08:00
|
|
|
|
fdGateWay->setFixedWidth(160);
|
|
|
|
|
hhh->addWidget(fdGateWay);
|
|
|
|
|
|
|
|
|
|
hhh = new HBox(vvv);
|
|
|
|
|
|
2023-04-19 14:42:06 +08:00
|
|
|
|
hhh->addWidget(labelDnsAddress = new QLabel);
|
2023-04-18 14:14:46 +08:00
|
|
|
|
|
2023-04-19 14:42:06 +08:00
|
|
|
|
fdDns = new QLineEdit;
|
2023-05-05 17:22:54 +08:00
|
|
|
|
fdDns->setFont(ft);
|
|
|
|
|
fdDns->setInputMask("000.000.000.000");
|
2023-04-23 14:30:16 +08:00
|
|
|
|
fdDns->setAlignment(Qt::AlignCenter);
|
2023-04-18 14:14:46 +08:00
|
|
|
|
fdDns->setFixedWidth(160);
|
|
|
|
|
hhh->addWidget(fdDns);
|
|
|
|
|
}
|
|
|
|
|
vBoxSpecifyIp->addWidget(gBoxSpecifyIp);
|
|
|
|
|
|
|
|
|
|
hBox->addStretch();
|
|
|
|
|
|
|
|
|
|
hBox = new HBox(vBox);
|
|
|
|
|
hBox->addStretch();
|
|
|
|
|
|
|
|
|
|
btnLanSet = new QPushButton;
|
|
|
|
|
btnLanSet->setMinimumSize(QSize(60, 30));
|
|
|
|
|
btnLanSet->setProperty("ssType", "progManageTool");
|
|
|
|
|
connect(btnLanSet, &QPushButton::clicked, this, [this] {
|
2023-05-15 16:06:10 +08:00
|
|
|
|
if(gSelCards.isEmpty()) {
|
2023-05-11 11:47:00 +08:00
|
|
|
|
QMessageBox::information(this, tr("Tip"), tr("NoSelectedController"));
|
2023-04-18 14:14:46 +08:00
|
|
|
|
return;
|
|
|
|
|
}
|
2023-04-23 14:30:16 +08:00
|
|
|
|
QString ip = fdIP->text();
|
|
|
|
|
QString mask = fdMask->text();
|
|
|
|
|
QString gateWay = fdGateWay->text();
|
|
|
|
|
QString dns = fdDns->text();
|
2023-04-18 14:14:46 +08:00
|
|
|
|
if(fdDhcp->isChecked()) {
|
2023-04-23 14:30:16 +08:00
|
|
|
|
if(ip=="...") ip = "0.255.255.255";
|
|
|
|
|
if(mask=="...") mask = "0.255.255.255";
|
|
|
|
|
if(gateWay=="...") gateWay = "0.255.255.255";
|
|
|
|
|
if(dns=="...") dns = "0.255.255.255";
|
2023-04-18 14:14:46 +08:00
|
|
|
|
} else {
|
2023-04-23 14:30:16 +08:00
|
|
|
|
if(ip=="...") {
|
2023-05-11 11:47:00 +08:00
|
|
|
|
QMessageBox::warning(this, tr("Attention"), tr("Please input IP address!"));
|
2023-04-18 14:14:46 +08:00
|
|
|
|
fdIP->setFocus();
|
|
|
|
|
return;
|
|
|
|
|
}
|
2023-04-23 14:30:16 +08:00
|
|
|
|
if(mask=="...") {
|
2023-05-11 11:47:00 +08:00
|
|
|
|
QMessageBox::warning(this, tr("Attention"), tr("Please input Mask address!"));
|
2023-04-18 14:14:46 +08:00
|
|
|
|
fdMask->setFocus();
|
|
|
|
|
return;
|
|
|
|
|
}
|
2023-04-23 14:30:16 +08:00
|
|
|
|
if(gateWay=="...") {
|
2023-05-11 11:47:00 +08:00
|
|
|
|
QMessageBox::warning(this, tr("Attention"), tr("Please input Gateway address!"));
|
2023-04-18 14:14:46 +08:00
|
|
|
|
fdGateWay->setFocus();
|
|
|
|
|
return;
|
|
|
|
|
}
|
2023-04-23 14:30:16 +08:00
|
|
|
|
if(dns=="...") {
|
2023-05-11 11:47:00 +08:00
|
|
|
|
QMessageBox::warning(this, tr("Attention"), tr("Please input DNS address!"));
|
2023-04-18 14:14:46 +08:00
|
|
|
|
fdDns->setFocus();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
QJsonObject json;
|
|
|
|
|
json.insert("_id", "SetEthernet");
|
|
|
|
|
json.insert("_type", "SetEthernet");
|
|
|
|
|
json.insert("dhcp", fdDhcp->isChecked());
|
|
|
|
|
json.insert("ip", ip);
|
|
|
|
|
json.insert("netMask", mask);
|
|
|
|
|
json.insert("gateWay", gateWay);
|
|
|
|
|
json.insert("dns", dns);
|
2023-05-15 16:06:10 +08:00
|
|
|
|
if(gSelCards.count() == 1) {
|
2023-04-18 14:14:46 +08:00
|
|
|
|
auto waitingDlg = new WaitingDlg(this, tr("SetEthernet"));
|
|
|
|
|
Def_CtrlReqPre
|
2023-05-11 11:47:00 +08:00
|
|
|
|
connect(reply, &QNetworkReply::finished, this, [=] {
|
2023-04-18 14:14:46 +08:00
|
|
|
|
Def_CtrlSetReqAfter
|
|
|
|
|
});
|
|
|
|
|
} else {
|
2023-05-15 16:06:10 +08:00
|
|
|
|
foreach(auto card, gSelCards) {
|
2023-04-18 14:14:46 +08:00
|
|
|
|
Def_CtrlSetMulti(tr("SetEthernet"))
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
hBox->addWidget(btnLanSet);
|
|
|
|
|
|
|
|
|
|
hBox->addSpacing(50);
|
|
|
|
|
|
|
|
|
|
btnLanGet = new QPushButton;
|
|
|
|
|
btnLanGet->setMinimumSize(QSize(60, 30));
|
|
|
|
|
btnLanGet->setProperty("ssType", "progManageTool");
|
|
|
|
|
connect(btnLanGet, &QPushButton::clicked, this, [this] {
|
2023-05-15 16:06:10 +08:00
|
|
|
|
if(gSelCards.isEmpty()) {
|
2023-05-11 11:47:00 +08:00
|
|
|
|
QMessageBox::information(this, tr("Tip"), tr("NoSelectedController"));
|
2023-04-18 14:14:46 +08:00
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
QJsonObject json;
|
|
|
|
|
json.insert("_id", "GetEthernet");
|
|
|
|
|
json.insert("_type", "GetEthernet");
|
2023-05-15 16:06:10 +08:00
|
|
|
|
if(gSelCards.count() == 1) {
|
2023-04-18 14:14:46 +08:00
|
|
|
|
auto waitingDlg = new WaitingDlg(this, tr("GetEthernet"));
|
|
|
|
|
Def_CtrlReqPre
|
|
|
|
|
connect(reply, &QNetworkReply::finished, this, [this, reply, waitingDlg] {
|
|
|
|
|
Def_CtrlSingleGetReply
|
|
|
|
|
waitingDlg->success();
|
|
|
|
|
if(json["dhcp"].toBool()) {
|
|
|
|
|
fdDhcp->setChecked(true);
|
|
|
|
|
gBoxSpecifyIp->setVisible(false);
|
|
|
|
|
} else {
|
|
|
|
|
fdSpecifyIp->setChecked(true);
|
|
|
|
|
gBoxSpecifyIp->setVisible(true);
|
|
|
|
|
}
|
|
|
|
|
fdIP->setText(json["ipAddr"].toString());
|
|
|
|
|
fdMask->setText(json["netMask"].toString());
|
|
|
|
|
fdGateWay->setText(json["gateWay"].toString());
|
|
|
|
|
fdDns->setText(json["dnsAddr"].toString());
|
|
|
|
|
});
|
|
|
|
|
} else {
|
2023-05-15 16:06:10 +08:00
|
|
|
|
foreach(auto card, gSelCards) {
|
|
|
|
|
auto reply = NetReq("http://"+card.ip+":2016/settings").timeout(120000).post(json);
|
|
|
|
|
auto cardId = card.id;
|
2023-04-18 14:14:46 +08:00
|
|
|
|
connect(reply, &QNetworkReply::finished, this, [reply, cardId] {
|
|
|
|
|
QJsonDocument json;
|
|
|
|
|
QString err = checkReplyForJson(reply, &json);
|
|
|
|
|
if(err.isEmpty()) err = json["dhcp"].toBool() ? tr("DHCP IP") : tr("STATIC IP");
|
|
|
|
|
gFdResInfo->append(cardId+" "+tr("GetEthernet")+" "+err);
|
|
|
|
|
gFdResInfo->append(" IP: "+json["ipAddr"].toString());
|
|
|
|
|
gFdResInfo->append(" Mask: "+json["netMask"].toString());
|
|
|
|
|
gFdResInfo->append(" GateWay: "+json["gateWay"].toString());
|
|
|
|
|
gFdResInfo->append(" Dns: "+json["dnsAddr"].toString());
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
hBox->addWidget(btnLanGet);
|
|
|
|
|
|
|
|
|
|
hBox->addStretch();
|
|
|
|
|
|
|
|
|
|
auto line = new QFrame;
|
|
|
|
|
line->setFrameShape(QFrame::HLine);
|
|
|
|
|
line->setFrameShadow(QFrame::Sunken);
|
|
|
|
|
vBox->addWidget(line);
|
|
|
|
|
|
|
|
|
|
label_5 = new QLabel;
|
2023-04-27 15:06:24 +08:00
|
|
|
|
label_5->setFont(ftTitle);
|
2023-04-18 14:14:46 +08:00
|
|
|
|
label_5->setAlignment(Qt::AlignCenter);
|
|
|
|
|
vBox->addWidget(label_5);
|
|
|
|
|
|
|
|
|
|
hBox = new HBox(vBox);
|
|
|
|
|
hBox->addStretch();
|
|
|
|
|
|
|
|
|
|
auto stackedWifi = new QStackedLayout;
|
|
|
|
|
fdIsWifi = new QRadioButton;
|
|
|
|
|
connect(fdIsWifi, &QRadioButton::toggled, this, [stackedWifi](bool checked) {
|
|
|
|
|
stackedWifi->setCurrentIndex(checked ? 0 : 1);
|
|
|
|
|
});
|
|
|
|
|
hBox->addWidget(fdIsWifi);
|
|
|
|
|
hBox->addSpacing(50);
|
|
|
|
|
|
|
|
|
|
fdIsHotspot = new QRadioButton;
|
|
|
|
|
hBox->addWidget(fdIsHotspot);
|
|
|
|
|
hBox->addStretch();
|
|
|
|
|
|
2024-05-23 17:13:51 +08:00
|
|
|
|
auto aaaQButtonGroup = new QButtonGroup(fdIsWifi);
|
|
|
|
|
aaaQButtonGroup->addButton(fdIsWifi);
|
|
|
|
|
aaaQButtonGroup->addButton(fdIsHotspot);
|
|
|
|
|
|
2023-04-18 14:14:46 +08:00
|
|
|
|
vBox->addLayout(stackedWifi);
|
|
|
|
|
{
|
|
|
|
|
auto vvv = new VBox(stackedWifi);
|
|
|
|
|
hBox = new HBox(vvv);
|
|
|
|
|
|
|
|
|
|
lbWifiName = new QLabel;
|
|
|
|
|
lbWifiName->setMinimumWidth(80);
|
2024-05-23 17:13:51 +08:00
|
|
|
|
lbWifiName->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
|
2023-04-18 14:14:46 +08:00
|
|
|
|
hBox->addWidget(lbWifiName);
|
|
|
|
|
|
|
|
|
|
fdWifiName = new QComboBox;
|
|
|
|
|
fdWifiName->setEditable(true);
|
|
|
|
|
fdWifiName->setMinimumWidth(200);
|
|
|
|
|
fdWifiName->setSizeAdjustPolicy(QComboBox::AdjustToContents);
|
|
|
|
|
hBox->addWidget(fdWifiName);
|
|
|
|
|
|
|
|
|
|
btnScan = new QPushButton;
|
|
|
|
|
btnScan->setMinimumWidth(60);
|
|
|
|
|
btnScan->setProperty("ssType", "progManageTool");
|
|
|
|
|
connect(btnScan, &QPushButton::clicked, this, [this] {
|
2023-05-15 16:06:10 +08:00
|
|
|
|
if(gSelCards.isEmpty()) {
|
2023-05-11 11:47:00 +08:00
|
|
|
|
QMessageBox::information(this, tr("Tip"), tr("NoSelectedController"));
|
2023-04-18 14:14:46 +08:00
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
QJsonObject json;
|
|
|
|
|
json.insert("_id", "GetWifiList");
|
|
|
|
|
json.insert("_type", "GetWifiList");
|
2023-05-15 16:06:10 +08:00
|
|
|
|
if(gSelCards.count() == 1) {
|
2023-04-18 14:14:46 +08:00
|
|
|
|
auto waitingDlg = new WaitingDlg(this, tr("GetWifiList")+" ...");
|
|
|
|
|
Def_CtrlReqPre
|
|
|
|
|
connect(reply, &QNetworkReply::finished, this, [this, reply, waitingDlg] {
|
|
|
|
|
Def_CtrlSingleGetReply
|
|
|
|
|
waitingDlg->success();
|
|
|
|
|
auto wifis = json["wifiList"].toArray();
|
|
|
|
|
auto cur = fdWifiName->currentText();
|
|
|
|
|
fdWifiName->clear();
|
2023-04-19 14:42:06 +08:00
|
|
|
|
foreach(QJsonValue wifi, wifis) fdWifiName->addItem(QIcon(":/res/signal-"+QString::number((wifi["signal"].toInt()+19)/20)+".png"), wifi["ssid"].toString());
|
2023-04-18 14:14:46 +08:00
|
|
|
|
if(! cur.isEmpty()) fdWifiName->setCurrentText(cur);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
hBox->addWidget(btnScan);
|
|
|
|
|
hBox->addStretch();
|
|
|
|
|
|
|
|
|
|
hBox = new HBox(vvv);
|
|
|
|
|
|
|
|
|
|
lbWifiPassword = new QLabel;
|
|
|
|
|
lbWifiPassword->setMinimumWidth(80);
|
2024-05-23 17:13:51 +08:00
|
|
|
|
lbWifiPassword->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
|
2023-04-18 14:14:46 +08:00
|
|
|
|
hBox->addWidget(lbWifiPassword);
|
|
|
|
|
|
|
|
|
|
fdWifiPassword = new QLineEdit;
|
|
|
|
|
fdWifiPassword->setFixedWidth(200);
|
|
|
|
|
fdWifiPassword->setEchoMode(QLineEdit::PasswordEchoOnEdit);
|
|
|
|
|
hBox->addWidget(fdWifiPassword);
|
|
|
|
|
hBox->addStretch();
|
|
|
|
|
|
|
|
|
|
vvv->addStretch();
|
|
|
|
|
|
|
|
|
|
vvv = new VBox(stackedWifi);
|
|
|
|
|
hBox = new HBox(vvv);
|
|
|
|
|
|
|
|
|
|
lbHotspotName = new QLabel;
|
|
|
|
|
lbHotspotName->setMinimumWidth(80);
|
2024-05-23 17:13:51 +08:00
|
|
|
|
lbHotspotName->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
|
2023-04-18 14:14:46 +08:00
|
|
|
|
hBox->addWidget(lbHotspotName);
|
|
|
|
|
|
|
|
|
|
fdHotspotName = new QLineEdit;
|
|
|
|
|
fdHotspotName->setFixedWidth(200);
|
|
|
|
|
hBox->addWidget(fdHotspotName);
|
|
|
|
|
hBox->addStretch();
|
|
|
|
|
|
|
|
|
|
hBox = new HBox(vvv);
|
|
|
|
|
|
|
|
|
|
lbHotspotPassword = new QLabel;
|
|
|
|
|
lbHotspotPassword->setMinimumWidth(80);
|
2024-05-23 17:13:51 +08:00
|
|
|
|
lbHotspotPassword->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
|
2023-04-18 14:14:46 +08:00
|
|
|
|
hBox->addWidget(lbHotspotPassword);
|
|
|
|
|
|
|
|
|
|
fdHotspotPassword = new QLineEdit;
|
|
|
|
|
fdHotspotPassword->setEchoMode(QLineEdit::PasswordEchoOnEdit);
|
|
|
|
|
fdHotspotPassword->setFixedWidth(200);
|
|
|
|
|
hBox->addWidget(fdHotspotPassword);
|
|
|
|
|
hBox->addStretch();
|
|
|
|
|
|
2024-05-23 17:13:51 +08:00
|
|
|
|
hBox = new HBox(vvv);
|
|
|
|
|
|
|
|
|
|
auto lll = new QLabel;
|
|
|
|
|
lll->setMinimumWidth(80);
|
|
|
|
|
hBox->addWidget(lll);
|
|
|
|
|
|
|
|
|
|
fdIs2_4G = new QRadioButton("2.4G");
|
|
|
|
|
fdIs2_4G->setChecked(true);
|
|
|
|
|
hBox->addWidget(fdIs2_4G);
|
|
|
|
|
|
|
|
|
|
auto fdIs5G = new QRadioButton("5G");
|
|
|
|
|
hBox->addWidget(fdIs5G);
|
|
|
|
|
hBox->addStretch();
|
|
|
|
|
|
2023-04-18 14:14:46 +08:00
|
|
|
|
vvv->addStretch();
|
|
|
|
|
}
|
|
|
|
|
fdIsWifi->setChecked(true);
|
|
|
|
|
|
|
|
|
|
hBox = new HBox(vBox);
|
|
|
|
|
hBox->addStretch();
|
|
|
|
|
|
|
|
|
|
btnWiFiSet = new QPushButton;
|
|
|
|
|
btnWiFiSet->setMinimumSize(QSize(60, 30));
|
|
|
|
|
btnWiFiSet->setProperty("ssType", "progManageTool");
|
|
|
|
|
connect(btnWiFiSet, &QPushButton::clicked, this, [this] {
|
2023-05-15 16:06:10 +08:00
|
|
|
|
if(gSelCards.isEmpty()) {
|
2023-05-11 11:47:00 +08:00
|
|
|
|
QMessageBox::information(this, tr("Tip"), tr("NoSelectedController"));
|
2023-04-18 14:14:46 +08:00
|
|
|
|
return;
|
|
|
|
|
}
|
2023-04-23 17:01:35 +08:00
|
|
|
|
auto isWifi = fdIsWifi->isChecked();
|
|
|
|
|
if(isWifi) {
|
2023-04-25 16:30:58 +08:00
|
|
|
|
QJsonObject json;
|
|
|
|
|
json.insert("_id", "SetSwitchWiFi");
|
|
|
|
|
json.insert("_type", "SetSwitchWiFi");
|
|
|
|
|
json.insert("enable", true);
|
|
|
|
|
QJsonObject json2;
|
2023-04-23 17:01:35 +08:00
|
|
|
|
json2.insert("_id", "ConfigurationWiFi");
|
|
|
|
|
json2.insert("_type", "ConfigurationWiFi");
|
|
|
|
|
json2.insert("ssid", fdWifiName->currentText());
|
|
|
|
|
json2.insert("password", fdWifiPassword->text());
|
2023-05-15 16:06:10 +08:00
|
|
|
|
if(gSelCards.count() == 1) {
|
2023-04-25 16:30:58 +08:00
|
|
|
|
auto waitingDlg = new WaitingDlg(this, tr("ConfigurationWiFi")+" ...");
|
|
|
|
|
Def_CtrlReqPre
|
2023-10-23 15:08:45 +08:00
|
|
|
|
connect(reply, &QNetworkReply::finished, waitingDlg, [=] {
|
2023-04-23 17:01:35 +08:00
|
|
|
|
QString err = checkReplyForJson(reply);
|
|
|
|
|
if(! err.isEmpty()) {
|
2023-04-25 16:30:58 +08:00
|
|
|
|
waitingDlg->close();
|
2023-05-11 11:47:00 +08:00
|
|
|
|
QMessageBox::critical(this, tr("Error"), err);
|
2023-04-23 17:01:35 +08:00
|
|
|
|
return;
|
|
|
|
|
}
|
2023-05-15 16:06:10 +08:00
|
|
|
|
auto reply = NetReq("http://"+card.ip+":2016/settings").timeout(120000).post(json2);
|
2023-10-23 15:08:45 +08:00
|
|
|
|
ConnReply(reply, waitingDlg) [=] {
|
2023-04-25 16:30:58 +08:00
|
|
|
|
Def_CtrlSetReqAfter
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
} else {
|
2023-05-15 16:06:10 +08:00
|
|
|
|
foreach(auto card, gSelCards) {
|
|
|
|
|
auto reply = NetReq("http://"+card.ip+":2016/settings").timeout(120000).post(json);
|
|
|
|
|
connect(reply, &QNetworkReply::finished, this, [=] {
|
2023-04-23 17:01:35 +08:00
|
|
|
|
QString err = checkReplyForJson(reply);
|
2023-04-25 16:30:58 +08:00
|
|
|
|
if(! err.isEmpty()) {
|
2023-05-15 16:06:10 +08:00
|
|
|
|
gFdResInfo->append(card.id+" "+tr("ConfigurationWiFi")+" "+err);
|
2023-04-25 16:30:58 +08:00
|
|
|
|
return;
|
|
|
|
|
}
|
2023-05-15 16:06:10 +08:00
|
|
|
|
auto reply = NetReq("http://"+card.ip+":2016/settings").timeout(120000).post(json2);
|
|
|
|
|
connect(reply, &QNetworkReply::finished, this, [=] {
|
2023-04-25 16:30:58 +08:00
|
|
|
|
QString err = checkReplyForJson(reply);
|
2023-05-15 16:06:10 +08:00
|
|
|
|
gFdResInfo->append(card.id+" "+tr("ConfigurationWiFi")+" "+(err.isEmpty()?QCoreApplication::translate("Def","Success"):err));
|
2023-04-25 16:30:58 +08:00
|
|
|
|
});
|
2023-04-23 17:01:35 +08:00
|
|
|
|
});
|
2023-04-25 16:30:58 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
QJsonObject json;
|
|
|
|
|
json.insert("_id", "ConfigurationHotSpot");
|
|
|
|
|
json.insert("_type", "ConfigurationHotSpot");
|
|
|
|
|
json.insert("apName", fdHotspotName->text());
|
2024-05-23 17:13:51 +08:00
|
|
|
|
json.insert("apBand", fdIs2_4G->isChecked() ? 0 : 1);
|
2023-04-25 16:30:58 +08:00
|
|
|
|
json.insert("password", fdHotspotPassword->text());
|
2023-05-15 16:06:10 +08:00
|
|
|
|
if(gSelCards.count() == 1) {
|
2023-04-25 16:30:58 +08:00
|
|
|
|
auto waitingDlg = new WaitingDlg(this, tr("ConfigurationHotSpot")+" ...");
|
|
|
|
|
Def_CtrlReqPre
|
2023-05-15 16:06:10 +08:00
|
|
|
|
connect(reply, &QNetworkReply::finished, this, [=] {
|
2023-04-25 16:30:58 +08:00
|
|
|
|
Def_CtrlSetReqAfter
|
2023-04-23 17:01:35 +08:00
|
|
|
|
});
|
2023-04-25 16:30:58 +08:00
|
|
|
|
} else {
|
2023-05-15 16:06:10 +08:00
|
|
|
|
foreach(auto card, gSelCards) {
|
2023-04-25 16:30:58 +08:00
|
|
|
|
Def_CtrlSetMulti(tr("ConfigurationHotSpot"));
|
|
|
|
|
}
|
2023-04-18 14:14:46 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
hBox->addWidget(btnWiFiSet);
|
|
|
|
|
hBox->addSpacing(50);
|
|
|
|
|
|
|
|
|
|
btnWiFiGet = new QPushButton;
|
|
|
|
|
btnWiFiGet->setMinimumSize(QSize(60, 30));
|
|
|
|
|
btnWiFiGet->setProperty("ssType", "progManageTool");
|
|
|
|
|
connect(btnWiFiGet, &QPushButton::clicked, this, [this] {
|
2023-05-15 16:06:10 +08:00
|
|
|
|
if(gSelCards.isEmpty()) {
|
2023-05-11 11:47:00 +08:00
|
|
|
|
QMessageBox::information(this, tr("Tip"), tr("NoSelectedController"));
|
2023-04-18 14:14:46 +08:00
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
QJsonObject json;
|
|
|
|
|
json.insert("_id", "IsPortableHotSpot");
|
|
|
|
|
json.insert("_type", "IsPortableHotSpot");
|
2023-05-15 16:06:10 +08:00
|
|
|
|
if(gSelCards.count() == 1) {
|
2023-04-18 14:14:46 +08:00
|
|
|
|
auto waitingDlg = new WaitingDlg(this, tr("IsPortableHotSpot")+" ...");
|
|
|
|
|
Def_CtrlReqPre
|
|
|
|
|
connect(reply, &QNetworkReply::finished, this, [this, reply, waitingDlg] {
|
|
|
|
|
Def_CtrlSingleGetReply
|
|
|
|
|
waitingDlg->success();
|
|
|
|
|
fdWifiName->setCurrentText(json["wifi"].toString());
|
|
|
|
|
auto hotSpots = json["hotSpots"].toString();
|
|
|
|
|
fdHotspotName->setText(hotSpots);
|
|
|
|
|
if(hotSpots.isEmpty()) fdIsWifi->setChecked(true);
|
|
|
|
|
else fdIsHotspot->setChecked(true);
|
|
|
|
|
});
|
|
|
|
|
} else {
|
2023-05-15 16:06:10 +08:00
|
|
|
|
foreach(auto card, gSelCards) {
|
|
|
|
|
auto reply = NetReq("http://"+card.ip+":2016/settings").timeout(120000).post(json);
|
|
|
|
|
auto cardId = card.id;
|
2023-04-18 14:14:46 +08:00
|
|
|
|
connect(reply, &QNetworkReply::finished, this, [reply, cardId] {
|
|
|
|
|
QJsonDocument json;
|
|
|
|
|
QString err = checkReplyForJson(reply, &json);
|
|
|
|
|
if(err.isEmpty()) {
|
|
|
|
|
err = tr("success");
|
|
|
|
|
auto wifi = json["wifi"].toString();
|
|
|
|
|
if(! wifi.isEmpty()) err += " "+tr("WifiName")+":"+wifi;
|
|
|
|
|
auto hotSpots = json["hotSpots"].toString();
|
|
|
|
|
if(! hotSpots.isEmpty()) err += " "+tr("ApName")+":"+hotSpots;
|
|
|
|
|
}
|
|
|
|
|
gFdResInfo->append(cardId+" "+tr("IsPortableHotSpot")+" "+err);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
hBox->addWidget(btnWiFiGet);
|
|
|
|
|
|
|
|
|
|
hBox->addStretch();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
line_3 = new QFrame;
|
|
|
|
|
line_3->setFrameShape(QFrame::HLine);
|
|
|
|
|
line_3->setFrameShadow(QFrame::Sunken);
|
|
|
|
|
|
|
|
|
|
vBox->addWidget(line_3);
|
|
|
|
|
|
|
|
|
|
lbCellularConfig = new QLabel;
|
2023-04-27 15:06:24 +08:00
|
|
|
|
lbCellularConfig->setFont(ftTitle);
|
2023-04-18 14:14:46 +08:00
|
|
|
|
|
|
|
|
|
vBox->addWidget(lbCellularConfig, 0, Qt::AlignHCenter);
|
|
|
|
|
|
|
|
|
|
hBox = new HBox(vBox);
|
|
|
|
|
|
|
|
|
|
fdEnableCellular = new QCheckBox;
|
|
|
|
|
fdEnableCellular->setChecked(true);
|
|
|
|
|
connect(fdEnableCellular, &QCheckBox::toggled, this, [=](bool checked) {
|
|
|
|
|
groupApn->setEnabled(checked);
|
|
|
|
|
fdMcc->setEnabled(checked);
|
|
|
|
|
fdCarrierName->setEnabled(checked);
|
|
|
|
|
|
2023-05-15 16:06:10 +08:00
|
|
|
|
if(gSelCards.isEmpty()) {
|
2023-05-11 11:47:00 +08:00
|
|
|
|
QMessageBox::information(this, tr("Tip"), tr("NoSelectedController"));
|
2023-04-18 14:14:46 +08:00
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
QJsonObject json;
|
|
|
|
|
json.insert("_id", "SetSwitchSimData");
|
|
|
|
|
json.insert("_type", "SetSwitchSimData");
|
|
|
|
|
json.insert("enable", checked);
|
2023-05-15 16:06:10 +08:00
|
|
|
|
if(gSelCards.count() == 1) {
|
2023-04-18 14:14:46 +08:00
|
|
|
|
auto waitingDlg = new WaitingDlg(this, tr("SetSwitchSimData")+" ...");
|
|
|
|
|
Def_CtrlReqPre
|
2023-05-11 11:47:00 +08:00
|
|
|
|
connect(reply, &QNetworkReply::finished, this, [=] {
|
2023-04-18 14:14:46 +08:00
|
|
|
|
Def_CtrlSetReqAfter
|
|
|
|
|
});
|
|
|
|
|
} else {
|
2023-05-15 16:06:10 +08:00
|
|
|
|
foreach(auto card, gSelCards) {
|
2023-04-18 14:14:46 +08:00
|
|
|
|
Def_CtrlSetMulti(tr("SetSwitchSimData"))
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
hBox->addWidget(fdEnableCellular);
|
|
|
|
|
|
|
|
|
|
btnSIMStatusGet = new QPushButton;
|
|
|
|
|
btnSIMStatusGet->setMinimumHeight(30);
|
|
|
|
|
btnSIMStatusGet->setProperty("ssType", "progManageTool");
|
|
|
|
|
connect(btnSIMStatusGet, &QPushButton::clicked, this, [this] {
|
2023-05-15 16:06:10 +08:00
|
|
|
|
if(gSelCards.isEmpty()) {
|
2023-05-11 11:47:00 +08:00
|
|
|
|
QMessageBox::information(this, tr("Tip"), tr("NoSelectedController"));
|
2023-04-18 14:14:46 +08:00
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
QJsonObject json;
|
|
|
|
|
json.insert("_id", "GetSIMStatus");
|
|
|
|
|
json.insert("_type", "GetSIMStatus");
|
2023-05-15 16:06:10 +08:00
|
|
|
|
if(gSelCards.count() == 1) {
|
2023-04-18 14:14:46 +08:00
|
|
|
|
auto waitingDlg = new WaitingDlg(this, tr("GetSIMStatus")+" ...");
|
|
|
|
|
Def_CtrlReqPre
|
|
|
|
|
connect(reply, &QNetworkReply::finished, this, [this, reply, waitingDlg] {
|
|
|
|
|
Def_CtrlSingleGetReply
|
|
|
|
|
waitingDlg->close();
|
|
|
|
|
QString str4GStatus = tr("状态:");
|
|
|
|
|
auto state = json["state"].toInt();
|
|
|
|
|
if(state<2) str4GStatus += tr("未知");
|
|
|
|
|
else if(state==2) str4GStatus += tr("锁定状态,需要用户的PIN码解锁");
|
|
|
|
|
else if(state==3) str4GStatus += tr("锁定状态,需要用户的PUK码解锁");
|
|
|
|
|
else if(state==4) str4GStatus += tr("锁定状态,需要网络的PIN码解锁");
|
|
|
|
|
else if(state==5) str4GStatus += tr("就绪");
|
|
|
|
|
auto imsi = json["imsi"].toString();
|
|
|
|
|
if(imsi.isEmpty()) str4GStatus += "\n"+tr("no checked sim card");
|
|
|
|
|
else {
|
|
|
|
|
str4GStatus += "\nIMSI: "+imsi+"\n";
|
|
|
|
|
fdMcc->setCurrentText(imsi.left(3));
|
|
|
|
|
str4GStatus += tr("国家码:") + json["countryCode"].toString() + "(" + imsi.left(3) + ")\n";
|
|
|
|
|
str4GStatus += tr("号码:") + json["phoneNumber"].toString() + "\n";
|
|
|
|
|
str4GStatus += tr("用户:") + json["user"].toString() + "\n";
|
|
|
|
|
str4GStatus += tr("信号:");
|
|
|
|
|
switch(json["serviceState"].toInt()) {
|
|
|
|
|
case 0: str4GStatus+=tr("信号正常")+"\r\n"; break;
|
|
|
|
|
case 1: str4GStatus+=tr("不在服务区")+"\r\n"; break;
|
|
|
|
|
case 2: str4GStatus+=tr("仅限紧急呼叫")+"\r\n"; break;
|
|
|
|
|
case 3: str4GStatus+=tr("射频已经关闭")+"\r\n"; break;
|
|
|
|
|
}
|
|
|
|
|
str4GStatus += tr("网络:");
|
|
|
|
|
switch(json["networkType"].toInt()) {
|
|
|
|
|
case 0: str4GStatus+=tr("网络类型未知")+"\r\n"; break;
|
|
|
|
|
case 1: str4GStatus+=tr("GPRS网络")+"\r\n"; break;
|
|
|
|
|
case 2: str4GStatus+=tr("EDGE网络")+"\r\n"; break;
|
|
|
|
|
case 3: str4GStatus+=tr("UMTS网络")+"\r\n"; break;
|
|
|
|
|
case 4: str4GStatus+=tr("CDMA网络,IS95A 或 IS95B.")+"\r\n"; break;
|
|
|
|
|
case 5: str4GStatus+=tr("EVDO网络, revision 0.")+"\r\n"; break;
|
|
|
|
|
case 6: str4GStatus+=tr("EVDO网络, revision A.")+"\r\n"; break;
|
|
|
|
|
case 7: str4GStatus+=tr("1xRTT网络")+"\r\n"; break;
|
|
|
|
|
case 8: str4GStatus+=tr("HSDPA网络")+"\r\n"; break;
|
|
|
|
|
case 9: str4GStatus+=tr("HSUPA网络")+"\r\n"; break;
|
|
|
|
|
case 10: str4GStatus+=tr("HSPA网络")+"\r\n"; break;
|
|
|
|
|
}
|
|
|
|
|
str4GStatus += tr("漫游:") + (json["roaming"].toBool() ? tr("Yes") : tr("No")) + "\n";
|
|
|
|
|
str4GStatus += tr("数据连接状态:");
|
|
|
|
|
switch(json["dataState"].toInt()) {
|
|
|
|
|
case 0: str4GStatus+=tr("断开")+"\r\n"; break;
|
|
|
|
|
case 1: str4GStatus+=tr("正在连接")+"\r\n"; break;
|
|
|
|
|
case 2: str4GStatus+=tr("已连接")+"\r\n"; break;
|
|
|
|
|
case 3: str4GStatus+=tr("暂停")+"\r\n"; break;
|
|
|
|
|
}
|
|
|
|
|
str4GStatus += tr("数据活动休眠状态:");
|
|
|
|
|
switch(json["dataActivity"].toInt()) {
|
|
|
|
|
case 0: str4GStatus+=tr("活动,但无数据发送和接收")+"\r\n"; break;
|
|
|
|
|
case 1: str4GStatus+=tr("活动,正在接收数据")+"\r\n"; break;
|
|
|
|
|
case 2: str4GStatus+=tr("活动,正在发送数据")+"\r\n"; break;
|
|
|
|
|
case 3: str4GStatus+=tr("活动,正在接收和发送数据")+"\r\n"; break;
|
|
|
|
|
case 4: str4GStatus+=tr("休眠状态")+"\r\n"; break;
|
|
|
|
|
}
|
|
|
|
|
str4GStatus += tr("信号强度:") + QString::number(json["signalStrength"].toInt())+"\n";
|
|
|
|
|
}
|
2023-05-11 11:47:00 +08:00
|
|
|
|
QMessageBox::information(this, tr("Tip"), str4GStatus);
|
2023-04-18 14:14:46 +08:00
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
hBox->addWidget(btnSIMStatusGet);
|
|
|
|
|
hBox->addStretch();
|
|
|
|
|
|
|
|
|
|
groupApn = new QGroupBox;
|
|
|
|
|
vBox->addWidget(groupApn);
|
|
|
|
|
auto vvv = new VBox(groupApn);
|
|
|
|
|
|
|
|
|
|
lbCheckStatusTip = new QLabel(groupApn);
|
|
|
|
|
lbCheckStatusTip->setWordWrap(true);
|
|
|
|
|
vvv->addWidget(lbCheckStatusTip);
|
|
|
|
|
|
|
|
|
|
hBox = new HBox(vvv);
|
|
|
|
|
|
|
|
|
|
label_2 = new QLabel(groupApn);
|
|
|
|
|
hBox->addWidget(label_2);
|
|
|
|
|
|
|
|
|
|
fdMcc = new QComboBox;
|
|
|
|
|
fdMcc->setMinimumWidth(80);
|
|
|
|
|
fdMcc->setEditable(true);
|
|
|
|
|
connect(fdMcc, (void(QComboBox::*)(int))&QComboBox::currentIndexChanged, this, [=](int index) {
|
|
|
|
|
if(index < 1) return;
|
|
|
|
|
fdCarrierName->clear();
|
|
|
|
|
fdCarrierName->addItem("");
|
|
|
|
|
auto apnInfos = fdMcc->itemData(index).toJsonArray();
|
2023-04-19 14:42:06 +08:00
|
|
|
|
foreach(QJsonValue apnInfo, apnInfos) fdCarrierName->addItem(apnInfo["carrier"].toString(), apnInfo);
|
2023-04-18 14:14:46 +08:00
|
|
|
|
});
|
|
|
|
|
hBox->addWidget(fdMcc);
|
|
|
|
|
|
|
|
|
|
hBox->addWidget(new QLabel("->"));
|
|
|
|
|
|
|
|
|
|
label_3 = new QLabel(groupApn);
|
|
|
|
|
hBox->addWidget(label_3);
|
|
|
|
|
|
|
|
|
|
fdCarrierName = new QComboBox;
|
|
|
|
|
fdCarrierName->setMinimumSize(QSize(200, 0));
|
|
|
|
|
fdCarrierName->setEditable(true);
|
|
|
|
|
connect(fdCarrierName, (void(QComboBox::*)(int))&QComboBox::currentIndexChanged, this, [=](int index) {
|
|
|
|
|
if(index < 1) return;
|
|
|
|
|
auto json = fdCarrierName->itemData(index).toJsonObject();
|
|
|
|
|
fdCus_Name->setText(json["carrier"].toString());
|
|
|
|
|
fdCus_apn->setText(json["apn"].toString());
|
|
|
|
|
fdCus_User->setText(json["user"].toString());
|
|
|
|
|
fdCus_pwd->setText(json["password"].toString());
|
|
|
|
|
fdCus_type->setText(json["type"].toString());
|
|
|
|
|
fdCus_server->setText(json["server"].toString());
|
|
|
|
|
fdCus_proxy->setText(json["proxy"].toString());
|
|
|
|
|
fdCus_port->setText(json["port"].toString());
|
|
|
|
|
fdCus_mmsc->setText(json["mmsc"].toString());
|
|
|
|
|
fdCus_mmsProxy->setText(json["mmsproxy"].toString());
|
|
|
|
|
fdCus_mmsPort->setText(json["mmsport"].toString());
|
|
|
|
|
});
|
|
|
|
|
hBox->addWidget(fdCarrierName);
|
|
|
|
|
|
|
|
|
|
hBox->addStretch();
|
|
|
|
|
|
|
|
|
|
hBox = new HBox(vvv);
|
|
|
|
|
hBox->addStretch();
|
|
|
|
|
|
|
|
|
|
auto grid = new QGridLayout();
|
|
|
|
|
hBox->addLayout(grid);
|
|
|
|
|
|
|
|
|
|
auto label = new QLabel("APN");
|
|
|
|
|
label->setAlignment((Qt::Alignment)AlignRight);
|
|
|
|
|
grid->addWidget(label, 0, 0);
|
|
|
|
|
grid->addWidget(lbCus_Name = new QLabel, 1, 0);
|
|
|
|
|
lbCus_Name->setAlignment((Qt::Alignment)AlignRight);
|
|
|
|
|
grid->addWidget(lbCus_User = new QLabel, 2, 0);
|
|
|
|
|
lbCus_User->setAlignment((Qt::Alignment)AlignRight);
|
|
|
|
|
grid->addWidget(lbCus_pwd = new QLabel, 3, 0);
|
|
|
|
|
lbCus_pwd->setAlignment((Qt::Alignment)AlignRight);
|
|
|
|
|
grid->addWidget(lbCus_type = new QLabel, 4, 0);
|
|
|
|
|
lbCus_type->setAlignment((Qt::Alignment)AlignRight);
|
|
|
|
|
grid->addWidget(lbCus_server = new QLabel, 5, 0);
|
|
|
|
|
lbCus_server->setAlignment((Qt::Alignment)AlignRight);
|
|
|
|
|
grid->addWidget(lbCus_port = new QLabel, 0, 2);
|
|
|
|
|
lbCus_port->setMinimumWidth(80);
|
|
|
|
|
lbCus_port->setAlignment((Qt::Alignment)AlignRight);
|
|
|
|
|
grid->addWidget(lbCus_proxy = new QLabel, 1, 2);
|
|
|
|
|
lbCus_proxy->setAlignment((Qt::Alignment)AlignRight);
|
|
|
|
|
grid->addWidget(label = new QLabel("mmsc"), 2, 2);
|
|
|
|
|
label->setAlignment((Qt::Alignment)AlignRight);
|
|
|
|
|
grid->addWidget(lbCus_mmsPort = new QLabel, 3, 2);
|
|
|
|
|
lbCus_mmsPort->setAlignment((Qt::Alignment)AlignRight);
|
|
|
|
|
grid->addWidget(lbCus_mmsProxy = new QLabel, 4, 2);
|
|
|
|
|
lbCus_mmsProxy->setAlignment((Qt::Alignment)AlignRight);
|
|
|
|
|
|
|
|
|
|
fdCus_apn = new QLineEdit;
|
|
|
|
|
fdCus_Name = new QLineEdit;
|
|
|
|
|
fdCus_User = new QLineEdit;
|
|
|
|
|
fdCus_pwd = new QLineEdit;
|
|
|
|
|
fdCus_type = new QLineEdit;
|
|
|
|
|
fdCus_server = new QLineEdit;
|
|
|
|
|
fdCus_port = new QLineEdit;
|
|
|
|
|
fdCus_proxy = new QLineEdit;
|
|
|
|
|
fdCus_mmsc = new QLineEdit;
|
|
|
|
|
fdCus_mmsPort = new QLineEdit;
|
|
|
|
|
fdCus_mmsProxy = new QLineEdit;
|
|
|
|
|
|
|
|
|
|
fdCus_apn->setMinimumWidth(260);
|
|
|
|
|
fdCus_port->setMinimumWidth(260);
|
|
|
|
|
grid->addWidget(fdCus_apn, 0, 1);
|
|
|
|
|
grid->addWidget(fdCus_Name, 1, 1);
|
|
|
|
|
grid->addWidget(fdCus_User, 2, 1);
|
|
|
|
|
grid->addWidget(fdCus_pwd, 3, 1);
|
|
|
|
|
grid->addWidget(fdCus_type, 4, 1);
|
|
|
|
|
grid->addWidget(fdCus_server, 5, 1);
|
|
|
|
|
grid->addWidget(fdCus_port, 0, 3);
|
|
|
|
|
grid->addWidget(fdCus_proxy, 1, 3);
|
|
|
|
|
grid->addWidget(fdCus_mmsc, 2, 3);
|
|
|
|
|
grid->addWidget(fdCus_mmsPort, 3, 3);
|
|
|
|
|
grid->addWidget(fdCus_mmsProxy, 4, 3);
|
|
|
|
|
|
|
|
|
|
auto hhhh = new HBox;
|
|
|
|
|
btnAPNCusSet = new QPushButton;
|
|
|
|
|
btnAPNCusSet->setMinimumSize(QSize(60, 30));
|
|
|
|
|
btnAPNCusSet->setProperty("ssType", "progManageTool");
|
|
|
|
|
connect(btnAPNCusSet, &QPushButton::clicked, this, [=] {
|
2023-05-15 16:06:10 +08:00
|
|
|
|
if(gSelCards.isEmpty()) {
|
2023-05-11 11:47:00 +08:00
|
|
|
|
QMessageBox::information(this, tr("Tip"), tr("NoSelectedController"));
|
2023-04-18 14:14:46 +08:00
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
QJsonObject json;
|
|
|
|
|
json.insert("_id", "SetAPN");
|
|
|
|
|
json.insert("_type", "SetAPN");
|
|
|
|
|
json.insert("carrier", fdCus_Name->text());
|
|
|
|
|
json.insert("apn", fdCus_apn->text());
|
|
|
|
|
json.insert("user", fdCus_User->text());
|
|
|
|
|
json.insert("password", fdCus_pwd->text());
|
|
|
|
|
json.insert("type", fdCus_type->text());
|
|
|
|
|
json.insert("server", fdCus_server->text());
|
|
|
|
|
json.insert("proxy", fdCus_proxy->text());
|
|
|
|
|
json.insert("port", fdCus_port->text());
|
|
|
|
|
json.insert("mmsc", fdCus_mmsc->text());
|
|
|
|
|
json.insert("mmsproxy", fdCus_mmsProxy->text());
|
|
|
|
|
json.insert("mmsport", fdCus_mmsPort->text());
|
|
|
|
|
|
2023-05-15 16:06:10 +08:00
|
|
|
|
if(gSelCards.count() == 1) {
|
2023-04-18 14:14:46 +08:00
|
|
|
|
auto waitingDlg = new WaitingDlg(this, tr("SetAPN")+" ...");
|
|
|
|
|
Def_CtrlReqPre
|
|
|
|
|
connect(reply, &QNetworkReply::finished, this, [=] {
|
|
|
|
|
Def_CtrlSetReqAfter
|
|
|
|
|
});
|
|
|
|
|
} else {
|
2023-05-15 16:06:10 +08:00
|
|
|
|
foreach(auto card, gSelCards) {
|
2023-04-18 14:14:46 +08:00
|
|
|
|
Def_CtrlSetMulti(tr("SetAPN"))
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
hhhh->addWidget(btnAPNCusSet);
|
|
|
|
|
hhhh->addStretch();
|
|
|
|
|
|
|
|
|
|
btnAPNCusGet = new QPushButton;
|
|
|
|
|
btnAPNCusGet->setMinimumSize(QSize(60, 30));
|
|
|
|
|
btnAPNCusGet->setProperty("ssType", "progManageTool");
|
|
|
|
|
connect(btnAPNCusGet, &QPushButton::clicked, this, [=] {
|
2023-05-15 16:06:10 +08:00
|
|
|
|
if(gSelCards.isEmpty()) {
|
2023-05-11 11:47:00 +08:00
|
|
|
|
QMessageBox::information(this, tr("Tip"), tr("NoSelectedController"));
|
2023-04-18 14:14:46 +08:00
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
QJsonObject json;
|
|
|
|
|
json.insert("_id", "GetCurrentAPN");
|
|
|
|
|
json.insert("_type", "GetCurrentAPN");
|
2023-05-15 16:06:10 +08:00
|
|
|
|
if(gSelCards.count() == 1) {
|
2023-04-18 14:14:46 +08:00
|
|
|
|
auto waitingDlg = new WaitingDlg(this, tr("GetCurrentAPN")+" ...");
|
|
|
|
|
Def_CtrlReqPre
|
|
|
|
|
connect(reply, &QNetworkReply::finished, this, [=] {
|
|
|
|
|
Def_CtrlSingleGetReply
|
|
|
|
|
waitingDlg->success();
|
|
|
|
|
fdCus_Name->setText(json["carrier"].toString());
|
|
|
|
|
fdCus_apn->setText(json["apn"].toString());
|
|
|
|
|
fdCus_User->setText(json["user"].toString());
|
|
|
|
|
fdCus_pwd->setText(json["password"].toString());
|
|
|
|
|
fdCus_type->setText(json["type"].toString());
|
|
|
|
|
fdCus_server->setText(json["server"].toString());
|
|
|
|
|
fdCus_proxy->setText(json["proxy"].toString());
|
|
|
|
|
fdCus_port->setText(json["port"].toString());
|
|
|
|
|
fdCus_mmsc->setText(json["mmsc"].toString());
|
|
|
|
|
fdCus_mmsProxy->setText(json["mmsproxy"].toString());
|
|
|
|
|
fdCus_mmsPort->setText(json["mmsport"].toString());
|
|
|
|
|
});
|
|
|
|
|
} else {
|
2023-05-15 16:06:10 +08:00
|
|
|
|
foreach(auto card, gSelCards) {
|
|
|
|
|
auto reply = NetReq("http://"+card.ip+":2016/settings").timeout(120000).post(json);
|
|
|
|
|
auto cardId = card.id;
|
2023-04-18 14:14:46 +08:00
|
|
|
|
connect(reply, &QNetworkReply::finished, this, [reply, cardId] {
|
|
|
|
|
QJsonDocument json;
|
|
|
|
|
QString err = checkReplyForJson(reply, &json);
|
|
|
|
|
if(err.isEmpty()) {
|
|
|
|
|
err = json["apn"].toString();
|
|
|
|
|
auto user = json["user"].toString();
|
|
|
|
|
if(! user.isEmpty()) err += ", User:"+user+", Password:"+json["password"].toString();
|
|
|
|
|
}
|
|
|
|
|
gFdResInfo->append(cardId+" "+tr("GetCurrentAPN")+" "+err);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
hhhh->addWidget(btnAPNCusGet);
|
|
|
|
|
|
|
|
|
|
grid->addLayout(hhhh, 5, 3);
|
|
|
|
|
|
|
|
|
|
hBox->addStretch();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vBox->addSpacing(20);
|
|
|
|
|
|
|
|
|
|
hBox = new HBox(vBox);
|
|
|
|
|
hBox->setContentsMargins(-1, 0, 10, -1);
|
|
|
|
|
label_10 = new QLabel;
|
|
|
|
|
|
|
|
|
|
hBox->addWidget(label_10);
|
|
|
|
|
|
|
|
|
|
fdFightModel = new SwitchControl;
|
|
|
|
|
fdFightModel->setMinimumSize(QSize(80, 35));
|
|
|
|
|
fdFightModel->setSliderColor(QColor(0, 0, 0),QColor(0, 160, 230));
|
|
|
|
|
fdFightModel->setBgColor(QColor(200,200,200),QColor(0,200,0));
|
|
|
|
|
fdFightModel->setTextColor(QColor(100,100,100),QColor(0, 160, 230));
|
|
|
|
|
fdFightModel->setText(tr("OFF"), tr("ON"));
|
|
|
|
|
connect(fdFightModel, &SwitchControl::checkedChanged, this, [=](bool checked) {
|
2023-05-15 16:06:10 +08:00
|
|
|
|
if(gSelCards.isEmpty()) {
|
2023-05-11 11:47:00 +08:00
|
|
|
|
QMessageBox::information(this, tr("Tip"), tr("NoSelectedController"));
|
2023-04-18 14:14:46 +08:00
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
QJsonObject json;
|
|
|
|
|
json.insert("_id", "ContrFlightMode");
|
|
|
|
|
json.insert("_type", "ContrFlightMode");
|
|
|
|
|
json.insert("state", checked);
|
2023-05-15 16:06:10 +08:00
|
|
|
|
if(gSelCards.count() == 1) {
|
2023-04-18 14:14:46 +08:00
|
|
|
|
auto waitingDlg = new WaitingDlg(this, tr("ContrFlightMode")+" ...");
|
|
|
|
|
Def_CtrlReqPre
|
2023-05-11 11:47:00 +08:00
|
|
|
|
connect(reply, &QNetworkReply::finished, this, [=] {
|
2023-04-18 14:14:46 +08:00
|
|
|
|
Def_CtrlSetReqAfter
|
|
|
|
|
});
|
|
|
|
|
} else {
|
2023-05-15 16:06:10 +08:00
|
|
|
|
foreach(auto card, gSelCards) {
|
2023-04-18 14:14:46 +08:00
|
|
|
|
Def_CtrlSetMulti(tr("ContrFlightMode"))
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
hBox->addWidget(fdFightModel);
|
|
|
|
|
|
|
|
|
|
btnFlightModelGet = new QPushButton;
|
|
|
|
|
btnFlightModelGet->setMinimumSize(QSize(0, 30));
|
|
|
|
|
btnFlightModelGet->setProperty("ssType", "progManageTool");
|
|
|
|
|
connect(btnFlightModelGet, &QPushButton::clicked, this, [this] {
|
2023-05-15 16:06:10 +08:00
|
|
|
|
if(gSelCards.isEmpty()) {
|
2023-05-11 11:47:00 +08:00
|
|
|
|
QMessageBox::information(this, tr("Tip"), tr("NoSelectedController"));
|
2023-04-18 14:14:46 +08:00
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
QJsonObject json;
|
|
|
|
|
json.insert("_id", "GetFlightModeState");
|
|
|
|
|
json.insert("_type", "GetFlightModeState");
|
2023-05-15 16:06:10 +08:00
|
|
|
|
if(gSelCards.count() == 1) {
|
2023-04-18 14:14:46 +08:00
|
|
|
|
auto waitingDlg = new WaitingDlg(this, tr("GetFlightModeState")+" ...");
|
|
|
|
|
Def_CtrlReqPre
|
|
|
|
|
connect(reply, &QNetworkReply::finished, this, [this, reply, waitingDlg] {
|
|
|
|
|
Def_CtrlSingleGetReply
|
|
|
|
|
waitingDlg->success();
|
|
|
|
|
fdFightModel->setCheckedStatus(json["result"].toBool());
|
|
|
|
|
fdFightModel->update();
|
|
|
|
|
});
|
|
|
|
|
} else {
|
2023-05-15 16:06:10 +08:00
|
|
|
|
foreach(auto card, gSelCards) {
|
|
|
|
|
auto reply = NetReq("http://"+card.ip+":2016/settings").timeout(120000).post(json);
|
|
|
|
|
auto cardId = card.id;
|
2023-04-18 14:14:46 +08:00
|
|
|
|
connect(reply, &QNetworkReply::finished, this, [reply, cardId] {
|
|
|
|
|
QJsonDocument json;
|
|
|
|
|
QString err = checkReplyForJson(reply, &json);
|
|
|
|
|
if(err.isEmpty()) err = json["result"].toBool() ? "true" : "false";
|
|
|
|
|
gFdResInfo->append(cardId+" "+tr("GetFlightModeState")+" "+err);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
hBox->addWidget(btnFlightModelGet);
|
|
|
|
|
hBox->addStretch();
|
|
|
|
|
|
|
|
|
|
vBox->addStretch();
|
|
|
|
|
|
|
|
|
|
connect(gDevicePanel, &DevicePanel::sigSelectedDeviceList, this, [this] {
|
|
|
|
|
if(isVisible()) init();
|
|
|
|
|
});
|
|
|
|
|
transUi();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CtrlNetworkPanel::showEvent(QShowEvent *event) {
|
|
|
|
|
QWidget::showEvent(event);
|
|
|
|
|
init();
|
|
|
|
|
}
|
|
|
|
|
void CtrlNetworkPanel::init() {
|
2023-05-15 16:06:10 +08:00
|
|
|
|
bool isSingle = gSelCards.count()==1;
|
2023-04-18 14:14:46 +08:00
|
|
|
|
btnScan->setEnabled(isSingle);
|
|
|
|
|
|
|
|
|
|
if(! isSingle) return;
|
2023-05-15 16:06:10 +08:00
|
|
|
|
auto card = gSelCards[0];
|
2023-04-18 14:14:46 +08:00
|
|
|
|
|
|
|
|
|
QJsonObject json;
|
|
|
|
|
json.insert("_id", "GetEthernet");
|
|
|
|
|
json.insert("_type", "GetEthernet");
|
2023-05-15 16:06:10 +08:00
|
|
|
|
auto reply = NetReq("http://"+card.ip+":2016/settings").timeout(120000).post(json);
|
2023-04-18 14:14:46 +08:00
|
|
|
|
connect(reply, &QNetworkReply::finished, this, [this, reply] {
|
|
|
|
|
QJsonDocument json;
|
|
|
|
|
QString err = checkReplyForJson(reply, &json);
|
|
|
|
|
if(! err.isEmpty()) return;
|
|
|
|
|
|
|
|
|
|
if(json["dhcp"].toBool()) {
|
|
|
|
|
fdDhcp->setChecked(true);
|
|
|
|
|
gBoxSpecifyIp->setVisible(false);
|
|
|
|
|
} else {
|
|
|
|
|
fdSpecifyIp->setChecked(true);
|
|
|
|
|
gBoxSpecifyIp->setVisible(true);
|
|
|
|
|
}
|
|
|
|
|
fdIP->setText(json["ipAddr"].toString());
|
|
|
|
|
fdGateWay->setText(json["gateWay"].toString());
|
|
|
|
|
fdMask->setText(json["netMask"].toString());
|
|
|
|
|
fdDns->setText(json["dnsAddr"].toString());
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
json = QJsonObject();
|
|
|
|
|
json.insert("_id", "GetWifiList");
|
|
|
|
|
json.insert("_type", "GetWifiList");
|
2023-05-15 16:06:10 +08:00
|
|
|
|
reply = NetReq("http://"+card.ip+":2016/settings").timeout(120000).post(json);
|
2023-04-18 14:14:46 +08:00
|
|
|
|
connect(reply, &QNetworkReply::finished, this, [=] {
|
|
|
|
|
QJsonDocument json;
|
|
|
|
|
QString err = checkReplyForJson(reply, &json);
|
|
|
|
|
if(! err.isEmpty()) return;
|
|
|
|
|
auto wifis = json["wifiList"].toArray();
|
|
|
|
|
fdWifiName->clear();
|
2023-04-19 14:42:06 +08:00
|
|
|
|
foreach(QJsonValue wifi, wifis) fdWifiName->addItem(QIcon(":/res/signal-"+QString::number((wifi["signal"].toInt()+19)/20)+".png"), wifi["ssid"].toString());
|
2023-04-18 14:14:46 +08:00
|
|
|
|
{
|
|
|
|
|
QJsonObject json;
|
|
|
|
|
json.insert("_id", "IsPortableHotSpot");
|
|
|
|
|
json.insert("_type", "IsPortableHotSpot");
|
2023-05-15 16:06:10 +08:00
|
|
|
|
auto reply = NetReq("http://"+card.ip+":2016/settings").timeout(120000).post(json);
|
2023-04-18 14:14:46 +08:00
|
|
|
|
connect(reply, &QNetworkReply::finished, this, [this, reply] {
|
|
|
|
|
QJsonDocument json;
|
|
|
|
|
QString err = checkReplyForJson(reply, &json);
|
|
|
|
|
if(! err.isEmpty()) return;
|
|
|
|
|
auto wifi = json["wifi"].toString();
|
|
|
|
|
fdWifiName->setCurrentText(wifi);
|
|
|
|
|
auto hotSpots = json["hotSpots"].toString();
|
|
|
|
|
fdHotspotName->setText(hotSpots);
|
|
|
|
|
if(hotSpots.isEmpty()) fdIsWifi->setChecked(true);
|
|
|
|
|
else fdIsHotspot->setChecked(true);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
json = QJsonObject();
|
|
|
|
|
json.insert("_id", "GetSwitchSimData");
|
|
|
|
|
json.insert("_type", "GetSwitchSimData");
|
2023-05-15 16:06:10 +08:00
|
|
|
|
reply = NetReq("http://"+card.ip+":2016/settings").timeout(120000).post(json);
|
2023-04-18 14:14:46 +08:00
|
|
|
|
connect(reply, &QNetworkReply::finished, this, [=] {
|
|
|
|
|
QJsonDocument json;
|
|
|
|
|
QString err = checkReplyForJson(reply, &json);
|
|
|
|
|
if(! err.isEmpty()) return;
|
|
|
|
|
bool b = json["enable"].toBool();
|
|
|
|
|
fdEnableCellular->setChecked(b);
|
|
|
|
|
fdMcc->setEnabled(b);
|
|
|
|
|
fdCarrierName->setEnabled(b);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
json = QJsonObject();
|
|
|
|
|
json.insert("_id", "GetAPNList");
|
|
|
|
|
json.insert("_type", "GetAPNList");
|
2023-05-15 16:06:10 +08:00
|
|
|
|
reply = NetReq("http://"+card.ip+":2016/settings").timeout(120000).post(json);
|
2023-04-18 14:14:46 +08:00
|
|
|
|
connect(reply, &QNetworkReply::finished, this, [=] {
|
|
|
|
|
QJsonDocument json;
|
|
|
|
|
QString err = checkReplyForJson(reply, &json);
|
|
|
|
|
if(! err.isEmpty()) return;
|
|
|
|
|
fdMcc->clear();
|
|
|
|
|
fdMcc->addItem("");
|
|
|
|
|
auto apns = json["apns"].toArray();
|
2023-04-19 14:42:06 +08:00
|
|
|
|
foreach(QJsonValue apn, apns) {
|
2023-04-18 14:14:46 +08:00
|
|
|
|
QString mcc = apn["mcc"].toString();
|
|
|
|
|
for(int i=0; i<fdMcc->count(); i++) if(mcc==fdMcc->itemText(i)) {
|
|
|
|
|
auto var = fdMcc->itemData(i);
|
|
|
|
|
fdMcc->setItemData(i, QVariant());
|
|
|
|
|
((QJsonArray *)var.data())->append(apn);
|
|
|
|
|
fdMcc->setItemData(i, var);
|
|
|
|
|
goto end;
|
|
|
|
|
}
|
|
|
|
|
fdMcc->addItem(mcc, QJsonArray{apn});
|
|
|
|
|
end:;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
2023-05-15 16:06:10 +08:00
|
|
|
|
getCurrentAPN(card.ip);
|
2023-04-18 14:14:46 +08:00
|
|
|
|
|
|
|
|
|
json = QJsonObject();
|
|
|
|
|
json.insert("_id", "GetFlightModeState");
|
|
|
|
|
json.insert("_type", "GetFlightModeState");
|
2023-05-15 16:06:10 +08:00
|
|
|
|
reply = NetReq("http://"+card.ip+":2016/settings").timeout(120000).post(json);
|
2023-04-18 14:14:46 +08:00
|
|
|
|
connect(reply, &QNetworkReply::finished, this, [=] {
|
|
|
|
|
QJsonDocument json;
|
|
|
|
|
QString err = checkReplyForJson(reply, &json);
|
|
|
|
|
if(! err.isEmpty()) return;
|
|
|
|
|
fdFightModel->setCheckedStatus(json["result"].toBool());
|
|
|
|
|
fdFightModel->update();
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CtrlNetworkPanel::changeEvent(QEvent *event) {
|
|
|
|
|
QWidget::changeEvent(event);
|
|
|
|
|
if(event->type() == QEvent::LanguageChange) transUi();
|
|
|
|
|
}
|
|
|
|
|
void CtrlNetworkPanel::transUi() {
|
|
|
|
|
lbLanCfg->setText(tr("Wire Enther(RJ45) Configuration"));
|
|
|
|
|
fdDhcp->setText(tr("DHCP"));
|
|
|
|
|
fdSpecifyIp->setText(tr("Specify IP"));
|
|
|
|
|
lbHotspotName->setText(tr("AP name"));
|
|
|
|
|
labelGateway->setText(tr("Gateway"));
|
|
|
|
|
lbWifiName->setText(tr("WiFi name"));
|
|
|
|
|
labelIpAddress->setText(tr("IP Address"));
|
|
|
|
|
lbHotspotPassword->setText(tr("Password"));
|
|
|
|
|
labelDnsAddress->setText(tr("DNS Address"));
|
|
|
|
|
labelMaskAddress->setText(tr("Subnet mask"));
|
|
|
|
|
lbWifiPassword->setText(tr("Password"));
|
|
|
|
|
btnScan->setText(tr("Scan"));
|
|
|
|
|
btnWiFiSet->setText(tr("Set"));
|
|
|
|
|
btnLanSet->setText(tr("Set"));
|
|
|
|
|
btnWiFiGet->setText(tr("Readback"));
|
|
|
|
|
btnLanGet->setText(tr("Readback"));
|
|
|
|
|
fdIsWifi->setText(tr("WiFi Mode"));
|
|
|
|
|
fdIsHotspot->setText(tr("Ap Mode"));
|
|
|
|
|
label_5->setText(tr("WIFI Configuration"));
|
|
|
|
|
fdHotspotPassword->setPlaceholderText(tr("Input password"));
|
|
|
|
|
fdWifiPassword->setPlaceholderText(tr("Input password"));
|
|
|
|
|
fdHotspotName->setPlaceholderText(tr("Input ap name"));
|
|
|
|
|
lbCellularConfig->setText(tr("Cellular Config"));
|
|
|
|
|
lbCheckStatusTip->setText(tr("Through the check status button"));
|
|
|
|
|
fdEnableCellular->setText(tr("Enable Cellular Data"));
|
|
|
|
|
|
|
|
|
|
groupApn->setTitle(tr("Set APN Info"));
|
|
|
|
|
label_2->setText(tr("Country ID(mcc):"));
|
|
|
|
|
label_3->setText(tr("Carrier Name"));
|
|
|
|
|
fdCus_apn->setPlaceholderText(tr("APN(Required)"));
|
|
|
|
|
btnFlightModelGet->setText(tr("Readback"));
|
|
|
|
|
btnSIMStatusGet->setText(tr("Get cellular network status information"));
|
|
|
|
|
label_10->setText(tr("Flight Mode"));
|
|
|
|
|
|
|
|
|
|
lbCus_Name->setText(tr("Carrier Name"));
|
|
|
|
|
lbCus_User->setText(tr("User"));
|
|
|
|
|
lbCus_pwd->setText(tr("Password"));
|
|
|
|
|
lbCus_type->setText(tr("Type"));
|
|
|
|
|
lbCus_server->setText(tr("Server"));
|
|
|
|
|
lbCus_port->setText(tr("Port"));
|
|
|
|
|
lbCus_proxy->setText(tr("Proxy"));
|
|
|
|
|
lbCus_mmsPort->setText(tr("MMS Port"));
|
|
|
|
|
lbCus_mmsProxy->setText(tr("MMS Proxy"));
|
|
|
|
|
btnAPNCusSet->setText(tr("Set"));
|
|
|
|
|
btnAPNCusGet->setText(tr("Readback"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CtrlNetworkPanel::getCurrentAPN(QString &ip) {
|
|
|
|
|
QJsonObject json;
|
|
|
|
|
json.insert("_id", "GetCurrentAPN");
|
|
|
|
|
json.insert("_type", "GetCurrentAPN");
|
2023-04-23 17:01:35 +08:00
|
|
|
|
auto reply = NetReq("http://"+ip+":2016/settings").timeout(120000).post(json);
|
2023-04-18 14:14:46 +08:00
|
|
|
|
connect(reply, &QNetworkReply::finished, this, [=] {
|
|
|
|
|
QJsonDocument json;
|
|
|
|
|
QString err = checkReplyForJson(reply, &json);
|
|
|
|
|
if(! err.isEmpty()) return;
|
|
|
|
|
fdCus_Name->setText(json["carrier"].toString());
|
|
|
|
|
fdCus_apn->setText(json["apn"].toString());
|
|
|
|
|
fdCus_User->setText(json["user"].toString());
|
|
|
|
|
fdCus_pwd->setText(json["password"].toString());
|
|
|
|
|
fdCus_type->setText(json["type"].toString());
|
|
|
|
|
fdCus_server->setText(json["server"].toString());
|
|
|
|
|
fdCus_proxy->setText(json["proxy"].toString());
|
|
|
|
|
fdCus_port->setText(json["port"].toString());
|
|
|
|
|
fdCus_mmsc->setText(json["mmsc"].toString());
|
|
|
|
|
fdCus_mmsProxy->setText(json["mmsproxy"].toString());
|
|
|
|
|
fdCus_mmsPort->setText(json["mmsport"].toString());
|
|
|
|
|
});
|
|
|
|
|
}
|