增加设置id和password的入口

This commit is contained in:
才明洋
2018-03-16 23:35:59 +08:00
parent cf90b27e01
commit 486c4c4325
8 changed files with 111 additions and 25 deletions
+4 -2
View File
@@ -27,11 +27,13 @@ DEFINES += QT_DEPRECATED_WARNINGS
SOURCES += \
main.cpp \
netcontroller.cpp \
maintray.cpp
maintray.cpp \
optionswindow.cpp
HEADERS += \
netcontroller.h \
maintray.h
maintray.h \
optionswindow.h
RESOURCES += \
resource.qrc
+3 -3
View File
@@ -5,9 +5,9 @@ int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainTray tray("","");
QObject::connect(&tray, MainTray::exit, &a, QApplication::quit);
tray.show();
MainTray *tray = new MainTray("","");
QObject::connect(tray, MainTray::exit, &a, QApplication::quit);
tray->show();
return a.exec();
}
+18 -1
View File
@@ -3,10 +3,13 @@
MainTray::MainTray(QByteArray username, QByteArray password, QObject *parent): QSystemTrayIcon(parent), menu(new QMenu()),
user(username),passwd(password)
{
opWindow.hide();
setIcon(QIcon(tr(":/icon/favicon.ico")));
netctrl = new NetController(user,passwd,this);
connect(&opWindow, OptionsWindow::saveSettings, this, updataUserInfo);
//发送通知
connect(netctrl, NetController::getOnline, this, [this](){
showMessage(tr("网络已连接"),tr("校园网登陆成功"), this->icon(), msgDur);});
connect(netctrl, NetController::getOffline, this, [this](){
@@ -33,7 +36,7 @@ MainTray::MainTray(QByteArray username, QByteArray password, QObject *parent): Q
isAutoLogin = set;
netctrl->sendLoginRequest();
});
// connect(optionsAction, QAction::triggered, this, [this]());
connect(optionsAction, QAction::triggered, this, [this](){showOptions();});
connect(quitAction, QAction::triggered, this,[this](){emit exit();});
autoLogin->setChecked(true);
@@ -41,6 +44,7 @@ MainTray::MainTray(QByteArray username, QByteArray password, QObject *parent): Q
menu->addAction(loginAction);
menu->addAction(logoutAction);
menu->addAction(autoLogin);
menu->addAction(optionsAction);
menu->addAction(quitAction);
setContextMenu(menu);
@@ -60,3 +64,16 @@ void MainTray::handleActivated(QSystemTrayIcon::ActivationReason reason)
}
}
void MainTray::showOptions()
{
opWindow.show();
}
void MainTray::updataUserInfo(QByteArray id, QByteArray pass)
{
netctrl->setUsername(id);
netctrl->setPassword(pass);
opWindow.hide();
netctrl->sendLoginRequest();
}
+4
View File
@@ -6,6 +6,7 @@
#include <QMenu>
#include <QAction>
#include <netcontroller.h>
#include <optionswindow.h>
class MainTray: public QSystemTrayIcon
{
@@ -17,8 +18,10 @@ private:
QMenu *menu;
QAction *loginAction, *logoutAction, *autoLogin, *optionsAction, *quitAction;
NetController *netctrl;
OptionsWindow opWindow;
bool isAutoLogin = true;
void handleActivated(QSystemTrayIcon::ActivationReason reason);
void showOptions();
QByteArray user, passwd;
int msgDur = 500;
@@ -27,6 +30,7 @@ signals:
void exit();
private slots:
void updataUserInfo(QByteArray id, QByteArray pass);
};
+22 -18
View File
@@ -5,24 +5,6 @@ NetController::NetController(QByteArray id, QByteArray passwd, QObject *parent)
{
checkParam.append("action=get_online_info");
loginParam.append("action=login&");
loginParam.append("nas_ip=&");
loginParam.append("password=");
loginParam.append(password);
loginParam.append("&save_me=0&");
loginParam.append("url=&");
loginParam.append("user_ip=&");
loginParam.append("user_mac=&");
loginParam.append("username=");
loginParam.append(username);
logoutParam.append("action=logout&");
logoutParam.append("ajax=1&");
logoutParam.append("password=");
logoutParam.append(password);
logoutParam.append("&username=");
logoutParam.append(username);
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
connect(&manager, QNetworkAccessManager::finished, this, handleResponse);
@@ -60,12 +42,34 @@ void NetController::sendCheckRequest()
void NetController::sendLoginRequest()
{
request.setUrl(QUrl(loginUrl));
QByteArray loginParam;
loginParam.append("action=login&");
loginParam.append("nas_ip=&");
loginParam.append("password=");
loginParam.append(password);
loginParam.append("&save_me=0&");
loginParam.append("url=&");
loginParam.append("user_ip=&");
loginParam.append("user_mac=&");
loginParam.append("username=");
loginParam.append(username);
manager.post(request, loginParam);
}
void NetController::sendLogoutRequest()
{
request.setUrl(QUrl(loginUrl));
QByteArray logoutParam;
logoutParam.append("action=logout&");
logoutParam.append("ajax=1&");
logoutParam.append("password=");
logoutParam.append(password);
logoutParam.append("&username=");
logoutParam.append(username);
manager.post(request, logoutParam);
}
+4 -1
View File
@@ -17,13 +17,16 @@ public:
void sendLoginRequest();
void sendLogoutRequest();
void setUsername(QByteArray newName) { username = newName; }
void setPassword(QByteArray newPass) { password = newPass; }
enum Status {Offline, Online, Disconnected};
private:
QString checkUrl = "http://ipgw.neu.edu.cn/include/auth_action.php";
QString loginUrl = "http://ipgw.neu.edu.cn/srun_portal_pc.php?ac_id=1&";
QString offlineString = "not_online";
QByteArray checkParam, loginParam, logoutParam, username, password;
QByteArray checkParam, username, password;
Status NEUStatus, flag;
QNetworkAccessManager manager;
+28
View File
@@ -0,0 +1,28 @@
#include "optionswindow.h"
OptionsWindow::OptionsWindow(QWidget *parent) : QWidget(parent)
{
vlayout = new QVBoxLayout(this);
layout = new QFormLayout();
hlayout = new QHBoxLayout();
idEdit = new QLineEdit(this);
passwordEdit = new QLineEdit(this);
passwordEdit->setEchoMode(QLineEdit::Password);
layout->addRow(tr("用户名"), idEdit);
layout->addRow(tr("密码"), passwordEdit);
saveButton = new QPushButton("确定", this);
cancleButton = new QPushButton("取消", this);
hlayout->addWidget(saveButton);
hlayout->addWidget(cancleButton);
vlayout->addLayout(layout);
vlayout->addLayout(hlayout);
setLayout(vlayout);
connect(saveButton, QPushButton::clicked, this, [this](){emit saveSettings(idEdit->text().toUtf8(), passwordEdit->text().toUtf8());});
connect(cancleButton, QPushButton::clicked, this, hide);
}
+28
View File
@@ -0,0 +1,28 @@
#ifndef OPTIONSWINDOW_H
#define OPTIONSWINDOW_H
#include <QWidget>
#include <QLineEdit>
#include <QPushButton>
#include <QFormLayout>
#include <QVBoxLayout>
class OptionsWindow : public QWidget
{
Q_OBJECT
public:
explicit OptionsWindow(QWidget *parent = nullptr);
private:
QLineEdit *idEdit, *passwordEdit;
QPushButton *saveButton, *cancleButton;
QFormLayout *layout;
QVBoxLayout *vlayout;
QHBoxLayout *hlayout;
signals:
void saveSettings(QByteArray id, QByteArray pass);
public slots:
};
#endif // OPTIONSWINDOW_H