mirror of
https://github.com/MatsuriDayo/nekoray.git
synced 2025-12-17 12:34:37 +03:00
feat: import as new group
This commit is contained in:
@@ -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();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
|
||||
@@ -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") {
|
||||
|
||||
Reference in New Issue
Block a user