shrink
This commit is contained in:
+56
-52
@@ -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"));
|
||||
|
||||
@@ -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);
|
||||
|
||||
};
|
||||
|
||||
+10
-58
@@ -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()<<reply->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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -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:
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user