Kaynağa Gözat

FIX: Sorting by Owner (and other non standard columns)

Alexander Koblov 11 yıl önce
ebeveyn
işleme
8344620262
1 değiştirilmiş dosya ile 18 ekleme ve 2 silme
  1. 18 2
      src/fileviews/ufileviewworker.pas

+ 18 - 2
src/fileviews/ufileviewworker.pas

@@ -230,7 +230,7 @@ uses
   {$IFDEF timeFileView} uDebug, {$ENDIF}
   LCLProc, Graphics, DCFileAttributes,
   uFileSourceOperationTypes, uOSUtils, DCStrUtils, uDCUtils, uExceptions,
-  uGlobs, uMasks, uPixMapManager, uFileSourceProperty,
+  uGlobs, uMasks, uPixMapManager, uFileSourceProperty, uFileFunctions,
   uFileSourceCalcStatisticsOperation,
   uFileSourceOperationOptions;
 
@@ -405,9 +405,10 @@ end;
 procedure TFileListBuilder.Execute;
 var
   AFile: TFile;
-  i: Integer;
+  I, J: Integer;
   HaveUpDir: Boolean = False;
   FileSourceFiles: TFiles = nil;
+  SortingProperties: TFilePropertiesTypes = [];
 begin
   try
     if Aborted then
@@ -482,6 +483,21 @@ begin
     if Aborted then
       Exit;
 
+    // Retrieve RetrievableFileProperties which used in sorting
+    for I:= Low(FSortings) to High(FSortings) do
+    begin
+      for J:= Low(FSortings[I].SortFunctions) to High(FSortings[I].SortFunctions) do
+      begin
+        SortingProperties:= SortingProperties + TFileFunctionToProperty[FSortings[I].SortFunctions[J]];
+      end;
+    end;
+    SortingProperties:= SortingProperties - FFileSource.SupportedFileProperties;
+    if SortingProperties <> [] then
+    begin
+      for I:= 0 to FileSourceFiles.Count - 1 do
+        FFileSource.RetrieveProperties(FileSourceFiles[I], SortingProperties);
+    end;
+
     // Make display file list from file source file list.
     if Assigned(FAllDisplayFiles) and Assigned(FExistingDisplayFilesHashed) then
     begin