Merge pull request #2 from w-mj/master
force login option
This commit was merged in pull request #2.
This commit is contained in:
+33
-7
@@ -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
@@ -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
@@ -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
@@ -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:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user