浏览代码

Improved code

Marino Faggiana 6 年之前
父节点
当前提交
fde384bbbd

+ 5 - 1
Nextcloud.xcodeproj/project.pbxproj

@@ -557,6 +557,7 @@
 		F7CA1ED720E7E3FE002CC65E /* PKDownloadButton.m in Sources */ = {isa = PBXBuildFile; fileRef = F7CA1EC820E7E3FE002CC65E /* PKDownloadButton.m */; };
 		F7CA1ED820E7E3FE002CC65E /* PKBorderedButton.m in Sources */ = {isa = PBXBuildFile; fileRef = F7CA1ECA20E7E3FE002CC65E /* PKBorderedButton.m */; };
 		F7CA1ED920E7E3FE002CC65E /* NSLayoutConstraint+PKDownloadButton.m in Sources */ = {isa = PBXBuildFile; fileRef = F7CA1ECE20E7E3FE002CC65E /* NSLayoutConstraint+PKDownloadButton.m */; };
+		F7CF11B52186F770008BCD24 /* NCTrashLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7CF11B42186F770008BCD24 /* NCTrashLayout.swift */; };
 		F7D423331F0596AC009C9782 /* AppIcon-076.png in Resources */ = {isa = PBXBuildFile; fileRef = F7D423161F0596AC009C9782 /* AppIcon-076.png */; };
 		F7D423341F0596AC009C9782 /* AppIcon-120.png in Resources */ = {isa = PBXBuildFile; fileRef = F7D423171F0596AC009C9782 /* AppIcon-120.png */; };
 		F7D423351F0596AC009C9782 /* AppIcon-152.png in Resources */ = {isa = PBXBuildFile; fileRef = F7D423181F0596AC009C9782 /* AppIcon-152.png */; };
@@ -1513,6 +1514,7 @@
 		F7CD0FFA1C8DDA7D006520C5 /* CCSharePermissionOC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCSharePermissionOC.m; sourceTree = "<group>"; };
 		F7CE8AFA1DC1F8D8009CAE48 /* Nextcloud.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Nextcloud.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		F7CE8AFB1DC1F8D8009CAE48 /* Share.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = Share.appex; sourceTree = BUILT_PRODUCTS_DIR; };
+		F7CF11B42186F770008BCD24 /* NCTrashLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCTrashLayout.swift; sourceTree = "<group>"; };
 		F7D02A461C5F9E4400D6F972 /* CCMove.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCMove.h; sourceTree = "<group>"; };
 		F7D02A471C5F9E4400D6F972 /* CCMove.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCMove.m; sourceTree = "<group>"; };
 		F7D02A481C5F9E4400D6F972 /* CCMove.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = CCMove.storyboard; sourceTree = "<group>"; };
@@ -2875,8 +2877,8 @@
 			isa = PBXGroup;
 			children = (
 				F7632FC0218353AA00721B71 /* NCTrashSectionFooter.xib */,
-				F7417DB2216CE925007D05F5 /* NCTrashHeaderFooter.swift */,
 				F7632FBE21832F8700721B71 /* NCTrashHeaderMenu.xib */,
+				F7417DB2216CE925007D05F5 /* NCTrashHeaderFooter.swift */,
 			);
 			path = Section;
 			sourceTree = "<group>";
@@ -2976,6 +2978,7 @@
 			children = (
 				F78F74332163757000C2ADAD /* NCTrash.storyboard */,
 				F78F74352163781100C2ADAD /* NCTrash.swift */,
+				F7CF11B42186F770008BCD24 /* NCTrashLayout.swift */,
 				F7632FC32183667400721B71 /* Section */,
 				F7632FC22183665F00721B71 /* Cell */,
 			);
@@ -4348,6 +4351,7 @@
 				F712ACA72175E56F0061158E /* CTAssetCollectionViewCell.m in Sources */,
 				F7A5541E204EF8AF008468EC /* TOScrollBarGestureRecognizer.m in Sources */,
 				F7622FCB2175FCC0000383FF /* ActionSheetDangerButton.swift in Sources */,
+				F7CF11B52186F770008BCD24 /* NCTrashLayout.swift in Sources */,
 				F758B452212C516300515F55 /* Quadrilateral.swift in Sources */,
 				F712AC952175E56F0061158E /* CTAssetScrollView.m in Sources */,
 				F70022E61EC4C9100080073F /* OCXMLServerErrorsParser.m in Sources */,

+ 32 - 19
iOSClient/Offline/NCOffline.swift

@@ -31,11 +31,15 @@ class NCOffline: UIViewController ,UICollectionViewDataSource, UICollectionViewD
     var titleCurrentFolder = NSLocalizedString("_manage_file_offline_", comment: "")
     var directoryID = ""
     var sectionDatasource = CCSectionDataSourceMetadata()
+    var datasourceSorted = ""
+    var datasourceAscending = true
+    var datasourceGroupBy = ""
+    var datasourceDirectoryOnTop = false
     var isEditMode = false
     var selectFileID = [String]()
     
-    var listLayout: listLayoutOffline!
-    var gridLayout: gridLayoutOffline!
+    var listLayout: NCListLayoutOffline!
+    var gridLayout: NCGridLayoutOffline!
     
     var actionSheet: ActionSheet?
     
@@ -61,8 +65,8 @@ class NCOffline: UIViewController ,UICollectionViewDataSource, UICollectionViewD
         
         collectionView.alwaysBounceVertical = true
 
-        listLayout = listLayoutOffline()
-        gridLayout = gridLayoutOffline()
+        listLayout = NCListLayoutOffline()
+        gridLayout = NCGridLayoutOffline()
         
         if CCUtility.getLayoutOffline() == "list" {
             collectionView.collectionViewLayout = listLayout
@@ -92,6 +96,11 @@ class NCOffline: UIViewController ,UICollectionViewDataSource, UICollectionViewD
         
         self.navigationItem.title = titleCurrentFolder
         
+        datasourceAscending = CCUtility.getAscendingSettings()
+        datasourceSorted = CCUtility.getOrderSettings()
+        datasourceGroupBy = CCUtility.getGroupBySettings()
+        datasourceDirectoryOnTop = CCUtility.getDirectoryOnTop()
+        
         loadDatasource()
     }
     
@@ -155,7 +164,6 @@ class NCOffline: UIViewController ,UICollectionViewDataSource, UICollectionViewD
         
         var menuView: DropdownMenu?
         var selectedIndexPath = [IndexPath()]
-        let datasourceAscending = CCUtility.getAscendingSettings()
         
         let item1 = DropdownItem(image: CCGraphics.changeThemingColorImage(UIImage.init(named: "sortFileNameAZ"), multiplier: 2, color: NCBrandColor.sharedInstance.icon), title: NSLocalizedString("_order_by_name_a_z_", comment: ""))
         let item2 = DropdownItem(image: CCGraphics.changeThemingColorImage(UIImage.init(named: "sortFileNameZA"), multiplier: 2, color: NCBrandColor.sharedInstance.icon), title: NSLocalizedString("_order_by_name_z_a_", comment: ""))
@@ -164,7 +172,7 @@ class NCOffline: UIViewController ,UICollectionViewDataSource, UICollectionViewD
         let item5 = DropdownItem(image: CCGraphics.changeThemingColorImage(UIImage.init(named: "sortSmallest"), multiplier: 2, color: NCBrandColor.sharedInstance.icon), title: NSLocalizedString("_order_by_size_smallest_", comment: ""))
         let item6 = DropdownItem(image: CCGraphics.changeThemingColorImage(UIImage.init(named: "sortLargest"), multiplier: 2, color: NCBrandColor.sharedInstance.icon), title: NSLocalizedString("_order_by_size_largest_", comment: ""))
         
-        switch CCUtility.getOrderSettings() {
+        switch datasourceSorted {
         case "fileName":
             if datasourceAscending == true { item1.style = .highlight; selectedIndexPath.append(IndexPath(row: 0, section: 0)) }
             if datasourceAscending == false { item2.style = .highlight; selectedIndexPath.append(IndexPath(row: 1, section: 0)) }
@@ -182,7 +190,7 @@ class NCOffline: UIViewController ,UICollectionViewDataSource, UICollectionViewD
         let item8 = DropdownItem(image: CCGraphics.changeThemingColorImage(UIImage.init(named: "MenuGroupByFile"), multiplier: 2, color: NCBrandColor.sharedInstance.icon), title: NSLocalizedString("_group_typefile_no_", comment: ""))
         let item9 = DropdownItem(image: CCGraphics.changeThemingColorImage(UIImage.init(named: "MenuGroupByDate"), multiplier: 2, color: NCBrandColor.sharedInstance.icon), title: NSLocalizedString("_group_date_no_", comment: ""))
         
-        switch CCUtility.getGroupBySettings() {
+        switch datasourceGroupBy {
         case "alphabetic":
             item7.style = .highlight; selectedIndexPath.append(IndexPath(row: 0, section: 1))
         case "typefile":
@@ -195,7 +203,7 @@ class NCOffline: UIViewController ,UICollectionViewDataSource, UICollectionViewD
         
         let item10 = DropdownItem(image: CCGraphics.changeThemingColorImage(UIImage.init(named: "foldersOnTop"), multiplier: 2, color: NCBrandColor.sharedInstance.icon), title: NSLocalizedString("_directory_on_top_no_", comment: ""))
         
-        if CCUtility.getDirectoryOnTop() {
+        if datasourceDirectoryOnTop {
             item10.style = .highlight; selectedIndexPath.append(IndexPath(row: 0, section: 2))
         }
         
@@ -336,19 +344,19 @@ class NCOffline: UIViewController ,UICollectionViewDataSource, UICollectionViewD
             case 1: switch indexPath.row {
                 
                     case 0:
-                    if CCUtility.getGroupBySettings() == "alphabetic" {
+                    if datasourceGroupBy == "alphabetic" {
                         CCUtility.setGroupBySettings("none")
                     } else {
                         CCUtility.setGroupBySettings("alphabetic")
                     }
                     case 1:
-                    if CCUtility.getGroupBySettings() == "typefile" {
+                    if datasourceGroupBy == "typefile" {
                         CCUtility.setGroupBySettings("none")
                     } else {
                         CCUtility.setGroupBySettings("typefile")
                     }
                     case 2:
-                    if CCUtility.getGroupBySettings() == "date" {
+                    if datasourceGroupBy == "date" {
                         CCUtility.setGroupBySettings("none")
                     } else {
                         CCUtility.setGroupBySettings("date")
@@ -356,7 +364,7 @@ class NCOffline: UIViewController ,UICollectionViewDataSource, UICollectionViewD
     
                     default: ()
                     }
-            case 2: if CCUtility.getDirectoryOnTop() {
+            case 2: if datasourceDirectoryOnTop {
                         CCUtility.setDirectoryOnTop(false)
                     } else {
                         CCUtility.setDirectoryOnTop(true)
@@ -364,6 +372,11 @@ class NCOffline: UIViewController ,UICollectionViewDataSource, UICollectionViewD
             default: ()
             }
             
+            datasourceAscending = CCUtility.getAscendingSettings()
+            datasourceSorted = CCUtility.getOrderSettings()
+            datasourceGroupBy = CCUtility.getGroupBySettings()
+            datasourceDirectoryOnTop = CCUtility.getDirectoryOnTop()
+            
             loadDatasource()
         }
         
@@ -409,16 +422,16 @@ class NCOffline: UIViewController ,UICollectionViewDataSource, UICollectionViewD
                 }
             }
             
-            if let metadatas = NCManageDatabase.sharedInstance.getMetadatas(predicate: NSPredicate(format: "account == %@ AND fileID IN %@", appDelegate.activeAccount, fileIDs), sorted: CCUtility.getOrderSettings(), ascending: CCUtility.getAscendingSettings())  {
+            if let metadatas = NCManageDatabase.sharedInstance.getMetadatas(predicate: NSPredicate(format: "account == %@ AND fileID IN %@", appDelegate.activeAccount, fileIDs), sorted: datasourceSorted, ascending: datasourceAscending)  {
 
-                sectionDatasource = CCSectionMetadata.creataDataSourseSectionMetadata(metadatas, listProgressMetadata: nil, groupByField: CCUtility.getGroupBySettings(), filterFileID: nil, filterTypeFileImage: false, filterTypeFileVideo: false, activeAccount: appDelegate.activeAccount)
+                sectionDatasource = CCSectionMetadata.creataDataSourseSectionMetadata(metadatas, listProgressMetadata: nil, groupByField: datasourceGroupBy, filterFileID: nil, filterTypeFileImage: false, filterTypeFileVideo: false, activeAccount: appDelegate.activeAccount)
             }
             
         } else {
         
-            if let metadatas = NCManageDatabase.sharedInstance.getMetadatas(predicate: NSPredicate(format: "account == %@ AND directoryID == %@", appDelegate.activeAccount, directoryID), sorted: CCUtility.getOrderSettings(), ascending: CCUtility.getAscendingSettings())  {
+            if let metadatas = NCManageDatabase.sharedInstance.getMetadatas(predicate: NSPredicate(format: "account == %@ AND directoryID == %@", appDelegate.activeAccount, directoryID), sorted: datasourceSorted, ascending: datasourceAscending)  {
                 
-                sectionDatasource = CCSectionMetadata.creataDataSourseSectionMetadata(metadatas, listProgressMetadata: nil, groupByField: CCUtility.getGroupBySettings(), filterFileID: nil, filterTypeFileImage: false, filterTypeFileVideo: false, activeAccount: appDelegate.activeAccount)
+                sectionDatasource = CCSectionMetadata.creataDataSourseSectionMetadata(metadatas, listProgressMetadata: nil, groupByField: datasourceGroupBy, filterFileID: nil, filterTypeFileImage: false, filterTypeFileVideo: false, activeAccount: appDelegate.activeAccount)
             }
         }
         
@@ -446,9 +459,9 @@ class NCOffline: UIViewController ,UICollectionViewDataSource, UICollectionViewD
                 header.delegate = self
                 
                 header.setStatusButton(count: sectionDatasource.allFileID.count)
-                header.setTitleOrder(datasourceSorted: CCUtility.getOrderSettings(), datasourceAscending: CCUtility.getAscendingSettings())
+                header.setTitleOrder(datasourceSorted: datasourceSorted, datasourceAscending: datasourceAscending)
                 
-                if CCUtility.getGroupBySettings() == "none" {
+                if datasourceGroupBy == "none" {
                     header.labelSection.isHidden = true
                     header.labelSectionHeightConstraint.constant = 0
                 } else {
@@ -491,7 +504,7 @@ class NCOffline: UIViewController ,UICollectionViewDataSource, UICollectionViewD
     
     func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {
         if section == 0 {
-            if CCUtility.getGroupBySettings() == "none" {
+            if datasourceGroupBy == "none" {
                 return CGSize(width: collectionView.frame.width, height: headerMenuHeight)
             } else {
                 return CGSize(width: collectionView.frame.width, height: headerMenuHeight + sectionHeaderHeight)

+ 6 - 2
iOSClient/Offline/NCOfflineLayout.swift

@@ -23,13 +23,15 @@
 
 import Foundation
 
-class listLayoutOffline: UICollectionViewFlowLayout {
+class NCListLayoutOffline: UICollectionViewFlowLayout {
     
     let itemHeight: CGFloat = 60
     
     override init() {
         super.init()
         
+        sectionHeadersPinToVisibleBounds = false
+
         minimumInteritemSpacing = 0
         minimumLineSpacing = 1
         
@@ -61,7 +63,7 @@ class listLayoutOffline: UICollectionViewFlowLayout {
     }
 }
 
-class gridLayoutOffline: UICollectionViewFlowLayout {
+class NCGridLayoutOffline: UICollectionViewFlowLayout {
     
     let heightLabelPlusButton: CGFloat = 45
     let preferenceWidth: CGFloat = 110
@@ -70,6 +72,8 @@ class gridLayoutOffline: UICollectionViewFlowLayout {
     override init() {
         super.init()
         
+        sectionHeadersPinToVisibleBounds = false
+
         minimumInteritemSpacing = 1
         minimumLineSpacing = 1
         

+ 4 - 88
iOSClient/Trash/NCTrash.swift

@@ -36,8 +36,8 @@ class NCTrash: UIViewController ,UICollectionViewDataSource, UICollectionViewDel
     var isEditMode = false
     var selectFileID = [String]()
     
-    var listLayout: ListLayoutTrash!
-    var gridLayout: GridLayoutTrash!
+    var listLayout: NCListLayoutTrash!
+    var gridLayout: NCGridLayoutTrash!
     
     var actionSheet: ActionSheet?
 
@@ -58,8 +58,8 @@ class NCTrash: UIViewController ,UICollectionViewDataSource, UICollectionViewDel
 
         collectionView.alwaysBounceVertical = true
 
-        listLayout = ListLayoutTrash()
-        gridLayout = GridLayoutTrash()
+        listLayout = NCListLayoutTrash()
+        gridLayout = NCGridLayoutTrash()
         
         if CCUtility.getLayoutTrash() == "list" {
             collectionView.collectionViewLayout = listLayout
@@ -741,87 +741,3 @@ class NCTrash: UIViewController ,UICollectionViewDataSource, UICollectionViewDel
     }
 }
 
-class ListLayoutTrash: UICollectionViewFlowLayout {
-    
-    let itemHeight: CGFloat = 60
-    
-    override init() {
-        super.init()
-        
-        sectionHeadersPinToVisibleBounds = false
-
-        minimumInteritemSpacing = 0
-        minimumLineSpacing = 1
-        
-        self.scrollDirection = .vertical
-        self.sectionInset = UIEdgeInsets(top: 0, left: 0, bottom: 10, right: 0)
-    }
-    
-    required init?(coder aDecoder: NSCoder) {
-        fatalError("init(coder:) has not been implemented")
-    }
-    
-    override var itemSize: CGSize {
-        get {
-            if let collectionView = collectionView {
-                let itemWidth: CGFloat = collectionView.frame.width
-                return CGSize(width: itemWidth, height: self.itemHeight)
-            }
-            
-            // Default fallback
-            return CGSize(width: 100, height: 100)
-        }
-        set {
-            super.itemSize = newValue
-        }
-    }
-    
-    override func targetContentOffset(forProposedContentOffset proposedContentOffset: CGPoint) -> CGPoint {
-        return proposedContentOffset
-    }
-}
-
-class GridLayoutTrash: UICollectionViewFlowLayout {
-    
-    let heightLabelPlusButton: CGFloat = 45
-    let preferenceWidth: CGFloat = 110
-    let marginLeftRight: CGFloat = 5
-    
-    override init() {
-        super.init()
-        
-        sectionHeadersPinToVisibleBounds = false
-        
-        minimumInteritemSpacing = 1
-        minimumLineSpacing = 1
-
-        self.scrollDirection = .vertical
-        self.sectionInset = UIEdgeInsets(top: 10, left: marginLeftRight, bottom: 10, right:  marginLeftRight)
-    }
-    
-    required init?(coder aDecoder: NSCoder) {
-        fatalError("init(coder:) has not been implemented")
-    }
-    
-    override var itemSize: CGSize {
-        get {
-            if let collectionView = collectionView {
-                
-                let numItems: Int = Int(collectionView.frame.width / preferenceWidth)                
-                let itemWidth: CGFloat = (collectionView.frame.width - (marginLeftRight * 2) - CGFloat(numItems)) / CGFloat(numItems)
-                let itemHeight: CGFloat = itemWidth + heightLabelPlusButton
-                return CGSize(width: itemWidth, height: itemHeight)
-            }
-            
-            // Default fallback
-            return CGSize(width: 100, height: 100)
-        }
-        set {
-            super.itemSize = newValue
-        }
-    }
-    
-    override func targetContentOffset(forProposedContentOffset proposedContentOffset: CGPoint) -> CGPoint {
-        return proposedContentOffset
-    }
-}

+ 95 - 0
iOSClient/Trash/NCTrashLayout.swift

@@ -0,0 +1,95 @@
+
+//
+//  NCOfflineLayout.swift
+//  Nextcloud
+//
+//  Created by Marino Faggiana on 29/10/2018.
+//  Copyright © 2018 TWS. All rights reserved.
+//
+
+import Foundation
+
+class NCListLayoutTrash: UICollectionViewFlowLayout {
+    
+    let itemHeight: CGFloat = 60
+    
+    override init() {
+        super.init()
+        
+        sectionHeadersPinToVisibleBounds = false
+        
+        minimumInteritemSpacing = 0
+        minimumLineSpacing = 1
+        
+        self.scrollDirection = .vertical
+        self.sectionInset = UIEdgeInsets(top: 0, left: 0, bottom: 10, right: 0)
+    }
+    
+    required init?(coder aDecoder: NSCoder) {
+        fatalError("init(coder:) has not been implemented")
+    }
+    
+    override var itemSize: CGSize {
+        get {
+            if let collectionView = collectionView {
+                let itemWidth: CGFloat = collectionView.frame.width
+                return CGSize(width: itemWidth, height: self.itemHeight)
+            }
+            
+            // Default fallback
+            return CGSize(width: 100, height: 100)
+        }
+        set {
+            super.itemSize = newValue
+        }
+    }
+    
+    override func targetContentOffset(forProposedContentOffset proposedContentOffset: CGPoint) -> CGPoint {
+        return proposedContentOffset
+    }
+}
+
+class NCGridLayoutTrash: UICollectionViewFlowLayout {
+    
+    let heightLabelPlusButton: CGFloat = 45
+    let preferenceWidth: CGFloat = 110
+    let marginLeftRight: CGFloat = 5
+    
+    override init() {
+        super.init()
+        
+        sectionHeadersPinToVisibleBounds = false
+        
+        minimumInteritemSpacing = 1
+        minimumLineSpacing = 1
+        
+        self.scrollDirection = .vertical
+        self.sectionInset = UIEdgeInsets(top: 10, left: marginLeftRight, bottom: 10, right:  marginLeftRight)
+    }
+    
+    required init?(coder aDecoder: NSCoder) {
+        fatalError("init(coder:) has not been implemented")
+    }
+    
+    override var itemSize: CGSize {
+        get {
+            if let collectionView = collectionView {
+                
+                let numItems: Int = Int(collectionView.frame.width / preferenceWidth)
+                let itemWidth: CGFloat = (collectionView.frame.width - (marginLeftRight * 2) - CGFloat(numItems)) / CGFloat(numItems)
+                let itemHeight: CGFloat = itemWidth + heightLabelPlusButton
+                return CGSize(width: itemWidth, height: itemHeight)
+            }
+            
+            // Default fallback
+            return CGSize(width: 100, height: 100)
+        }
+        set {
+            super.itemSize = newValue
+        }
+    }
+    
+    override func targetContentOffset(forProposedContentOffset proposedContentOffset: CGPoint) -> CGPoint {
+        return proposedContentOffset
+    }
+}