marinofaggiana hace 5 años
padre
commit
ebf3787486
Se han modificado 2 ficheros con 69 adiciones y 13 borrados
  1. 18 1
      iOSClient/AppDelegate.m
  2. 51 12
      iOSClient/Main/CCMain.m

+ 18 - 1
iOSClient/AppDelegate.m

@@ -184,6 +184,7 @@
     // Observer
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(deleteFile:) name:k_notificationCenter_deleteFile object:nil];
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moveFile:) name:k_notificationCenter_moveFile object:nil];
+    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(copyFile:) name:k_notificationCenter_copyFile object:nil];
 
     return YES;
 }
@@ -684,7 +685,23 @@
         if (account) {
             [[NCNetworking sharedInstance] moveMetadata:metadata serverUrlTo:serverUrlTo overwrite:true completion:^(NSInteger errorCode, NSString *errorDescription) { }];
         } else {
-            [self deleteFile:[NSNotification new]];
+            [self moveFile:[NSNotification new]];
+        }
+    }
+}
+
+- (void)copyFile:(NSNotification *)notification
+{
+    if (self.arrayCopyMetadata.count > 0) {
+        tableMetadata *metadata = self.arrayCopyMetadata.firstObject;
+        NSString *serverUrlTo = self.arrayCopyServerUrlTo.firstObject;
+        [self.arrayCopyMetadata removeObjectAtIndex:0];
+        [self.arrayCopyServerUrlTo removeObjectAtIndex:0];
+        tableAccount *account = [[NCManageDatabase sharedInstance] getAccountWithPredicate:[NSPredicate predicateWithFormat:@"account == %@", metadata.account]];
+        if (account) {
+            [[NCNetworking sharedInstance] copyMetadata:metadata serverUrlTo:serverUrlTo overwrite:true completion:^(NSInteger errorCode, NSString *errorDescription) { }];
+        } else {
+            [self copyFile:[NSNotification new]];
         }
     }
 }

+ 51 - 12
iOSClient/Main/CCMain.m

@@ -132,6 +132,7 @@
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(favoriteFile:) name:k_notificationCenter_favoriteFile object:nil];
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(renameFile:) name:k_notificationCenter_renameFile object:nil];
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moveFile:) name:k_notificationCenter_moveFile object:nil];
+    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(copyFile:) name:k_notificationCenter_copyFile object:nil];
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(createFolder:) name:k_notificationCenter_createFolder object:nil];
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeTheming) name:k_notificationCenter_changeTheming object:nil];
     
@@ -481,6 +482,25 @@
     }
 }
 
+- (void)copyFile:(NSNotification *)notification
+{
+    if (self.view.window == nil) { return; }
+    
+    NSDictionary *userInfo = notification.userInfo;
+    tableMetadata *metadata = userInfo[@"metadata"];
+    NSString *serverUrlTo = userInfo[@"serverUrlTo"];
+    NSInteger errorCode = [userInfo[@"errorCode"] integerValue];
+    NSString *errorDescription = userInfo[@"errorDescription"];
+    
+    if (errorCode == 0) {
+        if ([metadata.serverUrl isEqualToString:self.serverUrl] || [serverUrlTo isEqualToString:self.serverUrl]) {
+            [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:self.serverUrl ocId:nil action:k_action_NULL];
+        }
+    } else {
+        [[NCContentPresenter shared] messageNotification:@"_error_" description:errorDescription delay:k_dismissAfterSecond type:messageTypeError errorCode:errorCode];
+    }
+}
+
 - (void)favoriteFile:(NSNotification *)notification
 {
     if (self.view.window == nil) { return; }
@@ -1556,29 +1576,43 @@
 }
 
 #pragma --------------------------------------------------------------------------------------------
-#pragma mark ===== Move =====
+#pragma mark ===== Move / Copy =====
 #pragma --------------------------------------------------------------------------------------------
 
-- (void)moveFileOrFolderMetadata:(tableMetadata *)metadata serverUrlTo:(NSString *)serverUrlTo
+- (void)moveFileOrFolderMetadata:(tableMetadata *)metadata serverUrlTo:(NSString *)serverUrlTo move:(BOOL)move overwrite:(BOOL)overwrite
 {
     if (_isSelectedMode && [_selectedocIdsMetadatas count] == 0)
         return;
-     
+    
+    NSMutableArray *arrayMetadata, *arrayServerUrlTo;
+    
+    if (move) {
+        arrayMetadata = appDelegate.arrayMoveMetadata;
+        arrayServerUrlTo = appDelegate.arrayMoveServerUrlTo;
+    } else {
+        arrayMetadata = appDelegate.arrayCopyMetadata;
+        arrayServerUrlTo = appDelegate.arrayCopyServerUrlTo;
+    }
+    
     if ([_selectedocIdsMetadatas count] > 0) {
         for (NSString *key in _selectedocIdsMetadatas) {
             tableMetadata *metadata = [_selectedocIdsMetadatas objectForKey:key];
-            [appDelegate.arrayMoveMetadata addObject:metadata];
-            [appDelegate.arrayMoveServerUrlTo addObject:serverUrlTo];
+            [arrayMetadata addObject:metadata];
+            [arrayServerUrlTo addObject:serverUrlTo];
         }
     } else {
-        [appDelegate.arrayMoveMetadata addObject:metadata];
-        [appDelegate.arrayMoveServerUrlTo addObject:serverUrlTo];
+        [arrayMetadata addObject:metadata];
+        [arrayServerUrlTo addObject:serverUrlTo];
     }
     
-    [[NCNetworking sharedInstance] moveMetadata:appDelegate.arrayMoveMetadata.firstObject serverUrlTo:appDelegate.arrayMoveServerUrlTo.firstObject overwrite:true completion:^(NSInteger errorCode, NSString * errorDesctiption) { }];
+    if (move) {
+        [[NCNetworking sharedInstance] moveMetadata:arrayMetadata.firstObject serverUrlTo:arrayServerUrlTo.firstObject overwrite:overwrite completion:^(NSInteger errorCode, NSString * errorDesctiption) { }];
+    } else {
+        [[NCNetworking sharedInstance] copyMetadata:arrayMetadata.firstObject serverUrlTo:arrayServerUrlTo.firstObject overwrite:overwrite completion:^(NSInteger errorCode, NSString * errorDesctiption) { }];
+    }
     
-    [appDelegate.arrayMoveMetadata removeObjectAtIndex:0];
-    [appDelegate.arrayMoveServerUrlTo removeObjectAtIndex:0];
+    [arrayMetadata removeObjectAtIndex:0];
+    [arrayServerUrlTo removeObjectAtIndex:0];
     
     // End Select Table View
     [self tableViewSelect:false];
@@ -1598,11 +1632,16 @@
             return;
         }
         
+        BOOL move = true;
+        BOOL overwrite = false;
+        
+        if ([buttonType isEqualToString:@"done1"]) { move = false; }
+        
         if ([_selectedocIdsMetadatas count] > 0) {
             NSArray *metadatas = [_selectedocIdsMetadatas allValues];
-            [self moveFileOrFolderMetadata:[metadatas objectAtIndex:0] serverUrlTo:serverUrl];
+            [self moveFileOrFolderMetadata:[metadatas objectAtIndex:0] serverUrlTo:serverUrl move:move overwrite:overwrite];
         } else {
-            [self moveFileOrFolderMetadata:self.metadata serverUrlTo:serverUrl];
+            [self moveFileOrFolderMetadata:self.metadata serverUrlTo:serverUrl move:move overwrite:overwrite];
         }
     }
 }