Skip to content

Commit 2a9cb0d

Browse files
committed
Profile added
1 parent 43f5457 commit 2a9cb0d

File tree

9 files changed

+157
-26
lines changed

9 files changed

+157
-26
lines changed

Source/NETworkManager/Models/Settings/ProfileManager.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,10 @@ public static void AddProfile(ProfileViewModel instance)
160160
Ping_InheritHost = instance.Ping_InheritHost,
161161
Ping_Host = instance.Ping_InheritHost ? instance.Host?.Trim() : instance.Ping_Host?.Trim(),
162162

163+
PingMonitor_Enabled = instance.PingMonitor_Enabled,
164+
PingMonitor_InheritHost = instance.PingMonitor_InheritHost,
165+
PingMonitor_Host = instance.PingMonitor_InheritHost ? instance.Host?.Trim() : instance.PingMonitor_Host?.Trim(),
166+
163167
Traceroute_Enabled = instance.Traceroute_Enabled,
164168
Traceroute_InheritHost = instance.Traceroute_InheritHost,
165169
Traceroute_Host = instance.Traceroute_InheritHost ? instance.Host?.Trim() : instance.Traceroute_Host?.Trim(),

Source/NETworkManager/ProfileViewManager.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public static class ProfileViewManager
1616
new ProfileViewInfo(Name.IPScanner, ApplicationViewManager.GetIconByName(ApplicationViewManager.Name.IPScanner)),
1717
new ProfileViewInfo(Name.PortScanner,ApplicationViewManager.GetIconByName(ApplicationViewManager.Name.PortScanner)),
1818
new ProfileViewInfo(Name.Ping, ApplicationViewManager.GetIconByName(ApplicationViewManager.Name.Ping)),
19+
new ProfileViewInfo(Name.PingMonitor, ApplicationViewManager.GetIconByName(ApplicationViewManager.Name.PingMonitor)),
1920
new ProfileViewInfo(Name.Traceroute, ApplicationViewManager.GetIconByName(ApplicationViewManager.Name.Traceroute)),
2021
new ProfileViewInfo(Name.DNSLookup, ApplicationViewManager.GetIconByName(ApplicationViewManager.Name.DNSLookup)),
2122
new ProfileViewInfo(Name.RemoteDesktop, ApplicationViewManager.GetIconByName(ApplicationViewManager.Name.RemoteDesktop)),
@@ -41,6 +42,8 @@ public static string TranslateName(Name name)
4142
return Resources.Localization.Strings.PortScanner;
4243
case Name.Ping:
4344
return Resources.Localization.Strings.Ping;
45+
case Name.PingMonitor:
46+
return Resources.Localization.Strings.PingMonitor;
4447
case Name.Traceroute:
4548
return Resources.Localization.Strings.Traceroute;
4649
case Name.DNSLookup:
@@ -71,6 +74,7 @@ public enum Name
7174
IPScanner,
7275
PortScanner,
7376
Ping,
77+
PingMonitor,
7478
Traceroute,
7579
DNSLookup,
7680
RemoteDesktop,

Source/NETworkManager/ViewModels/PingMonitorHostViewModel.cs

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ public PingMonitorHostViewModel(int hostId, Action<int> closeCallback, PingMonit
241241
_pingMonitorOptions = options;
242242

243243
Host = options.Host;
244-
IPAddress = options.IPAddress;
244+
IPAddress = options.IPAddress;
245245
}
246246

247247
public void OnLoaded()
@@ -279,12 +279,12 @@ private void PingAction()
279279

280280
private void CloseAction()
281281
{
282-
_closeCallback(HostId);
282+
_closeCallback(HostId);
283283
}
284284
#endregion
285285

286286
#region Methods
287-
private async void StartPing()
287+
private void StartPing()
288288
{
289289
IsPingRunning = true;
290290

@@ -351,25 +351,11 @@ private void PingFinished()
351351
_stopwatch.Reset();
352352
}
353353

354-
private void AddHostToHistory(string host)
355-
{
356-
// Create the new list
357-
var list = ListHelper.Modify(SettingsManager.Current.Ping_HostHistory.ToList(), host, SettingsManager.Current.General_HistoryListEntries);
358-
359-
// Clear the old items
360-
SettingsManager.Current.Ping_HostHistory.Clear();
361-
OnPropertyChanged(nameof(Host)); // Raise property changed again, after the collection has been cleared
362-
363-
// Fill with the new items
364-
list.ForEach(x => SettingsManager.Current.Ping_HostHistory.Add(x));
365-
}
366-
367354
public void OnClose()
368355
{
369-
Debug.WriteLine("Closing...");
370356
// Stop the ping
371-
//if (IsPingRunning)
372-
// PingAction();
357+
if (IsPingRunning)
358+
StopPing();
373359
}
374360
#endregion
375361

Source/NETworkManager/ViewModels/PingMonitorViewModel.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,13 @@ private void AddHostAction()
242242
AddHostToHistory(Host);
243243
}
244244

245+
public ICommand AddHostProfileCommand => new RelayCommand(p => AddHostProfileAction());
246+
247+
private void AddHostProfileAction()
248+
{
249+
AddHost(SelectedProfile.PingMonitor_Host);
250+
}
251+
245252
public ICommand AddProfileCommand => new RelayCommand(p => AddProfileAction());
246253

247254
private void AddProfileAction()

Source/NETworkManager/ViewModels/ProfileViewModel.cs

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -442,6 +442,51 @@ public string Ping_Host
442442

443443
#endregion
444444

445+
#region Ping Monitor
446+
private bool _pingMonitor_Enabled;
447+
public bool PingMonitor_Enabled
448+
{
449+
get => _pingMonitor_Enabled;
450+
set
451+
{
452+
if (value == _pingMonitor_Enabled)
453+
return;
454+
455+
_pingMonitor_Enabled = value;
456+
457+
OnPropertyChanged();
458+
}
459+
}
460+
461+
private bool _pingMonitor_InheritHost;
462+
public bool PingMonitor_InheritHost
463+
{
464+
get => _pingMonitor_InheritHost;
465+
set
466+
{
467+
if (value == _pingMonitor_InheritHost)
468+
return;
469+
470+
_pingMonitor_InheritHost = value;
471+
OnPropertyChanged();
472+
}
473+
}
474+
475+
private string _pingMonitor_Host;
476+
public string PingMonitor_Host
477+
{
478+
get => _pingMonitor_Host;
479+
set
480+
{
481+
if (value == _pingMonitor_Host)
482+
return;
483+
484+
_pingMonitor_Host = value;
485+
OnPropertyChanged();
486+
}
487+
}
488+
#endregion
489+
445490
#region Traceroute
446491
private bool _traceroute_Enabled;
447492
public bool Traceroute_Enabled
@@ -1952,6 +1997,11 @@ public ProfileViewModel(Action<ProfileViewModel> saveCommand, Action<ProfileView
19521997
Ping_InheritHost = profileInfo.Ping_InheritHost;
19531998
Ping_Host = profileInfo.Ping_Host;
19541999

2000+
// Ping Monitor
2001+
PingMonitor_Enabled = profileInfo.PingMonitor_Enabled;
2002+
PingMonitor_InheritHost = profileInfo.PingMonitor_InheritHost;
2003+
PingMonitor_Host = profileInfo.PingMonitor_Host;
2004+
19552005
// Traceroute
19562006
Traceroute_Enabled = profileInfo.Traceroute_Enabled;
19572007
Traceroute_InheritHost = profileInfo.Traceroute_InheritHost;

Source/NETworkManager/Views/PingHostView.xaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@
112112
<TextBox x:Name="TextBoxSearch" Grid.Column="0" VerticalAlignment="Center" Text="{Binding Search, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource SearchTextBox}"/>
113113
<ListBox Grid.Row="2" ItemsSource="{Binding Profiles}" DisplayMemberPath="Name" SelectedItem="{Binding SelectedProfile}" Style="{StaticResource ProfileListBox}">
114114
<ListBox.Resources>
115-
<ContextMenu x:Key="ListBoxItemContextMenu" Opened="ContextMenu_Opened" MinWidth="150">
115+
<ContextMenu x:Key="ProfileContextMenu" Opened="ContextMenu_Opened" MinWidth="150">
116116
<MenuItem Header="{x:Static localization:Strings.Ping}" Command="{Binding PingProfileCommand}">
117117
<MenuItem.Icon>
118118
<Rectangle Width="16" Height="16" Fill="{DynamicResource BlackColorBrush}">
@@ -200,7 +200,7 @@
200200
</ListBox.GroupStyle>
201201
<ListBox.ItemContainerStyle>
202202
<Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource MetroListBoxItem}">
203-
<Setter Property="ContextMenu" Value="{StaticResource ListBoxItemContextMenu}" />
203+
<Setter Property="ContextMenu" Value="{StaticResource ProfileContextMenu}" />
204204
<EventSetter Event="MouseDoubleClick" Handler="ListBoxItem_MouseDoubleClick" />
205205
</Style>
206206
</ListBox.ItemContainerStyle>

Source/NETworkManager/Views/PingMonitorView.xaml

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -146,12 +146,12 @@
146146
<TextBox x:Name="TextBoxSearch" Grid.Column="0" VerticalAlignment="Center" Text="{Binding Search, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource SearchTextBox}" />
147147
<ListBox Grid.Column="0" Grid.Row="2" x:Name="ListBoxProfiles" ItemsSource="{Binding Profiles}" DisplayMemberPath="Name" SelectedItem="{Binding SelectedProfile}" Style="{StaticResource ProfileListBox}">
148148
<ListBox.Resources>
149-
<ContextMenu x:Key="ListBoxItemContextMenu" Opened="ContextMenu_Opened" MinWidth="150">
150-
<MenuItem Header="{x:Static localization:Strings.WakeUp}" Command="{Binding WakeUpProfileCommand}">
149+
<ContextMenu x:Key="ProfileContextMenu" Opened="ContextMenu_Opened" MinWidth="150">
150+
<MenuItem Header="{x:Static localization:Strings.Ping}" Command="{Binding AddHostProfileCommand}">
151151
<MenuItem.Icon>
152152
<Rectangle Width="16" Height="16" Fill="{DynamicResource BlackColorBrush}">
153153
<Rectangle.OpacityMask>
154-
<VisualBrush Stretch="Uniform" Visual="{iconPacks:Material Kind=Power}" />
154+
<VisualBrush Stretch="Uniform" Visual="{iconPacks:Material Kind=Play}" />
155155
</Rectangle.OpacityMask>
156156
</Rectangle>
157157
</MenuItem.Icon>
@@ -235,6 +235,12 @@
235235
</GroupStyle.ContainerStyle>
236236
</GroupStyle>
237237
</ListBox.GroupStyle>
238+
<ListBox.ItemContainerStyle>
239+
<Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource MetroListBoxItem}">
240+
<Setter Property="ContextMenu" Value="{StaticResource ProfileContextMenu}" />
241+
<EventSetter Event="MouseDoubleClick" Handler="ListBoxItem_MouseDoubleClick" />
242+
</Style>
243+
</ListBox.ItemContainerStyle>
238244
</ListBox>
239245
<Grid Grid.Row="2" VerticalAlignment="Center">
240246
<Grid.Style>

Source/NETworkManager/Views/PingMonitorView.xaml.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,13 @@ private void ContextMenu_Opened(object sender, RoutedEventArgs e)
2020
if (sender is ContextMenu menu)
2121
menu.DataContext = _viewModel;
2222
}
23-
23+
24+
private void ListBoxItem_MouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e)
25+
{
26+
if (e.ChangedButton == System.Windows.Input.MouseButton.Left)
27+
_viewModel.AddHostProfileCommand.Execute(null);
28+
}
29+
2430
public void OnViewHide()
2531
{
2632
_viewModel.OnViewHide();
@@ -29,6 +35,6 @@ public void OnViewHide()
2935
public void OnViewVisible()
3036
{
3137
_viewModel.OnViewVisible();
32-
}
38+
}
3339
}
3440
}

Source/NETworkManager/Views/ProfileDialog.xaml

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,9 @@
101101
<DataTrigger Binding="{Binding (networkManager:ProfileViewInfo.Name)}" Value="{x:Static networkManager:ProfileViewManager+Name.Ping}">
102102
<Setter Property="IsChecked" Value="{Binding DataContext.Ping_Enabled, UpdateSourceTrigger=PropertyChanged, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" />
103103
</DataTrigger>
104+
<DataTrigger Binding="{Binding (networkManager:ProfileViewInfo.Name)}" Value="{x:Static networkManager:ProfileViewManager+Name.PingMonitor}">
105+
<Setter Property="IsChecked" Value="{Binding DataContext.PingMonitor_Enabled, UpdateSourceTrigger=PropertyChanged, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" />
106+
</DataTrigger>
104107
<DataTrigger Binding="{Binding (networkManager:ProfileViewInfo.Name)}" Value="{x:Static networkManager:ProfileViewManager+Name.Traceroute}">
105108
<Setter Property="IsChecked" Value="{Binding DataContext.Traceroute_Enabled, UpdateSourceTrigger=PropertyChanged, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" />
106109
</DataTrigger>
@@ -561,6 +564,60 @@
561564
</StackPanel>
562565
</ScrollViewer>
563566
</TabItem>
567+
<TabItem Header="{x:Static localization:Strings.PingMonitor}">
568+
<ScrollViewer Style="{StaticResource DefaultScrollViewer}">
569+
<StackPanel>
570+
<StackPanel IsEnabled="{Binding PingMonitor_Enabled}">
571+
<Grid>
572+
<Grid.Resources>
573+
<Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource CenterTextBlock}" />
574+
<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource DefaultTextBox}" />
575+
</Grid.Resources>
576+
<Grid.RowDefinitions>
577+
<RowDefinition Height="Auto" />
578+
<RowDefinition Height="10" />
579+
<RowDefinition Height="Auto" />
580+
</Grid.RowDefinitions>
581+
<Grid.ColumnDefinitions>
582+
<ColumnDefinition Width="1*" />
583+
<ColumnDefinition Width="10" />
584+
<ColumnDefinition Width="1*" />
585+
<ColumnDefinition Width="34" />
586+
</Grid.ColumnDefinitions>
587+
<TextBlock Grid.Column="0" Grid.Row="0" Text="{x:Static localization:Strings.InheritHostFromDefault}" />
588+
<mah:ToggleSwitch Grid.Column="2" Grid.Row="0" OnLabel="" OffLabel="" IsChecked="{Binding PingMonitor_InheritHost}" />
589+
<TextBlock Grid.Column="0" Grid.Row="2" Text="{x:Static localization:Strings.Host}" />
590+
<TextBox x:Name="TextBoxPingMonitorHost" Grid.Column="2" Grid.Row="2" IsEnabled="{Binding PingMonitor_InheritHost, Converter={StaticResource BooleanReverseConverter}}" mah:TextBoxHelper.Watermark="{x:Static localization:StaticStrings.ExampleHostname}">
591+
<TextBox.Style>
592+
<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource DefaultTextBox}">
593+
<Style.Triggers>
594+
<DataTrigger Binding="{Binding PingMonitor_InheritHost}" Value="True">
595+
<Setter Property="TextBox.Text">
596+
<Setter.Value>
597+
<Binding Path="Host" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" />
598+
</Setter.Value>
599+
</Setter>
600+
</DataTrigger>
601+
<DataTrigger Binding="{Binding PingMonitor_InheritHost}" Value="False">
602+
<Setter Property="TextBox.Text">
603+
<Setter.Value>
604+
<Binding Path="PingMonitor_Host" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged">
605+
<Binding.ValidationRules>
606+
<validators:EmptyValidator ValidatesOnTargetUpdated="True" />
607+
</Binding.ValidationRules>
608+
</Binding>
609+
</Setter.Value>
610+
</Setter>
611+
</DataTrigger>
612+
</Style.Triggers>
613+
</Style>
614+
</TextBox.Style>
615+
</TextBox>
616+
</Grid>
617+
</StackPanel>
618+
</StackPanel>
619+
</ScrollViewer>
620+
</TabItem>
564621
<TabItem Header="{x:Static localization:Strings.Traceroute}">
565622
<ScrollViewer Style="{StaticResource DefaultScrollViewer}">
566623
<StackPanel>
@@ -1475,6 +1532,17 @@
14751532
<Setter Property="IsEnabled" Value="False" />
14761533
</MultiDataTrigger.Setters>
14771534
</MultiDataTrigger>
1535+
<!-- Ping Monitor -->
1536+
<MultiDataTrigger>
1537+
<MultiDataTrigger.Conditions>
1538+
<Condition Binding="{Binding PingMonitor_Enabled}" Value="True"/>
1539+
<Condition Binding="{Binding PingMonitor_InheritHost}" Value="False"/>
1540+
<Condition Binding="{Binding ElementName=TextBoxPingMonitorHost, Path=(Validation.HasError)}" Value="True" />
1541+
</MultiDataTrigger.Conditions>
1542+
<MultiDataTrigger.Setters>
1543+
<Setter Property="IsEnabled" Value="False" />
1544+
</MultiDataTrigger.Setters>
1545+
</MultiDataTrigger>
14781546
<!-- Traceroute -->
14791547
<MultiDataTrigger>
14801548
<MultiDataTrigger.Conditions>

0 commit comments

Comments
 (0)