mirror of
https://github.com/2dust/v2rayN.git
synced 2025-10-13 11:59:13 +00:00
Fix
This commit is contained in:
parent
183be53153
commit
c76d125ce1
4 changed files with 49 additions and 12 deletions
|
@ -1,3 +1,4 @@
|
|||
using System.Data;
|
||||
using System.Reactive;
|
||||
using DynamicData.Binding;
|
||||
using ReactiveUI;
|
||||
|
@ -38,26 +39,30 @@ public class AddGroupServerViewModel : MyReactiveObject
|
|||
_config = AppManager.Instance.Config;
|
||||
_updateView = updateView;
|
||||
|
||||
var canEditRemove = this.WhenAnyValue(
|
||||
x => x.SelectedChild,
|
||||
SelectedChild => SelectedChild != null && !SelectedChild.Remarks.IsNullOrEmpty());
|
||||
|
||||
RemoveCmd = ReactiveCommand.CreateFromTask(async () =>
|
||||
{
|
||||
await ChildRemoveAsync();
|
||||
});
|
||||
}, canEditRemove);
|
||||
MoveTopCmd = ReactiveCommand.CreateFromTask(async () =>
|
||||
{
|
||||
await MoveServer(EMove.Top);
|
||||
});
|
||||
}, canEditRemove);
|
||||
MoveUpCmd = ReactiveCommand.CreateFromTask(async () =>
|
||||
{
|
||||
await MoveServer(EMove.Up);
|
||||
});
|
||||
}, canEditRemove);
|
||||
MoveDownCmd = ReactiveCommand.CreateFromTask(async () =>
|
||||
{
|
||||
await MoveServer(EMove.Down);
|
||||
});
|
||||
}, canEditRemove);
|
||||
MoveBottomCmd = ReactiveCommand.CreateFromTask(async () =>
|
||||
{
|
||||
await MoveServer(EMove.Bottom);
|
||||
});
|
||||
}, canEditRemove);
|
||||
SaveCmd = ReactiveCommand.CreateFromTask(async () =>
|
||||
{
|
||||
await SaveServerAsync();
|
||||
|
@ -105,7 +110,13 @@ public class AddGroupServerViewModel : MyReactiveObject
|
|||
NoticeManager.Instance.Enqueue(ResUI.PleaseSelectServer);
|
||||
return;
|
||||
}
|
||||
ChildItemsObs.Remove(SelectedChild);
|
||||
foreach (var it in SelectedChildren ?? [SelectedChild])
|
||||
{
|
||||
if (it != null)
|
||||
{
|
||||
ChildItemsObs.Remove(it);
|
||||
}
|
||||
}
|
||||
await Task.CompletedTask;
|
||||
}
|
||||
|
||||
|
@ -121,6 +132,7 @@ public class AddGroupServerViewModel : MyReactiveObject
|
|||
{
|
||||
return;
|
||||
}
|
||||
var selectedChild = JsonUtils.DeepCopy(SelectedChild);
|
||||
switch (eMove)
|
||||
{
|
||||
case EMove.Top:
|
||||
|
@ -129,7 +141,7 @@ public class AddGroupServerViewModel : MyReactiveObject
|
|||
return;
|
||||
}
|
||||
ChildItemsObs.RemoveAt(index);
|
||||
ChildItemsObs.Insert(0, SelectedChild);
|
||||
ChildItemsObs.Insert(0, selectedChild);
|
||||
break;
|
||||
case EMove.Up:
|
||||
if (index == 0)
|
||||
|
@ -137,7 +149,7 @@ public class AddGroupServerViewModel : MyReactiveObject
|
|||
return;
|
||||
}
|
||||
ChildItemsObs.RemoveAt(index);
|
||||
ChildItemsObs.Insert(index - 1, SelectedChild);
|
||||
ChildItemsObs.Insert(index - 1, selectedChild);
|
||||
break;
|
||||
case EMove.Down:
|
||||
if (index == ChildItemsObs.Count - 1)
|
||||
|
@ -145,7 +157,7 @@ public class AddGroupServerViewModel : MyReactiveObject
|
|||
return;
|
||||
}
|
||||
ChildItemsObs.RemoveAt(index);
|
||||
ChildItemsObs.Insert(index + 1, SelectedChild);
|
||||
ChildItemsObs.Insert(index + 1, selectedChild);
|
||||
break;
|
||||
case EMove.Bottom:
|
||||
if (index == ChildItemsObs.Count - 1)
|
||||
|
@ -153,7 +165,7 @@ public class AddGroupServerViewModel : MyReactiveObject
|
|||
return;
|
||||
}
|
||||
ChildItemsObs.RemoveAt(index);
|
||||
ChildItemsObs.Add(SelectedChild);
|
||||
ChildItemsObs.Add(selectedChild);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -183,7 +195,7 @@ public class AddGroupServerViewModel : MyReactiveObject
|
|||
var childIndexIds = new List<string>();
|
||||
foreach (var item in ChildItemsObs)
|
||||
{
|
||||
if (item.IndexId.IsNotEmpty())
|
||||
if (!item.IndexId.IsNullOrEmpty())
|
||||
{
|
||||
childIndexIds.Add(item.IndexId);
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ public partial class AddGroupServerWindow : WindowBase<AddGroupServerViewModel>
|
|||
|
||||
this.Loaded += Window_Loaded;
|
||||
btnCancel.Click += (s, e) => this.Close();
|
||||
lstChild.SelectionChanged += LstChild_SelectionChanged;
|
||||
|
||||
ViewModel = new AddGroupServerViewModel(profileItem, UpdateViewHandler);
|
||||
|
||||
|
@ -145,4 +146,13 @@ public partial class AddGroupServerWindow : WindowBase<AddGroupServerViewModel>
|
|||
ViewModel?.ChildItemsObs.AddRange(profiles);
|
||||
}
|
||||
}
|
||||
|
||||
private void LstChild_SelectionChanged(object? sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
if (ViewModel != null)
|
||||
{
|
||||
ViewModel.SelectedChildren = lstChild.SelectedItems.Cast<ProfileItem>().ToList();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -73,7 +73,6 @@
|
|||
Style="{StaticResource ModuleTitle}"
|
||||
Text="{x:Static resx:ResUI.menuServers}" />
|
||||
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="1"
|
||||
Grid.Column="0"
|
||||
|
|
|
@ -15,6 +15,8 @@ public partial class AddGroupServerWindow
|
|||
this.Owner = Application.Current.MainWindow;
|
||||
this.Loaded += Window_Loaded;
|
||||
this.PreviewKeyDown += AddGroupServerWindow_PreviewKeyDown;
|
||||
lstChild.SelectionChanged += LstChild_SelectionChanged;
|
||||
menuSelectAllChild.Click += MenuSelectAllChild_Click;
|
||||
|
||||
ViewModel = new AddGroupServerViewModel(profileItem, UpdateViewHandler);
|
||||
|
||||
|
@ -46,6 +48,7 @@ public partial class AddGroupServerWindow
|
|||
this.Bind(ViewModel, vm => vm.PolicyGroupType, v => v.cmbPolicyGroupType.Text).DisposeWith(disposables);
|
||||
|
||||
this.OneWayBind(ViewModel, vm => vm.ChildItemsObs, v => v.lstChild.ItemsSource).DisposeWith(disposables);
|
||||
this.Bind(ViewModel, vm => vm.SelectedChild, v => v.lstChild.SelectedItem).DisposeWith(disposables);
|
||||
|
||||
this.BindCommand(ViewModel, vm => vm.RemoveCmd, v => v.menuRemoveChildServer).DisposeWith(disposables);
|
||||
this.BindCommand(ViewModel, vm => vm.MoveTopCmd, v => v.menuMoveTop).DisposeWith(disposables);
|
||||
|
@ -120,4 +123,17 @@ public partial class AddGroupServerWindow
|
|||
ViewModel?.ChildItemsObs.AddRange(profiles);
|
||||
}
|
||||
}
|
||||
|
||||
private void LstChild_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
|
||||
{
|
||||
if (ViewModel != null)
|
||||
{
|
||||
ViewModel.SelectedChildren = lstChild.SelectedItems.Cast<ProfileItem>().ToList();
|
||||
}
|
||||
}
|
||||
|
||||
private void MenuSelectAllChild_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
lstChild.SelectAll();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue