@@ -221,6 +221,14 @@ public async Task UpdateSortDirectoriesAlongsideFilesAsync()
221221await ApplyFilesAndFoldersChangesAsync ( ) ;
222222}
223223
224+ public async Task UpdateSortFilesFirstAsync ( )
225+ {
226+ OnPropertyChanged ( nameof ( AreFilesSortedFirst ) ) ;
227+
228+ await OrderFilesAndFoldersAsync ( ) ;
229+ await ApplyFilesAndFoldersChangesAsync ( ) ;
230+ }
231+
224232private void UpdateSortAndGroupOptions ( )
225233{
226234OnPropertyChanged ( nameof ( IsSortedByName ) ) ;
@@ -236,6 +244,7 @@ private void UpdateSortAndGroupOptions()
236244OnPropertyChanged ( nameof ( IsSortedAscending ) ) ;
237245OnPropertyChanged ( nameof ( IsSortedDescending ) ) ;
238246OnPropertyChanged ( nameof ( AreDirectoriesSortedAlongsideFiles ) ) ;
247+ OnPropertyChanged ( nameof ( AreFilesSortedFirst ) ) ;
239248}
240249
241250public bool IsSortedByName
@@ -406,6 +415,16 @@ public bool AreDirectoriesSortedAlongsideFiles
406415}
407416}
408417
418+ public bool AreFilesSortedFirst
419+ {
420+ get => folderSettings . SortFilesFirst ;
421+ set
422+ {
423+ folderSettings . SortFilesFirst = value ;
424+ OnPropertyChanged ( nameof ( AreFilesSortedFirst ) ) ;
425+ }
426+ }
427+
409428public bool HasNoWatcher { get ; private set ; }
410429
411430public ItemViewModel ( LayoutPreferencesManager folderSettingsViewModel )
@@ -547,6 +566,7 @@ await dispatcherQueue.EnqueueOrInvokeAsync(() =>
547566case nameof ( UserSettingsService . FoldersSettingsService . DefaultSortOption ) :
548567case nameof ( UserSettingsService . FoldersSettingsService . DefaultGroupOption ) :
549568case nameof ( UserSettingsService . FoldersSettingsService . DefaultSortDirectoriesAlongsideFiles ) :
569+ case nameof ( UserSettingsService . FoldersSettingsService . DefaultSortFilesFirst ) :
550570case nameof ( UserSettingsService . FoldersSettingsService . SyncFolderPreferencesAcrossDirectories ) :
551571case nameof ( UserSettingsService . FoldersSettingsService . DefaultGroupByDateUnit ) :
552572await dispatcherQueue . EnqueueOrInvokeAsync ( ( ) =>
@@ -602,7 +622,8 @@ await dispatcherQueue.EnqueueOrInvokeAsync(() =>
602622{
603623var key = FilesAndFolders . ItemGroupKeySelector ? . Invoke ( item ) ;
604624var group = FilesAndFolders . GroupedCollection ? . FirstOrDefault ( x => x . Model . Key == key ) ;
605- group ? . OrderOne ( list => SortingHelper . OrderFileList ( list , folderSettings . DirectorySortOption , folderSettings . DirectorySortDirection , folderSettings . SortDirectoriesAlongsideFiles ) , item ) ;
625+ group ? . OrderOne ( list => SortingHelper . OrderFileList ( list , folderSettings . DirectorySortOption , folderSettings . DirectorySortDirection ,
626+ folderSettings . SortDirectoriesAlongsideFiles , folderSettings . SortFilesFirst ) , item ) ;
606627}
607628
608629UpdateEmptyTextType ( ) ;
@@ -753,7 +774,8 @@ void OrderEntries()
753774if ( filesAndFolders . Count == 0 )
754775return ;
755776
756- filesAndFolders = new ConcurrentCollection < ListedItem > ( SortingHelper . OrderFileList ( filesAndFolders . ToList ( ) , folderSettings . DirectorySortOption , folderSettings . DirectorySortDirection , folderSettings . SortDirectoriesAlongsideFiles ) ) ;
777+ filesAndFolders = new ConcurrentCollection < ListedItem > ( SortingHelper . OrderFileList ( filesAndFolders . ToList ( ) , folderSettings . DirectorySortOption , folderSettings . DirectorySortDirection ,
778+ folderSettings . SortDirectoriesAlongsideFiles , folderSettings . SortFilesFirst ) ) ;
757779}
758780
759781if ( NativeWinApiHelper . IsHasThreadAccessPropertyPresent && dispatcherQueue . HasThreadAccess )
@@ -775,7 +797,8 @@ private void OrderGroups(CancellationToken token = default)
775797if ( token . IsCancellationRequested )
776798return ;
777799
778- gp . Order ( list => SortingHelper . OrderFileList ( list , folderSettings . DirectorySortOption , folderSettings . DirectorySortDirection , folderSettings . SortDirectoriesAlongsideFiles ) ) ;
800+ gp . Order ( list => SortingHelper . OrderFileList ( list , folderSettings . DirectorySortOption , folderSettings . DirectorySortDirection ,
801+ folderSettings . SortDirectoriesAlongsideFiles , folderSettings . SortFilesFirst ) ) ;
779802}
780803
781804if ( FilesAndFolders . GroupedCollection is null || FilesAndFolders . GroupedCollection . IsSorted )
0 commit comments