Marino Faggiana 6 tahun lalu
induk
melakukan
f35281dab5

+ 21 - 0
iOSClient/Images.xcassets/networkInProgress.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "networkInProgress@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

TEMPAT SAMPAH
iOSClient/Images.xcassets/networkInProgress.imageset/networkInProgress@2x.png


+ 1 - 3
iOSClient/Main/CCMain.h

@@ -36,12 +36,10 @@
 #import "CCLogin.h"
 #import "CCCellMain.h"
 #import "CCCellMainTransfer.h"
-#import "CCMove.h"
 #import "CCDetail.h"
 #import "CTAssetsPickerController.h"
 #import "CCShareOC.h"
 #import "CCShareInfoCMOC.h"
-#import "CCMove.h"
 #import "CCGraphics.h"
 #import "CCSection.h"
 #import "CCUtility.h"
@@ -51,7 +49,7 @@
 
 @class tableMetadata;
 
-@interface CCMain : UIViewController <UITableViewDataSource, UITableViewDelegate, UIActionSheetDelegate, UIGestureRecognizerDelegate, UIDocumentInteractionControllerDelegate, UIViewControllerPreviewingDelegate, CCMoveDelegate, CTAssetsPickerControllerDelegate, BKPasscodeViewControllerDelegate, UISplitViewControllerDelegate, UIPopoverControllerDelegate, CCShareOCDelegate, CCPeekPopDelegate, UIDocumentMenuDelegate, UIDocumentPickerDelegate, UISearchResultsUpdating, UISearchControllerDelegate, UISearchBarDelegate, UIScrollViewDelegate, DZNEmptyDataSetSource, DZNEmptyDataSetDelegate>
+@interface CCMain : UIViewController <UITableViewDataSource, UITableViewDelegate, UIActionSheetDelegate, UIGestureRecognizerDelegate, UIDocumentInteractionControllerDelegate, UIViewControllerPreviewingDelegate, CTAssetsPickerControllerDelegate, BKPasscodeViewControllerDelegate, UISplitViewControllerDelegate, UIPopoverControllerDelegate, CCShareOCDelegate, CCPeekPopDelegate, UIDocumentMenuDelegate, UIDocumentPickerDelegate, UISearchResultsUpdating, UISearchControllerDelegate, UISearchBarDelegate, UIScrollViewDelegate, DZNEmptyDataSetSource, DZNEmptyDataSetDelegate>
 
 @property (nonatomic, weak) IBOutlet UITableView *tableView;
 @property (nonatomic, strong) tableMetadata *metadata;

+ 22 - 59
iOSClient/Main/CCMain.m

@@ -1856,44 +1856,33 @@
     }];
 }
 
-// DELEGATE : Move
-- (void)dismissMove
+// DELEGATE : Select
+- (void)dismissSelectWithServerUrl:(NSString *)serverUrl metadata:(tableMetadata *)metadata type:(NSString *)type
 {
-    [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:self.serverUrl fileID:nil action:k_action_NULL];
-}
-
-// DELEGATE : Move
-- (void)moveServerUrlTo:(NSString *)serverUrlTo title:(NSString *)title type:(NSString *)type
-{
-    [_queueSelector removeAllObjects];
-    
-    // E2EE DENIED
-    if ([CCUtility isFolderEncrypted:serverUrlTo account:appDelegate.activeAccount]) {
+    if (serverUrl == nil) {
+        [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:self.serverUrl fileID:nil action:k_action_NULL];
+    } else {
+        [_queueSelector removeAllObjects];
         
-        [appDelegate messageNotification:@"_move_" description:@"Not possible move files to encrypted directory" visible:YES delay:k_dismissAfterSecond type:TWMessageBarMessageTypeInfo errorCode:0];
-        return;
-    }
-    
-    if ([_selectedFileIDsMetadatas count] > 0) {
+        // E2EE DENIED
+        if ([CCUtility isFolderEncrypted:serverUrl account:appDelegate.activeAccount]) {
             
-        _numSelectedFileIDsMetadatas = [_selectedFileIDsMetadatas count];
-        NSArray *metadatas = [_selectedFileIDsMetadatas allValues];
+            [appDelegate messageNotification:@"_move_" description:@"Not possible move files to encrypted directory" visible:YES delay:k_dismissAfterSecond type:TWMessageBarMessageTypeInfo errorCode:0];
+            return;
+        }
+        
+        if ([_selectedFileIDsMetadatas count] > 0) {
             
-        [self performSelectorOnMainThread:@selector(moveFileOrFolderMetadata:) withObject:@[[metadatas objectAtIndex:0], serverUrlTo, [NSNumber numberWithInteger:[_selectedFileIDsMetadatas count]], [NSNumber numberWithInteger:_numSelectedFileIDsMetadatas]] waitUntilDone:NO];
+            _numSelectedFileIDsMetadatas = [_selectedFileIDsMetadatas count];
+            NSArray *metadatas = [_selectedFileIDsMetadatas allValues];
             
-    } else {
-        
-        _numSelectedFileIDsMetadatas = 1;
-        [self performSelectorOnMainThread:@selector(moveFileOrFolderMetadata:) withObject:@[self.metadata, serverUrlTo, [NSNumber numberWithInteger:1], [NSNumber numberWithInteger:_numSelectedFileIDsMetadatas]] waitUntilDone:NO];
-    }
-}
-
-- (void)dismissSelectWithServerUrl:(NSString *)withServerUrl metadata:(tableMetadata *)metadata type:(NSString *)type
-{
-    if (withServerUrl == nil && metadata == nil) {
-        [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:self.serverUrl fileID:nil action:k_action_NULL];
-    } else {
-        
+            [self performSelectorOnMainThread:@selector(moveFileOrFolderMetadata:) withObject:@[[metadatas objectAtIndex:0], serverUrl, [NSNumber numberWithInteger:[_selectedFileIDsMetadatas count]], [NSNumber numberWithInteger:_numSelectedFileIDsMetadatas]] waitUntilDone:NO];
+            
+        } else {
+            
+            _numSelectedFileIDsMetadatas = 1;
+            [self performSelectorOnMainThread:@selector(moveFileOrFolderMetadata:) withObject:@[self.metadata, serverUrl, [NSNumber numberWithInteger:1], [NSNumber numberWithInteger:_numSelectedFileIDsMetadatas]] waitUntilDone:NO];
+        }
     }
 }
 
@@ -1902,32 +1891,6 @@
     if (_isSelectedMode && [_selectedFileIDsMetadatas count] == 0)
         return;
     
-    /*
-    UINavigationController* navigationController = [[UIStoryboard storyboardWithName:@"CCMove" bundle:nil] instantiateViewControllerWithIdentifier:@"CCMove"];
-    
-    CCMove *viewController = (CCMove *)navigationController.topViewController;
-
-    viewController.delegate = self;
-    viewController.move.title = NSLocalizedString(@"_move_", nil);
-    viewController.tintColor = [NCBrandColor sharedInstance].brandText;
-    viewController.barTintColor = [NCBrandColor sharedInstance].brand;
-    viewController.tintColorTitle = [NCBrandColor sharedInstance].brandText;
-    viewController.networkingOperationQueue = appDelegate.netQueue;
-    // E2EE
-    viewController.includeDirectoryE2EEncryption = NO;
-    
-    [navigationController setModalPresentationStyle:UIModalPresentationFormSheet];
-    [self presentViewController:navigationController animated:YES completion:nil];
-     
-     @objc var titleCurrentFolder = NSLocalizedString("_select_", comment: "")
-     @objc var serverUrl = ""
-     @objc var directoryID = ""
-     @objc var hideButtonCreateFolder = false
-     @objc var selectFile = false
-     @objc var includeDirectoryE2EEncryption = false
-     @objc var includeImages = false
-    */
-    
     UINavigationController *navigationController = [[UIStoryboard storyboardWithName:@"NCSelect" bundle:nil] instantiateInitialViewController];
     NCSelect *viewController = (NCSelect *)navigationController.topViewController;
     

+ 57 - 69
iOSClient/Select/NCSelect.swift

@@ -24,7 +24,7 @@
 import Foundation
 
 @objc protocol NCSelectDelegate {
-    @objc func dismissSelect(withServerUrl: String?, metadata: tableMetadata?, type: String)
+    @objc func dismissSelect(serverUrl: String?, metadata: tableMetadata?, type: String)
 }
 
 class NCSelect: UIViewController ,UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout, UIGestureRecognizerDelegate, NCListCellDelegate, NCGridCellDelegate, NCSectionHeaderMenuDelegate, DropdownMenuDelegate, DZNEmptyDataSetSource, DZNEmptyDataSetDelegate {
@@ -36,8 +36,9 @@ class NCSelect: UIViewController ,UICollectionViewDataSource, UICollectionViewDe
     @IBOutlet fileprivate weak var buttonCreateFolder: UIBarButtonItem!
     @IBOutlet fileprivate weak var buttonDone: UIBarButtonItem!
 
-    // external settings
+    // ------ external settings ------------------------------------
     @objc var delegate: NCSelectDelegate?
+    
     @objc var hideButtonCreateFolder = false
     @objc var selectFile = false
     @objc var includeDirectoryE2EEncryption = false
@@ -48,10 +49,12 @@ class NCSelect: UIViewController ,UICollectionViewDataSource, UICollectionViewDe
     var titleCurrentFolder = NCBrandOptions.sharedInstance.brand
     var serverUrl = ""
     var directoryID = ""
+    // -------------------------------------------------------------
     
     private let appDelegate = UIApplication.shared.delegate as! AppDelegate
     
     private var isEditMode = false
+    private var networkInProgress = false
     private var selectFileID = [String]()
     
     private var sectionDatasource = CCSectionDataSourceMetadata()
@@ -72,8 +75,6 @@ class NCSelect: UIViewController ,UICollectionViewDataSource, UICollectionViewDe
     
     private let refreshControl = UIRefreshControl()
     
-    private var metadataSelect = tableMetadata()
-    
     override func viewDidLoad() {
         super.viewDidLoad()
         
@@ -161,13 +162,23 @@ class NCSelect: UIViewController ,UICollectionViewDataSource, UICollectionViewDe
     }
     
     func image(forEmptyDataSet scrollView: UIScrollView) -> UIImage? {
-        return CCGraphics.changeThemingColorImage(UIImage.init(named: "filesNoFiles"), multiplier: 2, color: NCBrandColor.sharedInstance.brandElement)
+        if networkInProgress {
+            return CCGraphics.changeThemingColorImage(UIImage.init(named: "networkInProgress"), multiplier: 2, color: UIColor.lightGray)
+        } else {
+            return CCGraphics.changeThemingColorImage(UIImage.init(named: "filesNoFiles"), multiplier: 2, color: NCBrandColor.sharedInstance.brandElement)
+        }
     }
     
     func title(forEmptyDataSet scrollView: UIScrollView) -> NSAttributedString? {
-        let text = "\n"+NSLocalizedString("_files_no_files_", comment: "")
         let attributes = [NSAttributedString.Key.font: UIFont.boldSystemFont(ofSize: 20), NSAttributedString.Key.foregroundColor: UIColor.lightGray]
-        return NSAttributedString.init(string: text, attributes: attributes)
+        
+        if networkInProgress {
+            return NSAttributedString.init(string: "\n"+NSLocalizedString("_request_in_progress_", comment: ""), attributes: attributes)
+        } else if includeImages {
+            return NSAttributedString.init(string: "\n"+NSLocalizedString("_files_no_files_", comment: ""), attributes: attributes)
+        } else {
+            return NSAttributedString.init(string: "\n"+NSLocalizedString("_files_no_folders_", comment: ""), attributes: attributes)
+        }
     }
     
     func emptyDataSetShouldAllowScroll(_ scrollView: UIScrollView) -> Bool {
@@ -177,16 +188,37 @@ class NCSelect: UIViewController ,UICollectionViewDataSource, UICollectionViewDe
     // MARK: ACTION
     
     @IBAction func actionCancel(_ sender: Any) {
-        delegate?.dismissSelect(withServerUrl: nil, metadata: nil, type: type)
+        delegate?.dismissSelect(serverUrl: nil, metadata: nil, type: type)
         self.dismiss(animated: true, completion: nil)
     }
     
     @IBAction func actionDone(_ sender: Any) {
-        delegate?.dismissSelect(withServerUrl: serverUrl, metadata: metadataSelect, type: type)
+        delegate?.dismissSelect(serverUrl: serverUrl, metadata: nil, type: type)
         self.dismiss(animated: true, completion: nil)
     }
     
     @IBAction func actionCreateFolder(_ sender: Any) {
+        
+        let alertController = UIAlertController(title: NSLocalizedString("_create_folder_", comment: ""), message:"", preferredStyle: .alert)
+        
+        alertController.addTextField { (textField) in
+            textField.autocapitalizationType = UITextAutocapitalizationType.words
+        }
+        
+        let actionSave = UIAlertAction(title: NSLocalizedString("_save_", comment: ""), style: .default) { (action:UIAlertAction) in
+            if let fileName = alertController.textFields?.first?.text  {
+                self.createFolder(with: fileName)
+            }
+        }
+        
+        let actionCancel = UIAlertAction(title: NSLocalizedString("_cancel_", comment: ""), style: .cancel) { (action:UIAlertAction) in
+            print("You've pressed cancel button")
+        }
+        
+        alertController.addAction(actionSave)
+        alertController.addAction(actionCancel)
+        
+        self.present(alertController, animated: true, completion:nil)
     }
     
     // MARK: TAP EVENT
@@ -289,59 +321,9 @@ class NCSelect: UIViewController ,UICollectionViewDataSource, UICollectionViewDe
     }
     
     func tapMoreListItem(with fileID: String, sender: Any) {
-        tapMoreGridItem(with: fileID, sender: sender)
     }
     
     func tapMoreGridItem(with fileID: String, sender: Any) {
-        
-        guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "fileID == %@", fileID)) else {
-            return
-        }
-        guard let serverUrl = NCManageDatabase.sharedInstance.getServerUrl(metadata.directoryID) else {
-            return
-        }
-        
-        if !isEditMode {
-            
-            var items = [ActionSheetItem]()
-            let appearanceDelete = ActionSheetItemAppearance.init()
-            appearanceDelete.textColor = UIColor.red
-            
-            if (metadata.directory == false || serverUrl == CCUtility.getHomeServerUrlActiveUrl(appDelegate.activeUrl)) {
-                items.append(ActionSheetItem(title: NSLocalizedString("_remove_available_offline_", comment: ""), value: 0, image: CCGraphics.changeThemingColorImage(UIImage.init(named: "offline"), multiplier: 2, color: NCBrandColor.sharedInstance.icon)))
-            }
-            items.append(ActionSheetItem(title: NSLocalizedString("_share_", comment: ""), value: 1, image: CCGraphics.changeThemingColorImage(UIImage.init(named: "share"), multiplier: 2, color: NCBrandColor.sharedInstance.icon)))
-            
-            let itemDelete = ActionSheetItem(title: NSLocalizedString("_delete_", comment: ""), value: 2, image: CCGraphics.changeThemingColorImage(UIImage.init(named: "trash"), multiplier: 2, color: UIColor.red))
-            itemDelete.customAppearance = appearanceDelete
-            items.append(itemDelete)
-            items.append(ActionSheetCancelButton(title: NSLocalizedString("_cancel_", comment: "")))
-            
-            actionSheet = ActionSheet(items: items) { sheet, item in
-                if item.value as? Int == 0 {
-                    if metadata.directory {
-                        NCManageDatabase.sharedInstance.setDirectory(serverUrl: CCUtility.stringAppendServerUrl(serverUrl, addFileName: metadata.fileName)!, offline: false)
-                    } else {
-                        NCManageDatabase.sharedInstance.setLocalFile(fileID: metadata.fileID, offline: false)
-                    }
-                    self.loadDatasource(withLoadFolder: false)
-                }
-                if item.value as? Int == 1 { self.appDelegate.activeMain.openWindowShare(metadata) }
-                if item.value as? Int == 2 {  print("option 2") }
-                if item is ActionSheetCancelButton { print("Cancel buttons has the value `true`") }
-            }
-            
-            let headerView = actionSheetHeader(with: metadata)
-            actionSheet?.headerView = headerView
-            actionSheet?.headerView?.frame.size.height = 50
-            
-            actionSheet?.present(in: self, from: sender as! UIButton)
-        } else {
-            
-            let buttonPosition:CGPoint = (sender as! UIButton).convert(CGPoint.zero, to:collectionView)
-            let indexPath = collectionView.indexPathForItem(at: buttonPosition)
-            collectionView(self.collectionView, didSelectItemAt: indexPath!)
-        }
     }
     
     // MARK: DROP-DOWN-MENU
@@ -405,11 +387,9 @@ class NCSelect: UIViewController ,UICollectionViewDataSource, UICollectionViewDe
         }
         
         if dropdownMenu.token == "tapMoreHeaderMenu" {
-            
         }
         
         if dropdownMenu.token == "tapMoreHeaderMenuSelect" {
-            
         }
     }
     
@@ -442,6 +422,9 @@ class NCSelect: UIViewController ,UICollectionViewDataSource, UICollectionViewDe
     
     func loadFolder() {
         
+        networkInProgress = true
+        collectionView.reloadData()
+        
         let ocNetworking = OCnetworking.init(delegate: self, metadataNet: nil, withUser: appDelegate.activeUser, withUserID: appDelegate.activeUserID, withPassword: appDelegate.activePassword, withUrl: appDelegate.activeUrl)
         
         ocNetworking?.readFolder(serverUrl, depth: "1", account: appDelegate.activeAccount, success: { (metadatas, metadataFolder, directoryID) in
@@ -459,14 +442,16 @@ class NCSelect: UIViewController ,UICollectionViewDataSource, UICollectionViewDe
             }
             
             DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
+                self.networkInProgress = false
                 self.loadDatasource(withLoadFolder: false)
             }
             
         }, failure: { (message, errorCode) in
-            
+                        
             self.appDelegate.messageNotification("_error_", description: message, visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
             
             DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
+                self.networkInProgress = false
                 self.loadDatasource(withLoadFolder: false)
             }
         })
@@ -755,22 +740,25 @@ class NCSelect: UIViewController ,UICollectionViewDataSource, UICollectionViewDe
                 return
             }
             
-            visualController.directoryID = directoryIDPush
-            visualController.serverUrl = serverUrlPush
-            visualController.includeDirectoryE2EEncryption = includeDirectoryE2EEncryption
-            visualController.includeImages = includeImages
+            visualController.delegate = delegate
+            
             visualController.hideButtonCreateFolder = hideButtonCreateFolder
             visualController.selectFile = selectFile
+            visualController.includeDirectoryE2EEncryption = includeDirectoryE2EEncryption
+            visualController.includeImages = includeImages
             visualController.type = type
-            visualController.titleCurrentFolder = metadata.fileNameView
             visualController.titleButtonDone = titleButtonDone
-            
-//            visualController.metadataSelect = metadata
+
+            visualController.titleCurrentFolder = metadata.fileNameView
+            visualController.serverUrl = serverUrlPush
+            visualController.directoryID = directoryIDPush
             
             self.navigationController?.pushViewController(visualController, animated: true)
             
         } else {
             
+            delegate?.dismissSelect(serverUrl: serverUrl, metadata: metadata, type: type)
+            self.dismiss(animated: true, completion: nil)
         }
     }
     

+ 2 - 0
iOSClient/Supporting Files/en.lproj/Localizable.strings

@@ -363,6 +363,8 @@
 "_search_in_progress_"          = "Search in progress…";
 "_search_instruction_"          = "Search for file (minimum 2 characters)";
 "_files_no_files_"              = "No files in here";
+"_files_no_folders_"            = "No folders in here";
+"_request_in_progress_"         = "Request in progress…";
 
 "audio"                         = "AUDIO";
 "compress"                      = "COMPRESS";