瀏覽代碼

Settings tab index comparison

Krzysztof Krysiński 2 年之前
父節點
當前提交
89092dd809

+ 4 - 1
src/PixiEditor/Data/Localization/Languages/en.json

@@ -4,5 +4,8 @@
   "NEW_FILE": "New",
   "RECENT_EMPTY_TEXT": "So much empty space",
   
-  "LANGUAGE": "Language"
+  "LANGUAGE": "Language",
+  "GENERAL": "General",
+  "DISCORD": "Discord",
+  "KEY_BINDINGS": "Key Bindings"
 }

+ 17 - 3
src/PixiEditor/Localization/LocalizedString.cs

@@ -2,13 +2,27 @@
 
 public struct LocalizedString
 {
-    public string Key { get; }
-    public string Value { get; }
+    private string key;
+
+    public string Key
+    {
+        get => key;
+        set
+        {
+            key = value;
+            Value = GetValue(value);
+        }
+    }
+    public string Value { get; private set; }
 
     public LocalizedString(string key)
     {
         Key = key;
-        Value = GetValue(key);
+    }
+
+    public override string ToString()
+    {
+        return Value;
     }
 
     private static string GetValue(string key)

+ 2 - 2
src/PixiEditor/ViewModels/SettingsWindowViewModel.cs

@@ -19,7 +19,7 @@ internal class SettingsWindowViewModel : ViewModelBase
 {
     private string searchTerm;
     private int visibleGroups;
-    private string currentPage;
+    private int currentPage;
 
     public bool ShowUpdateTab
     {
@@ -47,7 +47,7 @@ internal class SettingsWindowViewModel : ViewModelBase
         }
     }
 
-    public string CurrentPage
+    public int CurrentPage
     {
         get => currentPage;
         set => SetProperty(ref currentPage, value);

+ 3 - 3
src/PixiEditor/ViewModels/SubViewModels/Main/WindowViewModel.cs

@@ -133,11 +133,11 @@ internal class WindowViewModel : SubViewModel<ViewModelMain>
     }
 
     [Command.Basic("PixiEditor.Window.OpenSettingsWindow", "Open Settings", "Open Settings Window", Key = Key.OemComma, Modifiers = ModifierKeys.Control)]
-    public static void OpenSettingsWindow(string page)
+    public static void OpenSettingsWindow(int page)
     {
-        if (string.IsNullOrWhiteSpace(page))
+        if (page < 0)
         {
-            page = "General";
+            page = 0;
         }
 
         var settings = new SettingsWindow(page);

+ 28 - 11
src/PixiEditor/Views/Dialogs/SettingsWindow.xaml

@@ -16,6 +16,7 @@
         xmlns:commands="clr-namespace:PixiEditor.Models.Commands"
         xmlns:cmds="clr-namespace:PixiEditor.Models.Commands.XAML"
         xmlns:settingGroups="clr-namespace:PixiEditor.Views.Dialogs.SettingGroups"
+        xmlns:localization="clr-namespace:PixiEditor.Localization"
         mc:Ignorable="d"
         Title="Settings" Name="window" 
         Height="688" Width="780"
@@ -49,23 +50,27 @@
 
         <ListBox DockPanel.Dock="Left" x:Name="pages" 
                  Background="Transparent" BorderThickness="0" Width="150" ItemContainerStyle="{StaticResource PixiListBoxItemStyle}"
-                 SelectedItem="{Binding CurrentPage}">
+                 SelectedIndex="{Binding CurrentPage}">
             <ListBox.ItemTemplate>
                 <DataTemplate>
-                    <TextBlock Margin="10 5 10 5" FontSize="15" Foreground="White" Text="{Binding}"/>
+                    <TextBlock Margin="10 5 10 5" FontSize="15" Foreground="White" Text="{Binding Path=Value}"/>
                 </DataTemplate>
             </ListBox.ItemTemplate>
             <ListBox.ItemsSource>
-                <x:Array Type="{x:Type sys:String}">
-                    <sys:String>General</sys:String>
-                    <sys:String>Discord</sys:String>
-                    <sys:String>Keybinds</sys:String>
+                <x:Array Type="{x:Type localization:LocalizedString}">
+                    <localization:LocalizedString Key="GENERAL"/>
+                    <localization:LocalizedString Key="DISCORD"/>
+                    <localization:LocalizedString Key="KEY_BINDINGS"/>
                 </x:Array>
             </ListBox.ItemsSource>
         </ListBox>
         <StackPanel Orientation="Vertical" Background="{StaticResource AccentColor}">
-            <StackPanel Orientation="Vertical" Visibility="{Binding CurrentPage, Converter={converters:EqualityBoolToVisibilityConverter},
-            ConverterParameter='General'}" Margin="15,10" Tag="27">
+            <StackPanel Orientation="Vertical" Margin="15,10" Tag="27">
+                <StackPanel.Visibility>
+                    <Binding Path="CurrentPage" Converter="{converters:EqualityBoolToVisibilityConverter}">
+                        <Binding.ConverterParameter><sys:Int32>0</sys:Int32></Binding.ConverterParameter>
+                    </Binding>
+                </StackPanel.Visibility>
                 <Label Style="{StaticResource SettingsHeader}" views:Translator.Key="LANGUAGE"/>
                 <ComboBox Margin="27 5" Width="200" Height="25" FontSize="12" HorizontalAlignment="Left"
                           ItemsSource="{Binding SettingsSubViewModel.General.AvailableLanguages}"
@@ -174,8 +179,14 @@
                 </Label>
             </StackPanel>
 
-            <StackPanel Visibility="{Binding CurrentPage, Converter={converters:EqualityBoolToVisibilityConverter},
-            ConverterParameter='Discord'}" Margin="15,10">
+            <StackPanel Margin="15,10">
+                <StackPanel.Visibility>
+                    <Binding Path="CurrentPage" Converter="{converters:EqualityBoolToVisibilityConverter}">
+                        <Binding.ConverterParameter>
+                            <sys:Int32>1</sys:Int32>
+                        </Binding.ConverterParameter>
+                    </Binding>
+                </StackPanel.Visibility>
                 <StackPanel Orientation="Vertical">
                     <Label Style="{StaticResource SettingsHeader}">Rich Presence</Label>
                     
@@ -200,8 +211,14 @@
             </StackPanel>
 
             <Grid Height="{Binding ElementName=window, Path=Height, Converter={converters:SubtractConverter}, ConverterParameter=50}"
-                  Visibility="{Binding CurrentPage, Converter={converters:EqualityBoolToVisibilityConverter}, ConverterParameter='Keybinds'}"
                   Margin="10,10,10,50">
+                <Grid.Visibility>
+                    <Binding Path="CurrentPage" Converter="{converters:EqualityBoolToVisibilityConverter}">
+                        <Binding.ConverterParameter>
+                            <sys:Int32>2</sys:Int32>
+                        </Binding.ConverterParameter>
+                    </Binding>
+                </Grid.Visibility>
                 <Grid.RowDefinitions>
                     <RowDefinition Height="Auto"/>
                     <RowDefinition Height="Auto"/>

+ 1 - 1
src/PixiEditor/Views/Dialogs/SettingsWindow.xaml.cs

@@ -9,7 +9,7 @@ namespace PixiEditor.Views.Dialogs;
 /// </summary>
 internal partial class SettingsWindow : Window
 {
-    public SettingsWindow(string page = "General")
+    public SettingsWindow(int page = 0)
     {
         InitializeComponent();
         var viewModel = DataContext as SettingsWindowViewModel;