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())),
totalTraffic(settings.value("total traffic", 0).toInt()),
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"),
logFile(logFileName, this)
{
@@ -55,6 +56,14 @@ MainTray::MainTray(QObject *parent) : QSystemTrayIcon(parent),
balanceAction = new QAction(tr("账户余额: "), 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]() {
QStringList ipList = ipAction->text().split('\t');
if (ipList.size() > 1)
@@ -71,14 +80,15 @@ MainTray::MainTray(QObject *parent) : QSystemTrayIcon(parent),
autoLogin->setCheckable(true);
bootAction->setCheckable(true);
muteAction->setCheckable(true);
muteAction->setToolTip(tr("勿扰模式下不会发出通知"));
connect(loginAction, &QAction::triggered, this, [this]() {
writeLog(tr("Login triggered."));
isForceLogin = true;
// netctrl->sendLogoutRequest(true);
logoutAction->trigger();
if (forceLogin) {
logoutAction->trigger();
}
hasWarned = false;
netctrl->sendLoginRequest();
isForceLogout = false;
@@ -107,16 +117,33 @@ MainTray::MainTray(QObject *parent) : QSystemTrayIcon(parent),
connect(aboutAction, &QAction::triggered, this, &MainTray::showAbout);
connect(quitAction, &QAction::triggered, this, [this]() {
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());
bootAction->setChecked(settings.value("isOnBoot", false).toBool());
muteAction->setChecked(settings.value("isMute", false).toBool());
mobileAction->setChecked(settings.value("isMobile", false).toBool());
settingsMenu->setTitle(tr("设置"));
settingsMenu->addAction(optionsAction);
settingsMenu->addAction(muteAction);
settingsMenu->addAction(bootAction);
settingsMenu->addAction(mobileAction);
settingsMenu->addAction(forceLoginAction);
infoMenu->setTitle(tr("账户信息"));
infoMenu->addAction(mbAction);
@@ -279,7 +306,7 @@ void MainTray::setAutoStart(bool set)
{
if (!muteAction->isChecked())
{
showMessage(tr("设置失败"), tr("读写/home/.config/autostart/失败"), this->icon(), msgDur);
showMessage(tr("设置失败"), tr("读写/home/user/.config/autostart/失败"), this->icon(), msgDur);
return;
}
}
@@ -318,7 +345,7 @@ void MainTray::openLogFile()
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("]."));
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("password", pass.toBase64());
settings.setValue("total traffic", traffic);
settings.setValue("isMobile", isMobile);
}
void MainTray::handleState(NetController::State state)
+3 -1
View File
@@ -33,12 +33,14 @@ private:
QMenu *menu, *infoMenu, *settingsMenu;
QAction *loginAction, *logoutAction, *autoLogin, *optionsAction, *aboutAction, *quitAction;
QAction *mbAction, *timeAction, *balanceAction, *ipAction, *bootAction, *muteAction, *mobileAction;
QAction *forceLoginAction;
NetController *netctrl;
QSettings settings;
QByteArray user, passwd;
int totalTraffic;
bool isMobile = false;
bool forceLogin = false;
OptionsWindow opWindow;
QTimer *autoLoginTimer; //自动重连定时器
@@ -69,7 +71,7 @@ signals:
void exit();
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 handleInfo(QString mb, QString sec, QString balance, QString ip);
void openLogFile();
+5 -7
View File
@@ -1,6 +1,6 @@
#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("选项"));
@@ -20,9 +20,9 @@ OptionsWindow::OptionsWindow(QByteArray id, QByteArray pass, int traffic, bool i
passwordEdit->setText(pass);
passwordEdit->setToolTip(tr("密码仅用于登陆"));
mobileCheck = new QCheckBox(tr("作为移动端登陆"), this);
mobileCheck->setChecked(isMobile);
mobileCheck->setToolTip(tr("实现PC多终端在线"));
// mobileCheck = new QCheckBox(tr("作为移动端登陆"), this);
// mobileCheck->setChecked(isMobile);
// mobileCheck->setToolTip(tr("实现PC多终端在线"));
trafficSpin = new QSpinBox(this);
trafficSpin->setValue(traffic);
@@ -34,7 +34,6 @@ OptionsWindow::OptionsWindow(QByteArray id, QByteArray pass, int traffic, bool i
layout->addRow(tr("用户名"), idEdit);
layout->addRow(tr("密码"), passwordEdit);
layout->addRow(trafficLabel, trafficSpin);
layout->addRow(mobileCheck);
layout->setSpacing(20);
saveButton = new QPushButton("确定", this);
@@ -57,8 +56,7 @@ OptionsWindow::OptionsWindow(QByteArray id, QByteArray pass, int traffic, bool i
connect(saveButton, &QPushButton::clicked, this, [this]() {
emit saveSettings(idEdit->text().toUtf8(),
passwordEdit->text().toUtf8(),
trafficSpin->value(),
mobileCheck->isChecked());
trafficSpin->value());
});
connect(cancleButton, &QPushButton::clicked, this, &OptionsWindow::hide);
}
+2 -2
View File
@@ -17,7 +17,7 @@ class OptionsWindow : public QMainWindow
{
Q_OBJECT
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:
QTabWidget *tabWidget;
@@ -33,7 +33,7 @@ private:
QLabel *trafficLabel;
signals:
void saveSettings(QByteArray id, QByteArray pass, int traffic, bool isMobile);
void saveSettings(QByteArray id, QByteArray pass, int traffic);
public slots:
};