Skip to content

Commit b7a6300

Browse files
committed
Feature: More dialogs
1 parent f56aaf6 commit b7a6300

10 files changed

+77
-74
lines changed

Source/NETworkManager/ViewModels/IPScannerSettingsViewModel.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
using MahApps.Metro.Controls.Dialogs;
2-
using MahApps.Metro.SimpleChildWindow;
1+
using MahApps.Metro.SimpleChildWindow;
32
using NETworkManager.Localization.Resources;
43
using NETworkManager.Settings;
54
using NETworkManager.Utilities;

Source/NETworkManager/ViewModels/PortScannerSettingsViewModel.cs

Lines changed: 38 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using MahApps.Metro.Controls.Dialogs;
1+
using MahApps.Metro.SimpleChildWindow;
22
using NETworkManager.Localization.Resources;
33
using NETworkManager.Models.Network;
44
using NETworkManager.Settings;
@@ -22,8 +22,6 @@ public class PortScannerSettingsViewModel : ViewModelBase
2222

2323
private readonly bool _isLoading;
2424

25-
private readonly IDialogCoordinator _dialogCoordinator;
26-
2725
/// <summary>
2826
/// Gets the collection view of port profiles.
2927
/// </summary>
@@ -159,13 +157,10 @@ public int MaxPortThreads
159157
/// <summary>
160158
/// Initializes a new instance of the <see cref="PortScannerSettingsViewModel"/> class.
161159
/// </summary>
162-
/// <param name="instance">The dialog coordinator instance.</param>
163-
public PortScannerSettingsViewModel(IDialogCoordinator instance)
160+
public PortScannerSettingsViewModel()
164161
{
165162
_isLoading = true;
166163

167-
_dialogCoordinator = instance;
168-
169164
PortProfiles = CollectionViewSource.GetDefaultView(SettingsManager.Current.PortScanner_PortProfiles);
170165
PortProfiles.SortDescriptions.Add(
171166
new SortDescription(nameof(PortProfileInfo.Name), ListSortDirection.Ascending));
@@ -215,51 +210,57 @@ private void DeletePortProfileAction()
215210

216211
#region Methods
217212

218-
private async Task AddPortProfile()
213+
private Task AddPortProfile()
219214
{
220-
var customDialog = new CustomDialog
221-
{
222-
Title = Strings.AddPortProfile
223-
};
215+
var childWindow = new PortProfileChildWindow();
224216

225-
var viewModel = new PortProfileViewModel(async instance =>
217+
var childWindowViewModel = new PortProfileViewModel(async instance =>
226218
{
227-
await _dialogCoordinator.HideMetroDialogAsync(this, customDialog);
219+
childWindow.IsOpen = false;
220+
ConfigurationManager.Current.IsChildWindowOpen = false;
228221

229222
SettingsManager.Current.PortScanner_PortProfiles.Add(new PortProfileInfo(instance.Name, instance.Ports));
230-
}, async _ => { await _dialogCoordinator.HideMetroDialogAsync(this, customDialog); });
231-
232-
customDialog.Content = new PortProfileDialog
223+
}, async _ =>
233224
{
234-
DataContext = viewModel
235-
};
225+
childWindow.IsOpen = false;
226+
ConfigurationManager.Current.IsChildWindowOpen = false;
227+
});
228+
229+
childWindow.Title = Strings.AddPortProfile;
230+
231+
childWindow.DataContext = childWindowViewModel;
232+
233+
ConfigurationManager.Current.IsChildWindowOpen = true;
236234

237-
await _dialogCoordinator.ShowMetroDialogAsync(this, customDialog);
235+
return Application.Current.MainWindow.ShowChildWindowAsync(childWindow);
238236
}
239237

240-
public async Task EditPortProfile()
238+
public Task EditPortProfile()
241239
{
242-
var customDialog = new CustomDialog
243-
{
244-
Title = Strings.EditPortProfile
245-
};
240+
var childWindow = new PortProfileChildWindow();
246241

247-
var viewModel = new PortProfileViewModel(async instance =>
248-
{
249-
await _dialogCoordinator.HideMetroDialogAsync(this, customDialog);
242+
var childWindowViewModel = new PortProfileViewModel(async instance =>
243+
{
244+
childWindow.IsOpen = false;
245+
ConfigurationManager.Current.IsChildWindowOpen = false;
250246

251-
SettingsManager.Current.PortScanner_PortProfiles.Remove(SelectedPortProfile);
252-
SettingsManager.Current.PortScanner_PortProfiles.Add(new PortProfileInfo(instance.Name,
253-
instance.Ports));
254-
}, async _ => { await _dialogCoordinator.HideMetroDialogAsync(this, customDialog); }, true,
247+
SettingsManager.Current.PortScanner_PortProfiles.Remove(SelectedPortProfile);
248+
SettingsManager.Current.PortScanner_PortProfiles.Add(new PortProfileInfo(instance.Name,
249+
instance.Ports));
250+
}, async _ =>
251+
{
252+
childWindow.IsOpen = false;
253+
ConfigurationManager.Current.IsChildWindowOpen = false;
254+
}, true,
255255
SelectedPortProfile);
256256

257-
customDialog.Content = new PortProfileDialog
258-
{
259-
DataContext = viewModel
260-
};
257+
childWindow.Title = Strings.EditPortProfile;
258+
259+
childWindow.DataContext = childWindowViewModel;
260+
261+
ConfigurationManager.Current.IsChildWindowOpen = true;
261262

262-
await _dialogCoordinator.ShowMetroDialogAsync(this, customDialog);
263+
return Application.Current.MainWindow.ShowChildWindowAsync(childWindow);
263264
}
264265

265266
private async Task DeletePortProfile()

Source/NETworkManager/Views/IPScannerHostView.xaml.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using System.Windows;
22
using System.Windows.Controls;
33
using System.Windows.Input;
4-
using MahApps.Metro.Controls.Dialogs;
54
using NETworkManager.ViewModels;
65

76
namespace NETworkManager.Views;

Source/NETworkManager/Views/PortProfileDialog.xaml renamed to Source/NETworkManager/Views/PortProfileChildWindow.xaml

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<UserControl x:Class="NETworkManager.Views.PortProfileDialog"
1+
<simpleChildWindow:ChildWindow x:Class="NETworkManager.Views.PortProfileChildWindow"
22
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
33
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
44
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
@@ -7,9 +7,13 @@
77
xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls"
88
xmlns:viewModels="clr-namespace:NETworkManager.ViewModels"
99
xmlns:localization="clr-namespace:NETworkManager.Localization.Resources;assembly=NETworkManager.Localization"
10-
mc:Ignorable="d" Loaded="UserControl_Loaded"
11-
d:DataContext="{d:DesignInstance viewModels:PortProfileViewModel}">
12-
<Grid Margin="0,20">
10+
xmlns:simpleChildWindow="clr-namespace:MahApps.Metro.SimpleChildWindow;assembly=MahApps.Metro.SimpleChildWindow"
11+
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
12+
CloseButtonCommand="{Binding Path=CancelCommand}"
13+
Style="{StaticResource DefaultChildWindow}"
14+
Loaded="ChildWindow_OnLoaded"
15+
mc:Ignorable="d" d:DataContext="{d:DesignInstance viewModels:PortProfileViewModel}">
16+
<Grid Margin="10">
1317
<Grid.RowDefinitions>
1418
<RowDefinition Height="*" />
1519
<RowDefinition Height="10" />
@@ -32,7 +36,7 @@
3236
</Grid.RowDefinitions>
3337
<TextBlock Grid.Column="0" Grid.Row="0" Text="{x:Static localization:Strings.Name}" />
3438
<TextBox x:Name="TextBoxName" Grid.Column="2" Grid.Row="0"
35-
mah:TextBoxHelper.Watermark="{x:Static localization:StaticStrings.ExampleGroupServers}">
39+
mah:TextBoxHelper.Watermark="{x:Static localization:StaticStrings.ExampleGroupServers}">
3640
<TextBox.Style>
3741
<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource DefaultTextBox}">
3842
<Style.Triggers>
@@ -64,7 +68,7 @@
6468
</TextBox>
6569
<TextBlock Grid.Column="0" Grid.Row="2" Text="{x:Static localization:Strings.Ports}" />
6670
<TextBox x:Name="TextBoxPorts" Grid.Column="2" Grid.Row="2"
67-
mah:TextBoxHelper.Watermark="{x:Static localization:StaticStrings.ExamplePortScanRange}">
71+
mah:TextBoxHelper.Watermark="{x:Static localization:StaticStrings.ExamplePortScanRange}">
6872
<TextBox.Text>
6973
<Binding Path="Ports" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged">
7074
<Binding.ValidationRules>
@@ -77,17 +81,17 @@
7781
</Grid>
7882
<StackPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Right">
7983
<Button Content="{x:Static localization:Strings.Save}" Command="{Binding SaveCommand}" IsDefault="True"
80-
Margin="0,0,10,0">
84+
Margin="0,0,10,0">
8185
<Button.Style>
8286
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource HighlightedButton}">
8387
<Setter Property="IsEnabled" Value="False" />
8488
<Style.Triggers>
8589
<MultiDataTrigger>
8690
<MultiDataTrigger.Conditions>
8791
<Condition Binding="{Binding Path=(Validation.HasError), ElementName=TextBoxName}"
88-
Value="False" />
92+
Value="False" />
8993
<Condition Binding="{Binding Path=(Validation.HasError), ElementName=TextBoxPorts}"
90-
Value="False" />
94+
Value="False" />
9195
<Condition Binding="{Binding InfoChanged}" Value="True" />
9296
</MultiDataTrigger.Conditions>
9397
<MultiDataTrigger.Setters>
@@ -99,7 +103,7 @@
99103
</Button.Style>
100104
</Button>
101105
<Button Content="{x:Static localization:Strings.Cancel}" Command="{Binding CancelCommand}" IsCancel="True"
102-
Style="{StaticResource DefaultButton}" />
106+
Style="{StaticResource DefaultButton}" />
103107
</StackPanel>
104108
</Grid>
105-
</UserControl>
109+
</simpleChildWindow:ChildWindow>
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
using System;
2+
using System.Windows;
3+
using System.Windows.Threading;
4+
5+
namespace NETworkManager.Views;
6+
7+
public partial class PortProfileChildWindow
8+
{
9+
public PortProfileChildWindow()
10+
{
11+
InitializeComponent();
12+
}
13+
14+
private void ChildWindow_OnLoaded(object sender, RoutedEventArgs e)
15+
{
16+
Dispatcher.BeginInvoke(DispatcherPriority.ContextIdle, new Action(delegate
17+
{
18+
TextBoxName.Focus();
19+
}));
20+
}
21+
}

Source/NETworkManager/Views/PortProfileDialog.xaml.cs

Lines changed: 0 additions & 16 deletions
This file was deleted.

Source/NETworkManager/Views/PortScannerHostView.xaml.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using System.Windows;
22
using System.Windows.Controls;
33
using System.Windows.Input;
4-
using MahApps.Metro.Controls.Dialogs;
54
using NETworkManager.ViewModels;
65

76
namespace NETworkManager.Views;

Source/NETworkManager/Views/PortScannerSettingsView.xaml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,7 @@
77
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
88
xmlns:viewModels="clr-namespace:NETworkManager.ViewModels"
99
xmlns:network="clr-namespace:NETworkManager.Models.Network;assembly=NETworkManager.Models"
10-
xmlns:localization="clr-namespace:NETworkManager.Localization.Resources;assembly=NETworkManager.Localization"
11-
xmlns:dialogs="clr-namespace:MahApps.Metro.Controls.Dialogs;assembly=MahApps.Metro"
12-
dialogs:DialogParticipation.Register="{Binding}"
10+
xmlns:localization="clr-namespace:NETworkManager.Localization.Resources;assembly=NETworkManager.Localization"
1311
mc:Ignorable="d" d:DataContext="{d:DesignInstance viewModels:PortScannerSettingsViewModel}">
1412
<StackPanel>
1513
<TextBlock Text="{x:Static localization:Strings.PortScanner}" Style="{StaticResource HeaderTextBlock}" />

Source/NETworkManager/Views/PortScannerSettingsView.xaml.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
using System.Windows;
22
using System.Windows.Controls;
33
using System.Windows.Input;
4-
using MahApps.Metro.Controls.Dialogs;
54
using NETworkManager.ViewModels;
65

76
namespace NETworkManager.Views;
87

98
public partial class PortScannerSettingsView
109
{
11-
private readonly PortScannerSettingsViewModel _viewModel = new(DialogCoordinator.Instance);
10+
private readonly PortScannerSettingsViewModel _viewModel = new();
1211

1312
public PortScannerSettingsView()
1413
{

Source/NETworkManager/Views/SNMPHostView.xaml.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using System.Windows;
22
using System.Windows.Controls;
33
using System.Windows.Input;
4-
using MahApps.Metro.Controls.Dialogs;
54
using NETworkManager.ViewModels;
65

76
namespace NETworkManager.Views;

0 commit comments

Comments
 (0)