[bug fixes]

This commit is contained in:
xueyan hu
2021-12-20 15:23:33 +08:00
parent b6475e7ed4
commit 94fc8892ac
4 changed files with 99 additions and 100 deletions

View File

@@ -7,11 +7,19 @@
#include <QItemSelectionModel>
#include <QGraphicsDropShadowEffect>
#include "guimessagedialog.h"
#include <QThread>
networkCfgDialog::networkCfgDialog(QWidget* parent) :
QDialog(parent),
ui(new Ui::networkCfgDialog)
{
ui->setupUi(this);
msgDialog = new GUIMessageDialog(this);
msgDialog->hide();
setShadow(this);
ui->sw_dhcp->setChecked(true);
@@ -184,55 +192,96 @@ void networkCfgDialog::loadData()
ui->addr_ip->setText(default_addr.ip);
ui->addr_mask->setText(default_addr.mask);
ui->led_gw->setText(NetworkManager::getDefaultGateway());
model_addr->loadData(NetworkManager::getIpAddrList());
model_route->loadData(NetworkManager::getIpRouteList());
}
bool networkCfgDialog::isModified()
{
if (ui->sw_dhcp->getChecked() != NetworkManager::isDHCP()) return true;
const IpAddr& default_addr = NetworkManager::getDefaultIpAddr();
if (ui->addr_ip->text() != default_addr.ip) return true;
if (ui->addr_mask->text() != default_addr.mask) return true;
if (ui->led_gw->text() != NetworkManager::getDefaultGateway())return true;
if (model_addr->getData() != NetworkManager::getIpAddrList())return true;
if (model_route->getData() != NetworkManager::getIpRouteList()) return true;
return false;
}
void networkCfgDialog::afterThreadStart()
{
msgDialog->showMessage("Saving Network Configuration...");
msgDialog->show();
}
void networkCfgDialog::beforeThreadExit()
{
msgDialog->hide();
ui->output->setPlainText(err);
myThread->deleteLater();
}
void networkCfgDialog::applyData()
{
//compare with the old
//if it is the same as the old, just exit
if (!isModified())
{
accept();
}
ui->tabWidget->setCurrentIndex(2);
QString err;
err.append("restart\t\t");
bool ret = NetworkManager::restart(err);
//bool ret =true;
//err.append(boolToStr(ret));
err.append("\n");
if (ui->sw_dhcp->getChecked())
{
NetworkManager::setJsonDHCP(true);
err.append("network setting\t");
err.append(boolToStr(ret));
}
else
{
NetworkManager::setJsonDHCP(false);
myThread = QThread::create([=]()
{
err.clear();
err.append("restart\t\t");
bool ret = NetworkManager::restart(err);
//bool ret =true;
//err.append(boolToStr(ret));
err.append("\n");
if (ui->sw_dhcp->getChecked())
{
NetworkManager::setJsonDHCP(true);
err.append("network setting\t");
err.append(boolToStr(ret));
}
else
{
NetworkManager::setJsonDHCP(false);
IpAddr de_ipa;
de_ipa.ip = ui->addr_ip->text();
de_ipa.mask = ui->addr_mask->text();
err.append("setDefaultIpAddr\t");
bool ret1 = NetworkManager::setDefaultIpAddr(de_ipa, err);
err.append("setDefaultGateway\t");
bool ret2 = NetworkManager::setDefaultGateway(ui->led_gw->text(), err);
err.append("setIpAddrList\t");
bool ret3 = NetworkManager::setIpAddrList(model_addr->getData(), err);
err.append("setIpRouteList\t");
bool ret4 = NetworkManager::setIpRouteList(model_route->getData(), err);
err.append("\n").append("network setting\t");
bool retAll = ret & ret1 & ret2 & ret3 & ret4;
err.append(boolToStr(retAll));
}
});
connect(myThread, SIGNAL(started()), this, SLOT(afterThreadStart()));
connect(myThread, SIGNAL(finished()), this, SLOT(beforeThreadExit()));
myThread->start();
IpAddr de_ipa;
de_ipa.ip = ui->addr_ip->text();
de_ipa.mask = ui->addr_mask->text();
err.append("setDefaultIpAddr\t");
bool ret1 = NetworkManager::setDefaultIpAddr(de_ipa, err);
err.append("setDefaultGateway\t");
bool ret2 = NetworkManager::setDefaultGateway(ui->led_gw->text(), err);
err.append("setIpAddrList\t");
bool ret3 = NetworkManager::setIpAddrList(model_addr->getData(), err);
err.append("setIpRouteList\t");
bool ret4 = NetworkManager::setIpRouteList(model_route->getData(), err);
err.append("\n").append("network setting\t");
bool retAll = ret & ret1 & ret2 & ret3 & ret4;
err.append(boolToStr(retAll));
}
ui->output->setPlainText(err);
}

View File

@@ -8,6 +8,9 @@ namespace Ui {
}
class NetCfgTableModel;
class GUIMessageDialog;
class QThread;
class networkCfgDialog : public QDialog
{
Q_OBJECT
@@ -21,14 +24,22 @@ public:
void applyData();
public slots:
void afterThreadStart();
void beforeThreadExit();
private:
bool isModified();
const char* boolToStr(bool b)
{
return b ? "sucess" : "failed";
}
NetCfgTableModel* model_addr = nullptr;
NetCfgTableModel* model_route = nullptr;
GUIMessageDialog* msgDialog = nullptr;
Ui::networkCfgDialog* ui;
QThread* myThread = nullptr;
QString err;
};
#endif // NetworkCfgDialog_H