Forráskód Böngészése

update "more" menu

Marino Faggiana 7 éve
szülő
commit
cdf9033972

+ 2 - 0
iOSClient/Brand/NCBrand.swift

@@ -89,6 +89,8 @@ class NCBrandOptions: NSObject {
     public let use_themingBackground:           Bool = true
     public let use_multiDomains:                Bool = false
     public let use_recent_activity_title:       Bool = false
+    public let use_notification_on_menu_more:   Bool = false
+    public let use_logout_on_menu_more:         Bool = false
         
     public let disable_intro:                   Bool = false
     public let disable_request_login_url:       Bool = false

BIN
iOSClient/Images.xcassets/notification.imageset/notification.png


BIN
iOSClient/Images.xcassets/notification.imageset/notification@2x.png


BIN
iOSClient/Images.xcassets/notification.imageset/notification@3x.png


BIN
iOSClient/Images.xcassets/settings.imageset/settings.png


BIN
iOSClient/Images.xcassets/settings.imageset/settings@2x.png


BIN
iOSClient/Images.xcassets/settings.imageset/settings@3x.png


+ 64 - 14
iOSClient/Main/CCMore.swift

@@ -79,38 +79,44 @@ class CCMore: UIViewController, UITableViewDelegate, UITableViewDataSource {
         quotaMenu.removeAll()
         labelQuotaExternalSite.text = ""
         
-        // Internal
+        // ITEM : Transfer
         var item = OCExternalSites.init()
         item.name = "_transfers_"
         item.icon = "moreTransfers"
         item.url = "segueTransfers"
         functionMenu.append(item)
         
+        // ITEM : Activity
         item = OCExternalSites.init()
         if NCBrandOptions.sharedInstance.use_recent_activity_title == true {
             item.name = "_recent_activity_"
         } else {
             item.name = "_activity_"
         }
-        
         item.icon = "moreActivity"
         item.url = "segueActivity"
         functionMenu.append(item)
         
+        // ITEM : Notification [CUSTOM]
+        if NCBrandOptions.sharedInstance.use_notification_on_menu_more == true {
+            
+            item = OCExternalSites.init()
+            item.name = "_notifications_"
+            item.icon = "notification"
+            item.url = "openCCNotification"
+            functionMenu.append(item)
+        }
+        
+        // ITEM : Local storage
         item = OCExternalSites.init()
         item.name = "_local_storage_"
         item.icon = "moreLocalStorage"
         item.url = "segueLocalStorage"
         functionMenu.append(item)
         
-        item = OCExternalSites.init()
-        item.name = "_settings_"
-        item.icon = "moreSettings"
-        item.url = "segueSettings"
-        settingsMenu.append(item)
-
-        // External 
+        // ITEM : External
         menuExternalSite = NCManageDatabase.sharedInstance.getAllExternalSites(predicate: NSPredicate(format: "(account == '\(appDelegate.activeAccount!)')"))
+        //menuExternalSite = NCManageDatabase.sharedInstance.getAllExternalSitesWithPredicate(NSPredicate(format: "(account == '\(appDelegate.activeAccount!)')"))
         
         for table in menuExternalSite! {
             
@@ -133,12 +139,29 @@ class CCMore: UIViewController, UITableViewDelegate, UITableViewDataSource {
             }
         }
         
+        // ITEM : Settings
+        item = OCExternalSites.init()
+        item.name = "_settings_"
+        item.icon = "moreSettings"
+        item.url = "segueSettings"
+        settingsMenu.append(item)
+        
         if (quotaMenu.count > 0) {
             
             let item = quotaMenu[0]
             labelQuotaExternalSite.text = item.name
         }
         
+        // ITEM : Logout [CUSTOM]
+        if NCBrandOptions.sharedInstance.use_logout_on_menu_more == true {
+            
+            item = OCExternalSites.init()
+            item.name = "_logout_"
+            item.icon = "logout"
+            item.url = "logout"
+            settingsMenu.append(item)
+        }
+        
         // User data & Theming
         changeUserProfile()
         changeTheming()
@@ -293,23 +316,31 @@ class CCMore: UIViewController, UITableViewDelegate, UITableViewDataSource {
         var item: OCExternalSites = OCExternalSites.init()
         
         // Menu Function
-        if (indexPath.section == 0) {
+        if indexPath.section == 0 {
             
             item = functionMenu[indexPath.row]
         }
         
         // Menu Settings
-        if (indexPath.section == 1) {
+        if indexPath.section == 1 {
             
             item = settingsMenu[indexPath.row]
         }
         
-        if (item.url.contains("segue") && !item.url.contains("//")) {
+        // Action
+        if item.url.contains("segue") && !item.url.contains("//") {
             
             self.navigationController?.performSegue(withIdentifier: item.url, sender: self)
-        }
         
-        if (item.url.contains("//")) {
+        } else if item.url.contains("open") && !item.url.contains("//") {
+            
+            let nameStoryboard = item.url.substring(from: item.url.index(item.url.startIndex, offsetBy: 4))
+            
+            let storyboard = UIStoryboard(name: nameStoryboard, bundle: nil)
+            let controller = storyboard.instantiateViewController(withIdentifier: nameStoryboard)
+            self.present(controller, animated: true, completion: nil)
+            
+        } else if item.url.contains("//") {
             
             if (self.splitViewController?.isCollapsed)! {
                 
@@ -322,6 +353,25 @@ class CCMore: UIViewController, UITableViewDelegate, UITableViewDataSource {
                 let webVC = SwiftModalWebVC(urlString: item.url)
                 self.present(webVC, animated: true, completion: nil)
             }
+            
+        } else if item.url == "logout" {
+            
+            let alertController = UIAlertController(title: "", message: NSLocalizedString("_want_delete_", comment: ""), preferredStyle: .alert)
+            
+            let actionYes = UIAlertAction(title: NSLocalizedString("_yes_delete_", comment: ""), style: .default) { (action:UIAlertAction) in
+                
+                let manageAccount = CCManageAccount()
+                manageAccount.delete(self.appDelegate.activeAccount)
+                manageAccount.addFoced()
+            }
+            
+            let actionNo = UIAlertAction(title: NSLocalizedString("_no_delete_", comment: ""), style: .default) { (action:UIAlertAction) in
+                print("You've pressed No button");
+            }
+            
+            alertController.addAction(actionYes)
+            alertController.addAction(actionNo)
+            self.present(alertController, animated: true, completion:nil)
         }
     }
     

+ 4 - 0
iOSClient/Settings/CCManageAccount.h

@@ -24,8 +24,12 @@
 #import "XLFormViewController.h"
 #import "XLForm.h"
 #import "CCLogin.h"
+#import "CCCoreData.h"
 
 
 @interface CCManageAccount : XLFormViewController <CCLoginDelegate>
 
+- (void)deleteAccount:(NSString *)account;
+- (void)addAccountFoced;
+
 @end

+ 10 - 14
iOSClient/Settings/CCManageAccount.m

@@ -30,7 +30,7 @@
 
 @interface CCManageAccount ()
 {
-    tableAccount *_tableAccount;
+    TableAccount *_tableAccount;
 
     CCLoginWeb *_loginWeb;
     CCLogin *_loginVC;
@@ -47,7 +47,7 @@
     
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeTheming) name:@"changeTheming" object:nil];
     
-    NSArray *listAccount = [[NCManageDatabase sharedInstance] getAccounts];
+    NSArray *listAccount = [CCCoreData getAllAccount];
 
     // Section : CLOUD ACCOUNT -------------------------------------------
     
@@ -290,34 +290,27 @@
 {
     XLFormPickerCell *pickerAccount = (XLFormPickerCell *)[[self.form formRowWithTag:@"pickerAccount"] cellForFormController:self];
     
-    NSString *accountNow = pickerAccount.rowDescriptor.value;
-    NSArray *listAccount = [[NCManageDatabase sharedInstance] getAccounts];
-    
     [actionSheet dismissWithClickedButtonIndex:buttonIndex animated:YES];
     
     if (buttonIndex == 0 && actionSheet.tag == actionSheetCancellaAccount) {
         
-        [app cancelAllOperations];
+        NSString *accountNow = pickerAccount.rowDescriptor.value;
         
-        [[CCNetworking sharedNetworking] settingSessionsDownload:YES upload:YES taskStatus:k_taskStatusCancel activeAccount:app.activeAccount activeUser:app.activeUser activeUrl:app.activeUrl];
-
         [self deleteAccount:accountNow];
         
-        // Clear active user
-        [app settingActiveAccount:nil activeUrl:nil activeUser:nil activePassword:nil];
-        
-        listAccount = [[NCManageDatabase sharedInstance] getAccounts];
-        
+        NSArray *listAccount = [CCCoreData getAllAccount];
         if ([listAccount count] > 0) [self ChangeDefaultAccount:listAccount[0]];
         else {
             [self addAccountFoced];
-            return;
         }
     }
 }
 
 - (void)deleteAccount:(NSString *)account
 {
+    [app cancelAllOperations];
+    [[CCNetworking sharedNetworking] settingSessionsDownload:YES upload:YES taskStatus:k_taskStatusCancel activeAccount:app.activeAccount activeUser:app.activeUser activeUrl:app.activeUrl];
+    
     [[NCManageDatabase sharedInstance] clearTable:[tableAccount class] account:account];
     [[NCManageDatabase sharedInstance] clearTable:[tableActivity class] account:account];
     [[NCManageDatabase sharedInstance] clearTable:[tableAutomaticUpload class] account:account];
@@ -327,6 +320,9 @@
     [[NCManageDatabase sharedInstance] clearTable:[tableLocalFile class] account:app.activeAccount];
     [[NCManageDatabase sharedInstance] clearTable:[tableMetadata class] account:account];
     [[NCManageDatabase sharedInstance] clearTable:[tableShare class] account:account];
+    
+    // Clear active user
+    [app settingActiveAccount:nil activeUrl:nil activeUser:nil activePassword:nil];
 }
 
 - (void)answerDelAccount:(XLFormRowDescriptor *)sender

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

@@ -80,6 +80,8 @@
 // More
 
 "_more_"                    = "More";
+"_notifications_"           = "Notifications";
+"_logout_"                  = "Logout";
 
 // Settings