Marino Faggiana преди 8 години
родител
ревизия
e8146ad104
променени са 5 файла, в които са добавени 121 реда и са изтрити 16 реда
  1. 7 7
      iOSClient/AppDelegate.m
  2. 1 0
      iOSClient/CCGlobal.h
  3. 1 0
      iOSClient/CCImages.h
  4. 54 8
      iOSClient/Offline/CCOffline.m
  5. 58 1
      iOSClient/Offline/CCOfflinePageContent.m

+ 7 - 7
iOSClient/AppDelegate.m

@@ -355,14 +355,14 @@
         NSLog(@"[LOG] Initialize Camera Upload");
         [[NSNotificationCenter defaultCenter] postNotificationName:@"initStateCameraUpload" object:nil];
         
+        NSLog(@"[LOG] Listning Favorites");
+        [[CCActions sharedInstance] listingFavorites:@"" delegate:self.activeOffline];
+        
         NSLog(@"[LOG] read file Offline");
         [[CCSynchronize sharedSynchronize] readFileOffline];
         
         NSLog(@"[LOG] read folder offline");
         [[CCSynchronize sharedSynchronize] readFolderOffline];
-        
-        NSLog(@"[LOG] Listning Favorites");
-        [[CCActions sharedInstance] listingFavorites:@"" delegate:self.activeOffline];
     });
     
     // Initialize Camera Upload
@@ -725,11 +725,11 @@
     item.image = [UIImage imageNamed:image_tabBarFile];
     item.selectedImage = [UIImage imageNamed:image_tabBarFile];
     
-    // Offline
+    // Favorite
     item = [tabBarController.tabBar.items objectAtIndex: k_tabBarApplicationIndexOffline];
-    [item setTitle:NSLocalizedString(@"_offline_", nil)];
-    item.image = [UIImage imageNamed:image_tabBarOffline];
-    item.selectedImage = [UIImage imageNamed:image_tabBarOffline];
+    [item setTitle:NSLocalizedString(@"_favorite_", nil)];
+    item.image = [UIImage imageNamed:image_tabBarFavorite];
+    item.selectedImage = [UIImage imageNamed:image_tabBarFavorite];
     
     // Hide (PLUS)
     item = [tabBarController.tabBar.items objectAtIndex: k_tabBarApplicationIndexHide];

+ 1 - 0
iOSClient/CCGlobal.h

@@ -255,6 +255,7 @@ extern NSString *const BKPasscodeKeychainServiceName;
 #define k_keyFileNameMaskAutomaticPhotos                @"fileNameMaskAutomaticPhotos"
 
 // Type of page Offline
+#define k_pageOfflineFavorites                          @"Favorites"
 #define k_pageOfflineOffline                            @"Offline"
 #define k_pageOfflineLocal                              @"Local"
 

+ 1 - 0
iOSClient/CCImages.h

@@ -146,6 +146,7 @@
 #define image_statusuploadcrypto                @"statusuploadcrypto"
 #define image_stoptask                          @"stoptask"
 #define image_stoptaskcrypto                    @"stoptaskcrypto"
+#define image_tabBarFavorite                    @"tabBarFavorite"
 #define image_tabBarOffline                     @"tabBarOffline"
 #define image_tabBarLocal                       @"tabBarLocal"
 #define image_tabBarPhotos                      @"tabBarPhotos"

+ 54 - 8
iOSClient/Offline/CCOffline.m

@@ -61,9 +61,9 @@
     [super viewDidLoad];
     
     // Create data model
-    _pageType = @[k_pageOfflineOffline, k_pageOfflineLocal];
-    _currentPageType = k_pageOfflineOffline;
-    self.title = NSLocalizedString(@"_offline_", nil);
+    _pageType = @[k_pageOfflineFavorites, k_pageOfflineOffline, k_pageOfflineLocal];
+    _currentPageType = k_pageOfflineFavorites;
+    self.title = NSLocalizedString(@"_favorites_", nil);
     
     // Create page view controller
     self.pageViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"OfflinePageViewController"];
@@ -171,6 +171,17 @@
     NSString *serverUrl = vc.serverUrl;
     _currentPageType = vc.pageType;
 
+    if ([_currentPageType isEqualToString:k_pageOfflineFavorites]) {
+        if (serverUrl)
+            self.title = NSLocalizedString(@"_favorites_", nil);
+        else
+            self.title = NSLocalizedString(@"_favorites_", nil);
+        
+        UITabBarItem *item = [self.tabBarController.tabBar.items objectAtIndex: k_tabBarApplicationIndexOffline];
+        item.selectedImage = [UIImage imageNamed:image_tabBarFavorite];
+        item.image = [UIImage imageNamed:image_tabBarFavorite];
+    }
+
     if ([_currentPageType isEqualToString:k_pageOfflineOffline]) {
         if (serverUrl)
             self.title = NSLocalizedString(@"_offline_", nil);
@@ -178,8 +189,8 @@
             self.title = NSLocalizedString(@"_offline_", nil);
         
         UITabBarItem *item = [self.tabBarController.tabBar.items objectAtIndex: k_tabBarApplicationIndexOffline];
-        item.selectedImage = [UIImage imageNamed:@"tabBarOffline"];
-        item.image = [UIImage imageNamed:@"tabBarOffline"];
+        item.selectedImage = [UIImage imageNamed:image_tabBarOffline];
+        item.image = [UIImage imageNamed:image_tabBarOffline];
     }
     
     if ([_currentPageType isEqualToString:k_pageOfflineLocal]) {
@@ -189,8 +200,8 @@
             self.title = NSLocalizedString(@"_local_storage_", nil);
         
         UITabBarItem *item = [self.tabBarController.tabBar.items objectAtIndex: k_tabBarApplicationIndexOffline];
-        item.selectedImage = [UIImage imageNamed:@"tabBarLocal"];
-        item.image = [UIImage imageNamed:@"tabBarLocal"];
+        item.selectedImage = [UIImage imageNamed:image_tabBarLocal];
+        item.image = [UIImage imageNamed:image_tabBarLocal];
     }
 }
 
@@ -200,12 +211,47 @@
 
 - (void)listingFavoritesSuccess:(CCMetadataNet *)metadataNet metadatas:(NSArray *)metadatas
 {
+    // verify active user
+    TableAccount *record = [CCCoreData getActiveAccount];
     
+    if (![record.account isEqualToString:metadataNet.account])
+        return;
+
+    for (CCMetadata *metadata in metadatas) {
+        
+        // Delete Record NOT in session
+        [CCCoreData deleteMetadataWithPredicate:[NSPredicate predicateWithFormat:@"(account == %@) AND (directoryID == %@) AND (fileID = %@) AND ((session == NULL) OR (session == ''))", app.activeAccount, metadata.directoryID, metadata.fileID]];
+        
+        // type of file
+        NSInteger typeFilename = [CCUtility getTypeFileName:metadata.fileName];
+        
+        // if crypto do not insert
+        if (typeFilename == k_metadataTypeFilenameCrypto) continue;
+        
+        // verify if the record encrypted has plist + crypto
+        if (typeFilename == k_metadataTypeFilenamePlist && metadata.directory == NO) {
+            
+            BOOL isCryptoComplete = NO;
+            NSString *fileNameCrypto = [CCUtility trasformedFileNamePlistInCrypto:metadata.fileName];
+            
+            for (CCMetadata *completeMetadata in metadatas) {
+                
+                if (completeMetadata.cryptated == NO) continue;
+                else  if ([completeMetadata.fileName isEqualToString:fileNameCrypto]) {
+                    isCryptoComplete = YES;
+                    break;
+                }
+            }
+            if (isCryptoComplete == NO) continue;
+        }
+        
+        // end test, insert in CoreData
+        [CCCoreData addMetadata:metadata activeAccount:app.activeAccount activeUrl:app.activeUrl context:nil];
+    }
 }
 
 - (void)listingFavoritesFailure:(CCMetadataNet *)metadataNet message:(NSString *)message errorCode:(NSInteger)errorCode
 {
-    
 }
 
 @end

+ 58 - 1
iOSClient/Offline/CCOfflinePageContent.m

@@ -57,6 +57,10 @@
     self.tableView.allowsMultipleSelectionDuringEditing = NO;
     
     // calculate _serverUrl
+    if ([self.pageType isEqualToString:k_pageOfflineFavorites] && !_serverUrl) {
+        _serverUrl = nil;
+    }
+    
     if ([self.pageType isEqualToString:k_pageOfflineOffline] && !_serverUrl) {
         _serverUrl = nil;
     }
@@ -143,6 +147,9 @@
 {
     NSString *text;
     
+    if ([self.pageType isEqualToString:k_pageOfflineFavorites])
+        text = [NSString stringWithFormat:@"%@", @""];
+    
     if ([self.pageType isEqualToString:k_pageOfflineOffline])
         text = [NSString stringWithFormat:@"%@", @""];
     
@@ -158,6 +165,9 @@
 {
     NSString *text;
     
+    if ([self.pageType isEqualToString:k_pageOfflineFavorites])
+        text = [NSString stringWithFormat:@"\n%@", NSLocalizedString(@"_tutorial_favorite_view_", nil)];
+    
     if ([self.pageType isEqualToString:k_pageOfflineOffline])
         text = [NSString stringWithFormat:@"\n%@", NSLocalizedString(@"_tutorial_offline_view_", nil)];
         
@@ -375,6 +385,11 @@
 {
     CCMetadata *metadata;
     
+    if ([_pageType isEqualToString:k_pageOfflineFavorites]) {
+        NSManagedObject *record = [dataSource objectAtIndex:indexPath.row];
+        metadata = [CCCoreData getMetadataWithPreficate:[NSPredicate predicateWithFormat:@"(fileID == %@) AND (account == %@)", [record valueForKey:@"fileID"], app.activeAccount] context:nil];
+    }
+    
     if ([_pageType isEqualToString:k_pageOfflineOffline]) {
         
         NSManagedObject *record = [dataSource objectAtIndex:indexPath.row];
@@ -399,6 +414,30 @@
 
 - (void)reloadDatasource
 {
+    if ([_pageType isEqualToString:k_pageOfflineFavorites]) {
+        
+        NSMutableArray *metadatas = [NSMutableArray new];
+        NSArray *recordsTableMetadata ;
+        
+        if (!_serverUrl) {
+            
+            recordsTableMetadata = [CCCoreData  getTableMetadataWithPredicate:[NSPredicate predicateWithFormat:@"(account == %@) AND (favorite == 1)", app.activeAccount] context:nil];
+            
+        } else {
+            
+            NSString *directoryID = [CCCoreData getDirectoryIDFromServerUrl:_serverUrl activeAccount:app.activeAccount];
+            recordsTableMetadata = [CCCoreData getTableMetadataWithPredicate:[NSPredicate predicateWithFormat:@"(account == %@) AND (directoryID == %@)", app.activeAccount, directoryID] fieldOrder:[CCUtility getOrderSettings] ascending:[CCUtility getAscendingSettings]];
+        }
+        
+        CCSectionDataSource *sectionDataSource = [CCSection creataDataSourseSectionMetadata: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]];
+        
+        dataSource = [NSArray arrayWithArray:metadatas];
+    }
+
     if ([_pageType isEqualToString:k_pageOfflineOffline]) {
         
         NSMutableArray *metadatas = [NSMutableArray new];
@@ -467,6 +506,16 @@
     selectionColor.backgroundColor = COLOR_SELECT_BACKGROUND;
     cell.selectedBackgroundView = selectionColor;
     
+    // i am in Favorites
+    if ([_pageType isEqualToString:k_pageOfflineFavorites]) {
+        
+        metadata = [dataSource objectAtIndex:indexPath.row];
+        cell.fileImageView.image = [UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%@/%@.ico", app.directoryUser, metadata.fileID]];
+        
+        if (_serverUrl == nil)
+            cell.offlineImageView.image = [UIImage imageNamed:image_favorite];
+    }
+
     // i am in Offline
     if ([_pageType isEqualToString:k_pageOfflineOffline]) {
         
@@ -581,7 +630,7 @@
     
     NSString *serverUrl;
     
-    if ([_pageType isEqualToString:k_pageOfflineOffline] && !_serverUrl) {
+    if (([_pageType isEqualToString:k_pageOfflineFavorites] || [_pageType isEqualToString:k_pageOfflineOffline]) && !_serverUrl) {
     
         serverUrl = [CCCoreData getServerUrlFromDirectoryID:_metadata.directoryID activeAccount:app.activeAccount];
         
@@ -697,6 +746,14 @@
     
     NSMutableArray *allRecordsDataSourceImagesVideos = [NSMutableArray new];
     
+    if ([self.pageType isEqualToString:k_pageOfflineFavorites]) {
+        
+        for (CCMetadata *metadata in dataSource) {
+            if ([metadata.typeFile isEqualToString: k_metadataTypeFile_image] || [metadata.typeFile isEqualToString: k_metadataTypeFile_video])
+                [allRecordsDataSourceImagesVideos addObject:metadata];
+        }
+    }
+    
     if ([self.pageType isEqualToString:k_pageOfflineOffline]) {
         
         for (CCMetadata *metadata in dataSource) {