[add][fix] Added Windows start with boot support and fixed UI.

This commit is contained in:
Leroy.H.Y 2019-12-28 09:30:47 +08:00
parent 62d72a2ddf
commit 80d5465ded
9 changed files with 666 additions and 543 deletions

View File

@ -1 +1 @@
2396 2398

View File

@ -27,6 +27,7 @@ include(3rdparty/QNodeEditor/QNodeEditor.pri)
CONFIG += lrelease embed_translations CONFIG += lrelease embed_translations
SOURCES += \ SOURCES += \
src/components/QvAutoStartConfigurator.cpp \
src/components/QvComponentsHandler.cpp \ src/components/QvComponentsHandler.cpp \
src/components/QvPACHandler.cpp \ src/components/QvPACHandler.cpp \
src/components/QvSystemProxyConfigurator.cpp \ src/components/QvSystemProxyConfigurator.cpp \
@ -75,6 +76,7 @@ HEADERS += \
src/QvCoreConfigObjects.hpp \ src/QvCoreConfigObjects.hpp \
src/QvCoreConfigOperations.hpp \ src/QvCoreConfigOperations.hpp \
src/QvUtils.hpp \ src/QvUtils.hpp \
src/components/QvAutoStartConfigurator.hpp \
src/components/QvComponentsHandler.hpp \ src/components/QvComponentsHandler.hpp \
src/components/QvCoreInteractions.hpp \ src/components/QvCoreInteractions.hpp \
src/components/QvHTTPRequestHelper.hpp \ src/components/QvHTTPRequestHelper.hpp \

View File

@ -0,0 +1,39 @@
#include "QvAutoStartConfigurator.hpp"
#include <QSettings>
#include <QApplication>
namespace Qv2ray
{
namespace Components
{
bool InstallAutoStart()
{
#ifdef Q_OS_WIN
QSettings settings("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run", QSettings::NativeFormat);
auto path = qApp->applicationFilePath();
// Make it suitable for Windows.
if (path.contains(" ")) {
path = "\"" + path + "\"";
}
path = path.replace('/', '\\');
LOG(MODULE_CONFIG, "Qv2ray executable path: " + path.toStdString())
settings.setValue("Qv2ray", path);
return true;
#else
return false;
#endif
}
bool RemoveAutoStart()
{
#ifdef Q_OS_WIN
QSettings settings("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run", QSettings::NativeFormat);
settings.remove("Qv2ray");
return true;
#else
return false;
#endif
}
}
}

View File

@ -0,0 +1,17 @@
#ifndef QVAUTOSTARTCONFIGURATOR_H
#define QVAUTOSTARTCONFIGURATOR_H
#include "QvUtils.hpp"
namespace Qv2ray
{
namespace Components
{
bool InstallAutoStart();
bool RemoveAutoStart();
}
}
using namespace Qv2ray::Components;
#endif // QVAUTOSTARTCONFIGURATOR_H

View File

@ -222,6 +222,8 @@ int main(int argc, char *argv[])
"Copyright (c) 2019 Nikolaos Ftylitakis (@ftylitak): QZXing (Apache2)" NEWLINE "Copyright (c) 2019 Nikolaos Ftylitakis (@ftylitak): QZXing (Apache2)" NEWLINE
"Copyright (c) 2016 Singein (@Singein): ScreenShot (MIT)" NEWLINE "Copyright (c) 2016 Singein (@Singein): ScreenShot (MIT)" NEWLINE
"Copyright (c) 2016 Nikhil Marathe (@nikhilm): QHttpServer (MIT)" NEWLINE "Copyright (c) 2016 Nikhil Marathe (@nikhilm): QHttpServer (MIT)" NEWLINE
"Copyright (c) 2019 Itay Grudev (@itay-grudev): SingleApplication (MIT)" NEWLINE
"Copyright (c) 2019 paceholder (@paceholder): nodeeditor (QNodeEditor modified by lhy0403) (BSD-3-Clause)" NEWLINE
NEWLINE NEWLINE
"Qv2ray " QV2RAY_VERSION_STRING " running on " + "Qv2ray " QV2RAY_VERSION_STRING " running on " +
(QSysInfo::prettyProductName() + " " + QSysInfo::currentCpuArchitecture()).toStdString() + NEWLINE) (QSysInfo::prettyProductName() + " " + QSysInfo::currentCpuArchitecture()).toStdString() + NEWLINE)

View File

@ -1,4 +1,5 @@
#include <QFileDialog> #include "w_PreferencesWindow.hpp"
#include <QFileDialog>
#include <QColorDialog> #include <QColorDialog>
#include <QStyleFactory> #include <QStyleFactory>
#include <QStyle> #include <QStyle>
@ -9,8 +10,8 @@
#include "QvNetSpeedPlugin.hpp" #include "QvNetSpeedPlugin.hpp"
#include "QvCoreConfigOperations.hpp" #include "QvCoreConfigOperations.hpp"
#include "w_PreferencesWindow.hpp"
#include "QvHTTPRequestHelper.hpp" #include "QvHTTPRequestHelper.hpp"
#include "QvAutoStartConfigurator.hpp"
#define LOADINGCHECK if(!finishedLoading) return; #define LOADINGCHECK if(!finishedLoading) return;
#define NEEDRESTART if(finishedLoading) IsConnectionPropertyChanged = true; #define NEEDRESTART if(finishedLoading) IsConnectionPropertyChanged = true;
@ -771,10 +772,11 @@ void PreferencesWindow::on_pacGoBtn_clicked()
QString gfwLocation; QString gfwLocation;
QString fileContent; QString fileContent;
auto request = new QvHttpRequestHelper(); auto request = new QvHttpRequestHelper();
LOG(MODULE_PROXY, "Downloading GFWList file.")
switch (gfwListCB->currentIndex()) { switch (gfwListCB->currentIndex()) {
case 0: case 0:
gfwLocation = "https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt"; gfwLocation = "https://gitlab.com/gfwlist/gfwlist/raw/master/gfwlist.txt";
fileContent = QString::fromUtf8(request->syncget(gfwLocation)); fileContent = QString::fromUtf8(request->syncget(gfwLocation));
break; break;
@ -794,7 +796,7 @@ void PreferencesWindow::on_pacGoBtn_clicked()
break; break;
case 4: case 4:
gfwLocation = "https://gitlab.com/gfwlist/gfwlist/raw/master/gfwlist.txt"; gfwLocation = "https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt";
fileContent = QString::fromUtf8(request->syncget(gfwLocation)); fileContent = QString::fromUtf8(request->syncget(gfwLocation));
break; break;
@ -812,7 +814,9 @@ void PreferencesWindow::on_pacGoBtn_clicked()
break; break;
} }
// LOG(MODULE_NETWORK, "Fetched: " + gfwLocation.toStdString())
if (!QDir(QV2RAY_RULES_DIR).exists()) { if (!QDir(QV2RAY_RULES_DIR).exists()) {
QDir(QV2RAY_RULES_DIR).mkpath(QV2RAY_RULES_DIR); QDir(QV2RAY_RULES_DIR).mkpath(QV2RAY_RULES_DIR);
} }
@ -878,3 +882,21 @@ void PreferencesWindow::on_autoStartConnCombo_currentIndexChanged(const QString
LOADINGCHECK LOADINGCHECK
CurrentConfig.autoStartConfig.connectionName = arg1.toStdString(); CurrentConfig.autoStartConfig.connectionName = arg1.toStdString();
} }
void PreferencesWindow::on_installBootStart_clicked()
{
if (InstallAutoStart()) {
QvMessageBox(this, tr("Start with boot"), tr("Successfully installed starting with boot."));
} else {
QvMessageBox(this, tr("Start with boot"), tr("Only Windows platform is supported currently."));
}
}
void PreferencesWindow::on_removeBootStart_clicked()
{
if (RemoveAutoStart()) {
QvMessageBox(this, tr("Start with boot"), tr("Successfully removed starting with boot."));
} else {
QvMessageBox(this, tr("Start with boot"), tr("Only Windows platform is supported currently."));
}
}

View File

@ -134,6 +134,10 @@ class PreferencesWindow : public QDialog, private Ui::PreferencesWindow
void on_autoStartConnCombo_currentIndexChanged(const QString &arg1); void on_autoStartConnCombo_currentIndexChanged(const QString &arg1);
void on_installBootStart_clicked();
void on_removeBootStart_clicked();
private: private:
// Set ui parameters for a line; // Set ui parameters for a line;
void ShowLineParameters(QvBarLine &line); void ShowLineParameters(QvBarLine &line);

File diff suppressed because it is too large Load Diff

View File

@ -63,6 +63,7 @@ RouteEditor::RouteEditor(QJsonObject connection, QWidget *parent) : QDialog(pare
{ {
setupUi(this); setupUi(this);
isLoading = true; isLoading = true;
setWindowFlags(windowFlags() | Qt::WindowMaximizeButtonHint);
// //
SetupNodeWidget(); SetupNodeWidget();
// //