Skip to content

Commit 74c896c

Browse files
committed
Feature: Update button design
1 parent d00ecad commit 74c896c

File tree

6 files changed

+126
-65
lines changed

6 files changed

+126
-65
lines changed

Source/NETworkManager.Localization/Resources/Strings.Designer.cs

Lines changed: 18 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Source/NETworkManager.Localization/Resources/Strings.resx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3962,4 +3962,10 @@ Right-click for more options.</value>
39623962
<data name="BrowsingDataErrorMessage" xml:space="preserve">
39633963
<value>An error occurred while deleting browsing data. Feel free to report this issue on GitHub.</value>
39643964
</data>
3965+
<data name="ExampleTag" xml:space="preserve">
3966+
<value>production</value>
3967+
</data>
3968+
<data name="AddTag" xml:space="preserve">
3969+
<value>Add tag</value>
3970+
</data>
39653971
</root>

Source/NETworkManager.Settings/GlobalStaticConfiguration.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
using NETworkManager.Models.RemoteDesktop;
99
using NETworkManager.Utilities;
1010
using System;
11-
using System.Collections.Generic;
1211
using System.IO;
1312
using System.Linq;
1413

@@ -143,7 +142,7 @@ public static class GlobalStaticConfiguration
143142

144143
// Application: DNS Lookup
145144
public static QueryClass DNSLookup_QueryClass => QueryClass.IN;
146-
public static QueryType DNSLookup_QueryType => QueryType.ANY;
145+
public static QueryType DNSLookup_QueryType => QueryType.ANY;
147146
public static bool DNSLookup_UseTCPOnly => false;
148147
public static int DNSLookup_Retries => 3;
149148
public static int DNSLookup_Timeout => 2;
@@ -207,9 +206,9 @@ public static class GlobalStaticConfiguration
207206
public static bool WebConsole_ShowAddressBar => true;
208207

209208
public static bool WebConsole_IsStatusBarEnabled = true;
210-
209+
211210
public static bool WebConsole_IsPasswordSaveEnabled = true;
212-
211+
213212
public static string WebConsole_Cache =>
214213
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
215214
AssemblyManager.Current.Name, "WebConsole_Cache");

Source/NETworkManager/ViewModels/ProfileViewModel.cs

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,4 @@
1-
using System;
2-
using System.Collections.Generic;
3-
using System.ComponentModel;
4-
using System.Linq;
5-
using System.Security;
6-
using System.Threading.Tasks;
7-
using System.Windows.Data;
8-
using System.Windows.Input;
9-
using NETworkManager.Localization.Resources;
1+
using NETworkManager.Localization.Resources;
102
using NETworkManager.Models;
113
using NETworkManager.Models.Network;
124
using NETworkManager.Models.PowerShell;
@@ -15,6 +7,14 @@
157
using NETworkManager.Profiles;
168
using NETworkManager.Settings;
179
using NETworkManager.Utilities;
10+
using System;
11+
using System.Collections.Generic;
12+
using System.ComponentModel;
13+
using System.Linq;
14+
using System.Security;
15+
using System.Threading.Tasks;
16+
using System.Windows.Data;
17+
using System.Windows.Input;
1818

1919
// ReSharper disable InconsistentNaming
2020

@@ -45,17 +45,17 @@ public ProfileViewModel(Action<ProfileViewModel> saveCommand, Action<ProfileView
4545
Host = profileInfo.Host;
4646

4747
Description = profileInfo.Description;
48-
48+
4949
// Try to get group (name) as parameter, then from profile, then the first in the list of groups, then the default group
5050
Group = group ?? (string.IsNullOrEmpty(profileInfo.Group)
5151
? groups.Count > 0 ? groups.OrderBy(x => x).First() : Strings.Default
5252
: profileInfo.Group);
53-
53+
5454
Groups = CollectionViewSource.GetDefaultView(groups);
5555
Groups.SortDescriptions.Add(new SortDescription());
5656

5757
Tags = profileInfo.Tags;
58-
58+
5959
// Network Interface
6060
NetworkInterface_Enabled = editMode == ProfileEditMode.Add
6161
? applicationName == ApplicationName.NetworkInterface
@@ -335,7 +335,7 @@ public ProfileViewModel(Action<ProfileViewModel> saveCommand, Action<ProfileView
335335
}
336336

337337
#endregion
338-
338+
339339
#region Methods
340340

341341
private void ChangeNetworkConnectionTypeSettings(NetworkConnectionType connectionSpeed)
@@ -454,7 +454,7 @@ public bool ShowCouldNotResolveHostnameWarning
454454
OnPropertyChanged();
455455
}
456456
}
457-
457+
458458
private string _description;
459459

460460
public string Description
@@ -3288,6 +3288,8 @@ private async Task ResolveHostActionAsync()
32883288
{
32893289
IsResolveHostnameRunning = true;
32903290

3291+
await Task.Delay(GlobalStaticConfiguration.ApplicationUIRefreshInterval);
3292+
32913293
var dnsResult =
32923294
await DNSClientHelper.ResolveAorAaaaAsync(Host, SettingsManager.Current.Network_ResolveHostnamePreferIPv4);
32933295

Source/NETworkManager/Views/ProfileChildWindow.xaml

Lines changed: 79 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1312,54 +1312,50 @@
13121312
</TextBox.Text>
13131313
</TextBox>
13141314
<TextBlock Grid.Column="0" Grid.Row="2" Text="{x:Static localization:Strings.Host}" />
1315-
<TextBox x:Name="TextBoxHost" Grid.Column="2" Grid.Row="2"
1316-
mah:TextBoxHelper.Watermark="{x:Static localization:StaticStrings.ExampleHostnameOrIPAddress}">
1317-
<TextBox.Text>
1318-
<Binding Path="Host" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged">
1319-
<Binding.ValidationRules>
1320-
<validators:EmptyValidator ValidatesOnTargetUpdated="True" />
1321-
<validators:IPAddressOrHostnameValidator
1322-
ValidatesOnTargetUpdated="True" />
1323-
</Binding.ValidationRules>
1324-
</Binding>
1325-
</TextBox.Text>
1326-
</TextBox>
1327-
<Button Grid.Column="3" Grid.Row="2" Command="{Binding ResolveHostCommand}"
1328-
ToolTip="{x:Static localization:Strings.ResolveIPAddressForThisHost}"
1329-
IsEnabled="{Binding Host, Converter={StaticResource StringIsNotNullOrEmptyOrIPv4AddressToBooleanConverter}}"
1330-
Margin="10,0,0,0">
1331-
<Button.Style>
1332-
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource CleanButton}">
1333-
<Style.Triggers>
1334-
<DataTrigger Binding="{Binding IsResolveHostnameRunning}" Value="True">
1335-
<Setter Property="Visibility" Value="Collapsed" />
1336-
</DataTrigger>
1337-
<DataTrigger Binding="{Binding ShowCouldNotResolveHostnameWarning}"
1338-
Value="True">
1339-
<Setter Property="Visibility" Value="Collapsed" />
1340-
</DataTrigger>
1341-
</Style.Triggers>
1342-
</Style>
1343-
</Button.Style>
1344-
<Rectangle Width="24" Height="24">
1345-
<Rectangle.OpacityMask>
1346-
<VisualBrush Stretch="Uniform" Visual="{iconPacks:Material Kind=SearchWeb}" />
1347-
</Rectangle.OpacityMask>
1348-
<Rectangle.Style>
1349-
<Style TargetType="{x:Type Rectangle}">
1350-
<Setter Property="Fill" Value="{DynamicResource MahApps.Brushes.Gray3}" />
1315+
<Grid Grid.Column="2" Grid.Row="2">
1316+
<Grid.ColumnDefinitions>
1317+
<ColumnDefinition Width="*" />
1318+
<ColumnDefinition Width="10" />
1319+
<ColumnDefinition Width="Auto" />
1320+
</Grid.ColumnDefinitions>
1321+
<TextBox x:Name="TextBoxHost" Grid.Column="0" Grid.Row="0"
1322+
mah:TextBoxHelper.Watermark="{x:Static localization:StaticStrings.ExampleHostnameOrIPAddress}">
1323+
<TextBox.Text>
1324+
<Binding Path="Host" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged">
1325+
<Binding.ValidationRules>
1326+
<validators:EmptyValidator ValidatesOnTargetUpdated="True" />
1327+
<validators:IPAddressOrHostnameValidator
1328+
ValidatesOnTargetUpdated="True" />
1329+
</Binding.ValidationRules>
1330+
</Binding>
1331+
</TextBox.Text>
1332+
</TextBox>
1333+
<Button Grid.Column="2" Grid.Row="0"
1334+
Command="{Binding ResolveHostCommand}"
1335+
ToolTip="{x:Static localization:Strings.ResolveIPAddressForThisHost}">
1336+
<Button.Resources>
1337+
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource ImageButton}">
1338+
<Setter Property="MinHeight" Value="0" />
1339+
<Setter Property="MinWidth" Value="0" />
1340+
<Setter Property="Width" Value="{Binding ElementName=TextBoxHost, Path=ActualHeight}" />
1341+
<Setter Property="Height" Value="{Binding ElementName=TextBoxHost, Path=ActualHeight}" />
13511342
<Style.Triggers>
1352-
<DataTrigger
1353-
Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Button}}, Path=IsMouseOver}"
1354-
Value="True">
1355-
<Setter Property="Fill"
1356-
Value="{DynamicResource MahApps.Brushes.Gray5}" />
1343+
<DataTrigger Binding="{Binding Host, Converter={StaticResource StringIsNotNullOrEmptyOrIPv4AddressToBooleanConverter}}" Value="False">
1344+
<Setter Property="IsEnabled" Value="False" />
1345+
</DataTrigger>
1346+
<DataTrigger Binding="{Binding IsResolveHostnameRunning}" Value="True">
1347+
<Setter Property="IsEnabled" Value="False" />
13571348
</DataTrigger>
13581349
</Style.Triggers>
13591350
</Style>
1360-
</Rectangle.Style>
1361-
</Rectangle>
1362-
</Button>
1351+
</Button.Resources>
1352+
<Rectangle Width="20" Height="20" Fill="{DynamicResource MahApps.Brushes.Gray3}">
1353+
<Rectangle.OpacityMask>
1354+
<VisualBrush Stretch="Uniform" Visual="{iconPacks:Material Kind=SearchWeb}" />
1355+
</Rectangle.OpacityMask>
1356+
</Rectangle>
1357+
</Button>
1358+
</Grid>
13631359
<mah:ProgressRing Grid.Column="3" Grid.Row="2" Width="24" Height="24" Margin="10,0,0,0"
13641360
Visibility="{Binding IsResolveHostnameRunning, Converter={StaticResource BooleanToVisibilityCollapsedConverter}}" />
13651361
<Rectangle Width="24" Height="24" Grid.Column="3" Grid.Row="2"
@@ -1396,9 +1392,45 @@
13961392
</ComboBox.Text>
13971393
</ComboBox>
13981394
<TextBlock Grid.Column="0" Grid.Row="8" Text="{x:Static Member=localization:Strings.Tags}" />
1399-
<TextBox Grid.Column="2" Grid.Row="8"
1400-
Text="{Binding Path=Tags, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
1401-
mah:TextBoxHelper.Watermark="{x:Static Member=localization:StaticStrings.ExampleTags}" />
1395+
<Grid Grid.Column="2" Grid.Row="8">
1396+
<Grid.ColumnDefinitions>
1397+
<ColumnDefinition Width="*" />
1398+
<ColumnDefinition Width="10" />
1399+
<ColumnDefinition Width="Auto" />
1400+
</Grid.ColumnDefinitions>
1401+
<TextBox Grid.Column="0" Grid.Row="0"
1402+
x:Name="TextBoxTag"
1403+
Text="{Binding Path=Tag, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
1404+
mah:TextBoxHelper.Watermark="{x:Static Member=localization:Strings.ExampleTag}" />
1405+
<Button Grid.Column="2" Grid.Row="0" Command="{Binding AddTagCommand}"
1406+
ToolTip="{x:Static localization:Strings.AddTag}">
1407+
<Button.Resources>
1408+
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource ImageButton}">
1409+
<Setter Property="MinHeight" Value="0" />
1410+
<Setter Property="MinWidth" Value="0" />
1411+
<Setter Property="Width" Value="{Binding ElementName=TextBoxTag, Path=ActualHeight}" />
1412+
<Setter Property="Height" Value="{Binding ElementName=TextBoxTag, Path=ActualHeight}" />
1413+
<Style.Triggers>
1414+
<MultiDataTrigger>
1415+
<MultiDataTrigger.Conditions>
1416+
<Condition
1417+
Binding="{Binding Path=(Validation.HasError), ElementName=TextBoxTag}"
1418+
Value="True" />
1419+
</MultiDataTrigger.Conditions>
1420+
<MultiDataTrigger.Setters>
1421+
<Setter Property="IsEnabled" Value="False" />
1422+
</MultiDataTrigger.Setters>
1423+
</MultiDataTrigger>
1424+
</Style.Triggers>
1425+
</Style>
1426+
</Button.Resources>
1427+
<Rectangle Width="20" Height="20" Fill="{DynamicResource MahApps.Brushes.Gray3}">
1428+
<Rectangle.OpacityMask>
1429+
<VisualBrush Stretch="Uniform" Visual="{iconPacks:Material Kind=Plus}" />
1430+
</Rectangle.OpacityMask>
1431+
</Rectangle>
1432+
</Button>
1433+
</Grid>
14021434
<Rectangle Width="24" Height="24" Grid.Column="3" Grid.Row="6"
14031435
ToolTip="{x:Static Member=localization:Strings.HelpMessage_Tags}"
14041436
Style="{StaticResource ResourceKey=HelpImageRectangle}" Margin="10,0,0,0">

Source/NETworkManager/Views/ServerConnectionInfoProfileDialog.xaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,10 @@
133133
ToolTip="{x:Static localization:Strings.AddServer}">
134134
<Button.Resources>
135135
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource ImageButton}">
136+
<Setter Property="MinHeight" Value="0" />
137+
<Setter Property="MinWidth" Value="0" />
138+
<Setter Property="Width" Value="{Binding ElementName=TextBoxPort, Path=ActualHeight}" />
139+
<Setter Property="Height" Value="{Binding ElementName=TextBoxPort, Path=ActualHeight}" />
136140
<Style.Triggers>
137141
<MultiDataTrigger>
138142
<MultiDataTrigger.Conditions>

0 commit comments

Comments
 (0)