瀏覽代碼

set order offline

Marino Faggiana 8 年之前
父節點
當前提交
b1ba676b68
共有 3 個文件被更改,包括 41 次插入22 次删除
  1. 1 1
      iOSClient/FileSystem/CCCoreData.h
  2. 28 10
      iOSClient/FileSystem/CCCoreData.m
  3. 12 11
      iOSClient/Offline/CCOfflinePageContent.m

+ 1 - 1
iOSClient/FileSystem/CCCoreData.h

@@ -199,7 +199,7 @@
 
 // ===== Offline =====
 
-+ (NSArray *)getHomeOfflineActiveAccount:(NSString *)activeAccount directoryUser:(NSString *)directoryUser;
++ (NSArray *)getHomeOfflineActiveAccount:(NSString *)activeAccount directoryUser:(NSString *)directoryUser fieldOrder:(NSString *)fieldOrder ascending:(BOOL)ascending;
 
 // ===== File System =====
 

+ 28 - 10
iOSClient/FileSystem/CCCoreData.m

@@ -714,6 +714,13 @@
     } else return nil;
 }
 
++ (TableMetadata *)getTableMetadataWithPreficate:(NSPredicate *)predicate
+{
+    NSManagedObjectContext *context = [NSManagedObjectContext MR_defaultContext];
+    
+    return [TableMetadata MR_findFirstWithPredicate:predicate inContext:context];
+}
+
 + (NSArray *)getTableMetadataWithPredicate:(NSPredicate *)predicate context:(NSManagedObjectContext *)context
 {
     if (context == nil)
@@ -1741,11 +1748,12 @@
 #pragma mark ===== Offline =====
 #pragma --------------------------------------------------------------------------------------------
 
-+ (NSArray *)getHomeOfflineActiveAccount:(NSString *)activeAccount directoryUser:(NSString *)directoryUser
++ (NSArray *)getHomeOfflineActiveAccount:(NSString *)activeAccount directoryUser:(NSString *)directoryUser fieldOrder:(NSString *)fieldOrder ascending:(BOOL)ascending
 {
-    NSMutableArray *metadatas = [NSMutableArray new];
+    NSMutableArray *tableMetadatas = [NSMutableArray new];
     NSArray *directoriesOffline = [self getOfflineDirectoryActiveAccount:activeAccount];
     NSString *father = @"";
+    NSSortDescriptor *descriptor;
 
     // Add directory
     
@@ -1762,10 +1770,10 @@
             if (upDir && directoryID && fileName) {
             
                 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(directoryID == %@) AND (account == %@) AND (directory == 1) AND (fileNameData == %@)", directoryID, activeAccount, fileName];
-                CCMetadata *metadata = [self getMetadataWithPreficate:predicate context:nil];
-            
-                if (metadata)
-                    [metadatas addObject:metadata];
+                TableMetadata *tableMetadata = [self getTableMetadataWithPreficate:predicate];
+                
+                if (tableMetadata)
+                    [tableMetadatas addObject:tableMetadata];
             }
         }
     }
@@ -1778,13 +1786,23 @@
     for (TableLocalFile *localFile in localFiles) {
         
         NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(account == %@) AND (fileID == %@)", activeAccount, localFile.fileID];
-        CCMetadata *metadata = [CCCoreData getMetadataWithPreficate:predicate context:nil];
+        TableMetadata *tableMetadata = [self getTableMetadataWithPreficate:predicate];
         
-        if (metadata)
-            [metadatas addObject:metadata];
+        if (tableMetadata)
+            [tableMetadatas addObject:tableMetadata];
     }
     
-    return [NSArray arrayWithArray:metadatas];    
+    // Order
+    
+    if ([fieldOrder isEqualToString:@"fileName"]) descriptor = [[NSSortDescriptor alloc] initWithKey:@"fileNamePrint" ascending:ascending selector:@selector(localizedCaseInsensitiveCompare:)];
+    
+    else if ([fieldOrder isEqualToString:@"fileDate"]) descriptor = [[NSSortDescriptor alloc] initWithKey:@"date" ascending:ascending selector:nil];
+    
+    else if ([fieldOrder isEqualToString:@"sessionTaskIdentifier"]) descriptor = [[NSSortDescriptor alloc] initWithKey:@"sessionTaskIdentifier" ascending:ascending selector:nil];
+    
+    else descriptor = [[NSSortDescriptor alloc] initWithKey:fieldOrder ascending:ascending selector:@selector(localizedCaseInsensitiveCompare:)];
+
+    return [tableMetadatas sortedArrayUsingDescriptors:[NSArray arrayWithObjects:descriptor, nil]];//[NSArray arrayWithArray:tableMetadatas];
 }
 
 #pragma --------------------------------------------------------------------------------------------

+ 12 - 11
iOSClient/Offline/CCOfflinePageContent.m

@@ -371,25 +371,26 @@
 {
     if ([_pageType isEqualToString:pageOfflineOffline]) {
         
+        NSMutableArray *metadatas = [NSMutableArray new];
+        NSArray *recordsTableMetadata ;
+        
         if (!_localServerUrl) {
             
-            dataSource = [CCCoreData getHomeOfflineActiveAccount:app.activeAccount directoryUser:app.directoryUser];
+            recordsTableMetadata = [CCCoreData getHomeOfflineActiveAccount:app.activeAccount directoryUser:app.directoryUser fieldOrder:[CCUtility getOrderSettings] ascending:[CCUtility getAscendingSettings]];
             
         } else {
             
-            NSMutableArray *metadatas = [NSMutableArray new];
-
             NSString *directoryID = [CCCoreData getDirectoryIDFromServerUrl:_localServerUrl activeAccount:app.activeAccount];
-            NSArray *recordsTableMetadata = [CCCoreData getTableMetadataWithPredicate:[NSPredicate predicateWithFormat:@"(account == %@) AND (directoryID == %@)", app.activeAccount, directoryID] fieldOrder:[CCUtility getOrderSettings] ascending:[CCUtility getAscendingSettings]];
-            
-            CCSectionDataSource *sectionDataSource = [CCSection creataDataSourseSectionTableMetadata:recordsTableMetadata listProgressMetadata:nil groupByField:nil replaceDateToExifDate:NO activeAccount:app.activeAccount];
+            recordsTableMetadata = [CCCoreData getTableMetadataWithPredicate:[NSPredicate predicateWithFormat:@"(account == %@) AND (directoryID == %@)", app.activeAccount, directoryID] fieldOrder:[CCUtility getOrderSettings] ascending:[CCUtility getAscendingSettings]];
+        }
+        
+        CCSectionDataSource *sectionDataSource = [CCSection creataDataSourseSectionTableMetadata:recordsTableMetadata listProgressMetadata:nil groupByField:nil replaceDateToExifDate:NO activeAccount:app.activeAccount];
             
-            NSArray *fileIDs = [sectionDataSource.sectionArrayRow objectForKey:@"_none_"];
-            for (NSString *fileID in fileIDs)
-                [metadatas addObject:[sectionDataSource.allRecordsDataSource objectForKey:fileID]];
+        NSArray *fileIDs = [sectionDataSource.sectionArrayRow objectForKey:@"_none_"];
+        for (NSString *fileID in fileIDs)
+            [metadatas addObject:[sectionDataSource.allRecordsDataSource objectForKey:fileID]];
             
-            dataSource = [NSArray arrayWithArray:metadatas];
-        }
+        dataSource = [NSArray arrayWithArray:metadatas];
     }
     
     if ([_pageType isEqualToString:pageOfflineLocal]) {