@@ -112,31 +112,13 @@ public MainViewModel(IFlyoutService flyoutService)
112112 _flyoutService = flyoutService ;
113113 try
114114 {
115-
116- _databaseService . InitializeDatabaseIfNeeded ( ) ;
117-
118115 _menuOpenIcon = Application . Current . Resources [ "MenuOpen" ] as Geometry ;
119116 _menuCloseIcon = Application . Current . Resources [ "MenuClose" ] as Geometry ;
120117 if ( _menuOpenIcon == null || _menuCloseIcon == null )
121118 {
122119 throw new InvalidOperationException ( "Icons not found in resources." ) ;
123120 }
124- IsLoadSnippetEnabled = ! settingsService . LoadOnStartup ;
125- ShowEmptyLanguages = settingsService . ShowEmptyLanguages ;
126- ShowEmptyCategories = settingsService . ShowEmptyCategories ;
127121
128- if ( settingsService . LoadOnStartup )
129- {
130- LoadSnippets ( ) ;
131- if ( settingsService . LastSnippet != null )
132- {
133- RestoreSelectedSnippetState ( settingsService . LastSnippet ) ;
134- }
135- }
136- IsFilteringEnabled = settingsService . EnableFiltering ;
137- EnableBraceStyleFolding = settingsService . EnableBraceStyleFolding ;
138- EnablePythonFolding = settingsService . EnablePythonFolding ;
139- EnableXmlFolding = settingsService . EnableXmlFolding ;
140122 SplitViewOpenPaneLength = settingsService . PanelLength ;
141123 WindowX = settingsService . WindowX ;
142124 WindowY = settingsService . WindowY ;
@@ -148,6 +130,13 @@ public MainViewModel(IFlyoutService flyoutService)
148130 opt . HighlightCurrentLine = settingsService . HighlightLine ;
149131 opt . IndentationSize = settingsService . IntendationSize ;
150132
133+ IsFilteringEnabled = settingsService . EnableFiltering ;
134+ EnableBraceStyleFolding = settingsService . EnableBraceStyleFolding ;
135+ EnablePythonFolding = settingsService . EnablePythonFolding ;
136+ EnableXmlFolding = settingsService . EnableXmlFolding ;
137+ ShowEmptyLanguages = settingsService . ShowEmptyLanguages ;
138+ ShowEmptyCategories = settingsService . ShowEmptyCategories ;
139+
151140 }
152141 catch ( InvalidOperationException ex )
153142 {
@@ -159,6 +148,47 @@ public MainViewModel(IFlyoutService flyoutService)
159148 }
160149
161150 }
151+ public async Task InitializeAsync ( )
152+ {
153+ await Task . Run ( ( ) => _databaseService . InitializeDatabaseIfNeeded ( ) ) ;
154+
155+ IsLoadSnippetEnabled = ! settingsService . LoadOnStartup ;
156+
157+ if ( settingsService . LoadOnStartup )
158+ {
159+ var languages = await Task . Run ( ( ) => _databaseService . GetSnippets ( ) ) ;
160+
161+ PopulateLanguagesCollection ( languages ) ;
162+
163+ if ( settingsService . LastSnippet != null && settingsService . LoadOnStartup )
164+ {
165+ RestoreSelectedSnippetState ( settingsService . LastSnippet ) ;
166+ }
167+ }
168+ }
169+
170+ private void PopulateLanguagesCollection ( IEnumerable < Language > languages )
171+ {
172+ Languages . Clear ( ) ;
173+ foreach ( var lang in languages )
174+ {
175+ bool languageHasAnySnippets = false ;
176+ foreach ( var cat in lang . Categories )
177+ {
178+ bool categoryHasSnippets = cat . Snippets . Any ( ) ;
179+ if ( categoryHasSnippets )
180+ {
181+ languageHasAnySnippets = true ;
182+ }
183+
184+ // A category is visible if the setting is on, OR if it has snippets.
185+ cat . IsVisible = ShowEmptyCategories || categoryHasSnippets ;
186+ }
187+ // A language is visible if the setting is on, OR if it has any snippets.
188+ lang . IsVisible = ShowEmptyLanguages || languageHasAnySnippets ;
189+ Languages . Add ( lang ) ;
190+ }
191+ }
162192
163193 // Call from the MainWindow constructor
164194 public void InitializeEditor ( TextEditor textEditor )
@@ -371,7 +401,7 @@ private void OpenSettings()
371401 tmpSnippet . Id ) ;
372402 }
373403 }
374-
404+
375405 settingsService . SaveSettings ( ) ;
376406 } ) ;
377407 }
@@ -581,24 +611,7 @@ public void OnWindowClosing(CancelEventArgs e)
581611 public void LoadSnippets ( )
582612 {
583613 var languages = _databaseService . GetSnippets ( ) ;
584- Languages . Clear ( ) ;
585- foreach ( var lang in languages )
586- {
587- bool languageHasAnySnippets = false ;
588- foreach ( var cat in lang . Categories )
589- {
590- bool categoryHasSnippets = cat . Snippets . Any ( ) ;
591- if ( categoryHasSnippets )
592- {
593- languageHasAnySnippets = true ;
594- }
595- // A category is visible if the setting is on, OR if it has snippets.
596- cat . IsVisible = ShowEmptyCategories || categoryHasSnippets ;
597- }
598- // A language is visible if the setting is on, OR if it has any snippets.
599- lang . IsVisible = ShowEmptyLanguages || languageHasAnySnippets ;
600- Languages . Add ( lang ) ;
601- }
614+ PopulateLanguagesCollection ( languages ) ;
602615 }
603616
604617 private void SaveSettings ( )
0 commit comments