diff --git a/mainwindow.cpp b/mainwindow.cpp index 346da4e..5c4a87c 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -8,6 +8,9 @@ #include #include "mainwindow.h" + +#include + #include "ui_mainwindow.h" #include "zjuconnectcontroller/zjuconnectcontroller.h" #include "utils/utils.h" @@ -219,7 +222,7 @@ MainWindow::MainWindow(QWidget *parent) : } }); - if (settings->value("Common/checkUpdateAfterStart", true).toBool()) + if (settings->value("Common/CheckUpdateAfterStart", true).toBool()) { checkUpdate(); } @@ -262,8 +265,25 @@ void MainWindow::checkUpdate() void MainWindow::upgradeSettings() { - int configVersion = settings->value("Common/ConfigVersion", 1).toInt(); - // 备用 + int configVersion = settings->value("Common/ConfigVersion", Utils::CONFIG_VERSION).toInt(); + + if (configVersion < Utils::CONFIG_VERSION) + { + QMessageBox msgBox; + msgBox.setText("存在配置更新"); + msgBox.setInformativeText("建议恢复默认设置,以使用优化的配置。\n\n是否恢复默认设置?"); + msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); + msgBox.setDefaultButton(QMessageBox::Cancel); + + if (msgBox.exec() == QMessageBox::Ok) + { + settings->clear(); + QMessageBox::information(this, "完成", "已恢复默认设置。"); + } + } + + settings->setValue("Common/ConfigVersion", Utils::CONFIG_VERSION); + settings->sync(); } void MainWindow::showNotification(const QString &title, const QString &content, QSystemTrayIcon::MessageIcon icon) @@ -288,11 +308,11 @@ void MainWindow::showNotification(const QString &title, const QString &content, void MainWindow::cleanUpWhenQuit() { // 保存配置 - if (settings->value("Common/ConfigVersion", "1").toInt() <= 2) + if (settings->value("Common/ConfigVersion", 0).toInt() <= Utils::CONFIG_VERSION) { - settings->setValue("Common/ConfigVersion", 2); - settings->sync(); + settings->setValue("Common/ConfigVersion", Utils::CONFIG_VERSION); } + settings->sync(); // 清除系统代理 if (isSystemProxySet) diff --git a/settingwindow/settingwindow.cpp b/settingwindow/settingwindow.cpp index 1cb5bce..47ec315 100644 --- a/settingwindow/settingwindow.cpp +++ b/settingwindow/settingwindow.cpp @@ -45,7 +45,7 @@ SettingWindow::SettingWindow(QWidget *parent, QSettings *inputSettings) : settings->setValue("Common/Password", QString(ui->passwordLineEdit->text().toUtf8().toBase64())); settings->setValue("Common/AutoStart", ui->autoStartCheckBox->isChecked()); settings->setValue("Common/ConnectAfterStart", ui->connectAfterStartCheckBox->isChecked()); - settings->setValue("Common/checkUpdateAfterStart", ui->checkUpdateAfterStartCheckBox->isChecked()); + settings->setValue("Common/CheckUpdateAfterStart", ui->checkUpdateAfterStartCheckBox->isChecked()); settings->setValue("ZJUConnect/ServerAddress", ui->serverAddressLineEdit->text()); settings->setValue("ZJUConnect/ServerPort", ui->serverPortSpinBox->value()); @@ -69,6 +69,8 @@ SettingWindow::SettingWindow(QWidget *parent, QSettings *inputSettings) : settings->setValue("ZJUConnect/DNSHijack", ui->dnsHijackCheckBox->isChecked()); settings->setValue("ZJUConnect/OutsideAccess", ui->outsideAccessCheckBox->isChecked()); + settings->setValue("Common/ConfigVersion", Utils::CONFIG_VERSION); + settings->sync(); }; @@ -125,26 +127,26 @@ void SettingWindow::loadSettings() ui->autoStartCheckBox->setChecked(settings->value("Common/AutoStart", false).toBool()); ui->connectAfterStartCheckBox->setChecked(settings->value("Common/ConnectAfterStart", false).toBool()); - ui->checkUpdateAfterStartCheckBox->setChecked(settings->value("Common/checkUpdateAfterStart", true).toBool()); + ui->checkUpdateAfterStartCheckBox->setChecked(settings->value("Common/CheckUpdateAfterStart", true).toBool()); ui->serverAddressLineEdit->setText(settings->value("ZJUConnect/ServerAddress", "vpn.hitsz.edu.cn").toString()); ui->serverPortSpinBox->setValue(settings->value("ZJUConnect/ServerPort", 443).toInt()); ui->dnsLineEdit->setText(settings->value("ZJUConnect/DNS", "10.248.98.30").toString()); ui->socks5PortSpinBox->setValue(settings->value("ZJUConnect/Socks5Port", 11080).toInt()); ui->httpPortSpinBox->setValue(settings->value("ZJUConnect/HttpPort", 11081).toInt()); - ui->multiLineCheckBox->setChecked(settings->value("ZJUConnect/MultiLine", true).toBool()); + ui->multiLineCheckBox->setChecked(settings->value("ZJUConnect/MultiLine", false).toBool()); ui->proxyAllCheckBox->setChecked(settings->value("ZJUConnect/ProxyAll", false).toBool()); ui->debugCheckBox->setChecked(settings->value("ZJUConnect/Debug", false).toBool()); tcpPortForwarding = settings->value("ZJUConnect/TcpPortForwarding", "").toString(); udpPortForwarding = settings->value("ZJUConnect/UdpPortForwarding", "").toString(); ui->autoReconnectCheckBox->setChecked(settings->value("ZJUConnect/AutoReconnect", false).toBool()); ui->reconnectTimeSpinBox->setValue(settings->value("ZJUConnect/ReconnectTime", 1).toInt()); - ui->autoSetProxyCheckBox->setChecked(settings->value("ZJUConnect/AutoSetProxy", true).toBool()); + ui->autoSetProxyCheckBox->setChecked(settings->value("ZJUConnect/AutoSetProxy", false).toBool()); ui->routeCheckBox->setChecked(settings->value("ZJUConnect/Route", false).toBool()); ui->secondaryDnsLineEdit->setText(settings->value("ZJUConnect/SecondaryDNS", "").toString()); ui->shadowsocksUrlLineEdit->setText(settings->value("ZJUConnect/ShadowsocksUrl", "").toString()); ui->systemProxyBypassLineEdit->setText(settings->value("ZJUConnect/SystemProxyBypass", "localhost").toString()); - ui->keepAliveCheckBox->setChecked(settings->value("ZJUConnect/KeepAlive", true).toBool()); + ui->keepAliveCheckBox->setChecked(settings->value("ZJUConnect/KeepAlive", false).toBool()); ui->tunCheckBox->setChecked(settings->value("ZJUConnect/TunMode", false).toBool()); ui->dnsHijackCheckBox->setChecked(settings->value("ZJUConnect/DNSHijack", false).toBool()); ui->outsideAccessCheckBox->setChecked(settings->value("ZJUConnect/OutsideAccess", false).toBool()); diff --git a/utils/utils.h b/utils/utils.h index 8017aa8..4eee2dc 100644 --- a/utils/utils.h +++ b/utils/utils.h @@ -11,6 +11,8 @@ namespace Utils const inline QString APP_NAME("HITsz Connect for Windows"); + constexpr inline int CONFIG_VERSION = 3; + QString ConsoleOutputToQString(const QByteArray &byteArray); void setWidgetFixedWhenHidden(QWidget *widget); diff --git a/zjuconnectmode.cpp b/zjuconnectmode.cpp index c64ef67..fcf5486 100644 --- a/zjuconnectmode.cpp +++ b/zjuconnectmode.cpp @@ -131,7 +131,7 @@ void MainWindow::initZjuConnect() ui->pushButton1->setText("断开服务器"); ui->pushButton2->show(); - if (settings->value("ZJUConnect/AutoSetProxy", true).toBool()) + if (settings->value("ZJUConnect/AutoSetProxy", false).toBool()) { ui->pushButton2->click(); } @@ -144,8 +144,8 @@ void MainWindow::initZjuConnect() settings->value("ZJUConnect/ServerPort", 443).toInt(), settings->value("ZJUConnect/DNS").toString(), settings->value("ZJUConnect/SecondaryDNS", "").toString(), - !settings->value("ZJUConnect/MultiLine", true).toBool(), - !settings->value("ZJUConnect/KeepAlive", true).toBool(), + !settings->value("ZJUConnect/MultiLine", false).toBool(), + !settings->value("ZJUConnect/KeepAlive", false).toBool(), settings->value("ZJUConnect/ProxyAll", false).toBool(), bind_prefix + QString::number(settings->value("ZJUConnect/Socks5Port", 11080).toInt()), bind_prefix + QString::number(settings->value("ZJUConnect/HttpPort", 11081).toInt()),