Skip to content

Commit 5bb8338

Browse files
committed
Feature: HostsFileEditor ReadOnly
1 parent c72dbfe commit 5bb8338

File tree

3 files changed

+45
-53
lines changed

3 files changed

+45
-53
lines changed

Source/NETworkManager/ViewModels/HostsFileEditorViewModel.cs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
using System.Collections;
1212
using System.Collections.ObjectModel;
1313
using System.ComponentModel;
14-
using System.Diagnostics;
1514
using System.Linq;
1615
using System.Threading.Tasks;
1716
using System.Windows;
@@ -250,40 +249,44 @@ await _dialogCoordinator.ShowMessageAsync(this, Strings.Error,
250249

251250
private async Task EnableEntryAction()
252251
{
253-
Debug.WriteLine("Enable entry action: " + SelectedResult?.Line);
252+
MessageBox.Show("Enable entry action is not implemented yet.", "Enable Entry", MessageBoxButton.OK, MessageBoxImage.Information);
254253
}
255254

256255
public ICommand DisableEntryCommand => new RelayCommand(_ => DisableEntryAction().ConfigureAwait(false), ModifyEntry_CanExecute);
257256

258257
private async Task DisableEntryAction()
259258
{
260-
Debug.WriteLine("Disable entry action: " + SelectedResult?.Line);
259+
MessageBox.Show("Disable entry action is not implemented yet.", "Disable Entry", MessageBoxButton.OK, MessageBoxImage.Information);
261260
}
262261

263262
public ICommand AddEntryCommand => new RelayCommand(_ => AddEntryAction().ConfigureAwait(false), ModifyEntry_CanExecute);
264263

265264
private async Task AddEntryAction()
266265
{
267-
Debug.WriteLine("Adding entry...");
266+
MessageBox.Show("Add entry action is not implemented yet.", "Add Entry", MessageBoxButton.OK, MessageBoxImage.Information);
268267
}
269268

270269
public ICommand DeleteEntryCommand => new RelayCommand(_ => DeleteEntryAction().ConfigureAwait(false), ModifyEntry_CanExecute);
271270

272271
private async Task DeleteEntryAction()
273272
{
274-
Debug.WriteLine("Delete entry action: " + SelectedResult?.Line);
273+
MessageBox.Show("Delete entry action is not implemented yet.", "Delete Entry", MessageBoxButton.OK, MessageBoxImage.Information);
275274
}
276275

277276
public ICommand EditEntryCommand => new RelayCommand(_ => EditEntryAction().ConfigureAwait(false), ModifyEntry_CanExecute);
278277

279278
private async Task EditEntryAction()
280279
{
281-
Debug.WriteLine("Edit entry action: " + SelectedResult?.Line);
280+
MessageBox.Show("Edit entry action is not implemented yet.", "Edit Entry", MessageBoxButton.OK, MessageBoxImage.Information);
282281
}
283282

284283
private bool ModifyEntry_CanExecute(object obj)
285284
{
286-
return ConfigurationManager.Current.IsAdmin;
285+
return ConfigurationManager.Current.IsAdmin &&
286+
Application.Current.MainWindow != null &&
287+
!((MetroWindow)Application.Current.MainWindow).IsAnyDialogOpen &&
288+
!ConfigurationManager.Current.IsChildWindowOpen &&
289+
!IsRefreshing;
287290
}
288291

289292
public ICommand RestartAsAdminCommand => new RelayCommand(_ => RestartAsAdminAction().ConfigureAwait(false));

Source/NETworkManager/Views/ARPTableView.xaml

Lines changed: 2 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -220,34 +220,7 @@
220220
</WrapPanel>
221221
<WrapPanel Grid.Column="2" Grid.Row="0"
222222
Orientation="Horizontal" VerticalAlignment="Center"
223-
HorizontalAlignment="Right">
224-
<Button Command="{Binding DeleteEntryCommand}" Margin="0,0,10,0">
225-
<Button.Style>
226-
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource ImageWithTextButton}">
227-
<Setter Property="IsEnabled" Value="False" />
228-
<Style.Triggers>
229-
<DataTrigger
230-
Binding="{Binding SelectedItems.Count, ElementName=DataGridArpTable}"
231-
Value="1">
232-
<Setter Property="IsEnabled" Value="True" />
233-
</DataTrigger>
234-
</Style.Triggers>
235-
</Style>
236-
</Button.Style>
237-
<Grid>
238-
<Grid.ColumnDefinitions>
239-
<ColumnDefinition Width="Auto" />
240-
<ColumnDefinition Width="*" />
241-
</Grid.ColumnDefinitions>
242-
<Rectangle Style="{StaticResource ButtonWithImageRectangle}">
243-
<Rectangle.OpacityMask>
244-
<VisualBrush Stretch="Uniform" Visual="{iconPacks:Material Kind=Close}" />
245-
</Rectangle.OpacityMask>
246-
</Rectangle>
247-
<TextBlock Grid.Column="1" Text="{x:Static localization:Strings.DeleteEntry}"
248-
Style="{StaticResource ButtonWithImageTextBlock}" />
249-
</Grid>
250-
</Button>
223+
HorizontalAlignment="Right">
251224
<Button Command="{Binding AddEntryCommand}" Style="{StaticResource ImageWithTextButton}">
252225
<Grid>
253226
<Grid.ColumnDefinitions>
@@ -268,4 +241,4 @@
268241
</Grid>
269242
</TabItem>
270243
</TabControl>
271-
</UserControl>
244+
</UserControl>

Source/NETworkManager/Views/HostsFileEditorView.xaml

Lines changed: 33 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
SelectedItemsList="{Binding SelectedResults, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
4747
<controls:MultiSelectDataGrid.Resources>
4848
<ContextMenu x:Key="RowContextMenu" Opened="ContextMenu_Opened" MinWidth="150">
49-
<MenuItem Header="{x:Static Member=localization:Strings.Enable}"
49+
<MenuItem Header="{x:Static Member=localization:Strings.EnableEntry}"
5050
Command="{Binding Path=EnableEntryCommand}"
5151
Visibility="{Binding Path=SelectedResult.IsEnabled, Converter={StaticResource ResourceKey=BooleanReverseToVisibilityCollapsedConverter}}">
5252
<MenuItem.Icon>
@@ -59,7 +59,7 @@
5959
</Rectangle>
6060
</MenuItem.Icon>
6161
</MenuItem>
62-
<MenuItem Header="{x:Static Member=localization:Strings.Disable}"
62+
<MenuItem Header="{x:Static Member=localization:Strings.DisableEntry}"
6363
Command="{Binding Path=DisableEntryCommand}"
6464
Visibility="{Binding Path=SelectedResult.IsEnabled, Converter={StaticResource ResourceKey=BooleanToVisibilityCollapsedConverter}}">
6565
<MenuItem.Icon>
@@ -72,7 +72,7 @@
7272
</Rectangle>
7373
</MenuItem.Icon>
7474
</MenuItem>
75-
<MenuItem Header="{x:Static Member=localization:Strings.EditDots}"
75+
<MenuItem Header="{x:Static Member=localization:Strings.EditEntryDots}"
7676
Command="{Binding Path=EditEntryCommand}">
7777
<MenuItem.Icon>
7878
<Rectangle Width="16" Height="16"
@@ -83,7 +83,7 @@
8383
</Rectangle>
8484
</MenuItem.Icon>
8585
</MenuItem>
86-
<MenuItem Header="{x:Static Member=localization:Strings.Delete}"
86+
<MenuItem Header="{x:Static Member=localization:Strings.DeleteEntry}"
8787
Command="{Binding Path=DeleteEntryCommand}">
8888
<MenuItem.Icon>
8989
<Rectangle Width="16" Height="16"
@@ -94,8 +94,6 @@
9494
</Rectangle>
9595
</MenuItem.Icon>
9696
</MenuItem>
97-
98-
9997
<Separator />
10098
<MenuItem Header="{x:Static Member=localization:Strings.CopyDots}"
10199
Style="{StaticResource ResourceKey=CopyMenuItem}">
@@ -171,31 +169,49 @@
171169
SortMemberPath="Hostname"
172170
MinWidth="200" />
173171
</controls:MultiSelectDataGrid.Columns>
174-
</controls:MultiSelectDataGrid>
172+
</controls:MultiSelectDataGrid>
173+
175174
<Grid Grid.Column="0" Grid.Row="4">
176175
<Grid.ColumnDefinitions>
177-
<ColumnDefinition Width="Auto" />
178-
<ColumnDefinition Width="10" />
179176
<ColumnDefinition Width="*" />
180177
<ColumnDefinition Width="10" />
181178
<ColumnDefinition Width="Auto" />
182179
</Grid.ColumnDefinitions>
183180
<WrapPanel Grid.Column="0" Grid.Row="0"
184181
Orientation="Horizontal"
185-
VerticalAlignment="Center"
186-
HorizontalAlignment="Center">
182+
VerticalAlignment="Bottom"
183+
HorizontalAlignment="Left">
187184
<networkManager:LoadingIndicator IsActive="True"
188-
Style="{DynamicResource ResourceKey=LoadingIndicatorPulseStyle}"
189-
Visibility="{Binding Path=IsRefreshing, Converter={StaticResource ResourceKey=BooleanToVisibilityCollapsedConverter}}"
190-
Width="24" Height="24"
191-
SpeedRatio="1"
192-
Margin="0,0,10,0" />
185+
Style="{DynamicResource ResourceKey=LoadingIndicatorPulseStyle}"
186+
Visibility="{Binding Path=IsRefreshing, Converter={StaticResource ResourceKey=BooleanToVisibilityCollapsedConverter}}"
187+
Width="24" Height="24"
188+
SpeedRatio="1"
189+
Margin="0,0,10,0" />
193190
<TextBlock Style="{StaticResource ResourceKey=AccentTextBlock}"
194191
Visibility="{Binding Path=IsStatusMessageDisplayed, Converter={StaticResource ResourceKey=BooleanToVisibilityCollapsedConverter}}"
195192
Text="{Binding Path=StatusMessage}"
196193
VerticalAlignment="Center" />
197194
</WrapPanel>
198-
</Grid>
195+
<WrapPanel Grid.Column="2" Grid.Row="0"
196+
Orientation="Horizontal" VerticalAlignment="Center"
197+
HorizontalAlignment="Right">
198+
<Button Command="{Binding AddEntryCommand}" Style="{StaticResource ImageWithTextButton}">
199+
<Grid>
200+
<Grid.ColumnDefinitions>
201+
<ColumnDefinition Width="Auto" />
202+
<ColumnDefinition Width="*" />
203+
</Grid.ColumnDefinitions>
204+
<Rectangle Style="{StaticResource ButtonWithImageRectangle}">
205+
<Rectangle.OpacityMask>
206+
<VisualBrush Stretch="Uniform" Visual="{iconPacks:Material Kind=Plus}" />
207+
</Rectangle.OpacityMask>
208+
</Rectangle>
209+
<TextBlock Grid.Column="1" Text="{x:Static localization:Strings.AddEntryDots}"
210+
Style="{StaticResource ButtonWithImageTextBlock}" />
211+
</Grid>
212+
</Button>
213+
</WrapPanel>
214+
</Grid>
199215
<Grid Grid.Column="0" Grid.Row="5"
200216
Background="{DynamicResource MahApps.Brushes.Gray10}"
201217
Visibility="{Binding Source={x:Static settings:ConfigurationManager.Current}, Path=IsAdmin, Converter={StaticResource BooleanReverseToVisibilityCollapsedConverter}}"

0 commit comments

Comments
 (0)