Skip to content

Commit 399b171

Browse files
committed
misc change
1 parent 6e4c180 commit 399b171

File tree

3 files changed

+37
-18
lines changed

3 files changed

+37
-18
lines changed

db/ConfigBuilder.cpp

Lines changed: 33 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -29,23 +29,41 @@ namespace NekoGui {
2929
return tun_name;
3030
}
3131

32-
void MergeJson(const QJsonObject &custom, QJsonObject &outbound) {
32+
void MergeJson(QJsonObject &dst, const QJsonObject &src) {
3333
// 合并
34-
if (custom.isEmpty()) return;
35-
for (const auto &key: custom.keys()) {
36-
if (outbound.contains(key)) {
37-
auto v = custom[key];
38-
auto v_orig = outbound[key];
39-
if (v.isObject() && v_orig.isObject()) { // isObject 则合并?
40-
auto vo = v.toObject();
41-
QJsonObject vo_orig = v_orig.toObject();
42-
MergeJson(vo, vo_orig);
43-
outbound[key] = vo_orig;
34+
if (src.isEmpty()) return;
35+
for (const auto &key: src.keys()) {
36+
auto v_src = src[key];
37+
if (dst.contains(key)) {
38+
auto v_dst = dst[key];
39+
if (v_src.isObject() && v_dst.isObject()) { // isObject 则合并?
40+
auto v_src_obj = v_src.toObject();
41+
auto v_dst_obj = v_dst.toObject();
42+
MergeJson(v_dst_obj, v_src_obj);
43+
dst[key] = v_dst_obj;
4444
} else {
45-
outbound[key] = v;
45+
dst[key] = v_src;
46+
}
47+
} else if (v_src.isArray()) {
48+
if (key.startsWith("+")) {
49+
auto key2 = SubStrAfter(key, "+");
50+
auto v_dst = dst[key2];
51+
auto v_src_arr = v_src.toArray();
52+
auto v_dst_arr = v_dst.toArray();
53+
QJSONARRAY_ADD(v_src_arr, v_dst_arr)
54+
dst[key2] = v_src_arr;
55+
} else if (key.endsWith("+")) {
56+
auto key2 = SubStrBefore(key, "+");
57+
auto v_dst = dst[key2];
58+
auto v_src_arr = v_src.toArray();
59+
auto v_dst_arr = v_dst.toArray();
60+
QJSONARRAY_ADD(v_dst_arr, v_src_arr)
61+
dst[key2] = v_dst_arr;
62+
} else {
63+
dst[key] = v_src;
4664
}
4765
} else {
48-
outbound[key] = custom[key];
66+
dst[key] = v_src;
4967
}
5068
}
5169
}
@@ -68,7 +86,7 @@ namespace NekoGui {
6886
}
6987

7088
// apply custom config
71-
MergeJson(QString2QJsonObject(ent->bean->custom_config), result->coreConfig);
89+
MergeJson(result->coreConfig, QString2QJsonObject(ent->bean->custom_config));
7290

7391
return result;
7492
}
@@ -342,7 +360,7 @@ namespace NekoGui {
342360
}
343361

344362
// apply custom outbound settings
345-
MergeJson(QString2QJsonObject(ent->bean->custom_outbound), outbound);
363+
MergeJson(outbound, QString2QJsonObject(ent->bean->custom_outbound));
346364

347365
// Bypass Lookup for the first profile
348366
auto serverAddress = ent->bean->serverAddress;

ui/mainwindow.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi
101101
ui->toolButton_server->setMenu(ui->menu_server);
102102
ui->menubar->setVisible(false);
103103
connect(ui->toolButton_document, &QToolButton::clicked, this, [=] { QDesktopServices::openUrl(QUrl("https://matsuridayo.github.io/")); });
104-
connect(ui->toolButton_ads, &QToolButton::clicked, this, [=] { QDesktopServices::openUrl(QUrl("https://matsuricom.pages.dev/")); });
104+
connect(ui->toolButton_ads, &QToolButton::clicked, this, [=] { QDesktopServices::openUrl(QUrl("https://neko-box.pages.dev/")); });
105105
connect(ui->toolButton_update, &QToolButton::clicked, this, [=] { runOnNewThread([=] { CheckUpdate(); }); });
106106
connect(ui->toolButton_url_test, &QToolButton::clicked, this, [=] { speedtest_current_group(1, true); });
107107

@@ -1208,10 +1208,10 @@ void MainWindow::on_menu_export_config_triggered() {
12081208
if (ent->bean->DisplayCoreType() != software_core_name) return;
12091209

12101210
auto result = BuildConfig(ent, false, true);
1211-
QString config_core = QJsonObject2QString(result->coreConfig, true);
1211+
QString config_core = QJsonObject2QString(result->coreConfig, false);
12121212
QApplication::clipboard()->setText(config_core);
12131213

1214-
QMessageBox msg(QMessageBox::Information, tr("Config copied"), config_core);
1214+
QMessageBox msg(QMessageBox::Information, tr("Config copied"), tr("Config copied"));
12151215
msg.addButton("Copy core config", QMessageBox::YesRole);
12161216
msg.addButton("Copy test config", QMessageBox::NoRole);
12171217
msg.addButton(QMessageBox::Ok);

ui/mainwindow_grpc.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,7 @@ void MainWindow::speedtest_current_group(int mode, bool test_group) {
239239
lock_return.lock();
240240
lock_return.unlock();
241241
speedtesting = false;
242+
MW_show_log(QObject::tr("Speedtest finished."));
242243
});
243244
#endif
244245
}

0 commit comments

Comments
 (0)