Browse Source

Add dynamic hamburger width

pull/17/head
oZ-Zo 5 years ago
parent
commit
5e0804b43c
  1. 11
      W10SS_GUI/Classes/AppCulture.cs
  2. 60
      W10SS_GUI/Classes/Gui.cs
  3. 23
      W10SS_GUI/Classes/Tags.cs
  4. 32
      W10SS_GUI/Localized/EN.xaml
  5. 24
      W10SS_GUI/Localized/RU.xaml
  6. 50
      W10SS_GUI/MainWindow.xaml
  7. 54
      W10SS_GUI/MainWindow.xaml.cs
  8. 2
      W10SS_GUI/Resource/animations.xaml
  9. 7
      W10SS_GUI/Resource/controlsSize.xaml
  10. 2
      W10SS_GUI/W10SS_GUI.csproj

11
W10SS_GUI/Classes/AppCulture.cs

@ -19,13 +19,10 @@ namespace W10SS_GUI
private string _culture = Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName == Culture.RU ? Culture.RU : Culture.EN;
private ResourceDictionary resourceDictionaryEn = new ResourceDictionary() { Source = new Uri("pack://application:,,,/Localized/EN.xaml", UriKind.Absolute) };
private ResourceDictionary resourceDictionaryRu = new ResourceDictionary() { Source = new Uri("pack://application:,,,/Localized/RU.xaml", UriKind.Absolute) };
internal ResourceDictionary CurrentCulture
{
get
{
return _culture == Culture.RU ? resourceDictionaryRu : resourceDictionaryEn;
}
}
internal ResourceDictionary CurrentCulture => _culture == Culture.RU ? resourceDictionaryRu : resourceDictionaryEn;
internal string CurrentCultureName => _culture == Culture.RU ? Culture.RU : Culture.EN;
internal ResourceDictionary ChangeCulture()
{

60
W10SS_GUI/Classes/Gui.cs

@ -0,0 +1,60 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media.Animation;
using W10SS_GUI.Controls;
using W10SS_GUI.Properties;
namespace W10SS_GUI.Classes
{
internal class Gui
{
private Dictionary<string, StackPanel> _togglesCategoryPanels = new Dictionary<string, StackPanel>();
private MainWindow MainWindow = Application.Current.MainWindow as MainWindow;
private HamburgerCategoryButton _lastclickedbutton;
internal string LastClickedButtonName
{
get
{
return _lastclickedbutton.Name as string;
}
}
internal Gui()
{
InitializeVariables();
}
internal void InitializeVariables()
{
foreach (var tagValue in Application.Current.Resources.MergedDictionaries.Where(r => r.Source.Segments[2] == "tags.xaml").FirstOrDefault().Values)
{
_togglesCategoryPanels.Add(tagValue.ToString(), MainWindow.panelTogglesCategoryContainer.Children.OfType<StackPanel>().Where(p => p.Tag == tagValue).FirstOrDefault());
}
}
internal void SetActivePanel(HamburgerCategoryButton button)
{
_lastclickedbutton = button;
foreach (KeyValuePair<string, StackPanel> kvp in _togglesCategoryPanels)
{
kvp.Value.Visibility = kvp.Key == button.Tag as string ? Visibility.Visible : Visibility.Collapsed;
}
MainWindow.textTogglesHeader.Text = MainWindow.Resources[button.Name] as string;
}
internal void SetHamburgerWidth(string cultureName)
{
Storyboard storyboard = MainWindow.TryFindResource("animationHamburgerOpen") as Storyboard;
DoubleAnimation animation = storyboard.Children[0] as DoubleAnimation;
animation.To = cultureName == "ru"
? Convert.ToDouble(MainWindow.TryFindResource("panelHamburgerRuMaxWidth"))
: Convert.ToDouble(MainWindow.TryFindResource("panelHamburgerEnMaxWidth"));
}
}
}

23
W10SS_GUI/Classes/Tags.cs

@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
namespace W10SS_GUI
{
internal static class Tags
{
internal static readonly string Privacy = string.Format("{0}", Application.Current.Resources["tagCategoryPrivacy"]);
internal static readonly string Ui = string.Format("{0}", Application.Current.Resources["tagCategoryUi"]);
internal static readonly string OneDrive = string.Format("{0}", Application.Current.Resources["tagCategoryOneDrive"]);
internal static readonly string System = string.Format("{0}", Application.Current.Resources["tagCategorySystem"]);
internal static readonly string StartMenu = string.Format("{0}", Application.Current.Resources["tagCategoryStartMenu"]);
internal static readonly string Uwp = string.Format("{0}", Application.Current.Resources["tagCategoryUwp"]);
internal static readonly string WinGame = string.Format("{0}", Application.Current.Resources["tagCategoryWinGame"]);
internal static readonly string TaskScheduler = string.Format("{0}", Application.Current.Resources["tagCategoryTaskScheduler"]);
internal static readonly string Defender = string.Format("{0}", Application.Current.Resources["tagCategoryDefender"]);
internal static readonly string ContextMenu = string.Format("{0}", Application.Current.Resources["tagCategoryContextMenu"]);
}
}

32
W10SS_GUI/Localized/EN.xaml

@ -2,22 +2,22 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:system="clr-namespace:System;assembly=mscorlib">
<system:String x:Key="textWindowTitle">Windows 10 Setup Script</system:String>
<system:String x:Key="textHamburgerPrivacy">Privacy &amp; Telemetry</system:String>
<system:String x:Key="textHamburgerUi">UI &amp; Personalization</system:String>
<system:String x:Key="textHamburgerOneDrive">OneDrive</system:String>
<system:String x:Key="textHamburgerSystem">System</system:String>
<system:String x:Key="textHamburgerStartMenu">Start Menu</system:String>
<system:String x:Key="textHamburgerUwp">UWP Apps</system:String>
<system:String x:Key="textHamburgerWinGame">Game Mode</system:String>
<system:String x:Key="textHamburgerTaskScheduler">Task Scheduler</system:String>
<system:String x:Key="textHamburgerDefender">Microsoft Defender</system:String>
<system:String x:Key="textHamburgerContextMenu">Context Menu</system:String>
<system:String x:Key="textHamburgerApply">Apply Settings</system:String>
<system:String x:Key="textHamburgerSave">Save Settings</system:String>
<system:String x:Key="textHamburgerLoad">Import Settings</system:String>
<system:String x:Key="textHamburgerLanguage">Русский</system:String>
<system:String x:Key="textHamburgerOpenGithub">GitHub</system:String>
<system:String x:Key="HamburgerPrivacy">Privacy &amp; Telemetry</system:String>
<system:String x:Key="HamburgerUi">UI &amp; Personalization</system:String>
<system:String x:Key="HamburgerOneDrive">OneDrive</system:String>
<system:String x:Key="HamburgerSystem">System</system:String>
<system:String x:Key="HamburgerStartMenu">Start Menu</system:String>
<system:String x:Key="HamburgerUwp">UWP Apps</system:String>
<system:String x:Key="HamburgerWinGame">Game Mode</system:String>
<system:String x:Key="HamburgerTaskScheduler">Task Scheduler</system:String>
<system:String x:Key="HamburgerDefender">Microsoft Defender</system:String>
<system:String x:Key="HamburgerContextMenu">Context Menu</system:String>
<system:String x:Key="textHamburgerApply">Apply</system:String>
<system:String x:Key="textHamburgerSave">Save</system:String>
<system:String x:Key="textHamburgerLoad">Import</system:String>
<system:String x:Key="textHamburgerLanguage">Русский</system:String>
<system:String x:Key="textHamburgerOpenGithub">GitHub</system:String>
</ResourceDictionary>

24
W10SS_GUI/Localized/RU.xaml

@ -3,22 +3,22 @@
xmlns:local="clr-namespace:W10SS_GUI.Localized"
xmlns:system="clr-namespace:System;assembly=mscorlib">
<system:String x:Key="textWindowTitle">Windows 10 Setup Script</system:String>
<system:String x:Key="textHamburgerPrivacy">Телеметрия</system:String>
<system:String x:Key="textHamburgerUi">Персонализация</system:String>
<system:String x:Key="textHamburgerOneDrive">OneDrive</system:String>
<system:String x:Key="textHamburgerSystem">Система</system:String>
<system:String x:Key="textHamburgerStartMenu">Меню "Пуск"</system:String>
<system:String x:Key="textHamburgerUwp">UWP Приложения</system:String>
<system:String x:Key="textHamburgerWinGame">Игровой режим</system:String>
<system:String x:Key="textHamburgerTaskScheduler">Планировщик</system:String>
<system:String x:Key="textHamburgerDefender">Microsoft Defender</system:String>
<system:String x:Key="textHamburgerContextMenu">Контекстное меню</system:String>
<system:String x:Key="HamburgerPrivacy">Безопасность и телеметрия</system:String>
<system:String x:Key="HamburgerUi">UI &amp; персонализация</system:String>
<system:String x:Key="HamburgerOneDrive">OneDrive</system:String>
<system:String x:Key="HamburgerSystem">Система</system:String>
<system:String x:Key="HamburgerStartMenu">Меню "Пуск"</system:String>
<system:String x:Key="HamburgerUwp">UWP-приложения</system:String>
<system:String x:Key="HamburgerWinGame">Игровой режим</system:String>
<system:String x:Key="HamburgerTaskScheduler">Планировщик задач</system:String>
<system:String x:Key="HamburgerDefender">Microsoft Defender</system:String>
<system:String x:Key="HamburgerContextMenu">Контекстное меню</system:String>
<system:String x:Key="textHamburgerApply">Применить</system:String>
<system:String x:Key="textHamburgerSave">Сохранить</system:String>
<system:String x:Key="textHamburgerLoad">Импортировать</system:String>
<system:String x:Key="textHamburgerLanguage">English</system:String>
<system:String x:Key="textHamburgerOpenGithub">GitHub</system:String>
<system:String x:Key="textHamburgerOpenGithub">GitHub</system:String>
</ResourceDictionary>

50
W10SS_GUI/MainWindow.xaml

@ -20,7 +20,7 @@
ShowInTaskbar="True"
Background="{DynamicResource colorWindowBackground}"
Foreground="{DynamicResource colorWindowForeground}"
SizeToContent="Manual">
SizeToContent="Manual" Initialized="Window_Initialized">
<Window.Style>
<Style TargetType="{x:Type Window}">
<Setter Property="TextOptions.TextFormattingMode" Value="Display"/>
@ -34,7 +34,7 @@
<Canvas Name="panelHamburger"
MinWidth="{StaticResource panelHamburgerMinWidth}"
Width="{StaticResource panelHamburgerMinWidth}"
MaxWidth="{StaticResource panelHamburgerMaxWidth}"
MaxWidth="{DynamicResource panelHamburgerMaxWidth}"
Background="{DynamicResource colorButtonHamburgerBackground}"
HorizontalAlignment="Left"
Panel.ZIndex="10">
@ -50,9 +50,9 @@
</EventTrigger>
</Canvas.Triggers>
<uc:HamburgerCategoryButton x:Name="buttonHamburgerPrivacy"
<uc:HamburgerCategoryButton x:Name="HamburgerPrivacy"
Icon="{StaticResource iconHamburgerPrivacy}"
Text="{DynamicResource textHamburgerPrivacy}"
Text="{DynamicResource HamburgerPrivacy}"
Width="{Binding ElementName=panelHamburger, Path=Width}"
TextMargin="0 0 10 3"
Tag="{StaticResource tagCategoryPrivacy}"
@ -60,9 +60,9 @@
Canvas.Top="0" Canvas.Left="0"
MouseLeftButtonDown="ButtonHamburger_Click"/>
<uc:HamburgerCategoryButton x:Name="buttonHamburgerUi"
<uc:HamburgerCategoryButton x:Name="HamburgerUi"
Icon="{StaticResource iconHamburgerUi}"
Text="{DynamicResource textHamburgerUi}"
Text="{DynamicResource HamburgerUi}"
Width="{Binding ElementName=panelHamburger, Path=Width}"
TextMargin="0 0 10 -2"
Tag="{StaticResource tagCategoryUi}"
@ -70,19 +70,19 @@
Canvas.Top="40" Canvas.Left="0"
MouseLeftButtonDown="ButtonHamburger_Click"/>
<uc:HamburgerCategoryButton x:Name="buttonHamburgerOneDrive"
<uc:HamburgerCategoryButton x:Name="HamburgerOneDrive"
IconVisibility="Collapsed"
ViewboxPathData="{StaticResource iconHamburgerOneDrive}"
Text="{DynamicResource textHamburgerOneDrive}"
Text="{DynamicResource HamburgerOneDrive}"
Width="{Binding ElementName=panelHamburger, Path=Width}"
TextMargin="0 0 10 3"
Tag="{StaticResource tagCategoryOneDrive}"
Canvas.Top="80" Canvas.Left="0"
MouseLeftButtonDown="ButtonHamburger_Click"/>
<uc:HamburgerCategoryButton x:Name="buttonHamburgerSystem"
<uc:HamburgerCategoryButton x:Name="HamburgerSystem"
Icon="{StaticResource iconHamburgerSystem}"
Text="{DynamicResource textHamburgerSystem}"
Text="{DynamicResource HamburgerSystem}"
Width="{Binding ElementName=panelHamburger, Path=Width}"
TextMargin="0 0 10 1"
Tag="{StaticResource tagCategorySystem}"
@ -90,9 +90,9 @@
Canvas.Top="120" Canvas.Left="0"
MouseLeftButtonDown="ButtonHamburger_Click"/>
<uc:HamburgerCategoryButton x:Name="buttonHamburgerStartMenu"
<uc:HamburgerCategoryButton x:Name="HamburgerStartMenu"
Icon="{StaticResource iconHamburgerStartMenu}"
Text="{DynamicResource textHamburgerStartMenu}"
Text="{DynamicResource HamburgerStartMenu}"
Width="{Binding ElementName=panelHamburger, Path=Width}"
TextMargin="0 0 10 5"
Tag="{StaticResource tagCategoryStartMenu}"
@ -100,9 +100,9 @@
Canvas.Top="160" Canvas.Left="0"
MouseLeftButtonDown="ButtonHamburger_Click"/>
<uc:HamburgerCategoryButton x:Name="buttonHamburgerUwp"
<uc:HamburgerCategoryButton x:Name="HamburgerUwp"
Icon="{StaticResource iconHamburgerUwp}"
Text="{DynamicResource textHamburgerUwp}"
Text="{DynamicResource HamburgerUwp}"
Width="{Binding ElementName=panelHamburger, Path=Width}"
TextMargin="0 0 10 1"
Tag="{StaticResource tagCategoryUwp}"
@ -110,29 +110,29 @@
Canvas.Top="200" Canvas.Left="0"
MouseLeftButtonDown="ButtonHamburger_Click"/>
<uc:HamburgerCategoryButton x:Name="buttonHamburgerWinGame"
<uc:HamburgerCategoryButton x:Name="HamburgerWinGame"
IconVisibility="Collapsed"
ViewboxPathData="{StaticResource iconHamburgerWinGame}"
Text="{DynamicResource textHamburgerWinGame}"
Text="{DynamicResource HamburgerWinGame}"
Width="{Binding ElementName=panelHamburger, Path=Width}"
TextMargin="0 0 10 4"
Tag="{StaticResource tagCategoryWinGame}"
Canvas.Top="240" Canvas.Left="0"
MouseLeftButtonDown="ButtonHamburger_Click"/>
<uc:HamburgerCategoryButton x:Name="buttonHamburgerTaskScheduler"
<uc:HamburgerCategoryButton x:Name="HamburgerTaskScheduler"
IconVisibility="Collapsed"
ViewboxPathData="{StaticResource iconHamburgerTaskScheduler}"
Text="{DynamicResource textHamburgerTaskScheduler}"
Text="{DynamicResource HamburgerTaskScheduler}"
Width="{Binding ElementName=panelHamburger, Path=Width}"
TextMargin="0 0 10 2"
Tag="{StaticResource tagCategoryTaskScheduler}"
Canvas.Top="280" Canvas.Left="0"
MouseLeftButtonDown="ButtonHamburger_Click"/>
<uc:HamburgerCategoryButton x:Name="buttonHamburgerDefender"
<uc:HamburgerCategoryButton x:Name="HamburgerDefender"
Icon="{StaticResource iconHamburgerDefender}"
Text="{DynamicResource textHamburgerDefender}"
Text="{DynamicResource HamburgerDefender}"
Width="{Binding ElementName=panelHamburger, Path=Width}"
TextMargin="0 0 10 4"
Tag="{StaticResource tagCategoryDefender}"
@ -140,9 +140,9 @@
Canvas.Top="320" Canvas.Left="0"
MouseLeftButtonDown="ButtonHamburger_Click"/>
<uc:HamburgerCategoryButton x:Name="buttonHamburgerContextMenu"
<uc:HamburgerCategoryButton x:Name="HamburgerContextMenu"
Icon="{StaticResource iconHamburgerContextMenu}"
Text="{DynamicResource textHamburgerContextMenu}"
Text="{DynamicResource HamburgerContextMenu}"
Width="{Binding ElementName=panelHamburger, Path=Width}"
TextMargin="0 0 10 3"
Tag="{StaticResource tagCategoryContextMenu}"
@ -150,7 +150,7 @@
Canvas.Top="360" Canvas.Left="0"
MouseLeftButtonDown="ButtonHamburger_Click"/>
<uc:HamburgerCategoryFlashButton x:Name="buttonHamburgerApplySettings"
<uc:HamburgerCategoryFlashButton x:Name="HamburgerApplySettings"
IsEnabled="False"
IconVisibility="Collapsed"
ViewboxPathData="{StaticResource iconHamburgerApplySettings}"
@ -159,7 +159,7 @@
TextMargin="0 0 10 1"
Canvas.Bottom="0" Canvas.Left="0"/>
<uc:HamburgerCategoryButton x:Name="buttonHamburgerSaveSettings"
<uc:HamburgerCategoryButton x:Name="HamburgerSaveSettings"
IsEnabled="False"
IconVisibility="Collapsed"
ViewboxPathData="{StaticResource iconHamburgerSaveSettings}"
@ -224,7 +224,7 @@
<StackPanel Name="panelTogglesCategoryContainer">
<StackPanel x:Name="panelTogglesCategoryPrivacy"
<StackPanel Name="panelTogglesCategoryPrivacy"
Tag="{StaticResource tagCategoryPrivacy}"
Visibility="Collapsed" />

54
W10SS_GUI/MainWindow.xaml.cs

@ -16,6 +16,7 @@ using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using W10SS_GUI.Controls;
using W10SS_GUI.Classes;
namespace W10SS_GUI
{
@ -24,33 +25,24 @@ namespace W10SS_GUI
/// </summary>
public partial class MainWindow : Window
{
private Dictionary<string, StackPanel> TogglesCategoryPanels = new Dictionary<string, StackPanel>();
private AppCulture AppCulture = new AppCulture();
private AppCulture AppCulture = new AppCulture();
private Gui Gui;
public MainWindow()
{
InitializeComponent();
SetUiLanguage();
InitializeVariables();
InitializeToggles();
InitializeComponent();
}
private void InitializeToggles()
private void InitializeVariables()
{
//AppDomain.CurrentDomain.BaseDirectory
Gui = new Gui();
}
private void InitializeVariables()
private void InitializeToggles()
{
ICollection tagsDictionaryValues = Application.Current.Resources.MergedDictionaries.Where(r => r.Source.Segments[2] == "tags.xaml").FirstOrDefault().Values;
foreach (var tagValue in tagsDictionaryValues)
{
TogglesCategoryPanels.Add(tagValue.ToString(), panelTogglesCategoryContainer.Children.OfType<StackPanel>().Where(p => p.Tag == tagValue).FirstOrDefault());
}
textTogglesHeader.Text = buttonHamburgerPrivacy.Text;
}
//AppDomain.CurrentDomain.BaseDirectory
}
private void SetUiLanguage()
{
@ -58,22 +50,24 @@ namespace W10SS_GUI
}
private void ButtonHamburger_Click(object sender, MouseButtonEventArgs e)
{
HamburgerCategoryButton button = sender as HamburgerCategoryButton;
string tag = button.Tag.ToString();
foreach (KeyValuePair<string, StackPanel> kvp in TogglesCategoryPanels)
{
kvp.Value.Visibility = kvp.Key == tag ? Visibility.Visible : Visibility.Collapsed;
}
textTogglesHeader.Text = button.Text;
{
Gui.SetActivePanel(sender as HamburgerCategoryButton);
}
private void ButtonHamburgerLanguageSettings_Click(object sender, MouseButtonEventArgs e)
{
Resources.MergedDictionaries.Add(AppCulture.ChangeCulture());
textTogglesHeader.Text = buttonHamburgerPrivacy.Text;
textTogglesHeader.Text = Convert.ToString(Resources[Gui.LastClickedButtonName]);
Gui.SetHamburgerWidth(AppCulture.CurrentCultureName);
}
private void Window_Initialized(object sender, EventArgs e)
{
InitializeVariables();
SetUiLanguage();
Gui.SetHamburgerWidth(AppCulture.CurrentCultureName);
InitializeToggles();
Gui.SetActivePanel(HamburgerPrivacy);
}
}
}

2
W10SS_GUI/Resource/animations.xaml

@ -3,7 +3,7 @@
xmlns:local="clr-namespace:W10SS_GUI.Resource">
<Storyboard x:Key="animationHamburgerOpen" >
<DoubleAnimation Storyboard.TargetProperty="(FrameworkElement.Width)" To="{StaticResource panelHamburgerMaxWidth}" Duration="0:0:0.15" >
<DoubleAnimation Storyboard.TargetProperty="(FrameworkElement.Width)" To="{DynamicResource panelHamburgerMaxWidth}" Duration="0:0:0.15" >
<DoubleAnimation.EasingFunction>
<SineEase EasingMode="EaseIn" />
</DoubleAnimation.EasingFunction>

7
W10SS_GUI/Resource/controlsSize.xaml

@ -16,9 +16,10 @@
<system:Double x:Key="textHamburgerSize">16</system:Double>
<system:Double x:Key="panelHamburgerMinWidth">40</system:Double>
<system:Double x:Key="panelHamburgerWidth">200</system:Double>
<system:Double x:Key="panelHamburgerMaxWidth">200</system:Double>
<system:Double x:Key="panelHamburgerMaxWidth">250</system:Double>
<system:Double x:Key="panelHamburgerRuMaxWidth">250</system:Double>
<system:Double x:Key="panelHamburgerEnMaxWidth">200</system:Double>
<system:Double x:Key="togglesCategoryPanelWidth">500</system:Double>
<system:Double x:Key="togglesCategoryPanelHeaderHeight">40</system:Double>
<system:Double x:Key="fontSizeTogglesCategoryPanelHeader">26</system:Double>

2
W10SS_GUI/W10SS_GUI.csproj

@ -112,6 +112,7 @@
<SubType>Code</SubType>
</Compile>
<Compile Include="Classes\AppCulture.cs" />
<Compile Include="Classes\Tags.cs" />
<Compile Include="Controls\HamburgerCategoryButton.xaml.cs">
<DependentUpon>HamburgerCategoryButton.xaml</DependentUpon>
</Compile>
@ -121,6 +122,7 @@
<Compile Include="Controls\ToggleSwitch.xaml.cs">
<DependentUpon>ToggleSwitch.xaml</DependentUpon>
</Compile>
<Compile Include="Classes\Gui.cs" />
<Compile Include="MainWindow.xaml.cs">
<DependentUpon>MainWindow.xaml</DependentUpon>
<SubType>Code</SubType>

Loading…
Cancel
Save