From d5cf3c18e39a76937d12f6a8762213eb3bb723cb Mon Sep 17 00:00:00 2001 From: bin456789 Date: Tue, 15 Mar 2022 13:17:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=99=A8=E5=8F=B3=E9=94=AE?= =?UTF-8?q?=E4=B8=8A=E4=B8=8B=E7=A7=BB=EF=BC=9A=E6=94=AF=E6=8C=81=E5=90=8C?= =?UTF-8?q?=E6=97=B6=E7=A7=BB=E5=8A=A8=E5=A4=9A=E4=B8=AA=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- v2rayN/v2rayN/Forms/MainForm.cs | 44 ++++++++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 6 deletions(-) diff --git a/v2rayN/v2rayN/Forms/MainForm.cs b/v2rayN/v2rayN/Forms/MainForm.cs index 4b413518..70e4a97d 100644 --- a/v2rayN/v2rayN/Forms/MainForm.cs +++ b/v2rayN/v2rayN/Forms/MainForm.cs @@ -1318,17 +1318,44 @@ namespace v2rayN.Forms private void MoveServer(EMove eMove) { - int index = GetLvSelectedIndex(); - if (index < 0) + if (lvServers.SelectedItems.Count == 0) { UI.Show(UIRes.I18N("PleaseSelectServer")); return; } - if (ConfigHandler.MoveServer(ref config, ref lstVmess, index, eMove) == 0) + + var listItems = lvServers.Items; + var selectedItems = lvServers.SelectedItems; + + switch (eMove) { - //TODO: reload is not good. - RefreshServers(); - //LoadV2ray(); + case EMove.Top: + MoveSelectedServer(0); + listItems[0].EnsureVisible(); + break; + case EMove.Up: + int firstSelectedIndex = selectedItems[0].Index; ; + bool isAlreadyTop = firstSelectedIndex == 0; + if (!isAlreadyTop) + { + MoveSelectedServer(firstSelectedIndex - 1); + selectedItems[0].EnsureVisible(); + } + break; + case EMove.Down: + int lastSelectedIndex = selectedItems[selectedItems.Count - 1].Index; + int lastListIndex = listItems[listItems.Count - 1].Index; + bool isAlreadBottom = lastSelectedIndex == lastListIndex; + if (!isAlreadBottom) + { + MoveSelectedServer(lastSelectedIndex + 2); + selectedItems[selectedItems.Count - 1].EnsureVisible(); + } + break; + case EMove.Bottom: + MoveSelectedServer(lvServers.Items.Count); + lvServers.Items[lvServers.Items.Count - 1].EnsureVisible(); + break; } } private void menuSelectAll_Click(object sender, EventArgs e) @@ -1680,6 +1707,11 @@ namespace v2rayN.Forms targetIndex++; } + MoveSelectedServer(targetIndex); + } + + private void MoveSelectedServer(int targetIndex) + { bool isChanged = false; lvServers.BeginUpdate(); foreach (ListViewItem listItem in lvServers.SelectedItems)