Преглед изворни кода

For every new UI/UX view (example the new : Manage file offline, Trash, ...) is saved the state: layout/sort+ascending/groupBy/folders on top

Marino Faggiana пре 6 година
родитељ
комит
b5168f1863

+ 5 - 0
iOSClient/CCGlobal.h

@@ -310,6 +310,11 @@
 // Toolbar Detail
 #define k_detail_Toolbar_Height                         49
 
+// Layout View
+#define k_layout_view_select                            @"LayoutSelect"
+#define k_layout_view_trash                             @"LayoutTrash"
+#define k_layout_view_offline                           @"LayoutOffline"
+
 // -----------------------------------------------------------------------------------------------------------
 // -----------------------------------------------------------------------------------------------------------
 

+ 44 - 45
iOSClient/Offline/NCOffline.swift

@@ -37,6 +37,7 @@ class NCOffline: UIViewController ,UICollectionViewDataSource, UICollectionViewD
     
     private var sectionDatasource = CCSectionDataSourceMetadata()
     
+    private var typeLayout = ""
     private var datasourceSorted = ""
     private var datasourceAscending = true
     private var datasourceGroupBy = ""
@@ -100,12 +101,9 @@ class NCOffline: UIViewController ,UICollectionViewDataSource, UICollectionViewD
         
         self.navigationItem.title = titleCurrentFolder
         
-        datasourceSorted = CCUtility.getOrderSettings()
-        datasourceAscending = CCUtility.getAscendingSettings()
-        datasourceGroupBy = CCUtility.getGroupBySettings()
-        datasourceDirectoryOnTop = CCUtility.getDirectoryOnTop()
+        (typeLayout, datasourceSorted, datasourceAscending, datasourceGroupBy, datasourceDirectoryOnTop) = NCUtility.sharedInstance.getLayoutForView(key: k_layout_view_offline)
         
-        if CCUtility.getLayoutOffline() == "list" {
+        if typeLayout == "list" {
             collectionView.collectionViewLayout = listLayout
         } else {
             collectionView.collectionViewLayout = gridLayout
@@ -156,7 +154,8 @@ class NCOffline: UIViewController ,UICollectionViewDataSource, UICollectionViewD
                     self.collectionView.setContentOffset(CGPoint(x:0,y:0), animated: false)
                 })
             })
-            CCUtility.setLayoutOffline("list")
+            typeLayout = "list"
+            NCUtility.sharedInstance.setLayoutForView(key: k_layout_view_offline, layout: typeLayout, sort: datasourceSorted, ascending: datasourceAscending, groupBy: datasourceGroupBy, directoryOnTop: datasourceDirectoryOnTop)
         } else {
             // grid layout
             UIView.animate(withDuration: 0.0, animations: {
@@ -166,7 +165,8 @@ class NCOffline: UIViewController ,UICollectionViewDataSource, UICollectionViewD
                     self.collectionView.setContentOffset(CGPoint(x:0,y:0), animated: false)
                 })
             })
-            CCUtility.setLayoutOffline("grid")
+            typeLayout = "grid"
+            NCUtility.sharedInstance.setLayoutForView(key: k_layout_view_offline, layout: typeLayout, sort: datasourceSorted, ascending: datasourceAscending, groupBy: datasourceGroupBy, directoryOnTop: datasourceDirectoryOnTop)
         }
     }
     
@@ -306,55 +306,54 @@ class NCOffline: UIViewController ,UICollectionViewDataSource, UICollectionViewD
             
             switch indexPath.section {
             
-            case 0: switch indexPath.row {
-                    
-                    case 0: CCUtility.setOrderSettings("fileName"); CCUtility.setAscendingSettings(true)
-                    case 1: CCUtility.setOrderSettings("fileName"); CCUtility.setAscendingSettings(false)
-                
-                    case 2: CCUtility.setOrderSettings("date"); CCUtility.setAscendingSettings(false)
-                    case 3: CCUtility.setOrderSettings("date"); CCUtility.setAscendingSettings(true)
-                
-                    case 4: CCUtility.setOrderSettings("size"); CCUtility.setAscendingSettings(true)
-                    case 5: CCUtility.setOrderSettings("size"); CCUtility.setAscendingSettings(false)
+                    case 0: switch indexPath.row {
+                        
+                    case 0: datasourceSorted = "fileName"; datasourceAscending = true
+                    case 1: datasourceSorted = "fileName"; datasourceAscending = false
+                        
+                    case 2: datasourceSorted = "date"; datasourceAscending = false
+                    case 3: datasourceSorted = "date"; datasourceAscending = true
+                        
+                    case 4: datasourceSorted = "size"; datasourceAscending = true
+                    case 5: datasourceSorted = "size"; datasourceAscending = false
                 
                     default: ()
                     }
+                
             case 1: switch indexPath.row {
                 
                     case 0:
-                    if datasourceGroupBy == "alphabetic" {
-                        CCUtility.setGroupBySettings("none")
-                    } else {
-                        CCUtility.setGroupBySettings("alphabetic")
-                    }
+                        if datasourceGroupBy == "alphabetic" {
+                            datasourceGroupBy = "none"
+                        } else {
+                            datasourceGroupBy = "alphabetic"
+                        }
                     case 1:
-                    if datasourceGroupBy == "typefile" {
-                        CCUtility.setGroupBySettings("none")
-                    } else {
-                        CCUtility.setGroupBySettings("typefile")
-                    }
+                        if datasourceGroupBy == "typefile" {
+                            datasourceGroupBy = "none"
+                        } else {
+                            datasourceGroupBy = "typefile"
+                        }
                     case 2:
-                    if datasourceGroupBy == "date" {
-                        CCUtility.setGroupBySettings("none")
-                    } else {
-                        CCUtility.setGroupBySettings("date")
-                    }
-    
+                        if datasourceGroupBy == "date" {
+                            datasourceGroupBy = "none"
+                        } else {
+                            datasourceGroupBy = "date"
+                        }
+                
+                    default: ()
+                        }
+                    case 2:
+                        if datasourceDirectoryOnTop {
+                            datasourceDirectoryOnTop = false
+                        } else {
+                            datasourceDirectoryOnTop = true
+                        }
                     default: ()
                     }
-            case 2: if datasourceDirectoryOnTop {
-                        CCUtility.setDirectoryOnTop(false)
-                    } else {
-                        CCUtility.setDirectoryOnTop(true)
-                    }
-            default: ()
-            }
-            
-            datasourceAscending = CCUtility.getAscendingSettings()
-            datasourceSorted = CCUtility.getOrderSettings()
-            datasourceGroupBy = CCUtility.getGroupBySettings()
-            datasourceDirectoryOnTop = CCUtility.getDirectoryOnTop()
             
+            NCUtility.sharedInstance.setLayoutForView(key: k_layout_view_offline, layout: typeLayout, sort: datasourceSorted, ascending: datasourceAscending, groupBy: datasourceGroupBy, directoryOnTop: datasourceDirectoryOnTop)
+
             loadDatasource()
         }
         

+ 46 - 47
iOSClient/Select/NCSelect.swift

@@ -59,6 +59,7 @@ class NCSelect: UIViewController ,UICollectionViewDataSource, UICollectionViewDe
     
     private var sectionDatasource = CCSectionDataSourceMetadata()
     
+    private var typeLayout = ""
     private var datasourceSorted = ""
     private var datasourceAscending = true
     private var datasourceGroupBy = ""
@@ -132,12 +133,9 @@ class NCSelect: UIViewController ,UICollectionViewDataSource, UICollectionViewDe
             buttonCreateFolder.tintColor = UIColor.clear
         }
         
-        datasourceSorted = CCUtility.getOrderSettings()
-        datasourceAscending = CCUtility.getAscendingSettings()
-        datasourceGroupBy = CCUtility.getGroupBySettings()
-        datasourceDirectoryOnTop = CCUtility.getDirectoryOnTop()
+        (typeLayout, datasourceSorted, datasourceAscending, datasourceGroupBy, datasourceDirectoryOnTop) = NCUtility.sharedInstance.getLayoutForView(key: k_layout_view_select)
         
-        if CCUtility.getLayoutSelect() == "list" {
+        if typeLayout == "list" {
             collectionView.collectionViewLayout = listLayout
         } else {
             collectionView.collectionViewLayout = gridLayout
@@ -234,7 +232,8 @@ class NCSelect: UIViewController ,UICollectionViewDataSource, UICollectionViewDe
                     self.collectionView.setContentOffset(CGPoint(x:0,y:0), animated: false)
                 })
             })
-            CCUtility.setLayoutSelect("list")
+            typeLayout = "list"
+            NCUtility.sharedInstance.setLayoutForView(key: k_layout_view_select, layout: typeLayout, sort: datasourceSorted, ascending: datasourceAscending, groupBy: datasourceGroupBy, directoryOnTop: datasourceDirectoryOnTop)
         } else {
             // grid layout
             UIView.animate(withDuration: 0.0, animations: {
@@ -244,7 +243,8 @@ class NCSelect: UIViewController ,UICollectionViewDataSource, UICollectionViewDe
                     self.collectionView.setContentOffset(CGPoint(x:0,y:0), animated: false)
                 })
             })
-            CCUtility.setLayoutSelect("grid")
+            typeLayout = "grid"
+            NCUtility.sharedInstance.setLayoutForView(key: k_layout_view_select, layout: typeLayout, sort: datasourceSorted, ascending: datasourceAscending, groupBy: datasourceGroupBy, directoryOnTop: datasourceDirectoryOnTop)
         }
     }
     
@@ -336,52 +336,51 @@ class NCSelect: UIViewController ,UICollectionViewDataSource, UICollectionViewDe
                 
             case 0: switch indexPath.row {
                 
-            case 0: CCUtility.setOrderSettings("fileName"); CCUtility.setAscendingSettings(true)
-            case 1: CCUtility.setOrderSettings("fileName"); CCUtility.setAscendingSettings(false)
+                    case 0: datasourceSorted = "fileName"; datasourceAscending = true
+                    case 1: datasourceSorted = "fileName"; datasourceAscending = false
                 
-            case 2: CCUtility.setOrderSettings("date"); CCUtility.setAscendingSettings(false)
-            case 3: CCUtility.setOrderSettings("date"); CCUtility.setAscendingSettings(true)
+                    case 2: datasourceSorted = "date"; datasourceAscending = false
+                    case 3: datasourceSorted = "date"; datasourceAscending = true
                 
-            case 4: CCUtility.setOrderSettings("size"); CCUtility.setAscendingSettings(true)
-            case 5: CCUtility.setOrderSettings("size"); CCUtility.setAscendingSettings(false)
+                    case 4: datasourceSorted = "size"; datasourceAscending = true
+                    case 5: datasourceSorted = "size"; datasourceAscending = false
+                
+                    default: ()
+                    }
                 
-            default: ()
-                }
             case 1: switch indexPath.row {
                 
-            case 0:
-                if datasourceGroupBy == "alphabetic" {
-                    CCUtility.setGroupBySettings("none")
-                } else {
-                    CCUtility.setGroupBySettings("alphabetic")
-                }
-            case 1:
-                if datasourceGroupBy == "typefile" {
-                    CCUtility.setGroupBySettings("none")
-                } else {
-                    CCUtility.setGroupBySettings("typefile")
-                }
-            case 2:
-                if datasourceGroupBy == "date" {
-                    CCUtility.setGroupBySettings("none")
-                } else {
-                    CCUtility.setGroupBySettings("date")
-                }
+                    case 0:
+                        if datasourceGroupBy == "alphabetic" {
+                            datasourceGroupBy = "none"
+                        } else {
+                            datasourceGroupBy = "alphabetic"
+                        }
+                    case 1:
+                        if datasourceGroupBy == "typefile" {
+                            datasourceGroupBy = "none"
+                        } else {
+                            datasourceGroupBy = "typefile"
+                        }
+                    case 2:
+                        if datasourceGroupBy == "date" {
+                            datasourceGroupBy = "none"
+                        } else {
+                            datasourceGroupBy = "date"
+                        }
                 
-            default: ()
-                }
-            case 2: if datasourceDirectoryOnTop {
-                CCUtility.setDirectoryOnTop(false)
-            } else {
-                CCUtility.setDirectoryOnTop(true)
-                }
-            default: ()
-            }
-            
-            datasourceAscending = CCUtility.getAscendingSettings()
-            datasourceSorted = CCUtility.getOrderSettings()
-            datasourceGroupBy = CCUtility.getGroupBySettings()
-            datasourceDirectoryOnTop = CCUtility.getDirectoryOnTop()
+                    default: ()
+                        }
+                    case 2:
+                        if datasourceDirectoryOnTop {
+                            datasourceDirectoryOnTop = false
+                        } else {
+                            datasourceDirectoryOnTop = true
+                        }
+                    default: ()
+                    }
+            
+            NCUtility.sharedInstance.setLayoutForView(key: k_layout_view_select, layout: typeLayout, sort: datasourceSorted, ascending: datasourceAscending, groupBy: datasourceGroupBy, directoryOnTop: datasourceDirectoryOnTop)
             
             loadDatasource(withLoadFolder: false)
         }

+ 18 - 15
iOSClient/Trash/NCTrash.swift

@@ -37,8 +37,11 @@ class NCTrash: UIViewController ,UICollectionViewDataSource, UICollectionViewDel
     
     private var datasource = [tableTrash]()
     
+    private var typeLayout = ""
     private var datasourceSorted = ""
     private var datasourceAscending = true
+    private var datasourceGroupBy = "none"
+    private var datasourceDirectoryOnTop = false
     
     private var listLayout: NCListLayout!
     private var gridLayout: NCGridLayout!
@@ -91,10 +94,9 @@ class NCTrash: UIViewController ,UICollectionViewDataSource, UICollectionViewDel
         
         self.navigationItem.title = titleCurrentFolder
 
-        datasourceSorted = CCUtility.getOrderSettings()
-        datasourceAscending = CCUtility.getAscendingSettings()
-        
-        if CCUtility.getLayoutTrash() == "list" {
+        (typeLayout, datasourceSorted, datasourceAscending, datasourceGroupBy, datasourceDirectoryOnTop) = NCUtility.sharedInstance.getLayoutForView(key: k_layout_view_trash)
+
+        if typeLayout == "list" {
             collectionView.collectionViewLayout = listLayout
         } else {
             collectionView.collectionViewLayout = gridLayout
@@ -152,7 +154,8 @@ class NCTrash: UIViewController ,UICollectionViewDataSource, UICollectionViewDel
                     self.collectionView.setContentOffset(CGPoint(x:0,y:0), animated: false)
                 })
             })
-            CCUtility.setLayoutTrash("list")
+            typeLayout = "list"
+            NCUtility.sharedInstance.setLayoutForView(key: k_layout_view_trash, layout: typeLayout, sort: datasourceSorted, ascending: datasourceAscending, groupBy: datasourceGroupBy, directoryOnTop: datasourceDirectoryOnTop)
         } else {
             // grid layout
             UIView.animate(withDuration: 0.0, animations: {
@@ -162,7 +165,8 @@ class NCTrash: UIViewController ,UICollectionViewDataSource, UICollectionViewDel
                     self.collectionView.setContentOffset(CGPoint(x:0,y:0), animated: false)
                 })
             })
-            CCUtility.setLayoutTrash("grid")
+            typeLayout = "grid"
+            NCUtility.sharedInstance.setLayoutForView(key: k_layout_view_trash, layout: typeLayout, sort: datasourceSorted, ascending: datasourceAscending, groupBy: datasourceGroupBy, directoryOnTop: datasourceDirectoryOnTop)
         }
     }
     
@@ -320,21 +324,20 @@ class NCTrash: UIViewController ,UICollectionViewDataSource, UICollectionViewDel
             
             switch indexPath.row {
                 
-            case 0: CCUtility.setOrderSettings("fileName"); CCUtility.setAscendingSettings(true)
-            case 1: CCUtility.setOrderSettings("fileName"); CCUtility.setAscendingSettings(false)
+            case 0: datasourceSorted = "fileName"; datasourceAscending = true
+            case 1: datasourceSorted = "fileName"; datasourceAscending = false
                 
-            case 2: CCUtility.setOrderSettings("date"); CCUtility.setAscendingSettings(false)
-            case 3: CCUtility.setOrderSettings("date"); CCUtility.setAscendingSettings(true)
+            case 2: datasourceSorted = "date"; datasourceAscending = false
+            case 3: datasourceSorted = "date"; datasourceAscending = true
                 
-            case 4: CCUtility.setOrderSettings("size"); CCUtility.setAscendingSettings(true)
-            case 5: CCUtility.setOrderSettings("size"); CCUtility.setAscendingSettings(false)
+            case 4: datasourceSorted = "size"; datasourceAscending = true
+            case 5: datasourceSorted = "size"; datasourceAscending = false
                 
             default: print("")
             }
             
-            datasourceSorted = CCUtility.getOrderSettings()
-            datasourceAscending = CCUtility.getAscendingSettings()
-            
+            NCUtility.sharedInstance.setLayoutForView(key: k_layout_view_trash, layout: typeLayout, sort: datasourceSorted, ascending: datasourceAscending, groupBy: datasourceGroupBy, directoryOnTop: datasourceDirectoryOnTop)
+
             loadDatasource()
         }
         

+ 24 - 0
iOSClient/Utility/NCUtility.swift

@@ -128,4 +128,28 @@ class NCUtility: NSObject {
         
         return newImage
     }
+    
+    func setLayoutForView(key: String, layout: String, sort: String, ascending: Bool, groupBy: String, directoryOnTop: Bool) {
+        
+        let string =  layout + "|" + sort + "|" + "\(ascending)" + "|" + groupBy + "|" + "\(directoryOnTop)"
+        
+        UICKeyChainStore.setString(string, forKey: key, service: k_serviceShareKeyChain)
+    }
+    
+    func getLayoutForView(key: String) -> (String, String, Bool, String, Bool) {
+        
+        guard let string = UICKeyChainStore.string(forKey: key, service: k_serviceShareKeyChain) else {
+            return ("list", "fileName", true, "none", true)
+        }
+
+        let array = string.components(separatedBy: "|")
+        if array.count == 5 {
+            let sort = NSString(string: array[2])
+            let directoryOnTop = NSString(string: array[4])
+
+            return (array[0], array[1], sort.boolValue, array[3], directoryOnTop.boolValue)
+        }
+        
+        return ("list", "fileName", true, "none", true)
+    }
 }