Merge pull request #2 from w-mj/master

force login option
This commit was merged in pull request #2.
This commit is contained in:
2018-08-03 22:14:23 +08:00
committed by GitHub
4 changed files with 43 additions and 17 deletions
+33 -7
View File
@@ -11,7 +11,8 @@ MainTray::MainTray(QObject *parent) : QSystemTrayIcon(parent),
passwd(QByteArray::fromBase64(settings.value("password", "").toByteArray())), passwd(QByteArray::fromBase64(settings.value("password", "").toByteArray())),
totalTraffic(settings.value("total traffic", 0).toInt()), totalTraffic(settings.value("total traffic", 0).toInt()),
isMobile(settings.value("isMobile", false).toBool()), isMobile(settings.value("isMobile", false).toBool()),
opWindow(user, passwd, totalTraffic, isMobile), forceLogin(settings.value("forceLogin", false).toBool()),
opWindow(user, passwd, totalTraffic),
logFileName("NEU_Monitor.log"), logFileName("NEU_Monitor.log"),
logFile(logFileName, this) logFile(logFileName, this)
{ {
@@ -55,6 +56,14 @@ MainTray::MainTray(QObject *parent) : QSystemTrayIcon(parent),
balanceAction = new QAction(tr("账户余额: "), this); balanceAction = new QAction(tr("账户余额: "), this);
ipAction = new QAction(tr("IP地址: "), this); ipAction = new QAction(tr("IP地址: "), this);
mobileAction = new QAction(tr("移动端登陆"), this);
mobileAction->setCheckable(true);
mobileAction->setToolTip(tr("假装自己是个手机"));
forceLoginAction = new QAction(tr("强制登陆"), this);
forceLoginAction->setCheckable(true);
forceLoginAction->setToolTip(tr("先断开已有的所有连接再登陆"));
connect(ipAction, &QAction::triggered, this, [this]() { connect(ipAction, &QAction::triggered, this, [this]() {
QStringList ipList = ipAction->text().split('\t'); QStringList ipList = ipAction->text().split('\t');
if (ipList.size() > 1) if (ipList.size() > 1)
@@ -71,14 +80,15 @@ MainTray::MainTray(QObject *parent) : QSystemTrayIcon(parent),
autoLogin->setCheckable(true); autoLogin->setCheckable(true);
bootAction->setCheckable(true); bootAction->setCheckable(true);
muteAction->setCheckable(true); muteAction->setCheckable(true);
muteAction->setToolTip(tr("勿扰模式下不会发出通知")); muteAction->setToolTip(tr("勿扰模式下不会发出通知"));
connect(loginAction, &QAction::triggered, this, [this]() { connect(loginAction, &QAction::triggered, this, [this]() {
writeLog(tr("Login triggered.")); writeLog(tr("Login triggered."));
isForceLogin = true; isForceLogin = true;
// netctrl->sendLogoutRequest(true); // netctrl->sendLogoutRequest(true);
logoutAction->trigger(); if (forceLogin) {
logoutAction->trigger();
}
hasWarned = false; hasWarned = false;
netctrl->sendLoginRequest(); netctrl->sendLoginRequest();
isForceLogout = false; isForceLogout = false;
@@ -107,16 +117,33 @@ MainTray::MainTray(QObject *parent) : QSystemTrayIcon(parent),
connect(aboutAction, &QAction::triggered, this, &MainTray::showAbout); connect(aboutAction, &QAction::triggered, this, &MainTray::showAbout);
connect(quitAction, &QAction::triggered, this, [this]() { connect(quitAction, &QAction::triggered, this, [this]() {
writeLog(tr("Exit.\n\n")); writeLog(tr("Exit.\n\n"));
emit exit(); }); emit exit();
});
connect(mobileAction, &QAction::triggered, this, [this](bool set) {
writeLog(tr("Mobile model turn ") + tr(set? "[on].": "[off]."));
settings.setValue("isMobile", set);
isMobile = set;
netctrl->setMobile(set);
});
connect(forceLoginAction, &QAction::triggered, this, [this](bool set) {
writeLog(tr("Force Login turn ") + tr(set? "[on].": "[off]."));
settings.setValue("forceLogin", set);
forceLogin = set;
});
autoLogin->setChecked(settings.value("isAutoLogin", true).toBool()); autoLogin->setChecked(settings.value("isAutoLogin", true).toBool());
bootAction->setChecked(settings.value("isOnBoot", false).toBool()); bootAction->setChecked(settings.value("isOnBoot", false).toBool());
muteAction->setChecked(settings.value("isMute", false).toBool()); muteAction->setChecked(settings.value("isMute", false).toBool());
mobileAction->setChecked(settings.value("isMobile", false).toBool());
settingsMenu->setTitle(tr("设置")); settingsMenu->setTitle(tr("设置"));
settingsMenu->addAction(optionsAction); settingsMenu->addAction(optionsAction);
settingsMenu->addAction(muteAction); settingsMenu->addAction(muteAction);
settingsMenu->addAction(bootAction); settingsMenu->addAction(bootAction);
settingsMenu->addAction(mobileAction);
settingsMenu->addAction(forceLoginAction);
infoMenu->setTitle(tr("账户信息")); infoMenu->setTitle(tr("账户信息"));
infoMenu->addAction(mbAction); infoMenu->addAction(mbAction);
@@ -279,7 +306,7 @@ void MainTray::setAutoStart(bool set)
{ {
if (!muteAction->isChecked()) if (!muteAction->isChecked())
{ {
showMessage(tr("设置失败"), tr("读写/home/.config/autostart/失败"), this->icon(), msgDur); showMessage(tr("设置失败"), tr("读写/home/user/.config/autostart/失败"), this->icon(), msgDur);
return; return;
} }
} }
@@ -318,7 +345,7 @@ void MainTray::openLogFile()
logFile.close(); logFile.close();
} }
void MainTray::updateUserInfo(QByteArray id, QByteArray pass, int traffic, bool isMobile) //pass为未加密的密码 void MainTray::updateUserInfo(QByteArray id, QByteArray pass, int traffic) //pass为未加密的密码
{ {
writeLog(tr("Set username[") + id + tr("]; Traffic: [") + QString::number(traffic) + tr("].")); writeLog(tr("Set username[") + id + tr("]; Traffic: [") + QString::number(traffic) + tr("]."));
logoutAction->trigger(); //注销当前via old info logoutAction->trigger(); //注销当前via old info
@@ -335,7 +362,6 @@ void MainTray::updateUserInfo(QByteArray id, QByteArray pass, int traffic, bool
settings.setValue("id", id); settings.setValue("id", id);
settings.setValue("password", pass.toBase64()); settings.setValue("password", pass.toBase64());
settings.setValue("total traffic", traffic); settings.setValue("total traffic", traffic);
settings.setValue("isMobile", isMobile);
} }
void MainTray::handleState(NetController::State state) void MainTray::handleState(NetController::State state)
+3 -1
View File
@@ -33,12 +33,14 @@ private:
QMenu *menu, *infoMenu, *settingsMenu; QMenu *menu, *infoMenu, *settingsMenu;
QAction *loginAction, *logoutAction, *autoLogin, *optionsAction, *aboutAction, *quitAction; QAction *loginAction, *logoutAction, *autoLogin, *optionsAction, *aboutAction, *quitAction;
QAction *mbAction, *timeAction, *balanceAction, *ipAction, *bootAction, *muteAction, *mobileAction; QAction *mbAction, *timeAction, *balanceAction, *ipAction, *bootAction, *muteAction, *mobileAction;
QAction *forceLoginAction;
NetController *netctrl; NetController *netctrl;
QSettings settings; QSettings settings;
QByteArray user, passwd; QByteArray user, passwd;
int totalTraffic; int totalTraffic;
bool isMobile = false; bool isMobile = false;
bool forceLogin = false;
OptionsWindow opWindow; OptionsWindow opWindow;
QTimer *autoLoginTimer; //自动重连定时器 QTimer *autoLoginTimer; //自动重连定时器
@@ -69,7 +71,7 @@ signals:
void exit(); void exit();
private slots: private slots:
void updateUserInfo(QByteArray id, QByteArray pass, int traffic, bool isMobile); void updateUserInfo(QByteArray id, QByteArray pass, int traffic);
void handleState(NetController::State state); void handleState(NetController::State state);
void handleInfo(QString mb, QString sec, QString balance, QString ip); void handleInfo(QString mb, QString sec, QString balance, QString ip);
void openLogFile(); void openLogFile();
+5 -7
View File
@@ -1,6 +1,6 @@
#include "optionswindow.h" #include "optionswindow.h"
OptionsWindow::OptionsWindow(QByteArray id, QByteArray pass, int traffic, bool isMobile, QWidget *parent) : QMainWindow(parent) OptionsWindow::OptionsWindow(QByteArray id, QByteArray pass, int traffic, QWidget *parent) : QMainWindow(parent)
{ {
setWindowTitle(tr("选项")); setWindowTitle(tr("选项"));
@@ -20,9 +20,9 @@ OptionsWindow::OptionsWindow(QByteArray id, QByteArray pass, int traffic, bool i
passwordEdit->setText(pass); passwordEdit->setText(pass);
passwordEdit->setToolTip(tr("密码仅用于登陆")); passwordEdit->setToolTip(tr("密码仅用于登陆"));
mobileCheck = new QCheckBox(tr("作为移动端登陆"), this); // mobileCheck = new QCheckBox(tr("作为移动端登陆"), this);
mobileCheck->setChecked(isMobile); // mobileCheck->setChecked(isMobile);
mobileCheck->setToolTip(tr("实现PC多终端在线")); // mobileCheck->setToolTip(tr("实现PC多终端在线"));
trafficSpin = new QSpinBox(this); trafficSpin = new QSpinBox(this);
trafficSpin->setValue(traffic); trafficSpin->setValue(traffic);
@@ -34,7 +34,6 @@ OptionsWindow::OptionsWindow(QByteArray id, QByteArray pass, int traffic, bool i
layout->addRow(tr("用户名"), idEdit); layout->addRow(tr("用户名"), idEdit);
layout->addRow(tr("密码"), passwordEdit); layout->addRow(tr("密码"), passwordEdit);
layout->addRow(trafficLabel, trafficSpin); layout->addRow(trafficLabel, trafficSpin);
layout->addRow(mobileCheck);
layout->setSpacing(20); layout->setSpacing(20);
saveButton = new QPushButton("确定", this); saveButton = new QPushButton("确定", this);
@@ -57,8 +56,7 @@ OptionsWindow::OptionsWindow(QByteArray id, QByteArray pass, int traffic, bool i
connect(saveButton, &QPushButton::clicked, this, [this]() { connect(saveButton, &QPushButton::clicked, this, [this]() {
emit saveSettings(idEdit->text().toUtf8(), emit saveSettings(idEdit->text().toUtf8(),
passwordEdit->text().toUtf8(), passwordEdit->text().toUtf8(),
trafficSpin->value(), trafficSpin->value());
mobileCheck->isChecked());
}); });
connect(cancleButton, &QPushButton::clicked, this, &OptionsWindow::hide); connect(cancleButton, &QPushButton::clicked, this, &OptionsWindow::hide);
} }
+2 -2
View File
@@ -17,7 +17,7 @@ class OptionsWindow : public QMainWindow
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit OptionsWindow(QByteArray id, QByteArray pass, int traffic, bool isMobile, QWidget *parent = nullptr); explicit OptionsWindow(QByteArray id, QByteArray pass, int traffic, QWidget *parent = nullptr);
private: private:
QTabWidget *tabWidget; QTabWidget *tabWidget;
@@ -33,7 +33,7 @@ private:
QLabel *trafficLabel; QLabel *trafficLabel;
signals: signals:
void saveSettings(QByteArray id, QByteArray pass, int traffic, bool isMobile); void saveSettings(QByteArray id, QByteArray pass, int traffic);
public slots: public slots:
}; };