@@ -69,10 +69,10 @@ public partial class OutputsPageViewModel : PageViewModelBase
6969
7070 [ ObservableProperty ]
7171 [ NotifyPropertyChangedFor ( nameof ( CanShowOutputTypes ) ) ]
72- private PackageOutputCategory selectedCategory ;
72+ private PackageOutputCategory ? selectedCategory ;
7373
7474 [ ObservableProperty ]
75- private SharedOutputType selectedOutputType ;
75+ private SharedOutputType ? selectedOutputType ;
7676
7777 [ ObservableProperty ]
7878 [ NotifyPropertyChangedFor ( nameof ( NumImagesSelected ) ) ]
@@ -136,6 +136,8 @@ ILogger<OutputsPageViewModel> logger
136136 settings => settings . OutputsImageSize ,
137137 delay : TimeSpan . FromMilliseconds ( 250 )
138138 ) ;
139+
140+ RefreshCategories ( ) ;
139141 }
140142
141143 public override void OnLoaded ( )
@@ -148,49 +150,8 @@ public override void OnLoaded()
148150
149151 Directory . CreateDirectory ( settingsManager . ImagesDirectory ) ;
150152
151- var packageCategories = settingsManager . Settings . InstalledPackages
152- . Where ( x => ! x . UseSharedOutputFolder )
153- . Select ( packageFactory . GetPackagePair )
154- . WhereNotNull ( )
155- . Where (
156- p =>
157- p . BasePackage . SharedOutputFolders != null
158- && p . BasePackage . SharedOutputFolders . Any ( )
159- )
160- . Select (
161- pair =>
162- new PackageOutputCategory
163- {
164- Path = Path . Combine (
165- pair . InstalledPackage . FullPath ! ,
166- pair . BasePackage . OutputFolderName
167- ) ,
168- Name = pair . InstalledPackage . DisplayName ?? ""
169- }
170- )
171- . ToList ( ) ;
172-
173- packageCategories . Insert (
174- 0 ,
175- new PackageOutputCategory
176- {
177- Path = settingsManager . ImagesDirectory ,
178- Name = "Shared Output Folder"
179- }
180- ) ;
181-
182- packageCategories . Insert (
183- 1 ,
184- new PackageOutputCategory
185- {
186- Path = settingsManager . ImagesInferenceDirectory ,
187- Name = "Inference"
188- }
189- ) ;
190-
191- Categories = new ObservableCollection < PackageOutputCategory > ( packageCategories ) ;
192- SelectedCategory = Categories . First ( ) ;
193- SelectedOutputType = SharedOutputType . All ;
153+ SelectedCategory ??= Categories . First ( ) ;
154+ SelectedOutputType ??= SharedOutputType . All ;
194155 SearchQuery = string . Empty ;
195156 ImageSize = settingsManager . Settings . OutputsImageSize ;
196157
@@ -216,14 +177,14 @@ partial void OnSelectedCategoryChanged(
216177 GetOutputs ( path ) ;
217178 }
218179
219- partial void OnSelectedOutputTypeChanged ( SharedOutputType oldValue , SharedOutputType newValue )
180+ partial void OnSelectedOutputTypeChanged ( SharedOutputType ? oldValue , SharedOutputType ? newValue )
220181 {
221- if ( oldValue == newValue )
182+ if ( oldValue == newValue || newValue == null )
222183 return ;
223184
224185 var path =
225186 newValue == SharedOutputType . All
226- ? SelectedCategory . Path
187+ ? SelectedCategory ? . Path
227188 : Path . Combine ( SelectedCategory . Path , newValue . ToString ( ) ) ;
228189 GetOutputs ( path ) ;
229190 }
@@ -299,6 +260,7 @@ public Task CopyImage(string imagePath)
299260
300261 public void Refresh ( )
301262 {
263+ Dispatcher . UIThread . Post ( RefreshCategories ) ;
302264 Dispatcher . UIThread . Post ( OnLoaded ) ;
303265 }
304266
@@ -502,6 +464,11 @@ var path in Directory.EnumerateFiles(
502464 IsConsolidating = false ;
503465 }
504466
467+ public void ClearSearchQuery ( )
468+ {
469+ SearchQuery = string . Empty ;
470+ }
471+
505472 private void GetOutputs ( string directory )
506473 {
507474 if ( ! settingsManager . IsLibraryDirSet )
@@ -533,4 +500,60 @@ private void GetOutputs(string directory)
533500 OutputsCache . EditDiff ( files ) ;
534501 }
535502 }
503+
504+ private void RefreshCategories ( )
505+ {
506+ if ( Design . IsDesignMode )
507+ return ;
508+
509+ if ( ! settingsManager . IsLibraryDirSet )
510+ return ;
511+
512+ var previouslySelectedCategory = SelectedCategory ;
513+
514+ var packageCategories = settingsManager . Settings . InstalledPackages
515+ . Where ( x => ! x . UseSharedOutputFolder )
516+ . Select ( packageFactory . GetPackagePair )
517+ . WhereNotNull ( )
518+ . Where (
519+ p =>
520+ p . BasePackage . SharedOutputFolders != null
521+ && p . BasePackage . SharedOutputFolders . Any ( )
522+ )
523+ . Select (
524+ pair =>
525+ new PackageOutputCategory
526+ {
527+ Path = Path . Combine (
528+ pair . InstalledPackage . FullPath ! ,
529+ pair . BasePackage . OutputFolderName
530+ ) ,
531+ Name = pair . InstalledPackage . DisplayName ?? ""
532+ }
533+ )
534+ . ToList ( ) ;
535+
536+ packageCategories . Insert (
537+ 0 ,
538+ new PackageOutputCategory
539+ {
540+ Path = settingsManager . ImagesDirectory ,
541+ Name = "Shared Output Folder"
542+ }
543+ ) ;
544+
545+ packageCategories . Insert (
546+ 1 ,
547+ new PackageOutputCategory
548+ {
549+ Path = settingsManager . ImagesInferenceDirectory ,
550+ Name = "Inference"
551+ }
552+ ) ;
553+
554+ Categories = new ObservableCollection < PackageOutputCategory > ( packageCategories ) ;
555+ SelectedCategory =
556+ Categories . FirstOrDefault ( x => x . Name == previouslySelectedCategory ? . Name )
557+ ?? Categories . First ( ) ;
558+ }
536559}
0 commit comments