From 629b3c803d8d021912e25bbe98f6771ee93bc987 Mon Sep 17 00:00:00 2001 From: "Cai.MY" Date: Mon, 11 Jun 2018 21:03:14 +0800 Subject: [PATCH] shrink --- maintray.cpp | 108 ++++++++++++++++++++++++---------------------- maintray.h | 2 + netcontroller.cpp | 68 +++++------------------------ netcontroller.h | 4 +- optionswindow.cpp | 1 + 5 files changed, 71 insertions(+), 112 deletions(-) diff --git a/maintray.cpp b/maintray.cpp index a1bad7f..d57b592 100644 --- a/maintray.cpp +++ b/maintray.cpp @@ -25,51 +25,7 @@ MainTray::MainTray(QByteArray username, QByteArray password, QObject *parent): Q connect(&opWindow, OptionsWindow::saveSettings, this, updateUserInfo); //连接controller状态改变信号 - connect(netctrl, NetController::stateChanged, this, [this](NetController::State state){ - switch (state) { - case NetController::Online: - isForceLogin = false; - setIcon(QIcon(tr(":/icon/favicon.ico"))); - if(!muteAction->isChecked()) - showMessage(tr("网络已连接"),tr("校园网登陆成功"), this->icon(), msgDur); - loginAction->setEnabled(true); - logoutAction->setEnabled(true); - break; - case NetController::Offline: - setIcon(QIcon(tr(":/icon/offline.ico"))); - if(!muteAction->isChecked()) - showMessage(tr("网络已断开"),tr("校园网已注销"), this->icon(), msgDur); - loginAction->setEnabled(true); - logoutAction->setEnabled(true); - //自动登陆 - if(autoLogin->isChecked() && !isForceLogout){ - loginAction->trigger(); - } - - break; - case NetController::Disconnected: - setIcon(QIcon(tr(":/icon/offline.ico"))); - if(!muteAction->isChecked()) - showMessage(tr("网络已断开"),tr("无法连接至校园网"), this->icon(), msgDur); - loginAction->setDisabled(true); - logoutAction->setDisabled(true); - break; - case NetController::WrongPass: - setIcon(QIcon(tr(":/icon/offline.ico"))); - if(!muteAction->isChecked()) - showMessage(tr("登陆失败"),tr("密码错误"), this->icon(), msgDur); - break; - case NetController::Owed: - setIcon(QIcon(tr(":/icon/offline.ico"))); - if(!muteAction->isChecked()) - showMessage(tr("登陆失败"),tr("已欠费"), this->icon(), msgDur); - break; - default: - break; - } - currentState = state; - showToolTip(state); - }); + connect(netctrl, NetController::sendState, this, handleState); connect(this, QSystemTrayIcon::messageClicked, this, [this](){ @@ -161,10 +117,6 @@ MainTray::MainTray(QByteArray username, QByteArray password, QObject *parent): Q autoLoginTimer->start(); connect(autoLoginTimer,QTimer::timeout, this, [this](){ netctrl->checkState(); -// //Offline状态下自动重连 -// if(currentState == NetController::Offline && autoLogin->isChecked() && !isForceLogout){ -// loginAction->trigger(); -// } }); showToolTip(currentState); @@ -178,6 +130,7 @@ MainTray::~MainTray() { delete menu; delete infoMenu; + delete autoLoginTimer; } void MainTray::showToolTip(NetController::State state) @@ -287,9 +240,60 @@ void MainTray::updateUserInfo(QByteArray id, QByteArray pass, int traffic) settings.setValue("total traffic", traffic); } +void MainTray::handleState(NetController::State state) +{ + if(state!=currentState){ + switch (state) { + case NetController::Online: + isForceLogin = false; + setIcon(QIcon(tr(":/icon/favicon.ico"))); + if(!muteAction->isChecked()) + showMessage(tr("网络已连接"),tr("校园网登陆成功"), this->icon(), msgDur); + loginAction->setEnabled(true); + logoutAction->setEnabled(true); + break; + case NetController::Offline: + if(currentState == NetController::WrongPass || currentState == NetController::Owed) + return; + setIcon(QIcon(tr(":/icon/offline.ico"))); + if(!muteAction->isChecked()) + showMessage(tr("网络已断开"),tr("校园网已注销"), this->icon(), msgDur); + loginAction->setEnabled(true); + logoutAction->setEnabled(true); + //自动登陆 + if(autoLogin->isChecked() && !isForceLogout){ + loginAction->trigger(); + } + + break; + case NetController::Disconnected: + setIcon(QIcon(tr(":/icon/offline.ico"))); + if(!muteAction->isChecked()) + showMessage(tr("网络已断开"),tr("无法连接至校园网"), this->icon(), msgDur); + loginAction->setDisabled(true); + logoutAction->setDisabled(true); + break; + case NetController::WrongPass: + setIcon(QIcon(tr(":/icon/offline.ico"))); + if(!muteAction->isChecked()) + showMessage(tr("登陆失败"),tr("密码错误"), this->icon(), msgDur); + break; + case NetController::Owed: + setIcon(QIcon(tr(":/icon/offline.ico"))); + if(!muteAction->isChecked()) + showMessage(tr("登陆失败"),tr("已欠费"), this->icon(), msgDur); + break; + default: + break; + } + currentState = state; + showToolTip(state); + } +} + void MainTray::handleInfo(QString byte, QString sec, QString balance, QString ip) { - QString mbString = QString::number(byte.toDouble()/1000000.0, 'f', 2); + QString mbString = QString::number(byte.toDouble()/1048576.0, 'f', 2); QString gbString = QString::number(byte.toDouble()/1000000000.0, 'f', 2); QString leftoverString = QString::number(totalTraffic - byte.toDouble()/1000000000.0, 'f',2 ); int totalSec = sec.toInt(); @@ -302,12 +306,12 @@ void MainTray::handleInfo(QString byte, QString sec, QString balance, QString ip ipAction->setText(tr("IP地址:\t") + ip); if(!hasWarned){ hasWarned = true; - if(byte.toDouble() / 1000000.0 > totalTraffic * 1024){//流量已超 + if(byte.toDouble() / 1048576.0 > totalTraffic * 1024){//流量已超 trafficstate = Over; if(!muteAction->isChecked()) showMessage(tr("流量警告"), tr("本月流量已超"), QSystemTrayIcon::Warning); } - else if(byte.toDouble() / 1000000.0 + 5000 > totalTraffic * 1024){//流量将超 + else if(byte.toDouble() / 1048576.0 + 5000 > totalTraffic * 1024){//流量将超 trafficstate = Nearly; if(!muteAction->isChecked()) showMessage(tr("流量预警"), tr("剩余流量:") + leftoverString + tr("G")); diff --git a/maintray.h b/maintray.h index 4eca657..5c2f686 100644 --- a/maintray.h +++ b/maintray.h @@ -29,6 +29,7 @@ private: OptionsWindow opWindow; QTimer *autoLoginTimer; //自动重连定时器 + bool isForceLogout = false; bool isForceLogin = false; bool hasWarned = false; @@ -53,6 +54,7 @@ signals: private slots: void updateUserInfo(QByteArray id, QByteArray pass, int traffic); + void handleState(NetController::State state); void handleInfo(QString mb, QString sec, QString balance, QString ip); }; diff --git a/netcontroller.cpp b/netcontroller.cpp index d624472..b4194a7 100644 --- a/netcontroller.cpp +++ b/netcontroller.cpp @@ -1,8 +1,7 @@ #include "netcontroller.h" NetController::NetController(QByteArray id, QByteArray passwd, QObject *parent) : QObject(parent), - username(id), password(passwd), NEUState(Unknown), lastState(Unknown), - manager(this) + username(id), password(passwd), manager(this) { checkParam.append("action=get_online_info"); @@ -24,31 +23,6 @@ NetController::NetController(QByteArray id, QByteArray passwd, QObject *parent) void NetController::checkState() { sendCheckRequest(); - if(NEUState == Offline && lastState != Offline/* && offlineCount++ > 1*/) - { - lastState = Offline; - emit stateChanged(NEUState); - } - else if(NEUState == Online && lastState != Online) - { - lastState = Online; - emit stateChanged(NEUState); - } - else if(NEUState == Disconnected && lastState != Disconnected) - { - lastState = Disconnected; - emit stateChanged(NEUState); - } - else if(NEUState == WrongPass && lastState != WrongPass) - { - lastState = WrongPass; - emit stateChanged(NEUState); - } - else if(NEUState == Owed && lastState != Owed) - { - lastState = Owed; - emit stateChanged(NEUState); - } } void NetController::sendCheckRequest() @@ -93,7 +67,6 @@ void NetController::sendLogoutRequest() void NetController::handleResponse(QNetworkReply *reply) { - // qDebug()<url(); QString url = reply->url().toString(); reply->deleteLater(); if(url==checkUrl) @@ -103,52 +76,31 @@ void NetController::handleResponse(QNetworkReply *reply) QString status = reply->readAll(); if(status==offlineString) { - if(NEUState!=WrongPass && NEUState!=Owed && offlineCount++ > 1) - { - onlineCount = 0; - offlineCount = 0; - disconnectCount = 0; - lastState = NEUState; - NEUState = Offline; - } + emit sendState(Offline); } else { - if(onlineCount++ > 1) - { - onlineCount = 0; - offlineCount = 0; - disconnectCount = 0; - lastState = NEUState; - NEUState = Online; - QStringList infoList = status.split(','); - emit sendInfo(infoList[0], infoList[1], infoList[2], infoList[5]); - } + emit sendState(Online); + QStringList infoList = status.split(','); + emit sendInfo(infoList[0], infoList[1], infoList[2], infoList[5]); } } - else if(disconnectCount++ > 1) + else { - onlineCount = 0; - offlineCount = 0; - disconnectCount = 0; - lastState = NEUState; - NEUState = Disconnected; + emit sendState(Disconnected); } } else if(url==loginUrl) { QString loginPage(reply->readAll()); if(loginPage.contains(QString("已欠费"))){//欠费 - lastState = NEUState; - NEUState = Owed; + emit sendState(Owed); } else if(loginPage.contains("Password is error")){//密码错误 - lastState = NEUState; - NEUState = WrongPass; + emit sendState(WrongPass); } else if(loginPage.contains("网络已连接")){//登陆成功 - lastState = NEUState; - NEUState = Online; + emit sendState(Online); } } } diff --git a/netcontroller.h b/netcontroller.h index 0970d66..b850168 100644 --- a/netcontroller.h +++ b/netcontroller.h @@ -29,14 +29,14 @@ private: QString offlineString = "not_online"; QByteArray checkParam, username, password; int traffic; - State NEUState = Unknown, lastState = Unknown; +// State NEUState = Unknown, lastState = Unknown; int onlineCount = 0, offlineCount = 0, disconnectCount = 0; QNetworkAccessManager manager; QNetworkRequest request; signals: - void stateChanged(State newState); + void sendState(State newState); void sendInfo(QString mb, QString sec, QString balance, QString ip); public slots: diff --git a/optionswindow.cpp b/optionswindow.cpp index 8ee6975..ed8788f 100644 --- a/optionswindow.cpp +++ b/optionswindow.cpp @@ -15,6 +15,7 @@ OptionsWindow::OptionsWindow(QByteArray id, QByteArray pass, int traffic, QWidg idEdit->setText(id); passwordEdit = new QLineEdit(this); passwordEdit->setEchoMode(QLineEdit::Password); + passwordEdit->setContextMenuPolicy(Qt::NoContextMenu); passwordEdit->setText(pass); trafficSpin = new QSpinBox(this);