@@ -69,10 +69,10 @@ public partial class OutputsPageViewModel : PageViewModelBase
69
69
70
70
[ ObservableProperty ]
71
71
[ NotifyPropertyChangedFor ( nameof ( CanShowOutputTypes ) ) ]
72
- private PackageOutputCategory selectedCategory ;
72
+ private PackageOutputCategory ? selectedCategory ;
73
73
74
74
[ ObservableProperty ]
75
- private SharedOutputType selectedOutputType ;
75
+ private SharedOutputType ? selectedOutputType ;
76
76
77
77
[ ObservableProperty ]
78
78
[ NotifyPropertyChangedFor ( nameof ( NumImagesSelected ) ) ]
@@ -136,6 +136,8 @@ ILogger<OutputsPageViewModel> logger
136
136
settings => settings . OutputsImageSize ,
137
137
delay : TimeSpan . FromMilliseconds ( 250 )
138
138
) ;
139
+
140
+ RefreshCategories ( ) ;
139
141
}
140
142
141
143
public override void OnLoaded ( )
@@ -148,49 +150,8 @@ public override void OnLoaded()
148
150
149
151
Directory . CreateDirectory ( settingsManager . ImagesDirectory ) ;
150
152
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 ;
194
155
SearchQuery = string . Empty ;
195
156
ImageSize = settingsManager . Settings . OutputsImageSize ;
196
157
@@ -216,14 +177,14 @@ partial void OnSelectedCategoryChanged(
216
177
GetOutputs ( path ) ;
217
178
}
218
179
219
- partial void OnSelectedOutputTypeChanged ( SharedOutputType oldValue , SharedOutputType newValue )
180
+ partial void OnSelectedOutputTypeChanged ( SharedOutputType ? oldValue , SharedOutputType ? newValue )
220
181
{
221
- if ( oldValue == newValue )
182
+ if ( oldValue == newValue || newValue == null )
222
183
return ;
223
184
224
185
var path =
225
186
newValue == SharedOutputType . All
226
- ? SelectedCategory . Path
187
+ ? SelectedCategory ? . Path
227
188
: Path . Combine ( SelectedCategory . Path , newValue . ToString ( ) ) ;
228
189
GetOutputs ( path ) ;
229
190
}
@@ -299,6 +260,7 @@ public Task CopyImage(string imagePath)
299
260
300
261
public void Refresh ( )
301
262
{
263
+ Dispatcher . UIThread . Post ( RefreshCategories ) ;
302
264
Dispatcher . UIThread . Post ( OnLoaded ) ;
303
265
}
304
266
@@ -502,6 +464,11 @@ var path in Directory.EnumerateFiles(
502
464
IsConsolidating = false ;
503
465
}
504
466
467
+ public void ClearSearchQuery ( )
468
+ {
469
+ SearchQuery = string . Empty ;
470
+ }
471
+
505
472
private void GetOutputs ( string directory )
506
473
{
507
474
if ( ! settingsManager . IsLibraryDirSet )
@@ -533,4 +500,60 @@ private void GetOutputs(string directory)
533
500
OutputsCache . EditDiff ( files ) ;
534
501
}
535
502
}
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
+ }
536
559
}
0 commit comments