mirror of
https://github.com/Qv2ray/Qv2ray.git
synced 2025-05-20 02:40:20 +08:00
fix: several fixes in the complex connection editor
This commit is contained in:
parent
644b8d00b6
commit
40a7ac0b67
@ -1 +1 @@
|
||||
3574
|
||||
3585
|
||||
|
@ -368,6 +368,9 @@ void RouteEditor::ShowCurrentRuleDetail()
|
||||
// Switch to the detailed page.
|
||||
ruleEnableCB->setEnabled(true);
|
||||
ruleEnableCB->setChecked(CurrentRule.QV2RAY_RULE_ENABLED);
|
||||
routeEditGroupBox->setEnabled(true);
|
||||
ruleTagLineEdit->setEnabled(true);
|
||||
routeRuleGroupBox->setEnabled(true);
|
||||
LOAD_FLAG_BEGIN
|
||||
ruleTagLineEdit->setText(CurrentRule.QV2RAY_RULE_TAG);
|
||||
balancerSelectionCombo->clear();
|
||||
@ -679,10 +682,9 @@ void RouteEditor::on_delBtn_clicked()
|
||||
} else if (isOutbound) {
|
||||
currentInboundOutboundTag = GetFirstNodeData(*firstNode, QvOutboundNodeModel, OutboundNodeData)->GetOutbound();
|
||||
outbounds.remove(currentInboundOutboundTag);
|
||||
defaultOutboundCombo->clear();
|
||||
defaultOutboundCombo->addItems(outbounds.keys());
|
||||
ResolveDefaultOutboundTag(currentInboundOutboundTag, "");
|
||||
|
||||
// Remove corresponded inboundtags from the rules.
|
||||
// Remove corresponded outbound tags from the rules.
|
||||
for (auto k : rules.keys()) {
|
||||
auto v = rules[k];
|
||||
|
||||
@ -692,28 +694,24 @@ void RouteEditor::on_delBtn_clicked()
|
||||
rules[k] = v;
|
||||
}
|
||||
|
||||
if (currentInboundOutboundTag == defaultOutbound) {
|
||||
// Set default outbound to the new one since the current has been removed.
|
||||
defaultOutbound = outbounds.firstKey();
|
||||
}
|
||||
|
||||
defaultOutboundCombo->setCurrentText(defaultOutbound);
|
||||
nodeScene->removeNode(*outboundNodes[currentInboundOutboundTag]);
|
||||
outboundNodes.remove(currentInboundOutboundTag);
|
||||
} else if (isRule) {
|
||||
ruleEnableCB->setEnabled(false);
|
||||
currentRuleTag = GetFirstNodeData(*firstNode, QvRuleNodeDataModel, RuleNodeData)->GetRuleTag();
|
||||
ruleTagLineEdit->setEnabled(false);
|
||||
auto RuleTag = GetFirstNodeData(*firstNode, QvRuleNodeDataModel, RuleNodeData)->GetRuleTag();
|
||||
currentRuleTag.clear();
|
||||
routeRuleGroupBox->setEnabled(false);
|
||||
routeEditGroupBox->setEnabled(false);
|
||||
rules.remove(currentRuleTag);
|
||||
nodeScene->removeNode(*ruleNodes[currentRuleTag]);
|
||||
ruleNodes.remove(currentRuleTag);
|
||||
rules.remove(RuleTag);
|
||||
nodeScene->removeNode(*ruleNodes[RuleTag]);
|
||||
ruleNodes.remove(RuleTag);
|
||||
//
|
||||
// Remove item from the rule order list widget.
|
||||
ruleListWidget->takeItem(ruleListWidget->row(ruleListWidget->findItems(currentRuleTag, Qt::MatchExactly).first()));
|
||||
ruleListWidget->takeItem(ruleListWidget->row(ruleListWidget->findItems(RuleTag, Qt::MatchExactly).first()));
|
||||
CHECKEMPTYRULES
|
||||
currentRuleTag = rules.firstKey();
|
||||
ShowCurrentRuleDetail();
|
||||
//currentRuleTag = rules.firstKey();
|
||||
//ShowCurrentRuleDetail();
|
||||
} else {
|
||||
LOG(MODULE_UI, "Unknown node selected.")
|
||||
QvMessageBoxWarn(this, tr("Error"), tr("Qv2ray entered an unknown state."));
|
||||
|
@ -124,4 +124,5 @@ class RouteEditor : public QDialog, private Ui::RouteEditor
|
||||
void AddOutbound(OUTBOUND out);
|
||||
void AddRule(RuleObject rule);
|
||||
QString AddNewRule();
|
||||
void ResolveDefaultOutboundTag(QString original, QString newTag);
|
||||
};
|
||||
|
@ -227,7 +227,7 @@
|
||||
<string>Add new route</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Add Route</string>
|
||||
<string>Add Rule</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -262,15 +262,15 @@
|
||||
<item row="1" column="1">
|
||||
<widget class="QToolBox" name="toolBox">
|
||||
<property name="currentIndex">
|
||||
<number>1</number>
|
||||
<number>0</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="page_2">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>359</width>
|
||||
<height>511</height>
|
||||
<width>361</width>
|
||||
<height>512</height>
|
||||
</rect>
|
||||
</property>
|
||||
<attribute name="label">
|
||||
@ -317,7 +317,14 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QComboBox" name="defaultOutboundCombo"/>
|
||||
<widget class="QComboBox" name="defaultOutboundCombo">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
@ -363,9 +370,9 @@
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>-140</y>
|
||||
<width>345</width>
|
||||
<height>651</height>
|
||||
<y>0</y>
|
||||
<width>341</width>
|
||||
<height>687</height>
|
||||
</rect>
|
||||
</property>
|
||||
<attribute name="label">
|
||||
@ -402,7 +409,11 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLineEdit" name="ruleTagLineEdit"/>
|
||||
<widget class="QLineEdit" name="ruleTagLineEdit">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
|
@ -170,6 +170,9 @@ void RouteEditor::RenameItemTag(ROUTE_EDIT_MODE mode, const QString originalTag,
|
||||
rules[k] = v;
|
||||
}
|
||||
}
|
||||
|
||||
// Resolve default outbound.
|
||||
ResolveDefaultOutboundTag(originalTag, newTag);
|
||||
} else {
|
||||
LOG(MODULE_UI, "Failed to rename an outbound --> Item not found.")
|
||||
}
|
||||
@ -213,3 +216,31 @@ void RouteEditor::RenameItemTag(ROUTE_EDIT_MODE mode, const QString originalTag,
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void RouteEditor::ResolveDefaultOutboundTag(QString original, QString newTag)
|
||||
{
|
||||
LOG(MODULE_UI, "Resolving default outbound settings: default=" + defaultOutbound + " original=" + original + " new=" + newTag)
|
||||
auto isDefaultChanged = original == defaultOutbound;
|
||||
defaultOutboundCombo->clear();
|
||||
defaultOutboundCombo->addItems(outbounds.keys());
|
||||
|
||||
if (!isDefaultChanged) {
|
||||
LOG(MODULE_UI, "Default outbound is not changed: retaining: " + defaultOutbound)
|
||||
// Just simply restore the default one.
|
||||
defaultOutboundCombo->setCurrentText(defaultOutbound);
|
||||
} else if (newTag.isEmpty()) {
|
||||
LOG(MODULE_UI, "Default outbound is removed, using first key from the outbounds as the default one.")
|
||||
|
||||
// Removed the default one, so set the first one as the default.
|
||||
if (outbounds.isEmpty()) {
|
||||
defaultOutbound.clear();
|
||||
} else {
|
||||
defaultOutbound = getTag(outbounds.first());
|
||||
defaultOutboundCombo->addItem(outbounds.firstKey());
|
||||
}
|
||||
} else {
|
||||
LOG(MODULE_UI, "Default outbound is renamed, ")
|
||||
defaultOutboundCombo->setCurrentText(newTag);
|
||||
defaultOutbound = newTag;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user