Skip to content

Commit e8e9234

Browse files
committed
AutoRefresh added, search improved
1 parent dea0398 commit e8e9234

6 files changed

Lines changed: 253 additions & 88 deletions

File tree

Source/NETworkManager/Models/Settings/SettingsInfo.cs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2191,6 +2191,36 @@ public AutoRefreshTimeInfo Listeners_AutoRefreshTime
21912191
}
21922192
#endregion
21932193

2194+
#region ARPTable
2195+
private bool _arpTable_AutoRefresh;
2196+
public bool ARPTable_AutoRefresh
2197+
{
2198+
get { return _arpTable_AutoRefresh; }
2199+
set
2200+
{
2201+
if (value == _arpTable_AutoRefresh)
2202+
return;
2203+
2204+
_arpTable_AutoRefresh = value;
2205+
SettingsChanged = true;
2206+
}
2207+
}
2208+
2209+
private AutoRefreshTimeInfo _arpTable_AutoRefreshTime = AutoRefreshTime.Defaults.First(x => (x.Value == 30 && x.TimeUnit == AutoRefreshTime.TimeUnit.Second));
2210+
public AutoRefreshTimeInfo ARPTable_AutoRefreshTime
2211+
{
2212+
get { return _arpTable_AutoRefreshTime; }
2213+
set
2214+
{
2215+
if (value == _arpTable_AutoRefreshTime)
2216+
return;
2217+
2218+
_arpTable_AutoRefreshTime = value;
2219+
SettingsChanged = true;
2220+
}
2221+
}
2222+
#endregion
2223+
21942224
#endregion
21952225

21962226
#region Constructor

Source/NETworkManager/ViewModels/ARPTableViewModel.cs

Lines changed: 99 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
using NETworkManager.Views;
1010
using NETworkManager.Utilities;
1111
using NETworkManager.Models.Settings;
12+
using System.Windows.Threading;
13+
using System.Linq;
1214

1315
namespace NETworkManager.ViewModels
1416
{
@@ -17,6 +19,9 @@ public class ARPTableViewModel : ViewModelBase
1719
#region Variables
1820
private IDialogCoordinator dialogCoordinator;
1921

22+
private bool _isLoading = true;
23+
private DispatcherTimer _autoRefreshTimer = new DispatcherTimer();
24+
2025
private string _search;
2126
public string Search
2227
{
@@ -68,6 +73,60 @@ public ARPTableInfo SelectedARPTableInfo
6873
}
6974
}
7075

76+
private bool _autoRefresh;
77+
public bool AutoRefresh
78+
{
79+
get { return _autoRefresh; }
80+
set
81+
{
82+
if (value == _autoRefresh)
83+
return;
84+
85+
if (!_isLoading)
86+
SettingsManager.Current.ARPTable_AutoRefresh = value;
87+
88+
_autoRefresh = value;
89+
90+
// Start timer to refresh automatically
91+
if (!_isLoading)
92+
{
93+
if (value)
94+
StartAutoRefreshTimer();
95+
else
96+
StopAutoRefreshTimer();
97+
}
98+
99+
OnPropertyChanged();
100+
}
101+
}
102+
103+
private ICollectionView _autoRefreshTimes;
104+
public ICollectionView AutoRefreshTimes
105+
{
106+
get { return _autoRefreshTimes; }
107+
}
108+
109+
private AutoRefreshTimeInfo _selectedAutoRefreshTime;
110+
public AutoRefreshTimeInfo SelectedAutoRefreshTime
111+
{
112+
get { return _selectedAutoRefreshTime; }
113+
set
114+
{
115+
if (value == _selectedAutoRefreshTime)
116+
return;
117+
118+
if (!_isLoading)
119+
SettingsManager.Current.ARPTable_AutoRefreshTime = value;
120+
121+
_selectedAutoRefreshTime = value;
122+
123+
if (AutoRefresh)
124+
ChangeAutoRefreshTimerInterval(AutoRefreshTime.CalculateTimeSpan(value));
125+
126+
OnPropertyChanged();
127+
}
128+
}
129+
71130
private bool _isRefreshing;
72131
public bool IsRefreshing
73132
{
@@ -128,10 +187,27 @@ public ARPTableViewModel(IDialogCoordinator instance)
128187
string filter = Search.Replace(" ", "").Replace("-", "").Replace(":", "");
129188

130189
// Search by IPAddress and MACAddress
131-
return info.IPAddress.ToString().IndexOf(filter, StringComparison.OrdinalIgnoreCase) > -1 || info.MACAddress.ToString().IndexOf(filter, StringComparison.OrdinalIgnoreCase) > -1;
190+
return info.IPAddress.ToString().IndexOf(filter, StringComparison.OrdinalIgnoreCase) > -1 || info.MACAddress.ToString().IndexOf(filter, StringComparison.OrdinalIgnoreCase) > -1 || (info.IsMulticast ? LocalizationManager.GetStringByKey("String_Yes") : LocalizationManager.GetStringByKey("String_No")).IndexOf(filter, StringComparison.OrdinalIgnoreCase) > -1;
132191
};
133192

193+
_autoRefreshTimes = CollectionViewSource.GetDefaultView(AutoRefreshTime.Defaults);
194+
SelectedAutoRefreshTime = AutoRefreshTimes.SourceCollection.Cast<AutoRefreshTimeInfo>().FirstOrDefault(x => (x.Value == SettingsManager.Current.ARPTable_AutoRefreshTime.Value && x.TimeUnit == SettingsManager.Current.ARPTable_AutoRefreshTime.TimeUnit));
195+
196+
_autoRefreshTimer.Tick += AutoRefreshTimer_Tick;
197+
198+
LoadSettings();
199+
200+
_isLoading = false;
201+
134202
Refresh();
203+
204+
if (AutoRefresh)
205+
StartAutoRefreshTimer();
206+
}
207+
208+
private void LoadSettings()
209+
{
210+
AutoRefresh = SettingsManager.Current.ARPTable_AutoRefresh;
135211
}
136212
#endregion
137213

@@ -288,6 +364,23 @@ private async void Refresh()
288364

289365
IsRefreshing = false;
290366
}
367+
368+
private void ChangeAutoRefreshTimerInterval(TimeSpan timeSpan)
369+
{
370+
_autoRefreshTimer.Interval = timeSpan;
371+
}
372+
373+
private void StartAutoRefreshTimer()
374+
{
375+
ChangeAutoRefreshTimerInterval(AutoRefreshTime.CalculateTimeSpan(SelectedAutoRefreshTime));
376+
377+
_autoRefreshTimer.Start();
378+
}
379+
380+
private void StopAutoRefreshTimer()
381+
{
382+
_autoRefreshTimer.Stop();
383+
}
291384
#endregion
292385

293386
#region Events
@@ -296,6 +389,11 @@ private void ArpTable_UserHasCanceled(object sender, EventArgs e)
296389
StatusMessage = LocalizationManager.GetStringByKey("String_CanceledByUser");
297390
DisplayStatusMessage = true;
298391
}
392+
393+
private void AutoRefreshTimer_Tick(object sender, EventArgs e)
394+
{
395+
Refresh();
396+
}
299397
#endregion
300398
}
301399
}

Source/NETworkManager/ViewModels/ConnectionsViewModel.cs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -290,12 +290,7 @@ private async void Refresh()
290290
(await Connection.GetActiveTcpConnectionsAsync()).ForEach(x => Connections.Add(x));
291291

292292
IsRefreshing = false;
293-
}
294-
295-
private void AutoRefreshTimer_Tick(object sender, EventArgs e)
296-
{
297-
Refresh();
298-
}
293+
}
299294

300295
private void ChangeAutoRefreshTimerInterval(TimeSpan timeSpan)
301296
{
@@ -314,5 +309,12 @@ private void StopAutoRefreshTimer()
314309
_autoRefreshTimer.Stop();
315310
}
316311
#endregion
312+
313+
#region Events
314+
private void AutoRefreshTimer_Tick(object sender, EventArgs e)
315+
{
316+
Refresh();
317+
}
318+
#endregion
317319
}
318320
}

0 commit comments

Comments
 (0)