228 lines
7.2 KiB
C++
228 lines
7.2 KiB
C++
/*
|
|
* Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 3, or (at your option)
|
|
* any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
*/
|
|
|
|
#include "onelancform.h"
|
|
#include "ui_onelancform.h"
|
|
#include "mainwindow.h"
|
|
|
|
OneLancForm::OneLancForm(QWidget *parent, MainWindow *mainWindow, ConfForm *confForm, KSimpleNM *ksnm) :
|
|
QWidget(parent),
|
|
ui(new Ui::OneLancForm)
|
|
{
|
|
ui->setupUi(this);
|
|
|
|
ui->btnConf->setText(tr("Config"));//"设置"
|
|
ui->btnConn->setText(tr("Connect"));//"连接"
|
|
ui->btnDisConn->setText(tr("Disconnect"));//"断开连接"
|
|
|
|
ui->wbg->hide();
|
|
ui->btnConf->hide();
|
|
ui->btnConn->hide();
|
|
ui->btnDisConn->hide();
|
|
|
|
ui->lbConned->setAlignment(Qt::AlignRight);
|
|
|
|
ui->wbg->setStyleSheet("#wbg{background-color:#3593b5;}");
|
|
ui->lbName->setStyleSheet("QLabel{font-size:13px;color:#ffffff;}");
|
|
ui->lbBandWidth->setStyleSheet("QLabel{font-size:12px;color:#aaaaaa;}");
|
|
ui->lbConned->setStyleSheet("QLabel{font-size:13px;color:#ffffff;}");
|
|
ui->btnConf->setStyleSheet("QPushButton{border:0px;background-color:rgba(0,0,0,0.4);color:white;font-size:12px;}"
|
|
"QPushButton:Hover{border:1px solid rgba(255,255,255,0.2);background-color:rgba(0,0,0,0.2);}"
|
|
"QPushButton:Pressed{background-color:rgba(0,0,0,0.6);}");
|
|
ui->btnConn->setStyleSheet("QPushButton{border:0px;background-color:rgba(0,0,0,0.4);color:white;font-size:12px;}"
|
|
"QPushButton:Hover{border:1px solid rgba(255,255,255,0.2);background-color:rgba(0,0,0,0.2);}"
|
|
"QPushButton:Pressed{background-color:rgba(0,0,0,0.6);}");
|
|
ui->btnDisConn->setStyleSheet("QPushButton{border:0px;background-color:rgba(0,0,0,0.4);color:white;font-size:12px;}"
|
|
"QPushButton:Hover{border:1px solid rgba(255,255,255,0.2);background-color:rgba(0,0,0,0.2);}"
|
|
"QPushButton:Pressed{background-color:rgba(0,0,0,0.6);}");
|
|
|
|
this->mw = mainWindow;
|
|
this->cf = confForm;
|
|
this->ks = ksnm;
|
|
|
|
this->isSelected = false;
|
|
this->isActive = false;
|
|
}
|
|
|
|
OneLancForm::~OneLancForm()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
void OneLancForm::mouseReleaseEvent(QMouseEvent *){
|
|
emit selectedOneLanForm(lanName);
|
|
}
|
|
|
|
// 是否当前连接的网络,字体设置不同
|
|
void OneLancForm::setAct(bool isAct){
|
|
if(isAct){
|
|
ui->lbName->setStyleSheet("QLabel{font-size:14px;color:#ffffff;}");
|
|
ui->lbConned->show();
|
|
ui->btnConf->show();
|
|
}else{
|
|
ui->lbName->setStyleSheet("QLabel{font-size:12px;color:#ffffff;}");
|
|
ui->lbConned->hide();
|
|
ui->btnConf->hide();
|
|
}
|
|
isActive = isAct;
|
|
}
|
|
|
|
// 是否选中
|
|
void OneLancForm::setSelected(bool isSelected){
|
|
if(isSelected){
|
|
resize(314, 111);
|
|
ui->wbg->show();
|
|
ui->btnConf->show();
|
|
if(isActive){
|
|
ui->btnDisConn->show();
|
|
}else{
|
|
ui->btnConn->show();
|
|
}
|
|
|
|
this->isSelected = true;
|
|
|
|
}else{
|
|
resize(314, 60);
|
|
ui->wbg->hide();
|
|
ui->btnConf->hide();
|
|
ui->btnConn->hide();
|
|
ui->btnDisConn->hide();
|
|
ui->lbName->show();
|
|
|
|
this->isSelected = false;
|
|
}
|
|
}
|
|
|
|
void OneLancForm::setName(QString name){
|
|
ui->lbName->setText(name);
|
|
lanName = name;
|
|
}
|
|
|
|
void OneLancForm::setConnedString(QString str){
|
|
ui->lbConned->setText(str);
|
|
}
|
|
|
|
void OneLancForm::setIcon(bool isOn){
|
|
if(isOn){
|
|
ui->lbIcon->setStyleSheet("QLabel{background:url(:/res/s/network-line.png);}");
|
|
}else{
|
|
ui->lbIcon->setStyleSheet("QLabel{background:url(:/res/s/network-offline.png);}");
|
|
}
|
|
}
|
|
|
|
void OneLancForm::setBandWidth(QString bandWidth){
|
|
ui->lbBandWidth->setText(bandWidth);
|
|
|
|
if(bandWidth == "--"){
|
|
ui->lbPoint->setStyleSheet("QLabel{background:url(:/res/s/pbad.png);}");
|
|
}else{
|
|
if(bandWidth != ""){
|
|
QString rateStr = bandWidth.mid(0, bandWidth.indexOf("Mb"));
|
|
int rateNum = rateStr.toInt();
|
|
if(rateNum >= 1000){
|
|
ui->lbPoint->setStyleSheet("QLabel{background:url(:/res/s/pgood.png);}");
|
|
}
|
|
if(rateNum >= 100 && rateNum < 1000){
|
|
ui->lbPoint->setStyleSheet("QLabel{background:url(:/res/s/pnormal.png);}");
|
|
}
|
|
if(rateNum < 100){
|
|
ui->lbPoint->setStyleSheet("QLabel{background:url(:/res/s/pbad.png);}");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void OneLancForm::setShowPoint(bool flag){
|
|
if(flag){
|
|
ui->lbPoint->show();
|
|
}else{
|
|
ui->lbPoint->hide();
|
|
}
|
|
}
|
|
|
|
void OneLancForm::on_btnConf_clicked()
|
|
{
|
|
QPoint pos = QCursor::pos();
|
|
QRect primaryGeometry;
|
|
for (QScreen *screen : qApp->screens()) {
|
|
if (screen->geometry().contains(pos)) {
|
|
primaryGeometry = screen->geometry();
|
|
}
|
|
}
|
|
|
|
if (primaryGeometry.isEmpty()) {
|
|
primaryGeometry = qApp->primaryScreen()->geometry();
|
|
}
|
|
|
|
BackThread *bt = new BackThread();
|
|
QString connProp = bt->getConnProp(ui->lbName->text());
|
|
QStringList propList = connProp.split("|");
|
|
QString v4method, addr, mask, gateway, dns;
|
|
foreach (QString line, propList) {
|
|
if(line.startsWith("method:")){
|
|
v4method = line.split(":").at(1);
|
|
}
|
|
if(line.startsWith("addr:")){
|
|
addr = line.split(":").at(1);
|
|
}
|
|
if(line.startsWith("mask:")){
|
|
mask = line.split(":").at(1);
|
|
}
|
|
if(line.startsWith("gateway:")){
|
|
gateway= line.split(":").at(1);
|
|
}
|
|
if(line.startsWith("dns:")){
|
|
dns = line.split(":").at(1);
|
|
}
|
|
}
|
|
// qDebug()<<v4method<<addr<<mask<<gateway<<dns;
|
|
|
|
cf->setProp(ui->lbName->text(), v4method, addr, mask, gateway, dns, this->isActive);
|
|
|
|
cf->move(primaryGeometry.width() / 2 - cf->width() / 2, primaryGeometry.height() / 2 - cf->height() / 2);
|
|
cf->show();
|
|
cf->raise();
|
|
}
|
|
|
|
void OneLancForm::slotConnLan(){
|
|
mw->startLoading();
|
|
emit sigConnLan(ui->lbName->text());
|
|
}
|
|
|
|
void OneLancForm::on_btnDisConn_clicked()
|
|
{
|
|
kylin_network_set_con_down(ui->lbName->text().toUtf8().data());
|
|
|
|
disconnect(this, SIGNAL(selectedOneLanForm(QString)), mw, SLOT(oneLanFormSelected(QString)));
|
|
|
|
emit disconnActiveLan();
|
|
}
|
|
|
|
void OneLancForm::on_btnConn_clicked()
|
|
{
|
|
QThread *t = new QThread();
|
|
BackThread *bt = new BackThread();
|
|
bt->moveToThread(t);
|
|
connect(t, SIGNAL(finished()), t, SLOT(deleteLater()));
|
|
connect(t, SIGNAL(started()), this, SLOT(slotConnLan()));
|
|
connect(this, SIGNAL(sigConnLan(QString)), bt, SLOT(execConnLan(QString)));
|
|
connect(bt, SIGNAL(connDone(int)), mw, SLOT(connLanDone(int)));
|
|
connect(bt, SIGNAL(btFinish()), t, SLOT(quit()));
|
|
t->start();
|
|
}
|