服务器右键上下移:支持同时移动多个服务器

This commit is contained in:
bin456789 2022-03-15 13:17:15 +08:00
parent 8aa3354b20
commit d5cf3c18e3
No known key found for this signature in database
GPG key ID: EE301B386DE6C11B

View file

@ -1318,17 +1318,44 @@ namespace v2rayN.Forms
private void MoveServer(EMove eMove) private void MoveServer(EMove eMove)
{ {
int index = GetLvSelectedIndex(); if (lvServers.SelectedItems.Count == 0)
if (index < 0)
{ {
UI.Show(UIRes.I18N("PleaseSelectServer")); UI.Show(UIRes.I18N("PleaseSelectServer"));
return; 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. case EMove.Top:
RefreshServers(); MoveSelectedServer(0);
//LoadV2ray(); 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) private void menuSelectAll_Click(object sender, EventArgs e)
@ -1680,6 +1707,11 @@ namespace v2rayN.Forms
targetIndex++; targetIndex++;
} }
MoveSelectedServer(targetIndex);
}
private void MoveSelectedServer(int targetIndex)
{
bool isChanged = false; bool isChanged = false;
lvServers.BeginUpdate(); lvServers.BeginUpdate();
foreach (ListViewItem listItem in lvServers.SelectedItems) foreach (ListViewItem listItem in lvServers.SelectedItems)