Browse Source

Search serverUrl routine

Marino Faggiana 8 years ago
parent
commit
8f8f2aca57

+ 39 - 0
iOSClient/Actions/CCActions.swift

@@ -38,6 +38,12 @@ import Foundation
     func uploadFileFailure(_ metadataNet: CCMetadataNet, fileID: String, serverUrl: String, selector: String, message: String, errorCode: NSInteger)
 }
 
+@objc protocol CCActionsSearchDelegate  {
+    
+    func searchSuccess(_ metadataNet: CCMetadataNet, metadatas: [Any])
+    func searchFailure(_ metadataNet: CCMetadataNet, message: NSString, errorCode: NSInteger)
+}
+
 class CCActions: NSObject {
     
     //MARK: Shared Instance
@@ -277,6 +283,39 @@ class CCActions: NSObject {
         
         metadataNet.delegate?.uploadFileFailure(metadataNet, fileID:fileID, serverUrl: serverUrl, selector: selector, message: message, errorCode: errorCode)
     }
+    
+    // --------------------------------------------------------------------------------------------
+    // MARK: Search
+    // --------------------------------------------------------------------------------------------
+    
+    func search(_ serverUrl : String?, fileName : String, delegate: AnyObject) {
+        
+        if (serverUrl != nil) {
+            
+            metadataNet.action = actionReadFolder;
+            metadataNet.delegate = delegate
+            metadataNet.fileName = fileName
+            metadataNet.selector = selectorSearch
+            metadataNet.serverUrl = serverUrl!
+
+            appDelegate.addNetworkingOperationQueue(appDelegate.netQueue, delegate: self, metadataNet: metadataNet)
+            
+        } else {
+            
+            // Search DAV API
+        }
+    }
+    
+    func searchSuccess(_ metadataNet: CCMetadataNet, metadatas: [CCMetadata]) {
+        
+        metadataNet.delegate?.searchSuccess(metadataNet, metadatas: metadatas)
+    }
+    
+    func searchFailure(_ metadataNet: CCMetadataNet, message: NSString, errorCode: NSInteger) {
+        
+        metadataNet.delegate?.searchFailure(metadataNet, message: message, errorCode: errorCode)
+    }
+
 }
 
 

+ 1 - 0
iOSClient/CCGlobal.h

@@ -242,6 +242,7 @@ extern NSString *const BKPasscodeKeychainServiceName;
 #define selectorRename                  @"rename"
 #define selectorSave                    @"save"
 #define selectorShare                   @"share"
+#define selectorSearch                  @"search"
 #define selectorOfflineFolder           @"offlineFolder"
 #define selectorUnshare                 @"unshare"
 #define selectorUpdateShare             @"updateShare"

+ 50 - 38
iOSClient/Main/CCMain.m

@@ -40,7 +40,7 @@
 #define alertRename 3
 #define alertOfflineFolder 4
 
-@interface CCMain () <CCActionsDeleteDelegate, CCActionsRenameDelegate>
+@interface CCMain () <CCActionsDeleteDelegate, CCActionsRenameDelegate, CCActionsSearchDelegate>
 {
     CCMetadata *_metadataSegue;
     CCMetadata *_metadata;
@@ -80,6 +80,7 @@
     
     // Search
     BOOL _isSearchMode;
+    NSString *_searchFileName;
 }
 @end
 
@@ -1859,16 +1860,9 @@
     // Search Mode
     if (_isSearchMode) {
         
-        CCMetadataNet *metadataNet = [[CCMetadataNet alloc] initWithAccount:app.activeAccount];
-        
-        metadataNet.action = actionSearch;
-        metadataNet.date = [NSDate date];
-        metadataNet.directoryID = directoryID;
-        metadataNet.priority = NSOperationQueuePriorityVeryHigh;
-        metadataNet.serverUrl = [CCCoreData getServerUrlFromDirectoryID:directoryID activeAccount:app.activeAccount];
+        [[CCActions sharedInstance] search:_serverUrl fileName:_searchFileName delegate:self];
+        [self tableViewReload];
         
-        [app addNetworkingOperationQueue:app.netQueue delegate:self metadataNet:metadataNet];
-                
         return;
     }
     
@@ -1895,6 +1889,52 @@
     }
 }
 
+#pragma mark -
+#pragma --------------------------------------------------------------------------------------------
+#pragma mark ===== Search =====
+#pragma --------------------------------------------------------------------------------------------
+
+-(void) updateSearchResultsForSearchController:(UISearchController *)searchController
+{
+    _isSearchMode = YES;
+    
+    _sectionDataSource = [CCSectionDataSource new];
+    [self deleteRefreshControl];
+    
+    if (searchController.searchBar.text.length > 2) {
+        
+        _searchFileName = searchController.searchBar.text;
+        [self readFolderWithForced:YES];
+    }
+    
+    //let scopes = resultSearchController.searchBar.scopeButtonTitles! as [String]
+    //let currentScope = scopes[resultSearchController.searchBar.selectedScopeButtonIndex] as String
+}
+
+- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
+{
+    _isSearchMode = NO;
+    
+    [self.searchController setActive:NO];
+    [self createRefreshControl];
+    
+    // forse reload
+    _dateReadDataSource = nil;
+    [self reloadDatasource];
+    
+}
+
+- (void)searchFailure:(CCMetadataNet *)metadataNet message:(NSString *)message errorCode:(NSInteger)errorCode
+{
+    
+}
+
+- (void)searchSuccess:(CCMetadataNet *)metadataNet metadatas:(NSArray *)metadatas
+{
+    
+}
+
+#pragma mark -
 #pragma --------------------------------------------------------------------------------------------
 #pragma mark ===== Delete File or Folder =====
 #pragma --------------------------------------------------------------------------------------------
@@ -3993,34 +4033,6 @@
     }
 }
 
-#pragma mark -
-#pragma --------------------------------------------------------------------------------------------
-#pragma mark ===== Search =====
-#pragma --------------------------------------------------------------------------------------------
-
--(void) updateSearchResultsForSearchController:(UISearchController *)searchController
-{
-    _isSearchMode = YES;
-    
-    _sectionDataSource = [CCSectionDataSource new];
-    [self deleteRefreshControl];
-    
-    [self tableViewReload];
-}
-
-- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
-{
-    _isSearchMode = NO;
-    
-    [self.searchController setActive:NO];
-    [self createRefreshControl];
-    
-    // forse reload
-    _dateReadDataSource = nil;
-    [self reloadDatasource];
-    
-}
-
 #pragma mark -
 #pragma --------------------------------------------------------------------------------------------
 #pragma mark ===== Swipe Tablet -> menu =====

+ 5 - 0
iOSClient/Networking/OCNetworking.h

@@ -99,6 +99,11 @@
 - (void)setNotificationServerSuccess:(CCMetadataNet *)metadataNet;
 - (void)setNotificationServerFailure:(CCMetadataNet *)metadataNet message:(NSString *)message errorCode:(NSInteger)errorCode;
 
+// Search
+
+- (void)searchSuccess:(CCMetadataNet *)metadataNet metadatas:(NSArray *)metadatas;
+- (void)searchFailure:(CCMetadataNet *)metadataNet message:(NSString *)message errorCode:(NSInteger)errorCode;
+
 // HUD
 - (void)progressTask:(NSString *)fileID serverUrl:(NSString *)serverUrl cryptated:(BOOL)cryptated progress:(float)progress;
 

+ 17 - 4
iOSClient/Networking/OCNetworking.m

@@ -374,13 +374,23 @@
                 }
                 // ------------------------
                 
-                [metadatas addObject:[CCUtility trasformedOCFileToCCMetadata:itemDto fileNamePrint:itemDto.fileName serverUrl:_metadataNet.serverUrl directoryID:directoryID cameraFolderName:cameraFolderName cameraFolderPath:cameraFolderPath activeAccount:_metadataNet.account directoryUser:directoryUser typeCloud:_typeCloud]];
+                if ([_metadataNet.selector isEqualToString:selectorSearch] && [itemDto.fileName.lowercaseString hasPrefix:_metadataNet.fileName.lowercaseString]) {
+                    [metadatas addObject:[CCUtility trasformedOCFileToCCMetadata:itemDto fileNamePrint:itemDto.fileName serverUrl:_metadataNet.serverUrl directoryID:directoryID cameraFolderName:cameraFolderName cameraFolderPath:cameraFolderPath activeAccount:_metadataNet.account directoryUser:directoryUser typeCloud:_typeCloud]];
+                }
+                
+                if ([_metadataNet.selector isEqualToString:selectorReadFolder]) {
+                    [metadatas addObject:[CCUtility trasformedOCFileToCCMetadata:itemDto fileNamePrint:itemDto.fileName serverUrl:_metadataNet.serverUrl directoryID:directoryID cameraFolderName:cameraFolderName cameraFolderPath:cameraFolderPath activeAccount:_metadataNet.account directoryUser:directoryUser typeCloud:_typeCloud]];
+                }
             }
             
             dispatch_async(dispatch_get_main_queue(), ^{
-                                
-                if ([self.delegate respondsToSelector:@selector(readFolderSuccess:permissions:rev:metadatas:)])
+                
+                if ([_metadataNet.selector isEqualToString:selectorReadFolder] && [self.delegate respondsToSelector:@selector(readFolderSuccess:permissions:rev:metadatas:)])
                     [self.delegate readFolderSuccess:_metadataNet permissions:permissions rev:rev metadatas:metadatas];
+
+                if ([_metadataNet.selector isEqualToString:selectorSearch] && [self.delegate respondsToSelector:@selector(searchSuccess:metadatas:)])
+                    [self.delegate searchSuccess:_metadataNet metadatas:metadatas];
+        
             });
         });
         
@@ -392,9 +402,12 @@
         if (errorCode == 0)
             errorCode = error.code;
         
-        if ([self.delegate respondsToSelector:@selector(readFolderFailure:message:errorCode:)])
+        if ([_metadataNet.selector isEqualToString:selectorReadFolder] && [self.delegate respondsToSelector:@selector(readFolderFailure:message:errorCode:)])
             [self.delegate readFolderFailure:_metadataNet message:[error.userInfo valueForKey:@"NSLocalizedDescription"] errorCode:errorCode];
         
+        if ([_metadataNet.selector isEqualToString:selectorSearch] && [self.delegate respondsToSelector:@selector(searchFailure:message:errorCode:)])
+            [self.delegate searchFailure:_metadataNet message:[error.userInfo valueForKey:@"NSLocalizedDescription"] errorCode:errorCode];
+
         // Request trusted certificated
         if ([error code] == NSURLErrorServerCertificateUntrusted)
             [[CCCertificate sharedManager] presentViewControllerCertificateWithTitle:[error localizedDescription] viewController:(UIViewController *)self.delegate delegate:self];

+ 3 - 3
iOSClient/Offline/CCOfflinePageContent.m

@@ -98,7 +98,7 @@
 }
 
 #pragma --------------------------------------------------------------------------------------------
-#pragma mark ==== DZNEmptyDataSetSource Methods ====
+#pragma mark ==== DZNEmptyDataSetSource ====
 #pragma --------------------------------------------------------------------------------------------
 
 - (BOOL)emptyDataSetShouldDisplay:(UIScrollView *)scrollView
@@ -171,7 +171,7 @@
 }
 
 #pragma --------------------------------------------------------------------------------------------
-#pragma mark ===== UIDocumentInteractionControllerDelegate =====
+#pragma mark ===== UIDocumentInteractionController <delegate> =====
 #pragma --------------------------------------------------------------------------------------------
 
 - (void)documentInteractionControllerDidDismissOptionsMenu:(UIDocumentInteractionController *)controller
@@ -185,7 +185,7 @@
 }
 
 #pragma --------------------------------------------------------------------------------------------
-#pragma mark ===== Delete =====
+#pragma mark ===== Delete <delegate> =====
 #pragma--------------------------------------------------------------------------------------------
 
 - (void)deleteFileOrFolderFailure:(CCMetadataNet *)metadataNet message:(NSString *)message errorCode:(NSInteger)errorCode