Skip to content

Commit f409ca8

Browse files
committed
Code cleanup / improved
1 parent 90b1997 commit f409ca8

3 files changed

Lines changed: 36 additions & 59 deletions

File tree

Source/NETworkManager/MainWindow.xaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@
179179
</Rectangle.Style>
180180
</Rectangle>
181181
</Button>
182-
<TextBox x:Name="txtSearch" Grid.Column="0" BorderBrush="{DynamicResource GrayBrush8}" BorderThickness="1" FontSize="14" VerticalAlignment="Center" Text="{Binding Search, UpdateSourceTrigger=PropertyChanged}" mah:TextBoxHelper.Watermark="{DynamicResource String_Watermark_Search}" mah:TextBoxHelper.ButtonCommand="{Binding TextBoxSearchCommand}" Controls:TextBoxHelper.ClearTextButton="True">
182+
<TextBox x:Name="txtSearch" Grid.Column="0" BorderBrush="{DynamicResource GrayBrush8}" BorderThickness="1" FontSize="14" VerticalAlignment="Center" Text="{Binding Search, UpdateSourceTrigger=PropertyChanged}" mah:TextBoxHelper.Watermark="{DynamicResource String_Watermark_Search}" Controls:TextBoxHelper.ClearTextButton="True">
183183
<TextBox.Style>
184184
<Style BasedOn="{StaticResource SearchMetroTextBox}" TargetType="{x:Type TextBox}">
185185
<Setter Property="Visibility" Value="Hidden" />
@@ -306,7 +306,7 @@
306306
</Grid>
307307
</Border>
308308
<ScrollViewer Grid.Row="1" ManipulationBoundaryFeedback="ScrollViewer_ManipulationBoundaryFeedback" Style="{StaticResource FadeOutScrollViewer}">
309-
<ListView ItemsSource="{Binding ApplicationViewCollection}" SelectedItem="{Binding SelectedApplicationViewInfo, Mode=TwoWay}" SelectionMode="Single" BorderThickness="0">
309+
<ListView ItemsSource="{Binding Applications}" SelectedItem="{Binding SelectedApplication, Mode=TwoWay}" SelectionMode="Single" BorderThickness="0">
310310
<ListView.ItemTemplate>
311311
<DataTemplate>
312312
<Grid Height="48">

Source/NETworkManager/MainWindow.xaml.cs

Lines changed: 33 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -118,25 +118,25 @@ public bool IsMouseOverApplicationList
118118
}
119119
}
120120

121-
private CollectionViewSource _applicationViewCollectionSource;
122-
public ICollectionView ApplicationViewCollection
121+
private ICollectionView _applications;
122+
public ICollectionView Applications
123123
{
124-
get { return _applicationViewCollectionSource.View; }
124+
get { return _applications; }
125125
}
126126

127-
private ApplicationViewInfo _selectedApplicationViewInfo;
128-
public ApplicationViewInfo SelectedApplicationViewInfo
127+
private ApplicationViewInfo _selectedApplication;
128+
public ApplicationViewInfo SelectedApplication
129129
{
130-
get { return _selectedApplicationViewInfo; }
130+
get { return _selectedApplication; }
131131
set
132132
{
133-
if (value == _selectedApplicationViewInfo)
133+
if (value == _selectedApplication)
134134
return;
135135

136136
if (value != null)
137137
ChangeApplicationView(value.Name);
138138

139-
_selectedApplicationViewInfo = value;
139+
_selectedApplication = value;
140140
OnPropertyChanged();
141141
}
142142
}
@@ -155,13 +155,13 @@ public string Search
155155

156156
_search = value;
157157

158-
if (SelectedApplicationViewInfo != null)
159-
filterLastViewName = SelectedApplicationViewInfo.Name;
158+
if (SelectedApplication != null)
159+
filterLastViewName = SelectedApplication.Name;
160160

161-
ApplicationViewCollection.Refresh();
161+
Applications.Refresh();
162162

163-
IEnumerable<ApplicationViewInfo> sourceCollection = ApplicationViewCollection.SourceCollection.Cast<ApplicationViewInfo>();
164-
IEnumerable<ApplicationViewInfo> filteredCollection = ApplicationViewCollection.Cast<ApplicationViewInfo>();
163+
IEnumerable<ApplicationViewInfo> sourceCollection = Applications.SourceCollection.Cast<ApplicationViewInfo>();
164+
IEnumerable<ApplicationViewInfo> filteredCollection = Applications.Cast<ApplicationViewInfo>();
165165

166166
int sourceCollectionCount = sourceCollection.Count();
167167
int filteredCollectionCount = filteredCollection.Count();
@@ -170,9 +170,9 @@ public string Search
170170
filterLastCount = sourceCollectionCount;
171171

172172
if (filterLastCount > filteredCollectionCount)
173-
SelectedApplicationViewInfo = filteredCollection.FirstOrDefault();
173+
SelectedApplication = filteredCollection.FirstOrDefault();
174174
else
175-
SelectedApplicationViewInfo = sourceCollection.FirstOrDefault(x => x.Name == filterLastViewName);
175+
SelectedApplication = sourceCollection.FirstOrDefault(x => x.Name == filterLastViewName);
176176

177177
filterLastCount = filteredCollectionCount;
178178

@@ -269,15 +269,25 @@ public MainWindow()
269269

270270
private void LoadApplicationList()
271271
{
272-
_applicationViewCollectionSource = new CollectionViewSource()
272+
_applications = CollectionViewSource.GetDefaultView(ApplicationViewManager.List);
273+
_applications.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending)); // Always have the same order, even if it is translated
274+
_applications.Filter = o =>
273275
{
274-
Source = ApplicationViewManager.List
275-
};
276+
if (string.IsNullOrEmpty(Search))
277+
return true;
278+
279+
// Search for application name and description without "-" and " "
280+
ApplicationViewInfo info = o as ApplicationViewInfo;
281+
282+
Regex regex = new Regex(@" |-");
276283

277-
_applicationViewCollectionSource.Filter += ApplicationView_Search;
278-
_applicationViewCollectionSource.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending));
284+
string search = regex.Replace(Search, "");
285+
286+
// Search by TranslatedName and Name
287+
return (regex.Replace(info.TranslatedName, "").IndexOf(search, StringComparison.OrdinalIgnoreCase) >= 0) || (regex.Replace(info.Name.ToString(), "").IndexOf(search, StringComparison.OrdinalIgnoreCase) >= 0);
288+
};
279289

280-
SelectedApplicationViewInfo = ApplicationViewCollection.SourceCollection.Cast<ApplicationViewInfo>().FirstOrDefault(x => x.Name == SettingsManager.Current.Application_DefaultApplicationViewName);
290+
SelectedApplication = Applications.SourceCollection.Cast<ApplicationViewInfo>().FirstOrDefault(x => x.Name == SettingsManager.Current.Application_DefaultApplicationViewName);
281291
}
282292

283293
private async void MetroWindowMain_Closing(object sender, CancelEventArgs e)
@@ -418,27 +428,7 @@ private void ChangeApplicationView(ApplicationViewManager.Name name)
418428

419429
#endregion
420430

421-
#region ListView Search/Filter
422-
private void ApplicationView_Search(object sender, FilterEventArgs e)
423-
{
424-
if (string.IsNullOrEmpty(Search))
425-
{
426-
e.Accepted = true;
427-
return;
428-
}
429-
430-
// Search for application name and description without "-" and " "
431-
ApplicationViewInfo info = e.Item as ApplicationViewInfo;
432-
433-
Regex regex = new Regex(@" |-");
434-
435-
// Try to find the translated application view name first --> it's faster when the language ist different than english and equal when it's english
436-
if ((regex.Replace(info.TranslatedName, "").IndexOf(regex.Replace(Search, ""), StringComparison.OrdinalIgnoreCase) >= 0) || (regex.Replace(info.Name.ToString(), "").IndexOf(regex.Replace(Search, ""), StringComparison.OrdinalIgnoreCase) >= 0))
437-
e.Accepted = true;
438-
else
439-
e.Accepted = false;
440-
}
441-
431+
#region ListView Search/Filter
442432
private void ClearSearchFilterOnApplicationListMinimize()
443433
{
444434
if (ApplicationView_Expand)
@@ -643,7 +633,7 @@ private void OpenSettingsAction()
643633
}
644634

645635
// Change selected settings view
646-
_settingsView.SelectedApplicationName = _isInTray ? ApplicationViewManager.Name.None : SelectedApplicationViewInfo.Name;
636+
_settingsView.SelectedApplicationName = _isInTray ? ApplicationViewManager.Name.None : SelectedApplication.Name;
647637

648638
// Show the view (this will hide other content)
649639
ShowSettingsView = true;
@@ -761,19 +751,6 @@ private void RestartApplication(bool closeApplication = true)
761751
}
762752
}
763753

764-
public ICommand TextBoxSearchCommand
765-
{
766-
get { return new RelayCommand(p => TextBoxSearchAction()); }
767-
}
768-
769-
private void TextBoxSearchAction()
770-
{
771-
if (string.IsNullOrEmpty(Search))
772-
txtSearch.Focus();
773-
else
774-
Search = string.Empty;
775-
}
776-
777754
public ICommand ApplicationListMouseEnterCommand
778755
{
779756
get { return new RelayCommand(p => ApplicationListMouseEnterAction()); }

Source/NETworkManager/Views/Applications/RemoteDesktopView.xaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
<RowDefinition Height="10" />
6868
<RowDefinition Height="Auto" />
6969
</Grid.RowDefinitions>
70-
<TextBox x:Name="txtSearch" Grid.Column="0" BorderBrush="{DynamicResource GrayBrush8}" BorderThickness="1" FontSize="14" VerticalAlignment="Center" Text="{Binding Search, UpdateSourceTrigger=PropertyChanged}" mah:TextBoxHelper.Watermark="{DynamicResource String_Watermark_Search}" mah:TextBoxHelper.ButtonCommand="{Binding TextBoxSearchCommand}" Controls:TextBoxHelper.ClearTextButton="True">
70+
<TextBox x:Name="txtSearch" Grid.Column="0" BorderBrush="{DynamicResource GrayBrush8}" BorderThickness="1" FontSize="14" VerticalAlignment="Center" Text="{Binding Search, UpdateSourceTrigger=PropertyChanged}" mah:TextBoxHelper.Watermark="{DynamicResource String_Watermark_Search}" Controls:TextBoxHelper.ClearTextButton="True">
7171
<TextBox.Style>
7272
<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource SearchMetroTextBox}">
7373
<Style.Triggers>

0 commit comments

Comments
 (0)