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.
|
// Switch to the detailed page.
|
||||||
ruleEnableCB->setEnabled(true);
|
ruleEnableCB->setEnabled(true);
|
||||||
ruleEnableCB->setChecked(CurrentRule.QV2RAY_RULE_ENABLED);
|
ruleEnableCB->setChecked(CurrentRule.QV2RAY_RULE_ENABLED);
|
||||||
|
routeEditGroupBox->setEnabled(true);
|
||||||
|
ruleTagLineEdit->setEnabled(true);
|
||||||
|
routeRuleGroupBox->setEnabled(true);
|
||||||
LOAD_FLAG_BEGIN
|
LOAD_FLAG_BEGIN
|
||||||
ruleTagLineEdit->setText(CurrentRule.QV2RAY_RULE_TAG);
|
ruleTagLineEdit->setText(CurrentRule.QV2RAY_RULE_TAG);
|
||||||
balancerSelectionCombo->clear();
|
balancerSelectionCombo->clear();
|
||||||
@ -679,10 +682,9 @@ void RouteEditor::on_delBtn_clicked()
|
|||||||
} else if (isOutbound) {
|
} else if (isOutbound) {
|
||||||
currentInboundOutboundTag = GetFirstNodeData(*firstNode, QvOutboundNodeModel, OutboundNodeData)->GetOutbound();
|
currentInboundOutboundTag = GetFirstNodeData(*firstNode, QvOutboundNodeModel, OutboundNodeData)->GetOutbound();
|
||||||
outbounds.remove(currentInboundOutboundTag);
|
outbounds.remove(currentInboundOutboundTag);
|
||||||
defaultOutboundCombo->clear();
|
ResolveDefaultOutboundTag(currentInboundOutboundTag, "");
|
||||||
defaultOutboundCombo->addItems(outbounds.keys());
|
|
||||||
|
|
||||||
// Remove corresponded inboundtags from the rules.
|
// Remove corresponded outbound tags from the rules.
|
||||||
for (auto k : rules.keys()) {
|
for (auto k : rules.keys()) {
|
||||||
auto v = rules[k];
|
auto v = rules[k];
|
||||||
|
|
||||||
@ -692,28 +694,24 @@ void RouteEditor::on_delBtn_clicked()
|
|||||||
rules[k] = v;
|
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]);
|
nodeScene->removeNode(*outboundNodes[currentInboundOutboundTag]);
|
||||||
outboundNodes.remove(currentInboundOutboundTag);
|
outboundNodes.remove(currentInboundOutboundTag);
|
||||||
} else if (isRule) {
|
} else if (isRule) {
|
||||||
ruleEnableCB->setEnabled(false);
|
ruleEnableCB->setEnabled(false);
|
||||||
currentRuleTag = GetFirstNodeData(*firstNode, QvRuleNodeDataModel, RuleNodeData)->GetRuleTag();
|
ruleTagLineEdit->setEnabled(false);
|
||||||
|
auto RuleTag = GetFirstNodeData(*firstNode, QvRuleNodeDataModel, RuleNodeData)->GetRuleTag();
|
||||||
|
currentRuleTag.clear();
|
||||||
routeRuleGroupBox->setEnabled(false);
|
routeRuleGroupBox->setEnabled(false);
|
||||||
routeEditGroupBox->setEnabled(false);
|
routeEditGroupBox->setEnabled(false);
|
||||||
rules.remove(currentRuleTag);
|
rules.remove(RuleTag);
|
||||||
nodeScene->removeNode(*ruleNodes[currentRuleTag]);
|
nodeScene->removeNode(*ruleNodes[RuleTag]);
|
||||||
ruleNodes.remove(currentRuleTag);
|
ruleNodes.remove(RuleTag);
|
||||||
//
|
//
|
||||||
// Remove item from the rule order list widget.
|
// 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
|
CHECKEMPTYRULES
|
||||||
currentRuleTag = rules.firstKey();
|
//currentRuleTag = rules.firstKey();
|
||||||
ShowCurrentRuleDetail();
|
//ShowCurrentRuleDetail();
|
||||||
} else {
|
} else {
|
||||||
LOG(MODULE_UI, "Unknown node selected.")
|
LOG(MODULE_UI, "Unknown node selected.")
|
||||||
QvMessageBoxWarn(this, tr("Error"), tr("Qv2ray entered an unknown state."));
|
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 AddOutbound(OUTBOUND out);
|
||||||
void AddRule(RuleObject rule);
|
void AddRule(RuleObject rule);
|
||||||
QString AddNewRule();
|
QString AddNewRule();
|
||||||
|
void ResolveDefaultOutboundTag(QString original, QString newTag);
|
||||||
};
|
};
|
||||||
|
@ -227,7 +227,7 @@
|
|||||||
<string>Add new route</string>
|
<string>Add new route</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Add Route</string>
|
<string>Add Rule</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -262,15 +262,15 @@
|
|||||||
<item row="1" column="1">
|
<item row="1" column="1">
|
||||||
<widget class="QToolBox" name="toolBox">
|
<widget class="QToolBox" name="toolBox">
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>1</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="page_2">
|
<widget class="QWidget" name="page_2">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>359</width>
|
<width>361</width>
|
||||||
<height>511</height>
|
<height>512</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<attribute name="label">
|
<attribute name="label">
|
||||||
@ -317,7 +317,14 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="1">
|
<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>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
@ -363,9 +370,9 @@
|
|||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>-140</y>
|
<y>0</y>
|
||||||
<width>345</width>
|
<width>341</width>
|
||||||
<height>651</height>
|
<height>687</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<attribute name="label">
|
<attribute name="label">
|
||||||
@ -402,7 +409,11 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="1">
|
<item row="1" column="1">
|
||||||
<widget class="QLineEdit" name="ruleTagLineEdit"/>
|
<widget class="QLineEdit" name="ruleTagLineEdit">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
@ -170,6 +170,9 @@ void RouteEditor::RenameItemTag(ROUTE_EDIT_MODE mode, const QString originalTag,
|
|||||||
rules[k] = v;
|
rules[k] = v;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Resolve default outbound.
|
||||||
|
ResolveDefaultOutboundTag(originalTag, newTag);
|
||||||
} else {
|
} else {
|
||||||
LOG(MODULE_UI, "Failed to rename an outbound --> Item not found.")
|
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;
|
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