Browse Source

Added setting for max saved opened recently

CPKreuz 4 years ago
parent
commit
7749c3709a

+ 3 - 2
PixiEditor/Models/DataHolders/Document/Document.IO.cs

@@ -1,5 +1,6 @@
 using System.Collections.ObjectModel;
 using PixiEditor.Models.IO;
+using PixiEditor.Models.UserPreferences;
 
 namespace PixiEditor.Models.DataHolders
 {
@@ -64,7 +65,7 @@ namespace PixiEditor.Models.DataHolders
                 recentlyOpened.Move(index, 0);
             }
 
-            if (recentlyOpened.Count > 10)
+            if (recentlyOpened.Count > PreferencesSettings.GetPreference("maxOpenedRecently", 10))
             {
                 for (int i = 4; i < recentlyOpened.Count; i++)
                 {
@@ -72,7 +73,7 @@ namespace PixiEditor.Models.DataHolders
                 }
             }
 
-            UserPreferences.PreferencesSettings.UpdateLocalPreference("RecentlyOpened", recentlyOpened);
+            PreferencesSettings.UpdateLocalPreference("RecentlyOpened", recentlyOpened);
 
             XamlAccesibleViewModel.FileSubViewModel.HasRecent = true;
         }

+ 56 - 40
PixiEditor/ViewModels/SubViewModels/UserPreferences/SettingsViewModel.cs

@@ -6,55 +6,73 @@ namespace PixiEditor.ViewModels.SubViewModels.UserPreferences
 {
     public class SettingsViewModel : SubViewModel<SettingsWindowViewModel>
     {
-        private bool showNewFilePopupOnStartup = PreferencesSettings.GetPreference("ShowNewFilePopupOnStartup", true);
-
-        public bool ShowNewFilePopupOnStartup
+        public class FileSettings : SettingsGroup
         {
-            get => showNewFilePopupOnStartup;
-            set
+            private bool showNewFilePopupOnStartup = PreferencesSettings.GetPreference("ShowNewFilePopupOnStartup", true);
+
+            public bool ShowNewFilePopupOnStartup
             {
-                showNewFilePopupOnStartup = value;
-                string name = nameof(ShowNewFilePopupOnStartup);
-                RaiseAndUpdatePreference(name, value);
+                get => showNewFilePopupOnStartup;
+                set
+                {
+                    showNewFilePopupOnStartup = value;
+                    string name = nameof(ShowNewFilePopupOnStartup);
+                    RaiseAndUpdatePreference(name, value);
+                }
             }
-        }
 
-        private bool checkUpdatesOnStartup = PreferencesSettings.GetPreference("CheckUpdatesOnStartup", true);
+            private long defaultNewFileWidth = (int)PreferencesSettings.GetPreference("DefaultNewFileWidth", 16L);
 
-        public bool CheckUpdatesOnStartup
-        {
-            get => checkUpdatesOnStartup;
-            set
+            public long DefaultNewFileWidth
             {
-                checkUpdatesOnStartup = value;
-                string name = nameof(CheckUpdatesOnStartup);
-                RaiseAndUpdatePreference(name, value);
+                get => defaultNewFileWidth;
+                set
+                {
+                    defaultNewFileWidth = value;
+                    string name = nameof(DefaultNewFileWidth);
+                    RaiseAndUpdatePreference(name, value);
+                }
             }
-        }
 
-        private long defaultNewFileWidth = (int)PreferencesSettings.GetPreference("DefaultNewFileWidth", 16L);
+            private long defaultNewFileHeight = (int)PreferencesSettings.GetPreference("DefaultNewFileHeight", 16L);
 
-        public long DefaultNewFileWidth
-        {
-            get => defaultNewFileWidth;
-            set
+            public long DefaultNewFileHeight
             {
-                defaultNewFileWidth = value;
-                string name = nameof(DefaultNewFileWidth);
-                RaiseAndUpdatePreference(name, value);
+                get => defaultNewFileHeight;
+                set
+                {
+                    defaultNewFileHeight = value;
+                    string name = nameof(DefaultNewFileHeight);
+                    RaiseAndUpdatePreference(name, value);
+                }
             }
-        }
 
-        private long defaultNewFileHeight = (int)PreferencesSettings.GetPreference("DefaultNewFileHeight", 16L);
+            private int maxOpenedRecently = (int)PreferencesSettings.GetPreference(nameof(MaxOpenedRecently), 10);
 
-        public long DefaultNewFileHeight
+            public int MaxOpenedRecently
+            {
+                get => maxOpenedRecently;
+                set
+                {
+                    maxOpenedRecently = value;
+                    RaiseAndUpdatePreference(nameof(MaxOpenedRecently), value);
+                }
+            }
+        }
+
+        public class UpdateSettings : SettingsGroup
         {
-            get => defaultNewFileHeight;
-            set
+            private bool checkUpdatesOnStartup = PreferencesSettings.GetPreference("CheckUpdatesOnStartup", true);
+
+            public bool CheckUpdatesOnStartup
             {
-                defaultNewFileHeight = value;
-                string name = nameof(DefaultNewFileHeight);
-                RaiseAndUpdatePreference(name, value);
+                get => checkUpdatesOnStartup;
+                set
+                {
+                    checkUpdatesOnStartup = value;
+                    string name = nameof(CheckUpdatesOnStartup);
+                    RaiseAndUpdatePreference(name, value);
+                }
             }
         }
 
@@ -145,13 +163,11 @@ namespace PixiEditor.ViewModels.SubViewModels.UserPreferences
             }
         }
 
-        public DiscordSettings Discord { get; set; } = new DiscordSettings();
+        public FileSettings File { get; set; } = new FileSettings();
 
-        public void RaiseAndUpdatePreference<T>(string name, T value)
-        {
-            RaisePropertyChanged(name);
-            PreferencesSettings.UpdatePreference(name, value);
-        }
+        public UpdateSettings Update { get; set; } = new UpdateSettings();
+
+        public DiscordSettings Discord { get; set; } = new DiscordSettings();
 
         public SettingsViewModel(SettingsWindowViewModel owner)
             : base(owner)

+ 8 - 4
PixiEditor/Views/Dialogs/SettingsWindow.xaml

@@ -58,13 +58,17 @@
                     <Label Content="File" Style="{StaticResource Header1}"/>
                     <StackPanel Orientation="Vertical" Margin="50 0 50 0">
                         <CheckBox Content="Show New File dialog on startup" 
-                                  IsChecked="{Binding SettingsSubViewModel.ShowNewFilePopupOnStartup}"/>
+                                  IsChecked="{Binding SettingsSubViewModel.File.ShowNewFilePopupOnStartup}"/>
+                        <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
+                            <Label Content="Max Saved Opened Recently:" ToolTip="How many documents are shown under File > Recent. Default: 10" Style="{StaticResource BaseLabel}"/>
+                            <views:NumberInput FontSize="16" Value="{Binding SettingsSubViewModel.File.MaxOpenedRecently}" Width="40"/>
+                        </StackPanel>
                         <Label Content="Default new file size:" Style="{StaticResource Header2}" Margin="0 20 0 20"/>
                         <StackPanel Orientation="Horizontal" Margin="40,0,0,0">
                             <Label Content="Width:" Style="{StaticResource BaseLabel}"/>
-                            <views:SizeInput FontSize="16" Size="{Binding SettingsSubViewModel.DefaultNewFileWidth, Mode=TwoWay}" Width="60" Height="25"/>
+                            <views:SizeInput FontSize="16" Size="{Binding SettingsSubViewModel.File.DefaultNewFileWidth, Mode=TwoWay}" Width="60" Height="25"/>
                             <Label Content="Height:" Style="{StaticResource BaseLabel}"/>
-                            <views:SizeInput FontSize="16" Size="{Binding SettingsSubViewModel.DefaultNewFileHeight, Mode=TwoWay}" Width="60" Height="25"/>
+                            <views:SizeInput FontSize="16" Size="{Binding SettingsSubViewModel.File.DefaultNewFileHeight, Mode=TwoWay}" Width="60" Height="25"/>
                         </StackPanel>
                     </StackPanel>
                 </StackPanel>
@@ -74,7 +78,7 @@
                 <StackPanel Orientation="Vertical">
                     <Label Style="{StaticResource Header1}" Content="Auto-updates"/>
                     <StackPanel Orientation="Vertical" Margin="50 0 50 0">
-                        <CheckBox IsChecked="{Binding SettingsSubViewModel.CheckUpdatesOnStartup}" Content="Check updates on startup"/>
+                        <CheckBox IsChecked="{Binding SettingsSubViewModel.Update.CheckUpdatesOnStartup}" Content="Check updates on startup"/>
                     </StackPanel>
                 </StackPanel>
             </Grid>