Browse Source

https://github.com/nextcloud/ios/issues/129

Marino Faggiana 8 years ago
parent
commit
7010aae503

+ 7 - 7
Libraries external/OCCommunicationLib/OCCommunicationLib/OCCommunication.m

@@ -1673,16 +1673,16 @@
                 
                 for (NSDictionary *data in datas) {
                     
-                    OCExternalSites *externalSite = [OCExternalSites new];
+                    OCExternalSites *externalSites = [OCExternalSites new];
                     
-                    externalSite.idExternalSite = [[data valueForKey:@"id"] integerValue];
+                    externalSites.idExternalSite = [[data valueForKey:@"id"] integerValue];
     
-                    if ([data valueForKey:@"icon"] && ![[data valueForKey:@"icon"] isEqual:[NSNull null]]) externalSite.icon = [data valueForKey:@"icon"];
-                    if ([data valueForKey:@"lang"] && ![[data valueForKey:@"lang"] isEqual:[NSNull null]]) externalSite.lang = [data valueForKey:@"lang"];
-                    if ([data valueForKey:@"name"] && ![[data valueForKey:@"name"] isEqual:[NSNull null]]) externalSite.name = [data valueForKey:@"name"];
-                    if ([data valueForKey:@"url"]  && ![[data valueForKey:@"url"]  isEqual:[NSNull null]]) externalSite.url  = [data valueForKey:@"url"];
+                    if ([data valueForKey:@"icon"] && ![[data valueForKey:@"icon"] isEqual:[NSNull null]]) externalSites.icon = [data valueForKey:@"icon"];
+                    if ([data valueForKey:@"lang"] && ![[data valueForKey:@"lang"] isEqual:[NSNull null]]) externalSites.lang = [data valueForKey:@"lang"];
+                    if ([data valueForKey:@"name"] && ![[data valueForKey:@"name"] isEqual:[NSNull null]]) externalSites.name = [data valueForKey:@"name"];
+                    if ([data valueForKey:@"url"]  && ![[data valueForKey:@"url"]  isEqual:[NSNull null]]) externalSites.url  = [data valueForKey:@"url"];
                     
-                    [listOfExternalSites addObject:externalSite];
+                    [listOfExternalSites addObject:externalSites];
                 }
                 
             } else {

+ 1 - 0
iOSClient/CCStandardImages.h

@@ -79,6 +79,7 @@
 #define image_MenuOrderByFileName               @"MenuOrderByFileName"
 #define image_MenuOrdinamentoDiscendente        @"MenuOrdinamentoDiscendente"
 #define image_MenuOrdinamentoAscendente         @"MenuOrdinamentoAscendente"
+#define image_MenuExternalSites                 @"menuExternalSites"
 #define image_MenuTemplate                      @"menuTemplate"
 #define image_MenuUploadFile                    @"menuUploadFile"
 #define image_MenuUploadFileCrypto              @"menuUploadFileCrypto"

+ 8 - 0
iOSClient/FileSystem/CCCoreData.h

@@ -34,6 +34,7 @@
 #import "CCGraphics.h"
 #import "OCUserProfile.h"
 #import "OCActivity.h"
+#import "OCExternalSites.h"
 
 #import "TableAccount+CoreDataClass.h"
 #import "TableActivity+CoreDataClass.h"
@@ -44,6 +45,7 @@
 #import "TableGPS+CoreDataClass.h"
 #import "TableShare+CoreDataClass.h"
 #import "TableAutomaticUpload+CoreDataClass.h"
+#import "TableExternalSites+CoreDataClass.h"
 
 @interface CCCoreData : NSObject
 
@@ -214,6 +216,12 @@
 + (void)addActivityClient:(NSString *)file fileID:(NSString *)fileID action:(NSString *)action selector:(NSString *)selector note:(NSString *)note type:(NSString *)type verbose:(NSInteger)verbose account:(NSString *)account;
 + (NSArray *)getAllTableActivityWithPredicate:(NSPredicate *)predicate;
 
+// ===== External Sites =====
+
++ (void)addExternalSites:(OCExternalSites *)externalSites account:(NSString *)account;
++ (void)deleteAllExternalSitesForAccount:(NSString *)account;
++ (NSArray *)getAllTableExternalSitesWithPredicate:(NSPredicate *)predicate;
+
 // ===== File System =====
 
 + (BOOL)downloadFile:(CCMetadata *)metadata directoryUser:(NSString *)directoryUser activeAccount:(NSString *)activeAccount;

+ 42 - 0
iOSClient/FileSystem/CCCoreData.m

@@ -1907,6 +1907,48 @@
     return [records sortedArrayUsingDescriptors:[NSArray arrayWithObjects:descriptor, nil]];
 }
 
+#pragma --------------------------------------------------------------------------------------------
+#pragma mark ===== External Sites =====
+#pragma --------------------------------------------------------------------------------------------
+
++ (void)addExternalSites:(OCExternalSites *)externalSites account:(NSString *)account
+{
+    [MagicalRecord saveWithBlockAndWait:^(NSManagedObjectContext *localContext) {
+        
+        TableExternalSites *record = [TableExternalSites MR_createEntityInContext:localContext];
+        
+        record.account = account;
+        
+        record.idExternalSite = [NSNumber numberWithInteger:externalSites.idExternalSite];
+        record.icon = externalSites.icon;
+        record.lang = externalSites.lang;
+        record.name = externalSites.name;
+        record.url = externalSites.url;
+    }];
+}
+
++ (void)deleteAllExternalSitesForAccount:(NSString *)account
+{
+    NSManagedObjectContext *context = [NSManagedObjectContext MR_defaultContext];
+    
+    [TableExternalSites MR_deleteAllMatchingPredicate:[NSPredicate predicateWithFormat:@"(account == %@)", account] inContext:context];
+    
+    [context MR_saveToPersistentStoreAndWait];
+}
+
++ (NSArray *)getAllTableExternalSitesWithPredicate:(NSPredicate *)predicate
+{
+    NSManagedObjectContext *context = [NSManagedObjectContext MR_defaultContext];
+    
+    NSArray *records = [TableExternalSites MR_findAllWithPredicate:predicate inContext:context];
+    
+    if ([records count] == 0) return nil;
+    
+    NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"idExternalSite" ascending:YES selector:nil];
+    
+    return [records sortedArrayUsingDescriptors:[NSArray arrayWithObjects:descriptor, nil]];
+}
+
 #pragma --------------------------------------------------------------------------------------------
 #pragma mark ===== File System =====
 #pragma --------------------------------------------------------------------------------------------

+ 23 - 0
iOSClient/Images.xcassets/menuExternalSites.imageset/Contents.json

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

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


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


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


+ 60 - 63
iOSClient/Main/CCMain.m

@@ -1048,7 +1048,10 @@
 
 - (void)getExternalSitesServerSuccess:(NSArray *)listOfExternalSites
 {
+    [CCCoreData deleteAllExternalSitesForAccount:app.activeAccount];
     
+    for (OCExternalSites *tableExternalSites in listOfExternalSites)
+        [CCCoreData addExternalSites:tableExternalSites account:app.activeAccount];
 }
 
 - (void)getExternalSitesServerFailure:(CCMetadataNet *)metadataNet message:(NSString *)message errorCode:(NSInteger)errorCode
@@ -3244,6 +3247,63 @@
     
     NSMutableArray *menuArray = [NSMutableArray new];
     
+    NSArray *externalSites = [CCCoreData getAllTableExternalSitesWithPredicate:[NSPredicate predicateWithFormat:@"(account == %@)", app.activeAccount]];
+    
+    // External Sites Present
+    
+    if([externalSites count] > 0) {
+        
+        CCMenuItem *item;
+        
+        for (TableExternalSites *tableExternalSites in externalSites) {
+            
+            item = [CCMenuItem new];
+            item.title = tableExternalSites.name;
+            item.image = [UIImage imageNamed:image_MenuExternalSites];
+            item.target = self;
+            item.action = @selector(goToWebVC:);
+            item.argument = tableExternalSites.url;
+            [menuArray addObject:item];
+        }
+        
+        if ([menuArray count] > 0) {
+            
+            OptionalConfiguration options;
+            Color textColor, backgroundColor;
+            
+            textColor.R = 0;
+            textColor.G = 0;
+            textColor.B = 0;
+            
+            backgroundColor.R = 1;
+            backgroundColor.G = 1;
+            backgroundColor.B = 1;
+            
+            NSInteger originY = 60;
+            
+            options.arrowSize = 9;
+            options.marginXSpacing = 7;
+            options.marginYSpacing = 10;
+            options.intervalSpacing = 20;
+            options.menuCornerRadius = 6.5;
+            options.maskToBackground = NO;
+            options.shadowOfMenu = YES;
+            options.hasSeperatorLine = YES;
+            options.seperatorLineHasInsets = YES;
+            options.textColor = textColor;
+            options.menuBackgroundColor = backgroundColor;
+            
+            CGRect rect = self.view.frame;
+            rect.origin.y = rect.origin.y + originY;
+            rect.size.height = rect.size.height - originY;
+            
+            [CCMenu setTitleFont:[UIFont systemFontOfSize:12.0]];
+            [CCMenu showMenuInView:self.navigationController.view fromRect:rect menuItems:menuArray withOptions:options];
+        }
+        
+        return;
+    }
+
 #ifndef OPTION_MULTIUSER_DISABLE
     
     if ([app.netQueue operationCount] > 0 || [app.netQueueDownload operationCount] > 0 || [app.netQueueDownloadWWan operationCount] > 0 || [app.netQueueUpload operationCount] > 0 || [app.netQueueUploadWWan operationCount] > 0 || [CCCoreData countTableAutomaticUploadForAccount:app.activeAccount selector:nil] > 0) {
@@ -3306,69 +3366,6 @@
     [CCMenu showMenuInView:self.navigationController.view fromRect:rect menuItems:menuArray withOptions:options];
     
 #endif
-    
-#if defined(MENU_BRAND_ENABLE)
-    
-    CCMenuItem *item;
-    
-    item = [CCMenuItem new];
-    item.title = @"Example title ... N. 1";
-    item.image = [UIImage imageNamed:image_notification];
-    item.target = self;
-    item.action = @selector(goToWebVC:);
-    item.argument = @"https://www.nextcloud.com";
-    [menuArray addObject:item];
-
-    item = [CCMenuItem new];
-    item.title = @"Example title ... N. 2";
-    item.image = [UIImage imageNamed:image_notification];
-    item.target = self;
-    item.action = @selector(goToWebVC:);
-    item.argument = @"https://www.nextcloud.com";
-    [menuArray addObject:item];
-    
-    item = [CCMenuItem new];
-    item.title = @"Example title ... N. 3";
-    item.image = [UIImage imageNamed:image_notification];
-    item.target = self;
-    item.action = @selector(goToWebVC:);
-    item.argument = @"https://www.nextcloud.com";
-    [menuArray addObject:item];
-    
-    OptionalConfiguration options;
-    Color textColor, backgroundColor;
-    
-    textColor.R = 0;
-    textColor.G = 0;
-    textColor.B = 0;
-    
-    backgroundColor.R = 1;
-    backgroundColor.G = 1;
-    backgroundColor.B = 1;
-    
-    NSInteger originY = 60;
-    
-    options.arrowSize = 9;
-    options.marginXSpacing = 7;
-    options.marginYSpacing = 10;
-    options.intervalSpacing = 20;
-    options.menuCornerRadius = 6.5;
-    options.maskToBackground = NO;
-    options.shadowOfMenu = YES;
-    options.hasSeperatorLine = YES;
-    options.seperatorLineHasInsets = YES;
-    options.textColor = textColor;
-    options.menuBackgroundColor = backgroundColor;
-    
-    CGRect rect = self.view.frame;
-    rect.origin.y = rect.origin.y + originY;
-    rect.size.height = rect.size.height - originY;
-    
-    [CCMenu setTitleFont:[UIFont systemFontOfSize:12.0]];
-    [CCMenu showMenuInView:self.navigationController.view fromRect:rect menuItems:menuArray withOptions:options];
-    
-#endif
-    
 }
 
 - (void)changeDefaultAccount:(CCMenuItem *)sender