Skip to content

Commit

Permalink
feat: import as new group
Browse files Browse the repository at this point in the history
  • Loading branch information
arm64v8a committed May 20, 2023
1 parent f9a8dc6 commit e3f325e
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 16 deletions.
23 changes: 19 additions & 4 deletions sub/GroupUpdater.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -408,21 +408,36 @@ namespace NekoRay::sub {
void GroupUpdater::AsyncUpdate(const QString &str, int _sub_gid, const std::function<void()> &finish) {
auto content = str.trimmed();
bool asURL = false;
bool createNewGroup = false;

if (_sub_gid < 0 && (content.startsWith("http://") || content.startsWith("https://"))) {
auto items = QStringList{QObject::tr("As Subscription"), QObject::tr("As link")};
auto items = QStringList{
QObject::tr("As Subscription (add to this group)"),
QObject::tr("As Subscription (create new group)"),
QObject::tr("As link"),
};
bool ok;
auto a = QInputDialog::getItem(nullptr,
QObject::tr("url detected"),
QObject::tr("%1\nHow to update?").arg(content),
items, 0, false, &ok);
if (!ok) return;
if (items.indexOf(a) == 0) asURL = true;
if (items.indexOf(a) <= 1) asURL = true;
if (items.indexOf(a) == 1) createNewGroup = true;
}

runOnNewThread([=] {
Update(str, _sub_gid, asURL);
emit asyncUpdateCallback(_sub_gid);
auto gid = _sub_gid;
if (createNewGroup) {
auto group = ProfileManager::NewGroup();
group->name = QUrl(str).host();
group->url = str;
profileManager->AddGroup(group);
gid = group->id;
MW_dialog_message("SubUpdater", "NewGroup");
}
Update(str, gid, asURL);
emit asyncUpdateCallback(gid);
if (finish != nullptr) finish();
});
}
Expand Down
12 changes: 8 additions & 4 deletions translations/fa_IR.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1517,10 +1517,6 @@ Release note:
<source>Update is ready, restart to install?</source>
<translation>به روز رسانی آماده است، برای نصب مجدد راه اندازی شود؟</translation>
</message>
<message>
<source>As Subscription</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>As link</source>
<translation>به عنوان لینک</translation>
Expand Down Expand Up @@ -1602,6 +1598,14 @@ Direct: %2</source>
<source>Core exits too frequently, stop automatic restart this profile.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>As Subscription (create new group)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>As Subscription (add to this group)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Qv2ray::ui::widgets::AutoCompleteTextEdit</name>
Expand Down
12 changes: 8 additions & 4 deletions translations/zh_CN.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1490,10 +1490,6 @@ Split by line.</source>
</context>
<context>
<name>QObject</name>
<message>
<source>As Subscription</source>
<translation>作为订阅</translation>
</message>
<message>
<source>As link</source>
<translation>作为链接</translation>
Expand Down Expand Up @@ -1608,6 +1604,14 @@ Release note:
<source>Core exits too frequently, stop automatic restart this profile.</source>
<translation>Core 退出太频繁,停止自动重启。</translation>
</message>
<message>
<source>As Subscription (create new group)</source>
<translation>作为订阅(创建新组)</translation>
</message>
<message>
<source>As Subscription (add to this group)</source>
<translation>作为订阅(添加到该组)</translation>
</message>
</context>
<context>
<name>Qv2ray::ui::widgets::AutoCompleteTextEdit</name>
Expand Down
11 changes: 7 additions & 4 deletions ui/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -565,10 +565,13 @@ void MainWindow::dialog_message_impl(const QString &sender, const QString &info)
this->refresh_groups();
}
} else if (sender == "SubUpdater") {
// 订阅完毕
refresh_proxy_list();
if (!info.contains("dingyue")) {
show_log_impl(tr("Imported %1 profile(s)").arg(NekoRay::dataStore->imported_count));
if (info.startsWith("finish")) {
refresh_proxy_list();
if (!info.contains("dingyue")) {
show_log_impl(tr("Imported %1 profile(s)").arg(NekoRay::dataStore->imported_count));
}
} else if (info == "NewGroup") {
refresh_groups();
}
} else if (sender == "ExternalProcess") {
if (info == "Crashed") {
Expand Down

0 comments on commit e3f325e

Please sign in to comment.