Skip to content

Commit 8e0b9c0

Browse files
committed
Persist WindowState using JSON settings and remove Expander Snippets binding
- Added load/save functionality to persist WindowState in settings for better user experience - Removed binding on Expander Snippets to keep it always visible
1 parent 5e03c0a commit 8e0b9c0

File tree

4 files changed

+35
-21
lines changed

4 files changed

+35
-21
lines changed

src/CodeSnip/MainViewModel.cs

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,10 @@ public partial class MainViewModel : ObservableObject
6666
private double _splitViewOpenPaneLength = 350;
6767

6868
[ObservableProperty]
69-
private double _windowX = 100;
69+
private double _windowX = 0;
7070

7171
[ObservableProperty]
72-
private double _windowY = 100;
72+
private double _windowY = 0;
7373

7474
[ObservableProperty]
7575
private double _windowWidth = 800;
@@ -80,9 +80,6 @@ public partial class MainViewModel : ObservableObject
8080
[ObservableProperty]
8181
private bool _isSearchExpanded = false;
8282

83-
[ObservableProperty]
84-
private bool _isSnippetsExpanded = true;
85-
8683
[ObservableProperty]
8784
private bool _isSnippetMetadataExpanded = true;
8885

@@ -107,6 +104,9 @@ public partial class MainViewModel : ObservableObject
107104
[ObservableProperty]
108105
private bool _showEmptyCategories = false;
109106

107+
[ObservableProperty]
108+
public WindowState _windowState = WindowState.Normal;
109+
110110
public enum SnippetFilterMode
111111
{
112112
Name,
@@ -133,8 +133,8 @@ public MainViewModel(IFlyoutService flyoutService)
133133
WindowWidth = settingsService.WindowWidth;
134134
WindowHeight = settingsService.WindowHeight;
135135
IsSearchExpanded = settingsService.IsSearchExpanded;
136-
IsSnippetsExpanded = settingsService.IsSnippetsExpanded;
137136
IsSnippetMetadataExpanded = settingsService.IsSnippetMetadataExpanded;
137+
WindowState = settingsService.WindowState;
138138
opt.EnableEmailHyperlinks = settingsService.EnableEmailLinks;
139139
opt.EnableHyperlinks = settingsService.EnableHyperinks;
140140
opt.ConvertTabsToSpaces = settingsService.TabToSpaces;
@@ -618,15 +618,18 @@ public void LoadSnippets()
618618

619619
private void SaveSettings()
620620
{
621-
settingsService.WindowX = (int)WindowX;
622-
settingsService.WindowY = (int)WindowY;
623-
settingsService.WindowWidth = (int)WindowWidth;
624-
settingsService.WindowHeight = (int)WindowHeight;
625621
settingsService.PanelLength = (int)SplitViewOpenPaneLength;
626622
settingsService.LastSnippet = SaveSelectedSnippetState();
627623
settingsService.IsSearchExpanded = IsSearchExpanded;
628-
settingsService.IsSnippetsExpanded = IsSnippetsExpanded;
629624
settingsService.IsSnippetMetadataExpanded = IsSnippetMetadataExpanded;
625+
settingsService.WindowState = WindowState;
626+
if (WindowState == WindowState.Normal)
627+
{
628+
settingsService.WindowX = (int)WindowX;
629+
settingsService.WindowY = (int)WindowY;
630+
settingsService.WindowWidth = (int)WindowWidth;
631+
settingsService.WindowHeight = (int)WindowHeight;
632+
}
630633
var theme = ThemeManager.Current.DetectTheme(Application.Current);
631634
if (theme != null)
632635
{

src/CodeSnip/MainWindow.xaml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
Title ="{Binding WindowTitle}" MinWidth="600" MinHeight="400"
2323
Closing="MetroWindow_Closing"
2424
Left="{Binding WindowX, Mode=TwoWay}" Top="{Binding WindowY, Mode=TwoWay}"
25-
Width="{Binding WindowWidth, Mode=TwoWay}" Height="{Binding WindowHeight, Mode=TwoWay}" >
25+
Width="{Binding WindowWidth, Mode=TwoWay}" Height="{Binding WindowHeight, Mode=TwoWay}" WindowState="{Binding WindowState, Mode=TwoWay}">
2626
<!--WindowButtonCommandsOverlayBehavior="Never"-->
2727
<mah:MetroWindow.Resources>
2828

@@ -135,8 +135,7 @@
135135
Text="{Binding FilterText, UpdateSourceTrigger=PropertyChanged}" />
136136
</Grid>
137137
</Expander>
138-
<Expander Header="Snippets" Grid.Row="1" Margin="0,0,2,0"
139-
IsExpanded="{Binding IsSnippetsExpanded, Mode=TwoWay}">
138+
<Expander Header="Snippets" Grid.Row="1" Margin="0,0,2,0" IsExpanded="True">
140139
<Grid>
141140
<Grid.RowDefinitions>
142141
<RowDefinition Height="*"/>

src/CodeSnip/Services/SettingsService.cs

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,22 +57,25 @@ public int PanelLength
5757
get => _settings.MainWindow.PanelLength;
5858
set => _settings.MainWindow.PanelLength = value;
5959
}
60+
6061
public bool IsSearchExpanded
6162
{
6263
get => _settings.MainWindow.IsSearchExpanded;
6364
set => _settings.MainWindow.IsSearchExpanded = value;
6465
}
65-
public bool IsSnippetsExpanded
66-
{
67-
get => _settings.MainWindow.IsSnippetsExpanded;
68-
set => _settings.MainWindow.IsSnippetsExpanded = value;
69-
}
66+
7067
public bool IsSnippetMetadataExpanded
7168
{
7269
get => _settings.MainWindow.IsSnippetMetadataExpanded;
7370
set => _settings.MainWindow.IsSnippetMetadataExpanded = value;
7471
}
7572

73+
public WindowState WindowState
74+
{
75+
get => _settings.MainWindow.WindowState;
76+
set => _settings.MainWindow.WindowState = value;
77+
}
78+
7679
public bool TabToSpaces
7780
{
7881
get => _settings.Editor.TabToSpaces;
@@ -84,6 +87,7 @@ public bool EnableEmailLinks
8487
get => _settings.Editor.EnableEmailLinks;
8588
set => _settings.Editor.EnableEmailLinks = value;
8689
}
90+
8791
public bool EnableHyperinks
8892
{
8993
get => _settings.Editor.EnableHyperinks;
@@ -94,16 +98,19 @@ public bool HighlightLine
9498
get => _settings.Editor.HighlightLine;
9599
set => _settings.Editor.HighlightLine = value;
96100
}
101+
97102
public int IntendationSize
98103
{
99104
get => _settings.Editor.IntendationSize;
100105
set => _settings.Editor.IntendationSize = value;
101106
}
107+
102108
public bool EnableBraceStyleFolding
103109
{
104110
get => _settings.Editor.EnableBraceStyleFolding;
105111
set => _settings.Editor.EnableBraceStyleFolding = value;
106112
}
113+
107114
public bool EnablePythonFolding
108115
{
109116
get => _settings.Editor.EnablePythonFolding;
@@ -114,11 +121,13 @@ public bool EnableXmlFolding
114121
get => _settings.Editor.EnableXmlFolding;
115122
set => _settings.Editor.EnableXmlFolding = value;
116123
}
124+
117125
public bool ShowEmptyLanguages
118126
{
119127
get => _settings.MainWindow.ShowEmptyLanguages;
120128
set => _settings.MainWindow.ShowEmptyLanguages = value;
121129
}
130+
122131
public bool ShowEmptyCategories
123132
{
124133
get => _settings.MainWindow.ShowEmptyCategories;
@@ -130,6 +139,7 @@ public string BaseColor
130139
get => _settings.Theme.BaseColor;
131140
set => _settings.Theme.BaseColor = value;
132141
}
142+
133143
public string AccentColor
134144
{
135145
get => _settings.Theme.Accent;

src/CodeSnip/Settnigs.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
namespace CodeSnip
1+
using System.Windows;
2+
3+
namespace CodeSnip
24
{
35
public class MainWindowSettings
46
{
@@ -13,8 +15,8 @@ public class MainWindowSettings
1315
public bool ShowEmptyLanguages { get; set; } = false;
1416
public bool ShowEmptyCategories { get; set; } = false;
1517
public bool IsSearchExpanded { get; set; } = false;
16-
public bool IsSnippetsExpanded { get; set; } = true;
1718
public bool IsSnippetMetadataExpanded { get; set; } = false;
19+
public WindowState WindowState { get; set; } = WindowState.Normal;
1820
}
1921

2022
public class EditorSettings

0 commit comments

Comments
 (0)