]> granicus.if.org Git - transmission/commitdiff
#3661 sort the file list alphabetically
authorMitchell Livingston <livings124@transmissionbt.com>
Sat, 23 Oct 2010 20:20:31 +0000 (20:20 +0000)
committerMitchell Livingston <livings124@transmissionbt.com>
Sat, 23 Oct 2010 20:20:31 +0000 (20:20 +0000)
macosx/FileListNode.h
macosx/FileListNode.m
macosx/Torrent.m

index fd1ef05bd8c9f02d04c45d7e0e76420bbd78c0c1..e36f90fa2fab54581b8f5e4c8b579b815370259b 100644 (file)
@@ -50,6 +50,6 @@
 - (uint64_t) size;
 - (NSImage *) icon;
 
-- (NSArray *) children;
+- (NSMutableArray *) children;
 
 @end
index cb7be5798a90429e258f8d0b27f9cf2784a28c78..0f39886f99485e8eee6c3fb20c2585393e26284e 100644 (file)
     return fIcon;
 }
 
-- (NSArray *) children
+- (NSMutableArray *) children
 {
     NSAssert(fIsFolder, @"method can only be invoked on folders");
     
index 80307ded876cf25fe07d9a20fda67e51597488fb..013794c745872c64f490f955b0d52365a0b65439 100644 (file)
@@ -44,6 +44,7 @@
 - (void) createFileList;
 - (void) insertPath: (NSMutableArray *) components forParent: (FileListNode *) parent fileSize: (uint64_t) size
     index: (NSInteger) index flatList: (NSMutableArray *) flatFileList;
+- (void) sortFileList: (NSMutableArray *) fileNodes;
 
 - (void) completenessChange: (NSDictionary *) statusInfo;
 - (void) ratioLimitHit;
@@ -1710,6 +1711,9 @@ int trashDataFile(const char * filename)
             }
         }
         
+        [self sortFileList: fileList];
+        [self sortFileList: flatFileList];
+        
         fFileList = [[NSArray alloc] initWithArray: fileList];
         fFlatFileList = [[NSArray alloc] initWithArray: flatFileList];
     }
@@ -1761,6 +1765,17 @@ int trashDataFile(const char * filename)
     }
 }
 
+- (void) sortFileList: (NSMutableArray *) fileNodes
+{
+    NSSortDescriptor * descriptor = [[[NSSortDescriptor alloc] initWithKey: @"name" ascending: YES
+                                            selector: @selector(compareFinder:)] autorelease];
+    [fileNodes sortUsingDescriptors: [NSArray arrayWithObject: descriptor]];
+    
+    for (FileListNode * node in fileNodes)
+        if ([node isFolder])
+            [self sortFileList: [node children]];
+}
+
 //status has been retained
 - (void) completenessChange: (NSDictionary *) statusInfo
 {