Skip to content

Commit 161c695

Browse files
committed
Chore: Refactoring & Cleanup & Docs
1 parent 4b67d86 commit 161c695

File tree

5 files changed

+197
-301
lines changed

5 files changed

+197
-301
lines changed

Source/NETworkManager/ViewModels/IPScannerViewModel.cs

Lines changed: 27 additions & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929

3030
namespace NETworkManager.ViewModels;
3131

32-
public class IPScannerViewModel : ViewModelBase, IProfileManagerMinimal
32+
public class IPScannerViewModel : ViewModelApplicationBase, IProfileManagerMinimal
3333
{
3434
#region Variables
3535
private readonly IDialogCoordinator _dialogCoordinator;
@@ -39,8 +39,6 @@ public class IPScannerViewModel : ViewModelBase, IProfileManagerMinimal
3939
private readonly int _tabId;
4040
private bool _firstLoad = true;
4141

42-
private readonly bool _isLoading;
43-
4442
private string _hosts;
4543
public string Hosts
4644
{
@@ -72,16 +70,16 @@ public bool IsSubnetDetectionRunning
7270
}
7371

7472

75-
private bool _isScanRunning;
76-
public bool IsScanRunning
73+
private bool _isRunning;
74+
public bool IsRunning
7775
{
78-
get => _isScanRunning;
76+
get => _isRunning;
7977
set
8078
{
81-
if (value == _isScanRunning)
79+
if (value == _isRunning)
8280
return;
8381

84-
_isScanRunning = value;
82+
_isRunning = value;
8583
OnPropertyChanged();
8684
}
8785
}
@@ -106,7 +104,7 @@ public ObservableCollection<IPScannerHostInfo> Results
106104
get => _results;
107105
set
108106
{
109-
if (value != null && value == _results)
107+
if (Equals(value, _results))
110108
return;
111109

112110
_results = value;
@@ -143,12 +141,6 @@ public IList SelectedResults
143141
}
144142
}
145143

146-
public bool ResolveHostname => SettingsManager.Current.IPScanner_ResolveHostname;
147-
148-
public bool PortScanEnabled => SettingsManager.Current.IPScanner_PortScanEnabled;
149-
150-
public bool ResolveMACAddress => SettingsManager.Current.IPScanner_ResolveMACAddress;
151-
152144
private int _hostsToScan;
153145
public int HostsToScan
154146
{
@@ -209,7 +201,7 @@ public bool IsStatusMessageDisplayed
209201
public string StatusMessage
210202
{
211203
get => _statusMessage;
212-
set
204+
private set
213205
{
214206
if (value == _statusMessage)
215207
return;
@@ -219,14 +211,12 @@ public string StatusMessage
219211
}
220212
}
221213

222-
public IEnumerable<CustomCommandInfo> CustomCommands => SettingsManager.Current.IPScanner_CustomCommands;
214+
public static IEnumerable<CustomCommandInfo> CustomCommands => SettingsManager.Current.IPScanner_CustomCommands;
223215
#endregion
224216

225217
#region Constructor, load settings, shutdown
226218
public IPScannerViewModel(IDialogCoordinator instance, int tabId, string hostOrIPRange)
227219
{
228-
_isLoading = true;
229-
230220
_dialogCoordinator = instance;
231221

232222
_tabId = tabId;
@@ -240,11 +230,6 @@ public IPScannerViewModel(IDialogCoordinator instance, int tabId, string hostOrI
240230
ResultsView.SortDescriptions.Add(new SortDescription(nameof(IPScannerHostInfo.PingInfo) + "." + nameof(PingInfo.IPAddressInt32), ListSortDirection.Ascending));
241231

242232
LoadSettings();
243-
244-
// Detect if settings have changed...
245-
SettingsManager.Current.PropertyChanged += SettingsManager_PropertyChanged;
246-
247-
_isLoading = false;
248233
}
249234

250235
public void OnLoaded()
@@ -253,7 +238,7 @@ public void OnLoaded()
253238
return;
254239

255240
if (!string.IsNullOrEmpty(Hosts))
256-
StartScan();
241+
StartScan().ConfigureAwait(false);
257242

258243
_firstLoad = false;
259244
}
@@ -282,7 +267,7 @@ private void ScanAction()
282267

283268
private void DetectSubnetAction()
284269
{
285-
DetectIPRange();
270+
DetectIPRange().ConfigureAwait(false);
286271
}
287272

288273
public ICommand RedirectDataToApplicationCommand => new RelayCommand(RedirectDataToApplicationAction);
@@ -317,7 +302,7 @@ private void PerformDNSLookupHostnameAction()
317302

318303
private void CustomCommandAction(object guid)
319304
{
320-
CustomCommand(guid);
305+
CustomCommand(guid).ConfigureAwait(false);
321306
}
322307

323308
public ICommand AddProfileSelectedHostCommand => new RelayCommand(_ => AddProfileSelectedHostAction());
@@ -336,55 +321,6 @@ private async void AddProfileSelectedHostAction()
336321
await ProfileDialogManager.ShowAddProfileDialog(this, _dialogCoordinator, profileInfo);
337322
}
338323

339-
public ICommand CopySelectedStatusCommand => new RelayCommand(_ => CopySelectedStatusAction());
340-
341-
private void CopySelectedStatusAction()
342-
{
343-
ClipboardHelper.SetClipboard(SelectedResult.IsReachable.ToString());
344-
}
345-
346-
public ICommand CopySelectedIPAddressCommand => new RelayCommand(_ => CopySelectedIPAddressAction());
347-
348-
private void CopySelectedIPAddressAction()
349-
{
350-
ClipboardHelper.SetClipboard(SelectedResult.PingInfo.IPAddress.ToString());
351-
}
352-
353-
public ICommand CopySelectedHostnameCommand => new RelayCommand(_ => CopySelectedHostnameAction());
354-
355-
private void CopySelectedHostnameAction()
356-
{
357-
ClipboardHelper.SetClipboard(SelectedResult.Hostname);
358-
}
359-
360-
public ICommand CopySelectedPortStatusCommand => new RelayCommand(_ => CopySelectedPortStatusAction());
361-
362-
private void CopySelectedPortStatusAction()
363-
{
364-
ClipboardHelper.SetClipboard(ResourceTranslator.Translate(ResourceIdentifier.PortState, SelectedResult.IsAnyPortOpen ? PortState.Open : PortState.Closed));
365-
}
366-
367-
public ICommand CopySelectedPingStatusCommand => new RelayCommand(_ => CopySelectedPingStatusAction());
368-
369-
private void CopySelectedPingStatusAction()
370-
{
371-
ClipboardHelper.SetClipboard(ResourceTranslator.Translate(ResourceIdentifier.PortState, SelectedResult.PingInfo.Status));
372-
}
373-
374-
public ICommand CopySelectedMACAddressCommand => new RelayCommand(_ => CopySelectedMACAddressAction());
375-
376-
private void CopySelectedMACAddressAction()
377-
{
378-
ClipboardHelper.SetClipboard(MACAddressHelper.GetDefaultFormat(SelectedResult.MACAddress.ToString()));
379-
}
380-
381-
public ICommand CopySelectedVendorCommand => new RelayCommand(_ => CopySelectedVendorAction());
382-
383-
private void CopySelectedVendorAction()
384-
{
385-
ClipboardHelper.SetClipboard(SelectedResult.Vendor);
386-
}
387-
388324
public ICommand CopySelectedPortsCommand => new RelayCommand(_ => CopySelectedPortsAction());
389325

390326
private void CopySelectedPortsAction()
@@ -399,48 +335,27 @@ private void CopySelectedPortsAction()
399335
ClipboardHelper.SetClipboard(stringBuilder.ToString());
400336
}
401337

402-
public ICommand CopySelectedBytesCommand => new RelayCommand(_ => CopySelectedBytesAction());
403-
404-
private void CopySelectedBytesAction()
405-
{
406-
ClipboardHelper.SetClipboard(SelectedResult.PingInfo.Bytes.ToString());
407-
}
408-
409-
public ICommand CopySelectedTimeCommand => new RelayCommand(_ => CopySelectedTimeAction());
410-
411-
private void CopySelectedTimeAction()
412-
{
413-
ClipboardHelper.SetClipboard(SelectedResult.PingInfo.Time.ToString());
414-
}
415-
416-
public ICommand CopySelectedTTLCommand => new RelayCommand(_ => CopySelectedTTLAction());
417-
418-
private void CopySelectedTTLAction()
419-
{
420-
ClipboardHelper.SetClipboard(SelectedResult.PingInfo.TTL.ToString());
421-
}
422-
423338
public ICommand ExportCommand => new RelayCommand(_ => ExportAction());
424339

425340
private void ExportAction()
426341
{
427-
Export();
342+
Export().ConfigureAwait(false);
428343
}
429344
#endregion
430345

431346
#region Methods
432347
private void Scan()
433348
{
434-
if (IsScanRunning)
349+
if (IsRunning)
435350
StopScan();
436351
else
437-
StartScan();
352+
StartScan().ConfigureAwait(false);
438353
}
439354

440355
private async Task StartScan()
441356
{
442357
IsStatusMessageDisplayed = false;
443-
IsScanRunning = true;
358+
IsRunning = true;
444359
PreparingScan = true;
445360

446361
Results.Clear();
@@ -545,7 +460,7 @@ private async Task DetectIPRange()
545460

546461
Hosts = $"{localIP}/{Subnetmask.ConvertSubnetmaskToCidr(networkInterface.IPv4Address.First().Item2)}";
547462

548-
// Fix: If the user clears the textbox and then clicks again on the button, the textbox remains empty...
463+
// Fix: If the user clears the TextBox and then clicks again on the button, the TextBox remains empty...
549464
OnPropertyChanged(nameof(Hosts));
550465

551466
break;
@@ -633,7 +548,13 @@ private async Task Export()
633548

634549
SettingsManager.Current.IPScanner_ExportFileType = instance.FileType;
635550
SettingsManager.Current.IPScanner_ExportFilePath = instance.FilePath;
636-
}, instance => { _dialogCoordinator.HideMetroDialogAsync(this, customDialog); }, new[] { ExportFileType.Csv, ExportFileType.Xml, ExportFileType.Json }, true, SettingsManager.Current.IPScanner_ExportFileType, SettingsManager.Current.IPScanner_ExportFilePath);
551+
}, _ =>
552+
{
553+
_dialogCoordinator.HideMetroDialogAsync(this, customDialog);
554+
}, new[]
555+
{
556+
ExportFileType.Csv, ExportFileType.Xml, ExportFileType.Json
557+
}, true, SettingsManager.Current.IPScanner_ExportFileType, SettingsManager.Current.IPScanner_ExportFilePath);
637558

638559
customDialog.Content = new ExportDialog
639560
{
@@ -646,7 +567,7 @@ private async Task Export()
646567
public void OnClose()
647568
{
648569
// Stop scan
649-
if (IsScanRunning)
570+
if (IsRunning)
650571
StopScan();
651572
}
652573

@@ -664,7 +585,7 @@ private void HostFound(object sender, IPScannerHostScannedArgs e)
664585
private void ScanComplete(object sender, EventArgs e)
665586
{
666587
CancelScan = false;
667-
IsScanRunning = false;
588+
IsRunning = false;
668589
}
669590

670591
private void ProgressChanged(object sender, ProgressChangedArgs e)
@@ -678,29 +599,13 @@ private void DnsResolveFailed(AggregateException e)
678599
IsStatusMessageDisplayed = true;
679600

680601
CancelScan = false;
681-
IsScanRunning = false;
602+
IsRunning = false;
682603
}
683604

684605
private void UserHasCanceled(object sender, EventArgs e)
685606
{
686607
StatusMessage = Localization.Resources.Strings.CanceledByUserMessage;
687608
IsStatusMessageDisplayed = true;
688609
}
689-
690-
private void SettingsManager_PropertyChanged(object sender, PropertyChangedEventArgs e)
691-
{
692-
switch (e.PropertyName)
693-
{
694-
case nameof(SettingsInfo.IPScanner_ResolveHostname):
695-
OnPropertyChanged(nameof(ResolveHostname));
696-
break;
697-
case nameof(SettingsInfo.IPScanner_PortScanEnabled):
698-
OnPropertyChanged(nameof(PortScanEnabled));
699-
break;
700-
case nameof(SettingsInfo.IPScanner_ResolveMACAddress):
701-
OnPropertyChanged(nameof(ResolveMACAddress));
702-
break;
703-
}
704-
}
705610
#endregion
706611
}

0 commit comments

Comments
 (0)