[bug fixes]
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user