diff --git a/maintray.cpp b/maintray.cpp index f1e5a00..36df0d4 100644 --- a/maintray.cpp +++ b/maintray.cpp @@ -1,7 +1,7 @@ #include "maintray.h" MainTray::MainTray(QByteArray username, QByteArray password, QObject *parent): QSystemTrayIcon(parent), - menu(new QMenu()),infoMenu(new QMenu()), settings("TurnMeOn", "NEU-Dectect"), + menu(new QMenu()),infoMenu(new QMenu()), settingsMenu(new QMenu()), settings("TurnMeOn", "NEU-Dectect"), opWindow(settings.value("id",0).toByteArray(), settings.value("password", 0).toByteArray()), user(username),passwd(password) { @@ -36,7 +36,8 @@ MainTray::MainTray(QByteArray username, QByteArray password, QObject *parent): Q loginAction = new QAction(tr("连接网络"),this); logoutAction = new QAction(tr("断开网络"),this); autoLogin = new QAction(tr("自动重连"), this); - optionsAction = new QAction(tr("设置"), this); + optionsAction = new QAction(tr("选项"), this); + bootAction = new QAction(tr("开机启动"), this); aboutAction = new QAction(tr("关于"), this); quitAction = new QAction(tr("退出"), this); @@ -46,6 +47,7 @@ MainTray::MainTray(QByteArray username, QByteArray password, QObject *parent): Q ipAction = new QAction(tr("IP地址: "),this); autoLogin->setCheckable(true); + bootAction->setCheckable(true); connect(loginAction, QAction::triggered, this,[this](){ netctrl->sendLoginRequest(); @@ -59,13 +61,22 @@ MainTray::MainTray(QByteArray username, QByteArray password, QObject *parent): Q isAutoLogin = set; settings.setValue("isAutoLogin", set); }); + connect(bootAction, QAction::toggled, this, [this](bool set){ + settings.setValue("isOnBoot", set); + setAutoStart(set); + }); connect(optionsAction, QAction::triggered, this, [this](){showOptions();}); connect(aboutAction, QAction::triggered, this, showAbout); connect(quitAction, QAction::triggered, this,[this](){emit exit();}); autoLogin->setChecked(settings.value("isAutoLogin", true).toBool()); + bootAction->setChecked(settings.value("isOnBoot", false).toBool()); - infoMenu->setTitle("账户信息"); + settingsMenu->setTitle(tr("设置")); + settingsMenu->addAction(optionsAction); + settingsMenu->addAction(bootAction); + + infoMenu->setTitle(tr("账户信息")); infoMenu->addAction(mbAction); infoMenu->addAction(timeAction); infoMenu->addAction(balanceAction); @@ -75,7 +86,7 @@ MainTray::MainTray(QByteArray username, QByteArray password, QObject *parent): Q menu->addAction(logoutAction); menu->addAction(autoLogin); menu->addMenu(infoMenu); - menu->addAction(optionsAction); + menu->addMenu(settingsMenu); menu->addAction(aboutAction); menu->addAction(quitAction); @@ -131,6 +142,22 @@ void MainTray::showAbout() aboutWindow->show(); } +void MainTray::setAutoStart(bool set) +{ + QString application_name = QApplication::applicationName(); + QSettings *settings = new QSettings("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run", QSettings::NativeFormat); + if(set) + { + QString application_path = QApplication::applicationFilePath(); + settings->setValue(application_name, application_path.replace("/", "\\")); + } + else + { + settings->remove(application_name); + } + delete settings; +} + void MainTray::updataUserInfo(QByteArray id, QByteArray pass) { netctrl->setUsername(id); diff --git a/maintray.h b/maintray.h index c647f77..d2aa8f4 100644 --- a/maintray.h +++ b/maintray.h @@ -10,6 +10,7 @@ #include #include #include +#include class MainTray: public QSystemTrayIcon { @@ -20,9 +21,9 @@ public: enum Status {Unknown, Offline, Online, Disconnected}; private: - QMenu *menu, *infoMenu; + QMenu *menu, *infoMenu, *settingsMenu; QAction *loginAction, *logoutAction, *autoLogin, *optionsAction, *aboutAction, *quitAction; - QAction *mbAction, *timeAction, *balanceAction, *ipAction; + QAction *mbAction, *timeAction, *balanceAction, *ipAction, *bootAction; NetController *netctrl; QSettings settings; OptionsWindow opWindow; @@ -34,6 +35,7 @@ private: void handleActivated(QSystemTrayIcon::ActivationReason reason);//处理左键单击 void showOptions(); //显示选项窗口 void showAbout(); //显示关于窗口 + void setAutoStart(bool set); QByteArray user, passwd; int msgDur = 1000; //通知持续时间