精简状态改变的信号&槽
This commit is contained in:
+36
-27
@@ -1,14 +1,17 @@
|
||||
#include "maintray.h"
|
||||
|
||||
MainTray::MainTray(QByteArray username, QByteArray password, QObject *parent): QSystemTrayIcon(parent),
|
||||
menu(new QMenu()),infoMenu(new QMenu()),
|
||||
settingsMenu(new QMenu()),
|
||||
settings(QSettings::IniFormat, QSettings::UserScope,"TurnMeOn", "NEU-Dectect"),
|
||||
opWindow(settings.value("id", "").toByteArray(), settings.value("password", "").toByteArray()),
|
||||
user(username),
|
||||
passwd(password)
|
||||
//初始化menu
|
||||
menu(new QMenu()),
|
||||
infoMenu(new QMenu()),
|
||||
settingsMenu(new QMenu()),
|
||||
//初始化settings
|
||||
settings(QSettings::IniFormat, QSettings::UserScope, "TurnMeOn", "NEU-Dectect"),
|
||||
//初始化optionswindow
|
||||
opWindow(settings.value("id", "").toByteArray(), settings.value("password", "").toByteArray()),
|
||||
user(username),
|
||||
passwd(password)
|
||||
{
|
||||
|
||||
opWindow.hide();
|
||||
setIcon(QIcon(tr(":/icon/favicon.ico")));
|
||||
|
||||
@@ -18,26 +21,29 @@ MainTray::MainTray(QByteArray username, QByteArray password, QObject *parent): Q
|
||||
|
||||
connect(&opWindow, OptionsWindow::saveSettings, this, updataUserInfo);
|
||||
//连接controller状态改变信号
|
||||
connect(netctrl, NetController::getOnline, this, [this](){
|
||||
if(!isMute)
|
||||
showMessage(tr("网络已连接"),tr("校园网登陆成功"), this->icon(), msgDur);
|
||||
currentState = Online;
|
||||
setToolTip(tr("当前状态:连接"/*\n自动重连:") + (isAutoLogin? tr("开启"):tr("关闭")*/));
|
||||
});
|
||||
connect(netctrl, NetController::getOffline, this, [this](){
|
||||
if(!isMute)
|
||||
showMessage(tr("网络已断开"),tr("校园网已注销"), this->icon(), msgDur);
|
||||
currentState = Offline;
|
||||
setToolTip(tr("当前状态:断开"/*\n自动重连:") + (isAutoLogin? tr("开启"):tr("关闭")*/));
|
||||
connect(netctrl, NetController::stateChanged, this, [this](NetController::Status state){
|
||||
switch (state) {
|
||||
case NetController::Online:
|
||||
if(!isMute)
|
||||
showMessage(tr("网络已连接"),tr("校园网登陆成功"), this->icon(), msgDur);
|
||||
setToolTip(tr("当前状态:连接"/*\n自动重连:") + (isAutoLogin? tr("开启"):tr("关闭")*/));
|
||||
break;
|
||||
case NetController::Offline:
|
||||
if(!isMute)
|
||||
showMessage(tr("网络已断开"),tr("校园网已注销"), this->icon(), msgDur);
|
||||
setToolTip(tr("当前状态:断开"/*\n自动重连:") + (isAutoLogin? tr("开启"):tr("关闭")*/));
|
||||
break;
|
||||
case NetController::Disconnected:
|
||||
if(!isMute)
|
||||
showMessage(tr("网络已断开"),tr("无法连接至校园网"), this->icon(), msgDur);
|
||||
setToolTip(tr("当前状态:无法连接"/*\n自动重连:") + (isAutoLogin? tr("开启"):tr("关闭")*/));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
);
|
||||
connect(netctrl, NetController::getDisconnected, this, [this](){
|
||||
if(!isMute)
|
||||
showMessage(tr("网络已断开"),tr("无法连接至校园网"), this->icon(), msgDur);
|
||||
currentState = Disconnected;
|
||||
setToolTip(tr("当前状态:无法连接"/*\n自动重连:") + (isAutoLogin? tr("开启"):tr("关闭")*/));
|
||||
}
|
||||
);
|
||||
currentState = state;
|
||||
});
|
||||
|
||||
connect(netctrl, NetController::sendInfo, this, handleInfo);
|
||||
|
||||
//菜单Action
|
||||
@@ -122,7 +128,7 @@ MainTray::MainTray(QByteArray username, QByteArray password, QObject *parent): Q
|
||||
connect(autoLoginTimer,QTimer::timeout, this, [this](){
|
||||
netctrl->checkStatus(); //可只使用一个定时器
|
||||
//Offline状态下自动重连
|
||||
if(currentState == Offline && isAutoLogin && !isForceLogout){
|
||||
if(currentState == NetController::Offline && isAutoLogin && !isForceLogout){
|
||||
netctrl->sendLogoutRequest(); //防止已经在线的情况登录失败
|
||||
netctrl->sendLoginRequest();
|
||||
}
|
||||
@@ -142,6 +148,9 @@ void MainTray::handleActivated(QSystemTrayIcon::ActivationReason reason)
|
||||
case QSystemTrayIcon::Trigger:
|
||||
contextMenu()->popup(this->geometry().topRight());
|
||||
break;
|
||||
case QSystemTrayIcon::DoubleClick:
|
||||
netctrl->sendLoginRequest();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
+2
-3
@@ -18,7 +18,6 @@ class MainTray: public QSystemTrayIcon
|
||||
public:
|
||||
MainTray(QByteArray username, QByteArray password, QObject *parent = Q_NULLPTR);
|
||||
~MainTray();
|
||||
enum Status {Unknown, Offline, Online, Disconnected};
|
||||
|
||||
private:
|
||||
QMenu *menu, *infoMenu, *settingsMenu;
|
||||
@@ -32,8 +31,8 @@ private:
|
||||
bool isForceLogout = false; //自动重连flag
|
||||
bool isAutoLogin; //手动注销flag
|
||||
bool isMute; //勿扰模式flag
|
||||
Status currentState = Unknown; //当前状态
|
||||
void handleActivated(QSystemTrayIcon::ActivationReason reason);//处理左键单击
|
||||
NetController::Status currentState = NetController::Unknown; //当前状态
|
||||
void handleActivated(QSystemTrayIcon::ActivationReason reason);//处理左键单击、双击
|
||||
void showOptions(); //显示选项窗口
|
||||
void showAbout(); //显示关于窗口
|
||||
void setAutoStart(bool set);
|
||||
|
||||
+2
-3
@@ -27,17 +27,16 @@ void NetController::checkStatus()
|
||||
if(NEUStatus==Offline&&flag!=Offline)
|
||||
{
|
||||
flag = Offline;
|
||||
emit getOffline();
|
||||
emit stateChanged(flag);
|
||||
}
|
||||
else if(NEUStatus == Online && flag != Online)
|
||||
{
|
||||
flag = Online;
|
||||
emit getOnline();
|
||||
emit stateChanged(flag);
|
||||
}
|
||||
else if(NEUStatus == Disconnected && flag != Disconnected)
|
||||
{
|
||||
flag = Disconnected;
|
||||
emit getDisconnected();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-3
@@ -33,9 +33,7 @@ private:
|
||||
QNetworkRequest request;
|
||||
|
||||
signals:
|
||||
void getOnline();
|
||||
void getOffline();
|
||||
void getDisconnected();
|
||||
void stateChanged(Status newState);
|
||||
void sendInfo(QString mb, QString sec, QString balance, QString ip);
|
||||
|
||||
public slots:
|
||||
|
||||
Reference in New Issue
Block a user