Browse Source

replace table GPS

Marino Faggiana 8 years ago
parent
commit
6234b24515

+ 7 - 25
Nextcloud.xcodeproj/project.pbxproj

@@ -19,12 +19,6 @@
 		F708CF761E56E8CC00271D8B /* TableLocalFile+CoreDataProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = F708CF541E56E8CB00271D8B /* TableLocalFile+CoreDataProperties.m */; };
 		F708CF771E56E8CC00271D8B /* TableLocalFile+CoreDataProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = F708CF541E56E8CB00271D8B /* TableLocalFile+CoreDataProperties.m */; };
 		F708CF781E56E8CC00271D8B /* TableLocalFile+CoreDataProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = F708CF541E56E8CB00271D8B /* TableLocalFile+CoreDataProperties.m */; };
-		F708CF791E56E8CC00271D8B /* TableGPS+CoreDataClass.m in Sources */ = {isa = PBXBuildFile; fileRef = F708CF561E56E8CB00271D8B /* TableGPS+CoreDataClass.m */; };
-		F708CF7A1E56E8CC00271D8B /* TableGPS+CoreDataClass.m in Sources */ = {isa = PBXBuildFile; fileRef = F708CF561E56E8CB00271D8B /* TableGPS+CoreDataClass.m */; };
-		F708CF7B1E56E8CC00271D8B /* TableGPS+CoreDataClass.m in Sources */ = {isa = PBXBuildFile; fileRef = F708CF561E56E8CB00271D8B /* TableGPS+CoreDataClass.m */; };
-		F708CF7C1E56E8CC00271D8B /* TableGPS+CoreDataProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = F708CF581E56E8CC00271D8B /* TableGPS+CoreDataProperties.m */; };
-		F708CF7D1E56E8CC00271D8B /* TableGPS+CoreDataProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = F708CF581E56E8CC00271D8B /* TableGPS+CoreDataProperties.m */; };
-		F708CF7E1E56E8CC00271D8B /* TableGPS+CoreDataProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = F708CF581E56E8CC00271D8B /* TableGPS+CoreDataProperties.m */; };
 		F708CF7F1E56E8CC00271D8B /* TableDirectory+CoreDataClass.m in Sources */ = {isa = PBXBuildFile; fileRef = F708CF5A1E56E8CC00271D8B /* TableDirectory+CoreDataClass.m */; };
 		F708CF801E56E8CC00271D8B /* TableDirectory+CoreDataClass.m in Sources */ = {isa = PBXBuildFile; fileRef = F708CF5A1E56E8CC00271D8B /* TableDirectory+CoreDataClass.m */; };
 		F708CF811E56E8CC00271D8B /* TableDirectory+CoreDataClass.m in Sources */ = {isa = PBXBuildFile; fileRef = F708CF5A1E56E8CC00271D8B /* TableDirectory+CoreDataClass.m */; };
@@ -90,7 +84,6 @@
 		F71459F31D12E3B700CAFEEC /* UIImage+Resizing.m in Sources */ = {isa = PBXBuildFile; fileRef = F70F04CA1C889184008DAB36 /* UIImage+Resizing.m */; };
 		F71459F71D12E3B700CAFEEC /* CCGraphics.m in Sources */ = {isa = PBXBuildFile; fileRef = F76C3B841C6388BC00DC4301 /* CCGraphics.m */; };
 		F71459FB1D12E3B700CAFEEC /* PPImageScrollingCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = F70F05211C889184008DAB36 /* PPImageScrollingCellView.m */; };
-		F71459FE1D12E3B700CAFEEC /* CCExifGeo.m in Sources */ = {isa = PBXBuildFile; fileRef = F7A54C351C6267B500E2C8BF /* CCExifGeo.m */; };
 		F71459FF1D12E3B700CAFEEC /* RNCryptor.m in Sources */ = {isa = PBXBuildFile; fileRef = F70F05351C889184008DAB36 /* RNCryptor.m */; };
 		F7145A001D12E3B700CAFEEC /* CCGlobal.m in Sources */ = {isa = PBXBuildFile; fileRef = F7C8C1911B482CEA0048180E /* CCGlobal.m */; };
 		F7145A011D12E3B700CAFEEC /* UIImage+Blurring.m in Sources */ = {isa = PBXBuildFile; fileRef = F70F04C01C889184008DAB36 /* UIImage+Blurring.m */; };
@@ -164,7 +157,6 @@
 		F74344651E127DE9001CC831 /* CCNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = F732BA041D76CE1500E9878B /* CCNetworking.m */; };
 		F74344661E127E35001CC831 /* CCCoreData.m in Sources */ = {isa = PBXBuildFile; fileRef = F7B81D801C64E77F006D02DF /* CCCoreData.m */; };
 		F74344671E127E38001CC831 /* CCMetadata.m in Sources */ = {isa = PBXBuildFile; fileRef = F7C8C1731B482A920048180E /* CCMetadata.m */; };
-		F74344781E127E9E001CC831 /* CCExifGeo.m in Sources */ = {isa = PBXBuildFile; fileRef = F7A54C351C6267B500E2C8BF /* CCExifGeo.m */; };
 		F74344791E127EA1001CC831 /* CCError.m in Sources */ = {isa = PBXBuildFile; fileRef = F76C3B881C638A4C00DC4301 /* CCError.m */; };
 		F743447B1E127EAC001CC831 /* CCUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = F7053E3D1C639DF500741EA5 /* CCUtility.m */; };
 		F743447C1E127EB2001CC831 /* NSString+TruncateToWidth.m in Sources */ = {isa = PBXBuildFile; fileRef = F73049B91CB567F000C7C320 /* NSString+TruncateToWidth.m */; };
@@ -507,6 +499,8 @@
 		F77B0F901D118A16002130FE /* ZSSpicker@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F70F0DBC1C889300008DAB36 /* ZSSpicker@2x.png */; };
 		F77B0F941D118A16002130FE /* ZSSh6@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F70F0DA41C889300008DAB36 /* ZSSh6@2x.png */; };
 		F77D49A91DC238E500CDC568 /* loading@2x.gif in Resources */ = {isa = PBXBuildFile; fileRef = F77D49A71DC238E500CDC568 /* loading@2x.gif */; };
+		F77EB6281EC08036003F814F /* CCExifGeo.m in Sources */ = {isa = PBXBuildFile; fileRef = F7A54C351C6267B500E2C8BF /* CCExifGeo.m */; };
+		F77EB6291EC08037003F814F /* CCExifGeo.m in Sources */ = {isa = PBXBuildFile; fileRef = F7A54C351C6267B500E2C8BF /* CCExifGeo.m */; };
 		F78088EA1DD3A1DB005C5A7C /* cryptocloud.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = F78088E51DD3A1DB005C5A7C /* cryptocloud.xcdatamodeld */; };
 		F78088EB1DD3A1DB005C5A7C /* cryptocloud.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = F78088E51DD3A1DB005C5A7C /* cryptocloud.xcdatamodeld */; };
 		F786AC9C1EBDC88B0055AE9D /* NCDatabase.swift in Sources */ = {isa = PBXBuildFile; fileRef = F786AC9B1EBDC88B0055AE9D /* NCDatabase.swift */; };
@@ -794,10 +788,6 @@
 		F708CF521E56E8CB00271D8B /* TableLocalFile+CoreDataClass.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "TableLocalFile+CoreDataClass.m"; sourceTree = "<group>"; };
 		F708CF531E56E8CB00271D8B /* TableLocalFile+CoreDataProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "TableLocalFile+CoreDataProperties.h"; sourceTree = "<group>"; };
 		F708CF541E56E8CB00271D8B /* TableLocalFile+CoreDataProperties.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "TableLocalFile+CoreDataProperties.m"; sourceTree = "<group>"; };
-		F708CF551E56E8CB00271D8B /* TableGPS+CoreDataClass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "TableGPS+CoreDataClass.h"; sourceTree = "<group>"; };
-		F708CF561E56E8CB00271D8B /* TableGPS+CoreDataClass.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "TableGPS+CoreDataClass.m"; sourceTree = "<group>"; };
-		F708CF571E56E8CC00271D8B /* TableGPS+CoreDataProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "TableGPS+CoreDataProperties.h"; sourceTree = "<group>"; };
-		F708CF581E56E8CC00271D8B /* TableGPS+CoreDataProperties.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "TableGPS+CoreDataProperties.m"; sourceTree = "<group>"; };
 		F708CF591E56E8CC00271D8B /* TableDirectory+CoreDataClass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "TableDirectory+CoreDataClass.h"; sourceTree = "<group>"; };
 		F708CF5A1E56E8CC00271D8B /* TableDirectory+CoreDataClass.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "TableDirectory+CoreDataClass.m"; sourceTree = "<group>"; };
 		F708CF5B1E56E8CC00271D8B /* TableDirectory+CoreDataProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "TableDirectory+CoreDataProperties.h"; sourceTree = "<group>"; };
@@ -1400,6 +1390,7 @@
 		F777F0301C29717F00CE81CB /* PHAsset+Utility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "PHAsset+Utility.h"; sourceTree = "<group>"; };
 		F777F0311C29717F00CE81CB /* PHAsset+Utility.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "PHAsset+Utility.m"; sourceTree = "<group>"; };
 		F77D49A71DC238E500CDC568 /* loading@2x.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = "loading@2x.gif"; sourceTree = "<group>"; };
+		F77EB61C1EC07913003F814F /* cryptocloud 9.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "cryptocloud 9.xcdatamodel"; sourceTree = "<group>"; };
 		F78088E61DD3A1DB005C5A7C /* cryptocloud 2.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "cryptocloud 2.xcdatamodel"; sourceTree = "<group>"; };
 		F78088E71DD3A1DB005C5A7C /* cryptocloud 3.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "cryptocloud 3.xcdatamodel"; sourceTree = "<group>"; };
 		F78088E81DD3A1DB005C5A7C /* cryptocloud 4.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "cryptocloud 4.xcdatamodel"; sourceTree = "<group>"; };
@@ -2863,10 +2854,6 @@
 				F708CF521E56E8CB00271D8B /* TableLocalFile+CoreDataClass.m */,
 				F708CF531E56E8CB00271D8B /* TableLocalFile+CoreDataProperties.h */,
 				F708CF541E56E8CB00271D8B /* TableLocalFile+CoreDataProperties.m */,
-				F708CF551E56E8CB00271D8B /* TableGPS+CoreDataClass.h */,
-				F708CF561E56E8CB00271D8B /* TableGPS+CoreDataClass.m */,
-				F708CF571E56E8CC00271D8B /* TableGPS+CoreDataProperties.h */,
-				F708CF581E56E8CC00271D8B /* TableGPS+CoreDataProperties.m */,
 				F708CF591E56E8CC00271D8B /* TableDirectory+CoreDataClass.h */,
 				F708CF5A1E56E8CC00271D8B /* TableDirectory+CoreDataClass.m */,
 				F708CF5B1E56E8CC00271D8B /* TableDirectory+CoreDataProperties.h */,
@@ -3962,7 +3949,6 @@
 				F73C41541E82E51F000137C0 /* TableExternalSites+CoreDataProperties.m in Sources */,
 				F71459B81D12E3B700CAFEEC /* CCError.m in Sources */,
 				F73CC0701E813DFF006E3047 /* BKPasscodeInputView.m in Sources */,
-				F708CF7A1E56E8CC00271D8B /* TableGPS+CoreDataClass.m in Sources */,
 				F71459BA1D12E3B700CAFEEC /* NSString+TruncateToWidth.m in Sources */,
 				F708CF9B1E56E8CC00271D8B /* TableAccount+CoreDataProperties.m in Sources */,
 				F71459BB1D12E3B700CAFEEC /* NYXProgressiveImageView.m in Sources */,
@@ -3978,6 +3964,7 @@
 				F708CF891E56E8CC00271D8B /* TableShare+CoreDataProperties.m in Sources */,
 				F71459C21D12E3B700CAFEEC /* ShareViewController.m in Sources */,
 				F71459C31D12E3B700CAFEEC /* UIImage+Filtering.m in Sources */,
+				F77EB6281EC08036003F814F /* CCExifGeo.m in Sources */,
 				F73CC0731E813DFF006E3047 /* BKPasscodeLockScreenManager.m in Sources */,
 				F73CC06A1E813DFF006E3047 /* BKPasscodeDummyViewController.m in Sources */,
 				F73CC07C1E813DFF006E3047 /* BKTouchIDManager.m in Sources */,
@@ -4019,8 +4006,6 @@
 				F7F801051D98205A007537BC /* CCCertificate.m in Sources */,
 				F786ACAB1EBDCCE60055AE9D /* NCManageDatabase.swift in Sources */,
 				F71459FB1D12E3B700CAFEEC /* PPImageScrollingCellView.m in Sources */,
-				F708CF7D1E56E8CC00271D8B /* TableGPS+CoreDataProperties.m in Sources */,
-				F71459FE1D12E3B700CAFEEC /* CCExifGeo.m in Sources */,
 				F708CF861E56E8CC00271D8B /* TableShare+CoreDataClass.m in Sources */,
 				F71459FF1D12E3B700CAFEEC /* RNCryptor.m in Sources */,
 				F7145A001D12E3B700CAFEEC /* CCGlobal.m in Sources */,
@@ -4059,19 +4044,18 @@
 				F73CC07A1E813DFF006E3047 /* BKShiftingView.m in Sources */,
 				F708CF841E56E8CC00271D8B /* TableDirectory+CoreDataProperties.m in Sources */,
 				F74344821E127F68001CC831 /* MBProgressHUD.m in Sources */,
-				F708CF7B1E56E8CC00271D8B /* TableGPS+CoreDataClass.m in Sources */,
 				F743448B1E12800D001CC831 /* CCCertificate.m in Sources */,
 				F743447D1E127ECB001CC831 /* AESCrypt.m in Sources */,
 				F743447E1E127ECE001CC831 /* NSData+Base64.m in Sources */,
 				F74344671E127E38001CC831 /* CCMetadata.m in Sources */,
 				F73CC0741E813DFF006E3047 /* BKPasscodeLockScreenManager.m in Sources */,
-				F74344781E127E9E001CC831 /* CCExifGeo.m in Sources */,
 				F7E718B01EB0FBE700FA58C9 /* CCGraphics.m in Sources */,
 				F74344171E1264EE001CC831 /* DocumentPickerViewController.swift in Sources */,
 				F74344811E127F49001CC831 /* AFViewShaker.m in Sources */,
 				F74344791E127EA1001CC831 /* CCError.m in Sources */,
 				F708CF6F1E56E8CC00271D8B /* TableMetadata+CoreDataClass.m in Sources */,
 				F743447B1E127EAC001CC831 /* CCUtility.m in Sources */,
+				F77EB6291EC08037003F814F /* CCExifGeo.m in Sources */,
 				F74344871E127F95001CC831 /* UICKeyChainStore.m in Sources */,
 				F73CC0711E813DFF006E3047 /* BKPasscodeInputView.m in Sources */,
 				F73CC07D1E813DFF006E3047 /* BKTouchIDManager.m in Sources */,
@@ -4082,7 +4066,6 @@
 				F74344841E127F84001CC831 /* RNCryptorEngine.m in Sources */,
 				F74344851E127F86001CC831 /* RNDecryptor.m in Sources */,
 				F74344881E127F9C001CC831 /* UIImage+animatedGIF.m in Sources */,
-				F708CF7E1E56E8CC00271D8B /* TableGPS+CoreDataProperties.m in Sources */,
 				F73CC0771E813DFF006E3047 /* BKPasscodeViewController.m in Sources */,
 				F743448A1E127FF2001CC831 /* CCHud.m in Sources */,
 				F74344861E127F89001CC831 /* RNEncryptor.m in Sources */,
@@ -4165,7 +4148,6 @@
 				F73F537F1E929C8500F8678D /* CCMore.swift in Sources */,
 				F762CB731EACB7D400B38484 /* ReaderThumbRender.m in Sources */,
 				F7F54D0C1E5B14C800E19C62 /* MWTapDetectingView.m in Sources */,
-				F708CF7C1E56E8CC00271D8B /* TableGPS+CoreDataProperties.m in Sources */,
 				F708CF821E56E8CC00271D8B /* TableDirectory+CoreDataProperties.m in Sources */,
 				F762CB6F1EACB7D400B38484 /* ReaderMainToolbar.m in Sources */,
 				F77B0E121D118A16002130FE /* CCPatenteGuida.m in Sources */,
@@ -4190,7 +4172,6 @@
 				F762CB6D1EACB7D400B38484 /* ReaderDocumentOutline.m in Sources */,
 				F762CB9B1EACB84400B38484 /* TWMessageBarManager.m in Sources */,
 				F77B0E201D118A16002130FE /* CCShareUserOC.m in Sources */,
-				F708CF791E56E8CC00271D8B /* TableGPS+CoreDataClass.m in Sources */,
 				F7B1FBCA1E72E3D1001781FE /* SwiftWebVCActivitySafari.swift in Sources */,
 				F7F54D0A1E5B14C800E19C62 /* MWPhotoBrowser.m in Sources */,
 				F720E01F1E48C73E001A4B9E /* CCActions.swift in Sources */,
@@ -4986,6 +4967,7 @@
 		F78088E51DD3A1DB005C5A7C /* cryptocloud.xcdatamodeld */ = {
 			isa = XCVersionGroup;
 			children = (
+				F77EB61C1EC07913003F814F /* cryptocloud 9.xcdatamodel */,
 				F76B3CDC1EAE4D9100921AC9 /* cryptocloud 8.xcdatamodel */,
 				F7C00D4A1E2D10BB0032160B /* cryptocloud 7.xcdatamodel */,
 				F7BFA4541E0693EE0010E44C /* cryptocloud 5.xcdatamodel */,
@@ -4994,7 +4976,7 @@
 				F78088E81DD3A1DB005C5A7C /* cryptocloud 4.xcdatamodel */,
 				F78088E91DD3A1DB005C5A7C /* cryptocloud.xcdatamodel */,
 			);
-			currentVersion = F76B3CDC1EAE4D9100921AC9 /* cryptocloud 8.xcdatamodel */;
+			currentVersion = F77EB61C1EC07913003F814F /* cryptocloud 9.xcdatamodel */;
 			path = cryptocloud.xcdatamodeld;
 			sourceTree = "<group>";
 			versionGroupType = wrapper.xcdatamodel;

+ 6 - 6
iOSClient/Activity/CCActivity.m

@@ -173,7 +173,7 @@
     NSDate *dateActivity;
     
     if ([_sectionDataSource count] > 0)
-        dateActivity = ((DBActivity *)[_sectionDataSource objectAtIndex:0]).date;
+        dateActivity = ((tableActivity *)[_sectionDataSource objectAtIndex:0]).date;
 
     if ([dateActivity compare:_storeDateFirstActivity] == NSOrderedDescending || _storeDateFirstActivity == nil || dateActivity == nil) {
         _storeDateFirstActivity = dateActivity;
@@ -192,7 +192,7 @@
 
 - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
 {
-    DBActivity *activity = [_sectionDataSource objectAtIndex:section];
+    tableActivity *activity = [_sectionDataSource objectAtIndex:section];
         
     if ([activity.action isEqual: k_activityDebugActionDownload] || [activity.action isEqual: k_activityDebugActionUpload]) {
         
@@ -207,7 +207,7 @@
 
 -(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section
 {
-    DBActivity *activity = [_sectionDataSource objectAtIndex:section];
+    tableActivity *activity = [_sectionDataSource objectAtIndex:section];
     
     UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, collectionView.frame.size.width - 40, CGFLOAT_MAX)];
     label.numberOfLines = 0;
@@ -242,7 +242,7 @@
     
         reusableview = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:@"header" forIndexPath:indexPath];
         
-        DBActivity *activity = [_sectionDataSource objectAtIndex:indexPath.section];
+        tableActivity *activity = [_sectionDataSource objectAtIndex:indexPath.section];
     
         UILabel *dateLabel = (UILabel *)[reusableview viewWithTag:100];
         UILabel *actionLabel = (UILabel *)[reusableview viewWithTag:101];
@@ -314,7 +314,7 @@
     //cell.backgroundColor = [UIColor clearColor];
     UIImageView *imageView = (UIImageView *)[cell viewWithTag:104];
 
-    DBActivity *activity = [_sectionDataSource objectAtIndex:indexPath.section];
+    tableActivity *activity = [_sectionDataSource objectAtIndex:indexPath.section];
     
     imageView.image = [UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%@/%@.ico", app.directoryUser, activity.fileID]];
     
@@ -323,7 +323,7 @@
 
 - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
 {
-    DBActivity *activity = [_sectionDataSource objectAtIndex:indexPath.section];
+    tableActivity *activity = [_sectionDataSource objectAtIndex:indexPath.section];
     
     CCMetadata *metadata = [CCCoreData getMetadataWithPreficate:[NSPredicate predicateWithFormat:@"(account == %@) AND (fileID == %@)", activity.account, activity.fileID] context:nil];
     

+ 1 - 3
iOSClient/AppDelegate.m

@@ -1591,8 +1591,7 @@
 - (void)upgrade
 {
 #ifdef DEBUG
-   // [CCCoreData flushTableGPS];
-   // [CCCoreData setGeoInformationLocalNull];
+   
 #endif
     
     NSString *actualVersion = [CCUtility getVersionCryptoCloud];
@@ -1608,7 +1607,6 @@
     
     if (([actualVersion compare:@"2.15" options:NSNumericSearch] == NSOrderedAscending)) {
         
-        [CCCoreData flushTableGPS];
         [CCCoreData setGeoInformationLocalNull];
     }
     

+ 0 - 8
iOSClient/FileSystem/CCCoreData.h

@@ -30,7 +30,6 @@
 #import "OCSharedDto.h"
 #import "CCMetadata.h"
 #import "CCUtility.h"
-#import "CCExifGeo.h"
 #import "CCGraphics.h"
 #import "OCUserProfile.h"
 #import "OCActivity.h"
@@ -41,7 +40,6 @@
 #import "TableMetadata+CoreDataClass.h"
 #import "TableDirectory+CoreDataClass.h"
 #import "TableLocalFile+CoreDataClass.h"
-#import "TableGPS+CoreDataClass.h"
 #import "TableShare+CoreDataClass.h"
 #import "TableAutomaticUpload+CoreDataClass.h"
 #import "TableExternalSites+CoreDataClass.h"
@@ -194,11 +192,6 @@
 + (void)deleteTableAutomaticUploadForAccount:(NSString *)account assetLocalIdentifier:(NSString *)assetLocalIdentifier;
 + (NSUInteger)countTableAutomaticUploadForAccount:(NSString *)account selector:(NSString *)selector;
 
-// ===== GPS =====
-
-+ (void)setGeocoderLocation:(NSString *)location placemarkAdministrativeArea:(NSString *)placemarkAdministrativeArea placemarkCountry:(NSString *)placemarkCountry placemarkLocality:(NSString *)placemarkLocality placemarkPostalCode:(NSString *)placemarkPostalCode placemarkThoroughfare:(NSString *)placemarkThoroughfare latitude:(NSString *)latitude longitude:(NSString *)longitude;
-+ (NSString *)getLocationFromGeoLatitude:(NSString *)latitude longitude:(NSString *)longitude;
-
 // ===== Share =====
 
 + (void)setShareLink:(NSString *)share fileName:(NSString *)fileName serverUrl:(NSString *)serverUrl sharesLink:(NSMutableDictionary *)sharesLink activeAccount:(NSString *)activeAccount;
@@ -245,7 +238,6 @@
 + (void)flushTableCertificates;
 + (void)flushTableDirectoryAccount:(NSString *)account;
 + (void)flushTableExternalSitesAccount:(NSString *)account;
-+ (void)flushTableGPS;
 + (void)flushTableLocalFileAccount:(NSString *)account;
 + (void)flushTableMetadataAccount:(NSString *)account;
 + (void)flushTableShareAccount:(NSString *)account;

+ 1 - 46
iOSClient/FileSystem/CCCoreData.m

@@ -1593,42 +1593,6 @@
         return [TableAutomaticUpload MR_countOfEntitiesWithPredicate:[NSPredicate predicateWithFormat:@"(account == %@)", account]];
 }
 
-#pragma --------------------------------------------------------------------------------------------
-#pragma mark ===== GPS =====
-#pragma --------------------------------------------------------------------------------------------
-
-+ (void)setGeocoderLocation:(NSString *)location placemarkAdministrativeArea:(NSString *)placemarkAdministrativeArea placemarkCountry:(NSString *)placemarkCountry placemarkLocality:(NSString *)placemarkLocality placemarkPostalCode:(NSString *)placemarkPostalCode placemarkThoroughfare:(NSString *)placemarkThoroughfare latitude:(NSString *)latitude longitude:(NSString *)longitude
-{
-    NSManagedObjectContext *context = [NSManagedObjectContext MR_defaultContext];
-        
-    TableGPS *record = [TableGPS MR_findFirstWithPredicate:[NSPredicate predicateWithFormat:@"(latitude == %@) AND (longitude == %@)", latitude, longitude] inContext:context];
-        
-    if (!record) {
-        record = [TableGPS MR_createEntityInContext:context];
-    }
-        
-    record.latitude = latitude;
-    record.longitude = longitude;
-    if (location) record.location = location;
-    if (placemarkAdministrativeArea) record.placemarkAdministrativeArea = placemarkAdministrativeArea;
-    if (placemarkCountry) record.placemarkCountry = placemarkCountry;
-    if (placemarkLocality) record.placemarkLocality = placemarkLocality;
-    if (placemarkPostalCode) record.placemarkPostalCode = placemarkPostalCode;
-    if (placemarkThoroughfare) record.placemarkThoroughfare = placemarkThoroughfare;
-    
-    [context MR_saveToPersistentStoreAndWait];
-}
-
-+ (NSString *)getLocationFromGeoLatitude:(NSString *)latitude longitude:(NSString *)longitude
-{
-    NSManagedObjectContext *context = [NSManagedObjectContext MR_defaultContext];
-
-    TableGPS *record = [TableGPS MR_findFirstWithPredicate:[NSPredicate predicateWithFormat:@"(latitude == %@) AND (longitude == %@)", latitude, longitude] inContext:context];
-    
-    if (record) return record.location;
-    else return nil;
-}
-
 #pragma --------------------------------------------------------------------------------------------
 #pragma mark ===== Share =====
 #pragma --------------------------------------------------------------------------------------------
@@ -2314,15 +2278,6 @@
     [context MR_saveToPersistentStoreAndWait];
 }
 
-+ (void)flushTableGPS
-{
-    NSManagedObjectContext *context = [NSManagedObjectContext MR_defaultContext];
-    
-    [TableGPS MR_truncateAllInContext:context];
-    
-    [context MR_saveToPersistentStoreAndWait];
-}
-
 + (void)flushTableLocalFileAccount:(NSString *)account
 {
     NSManagedObjectContext *context = [NSManagedObjectContext MR_defaultContext];
@@ -2382,7 +2337,7 @@
     [TableCapabilities MR_truncateAllInContext:context];
     [TableCertificates MR_truncateAllInContext:context];
     [TableDirectory MR_truncateAllInContext:context];
-    [TableGPS MR_truncateAllInContext:context];
+    //[TableGPS MR_truncateAllInContext:context];
     [TableLocalFile MR_truncateAllInContext:context];
     [TableMetadata MR_truncateAllInContext:context];
     [TableShare MR_truncateAllInContext:context];

+ 13 - 1
iOSClient/FileSystem/NCDatabase.swift

@@ -8,7 +8,7 @@
 
 import RealmSwift
 
-class DBActivity: Object {
+class tableActivity: Object {
     
     dynamic var account = ""
     dynamic var action = "Activity"
@@ -22,3 +22,15 @@ class DBActivity: Object {
     dynamic var type = ""
     dynamic var verbose : Bool = false
 }
+
+class tableGPS: Object {
+    
+    dynamic var latitude = ""
+    dynamic var location = ""
+    dynamic var longitude = ""
+    dynamic var placemarkAdministrativeArea = ""
+    dynamic var placemarkCountry = ""
+    dynamic var placemarkLocality = ""
+    dynamic var placemarkPostalCode = ""
+    dynamic var placemarkThoroughfare = ""
+}

+ 67 - 22
iOSClient/FileSystem/NCManageDatabase.swift

@@ -59,22 +59,22 @@ class NCManageDatabase: NSObject {
             for activity in listOfActivity {
                 
                 // Verify
-                let records = realm.objects(DBActivity.self).filter("idActivity = \(activity.idActivity)")
-                if (records.count > 0) {
+                let results = realm.objects(tableActivity.self).filter("idActivity = \(activity.idActivity)")
+                if (results.count > 0) {
                     continue
                 }
                 
                 // Add new Activity
-                let dbActivity = DBActivity()
+                let addActivity = tableActivity()
                 
-                dbActivity.account = account
-                dbActivity.date = activity.date
-                dbActivity.idActivity = Double(activity.idActivity)
-                dbActivity.link = activity.link
-                dbActivity.note = activity.subject
-                dbActivity.type = k_activityTypeInfo
+                addActivity.account = account
+                addActivity.date = activity.date
+                addActivity.idActivity = Double(activity.idActivity)
+                addActivity.link = activity.link
+                addActivity.note = activity.subject
+                addActivity.type = k_activityTypeInfo
 
-                realm.add(dbActivity)
+                realm.add(addActivity)
             }
         }
     }
@@ -93,32 +93,77 @@ class NCManageDatabase: NSObject {
         try! realm.write {
 
             // Add new Activity
-            let dbActivity = DBActivity()
+            let addActivity = tableActivity()
 
             if (account != nil) {
-                dbActivity.account = account!
+                addActivity.account = account!
             }
             
-            dbActivity.action = action
-            dbActivity.file = file
-            dbActivity.fileID = fileID
-            dbActivity.note = noteReplacing
-            dbActivity.selector = selector
-            dbActivity.type = type
-            dbActivity.verbose = verbose
+            addActivity.action = action
+            addActivity.file = file
+            addActivity.fileID = fileID
+            addActivity.note = noteReplacing
+            addActivity.selector = selector
+            addActivity.type = type
+            addActivity.verbose = verbose
 
-            realm.add(dbActivity)
+            realm.add(addActivity)
         }
     }
     
-    func getAllTableActivityWithPredicate(_ predicate : NSPredicate) -> [DBActivity] {
+    func getAllTableActivityWithPredicate(_ predicate: NSPredicate) -> [tableActivity] {
         
         let realm = try! Realm()
 
-        let results = realm.objects(DBActivity.self).filter(predicate).sorted(byKeyPath: "date", ascending: false)
+        let results = realm.objects(tableActivity.self).filter(predicate).sorted(byKeyPath: "date", ascending: false)
         
         return Array(results)
     }
     
+    //MARK: -
+    //MARK: Table GPS
+    
+    func addGeocoderLocation(_ location: String, placemarkAdministrativeArea: String, placemarkCountry: String, placemarkLocality: String, placemarkPostalCode: String, placemarkThoroughfare: String, latitude: String, longitude: String) {
+
+        let realm = try! Realm()
+
+        // Verify if exists
+        let results = realm.objects(tableGPS.self).filter("latitude = '\(latitude)' AND longitude = '\(longitude)'")
+        if (results.count > 0) {
+            return
+        }
+                
+        try! realm.write {
+            
+            // Add new GPS
+            let addGPS = tableGPS()
+                
+            addGPS.location = location
+            addGPS.placemarkAdministrativeArea = placemarkAdministrativeArea
+            addGPS.placemarkCountry = placemarkCountry
+            addGPS.placemarkLocality = placemarkLocality
+            addGPS.placemarkPostalCode = placemarkPostalCode
+            addGPS.placemarkThoroughfare = placemarkThoroughfare
+            addGPS.latitude = latitude
+            addGPS.longitude = longitude
+                
+            realm.add(addGPS)
+        }
+    }
+    
+    func getLocationFromGeoLatitude(_ latitude: String, longitude: String) -> String? {
+        
+        let realm = try! Realm()
+        
+        let results = realm.objects(tableGPS.self).filter("latitude = '\(latitude)' AND longitude = '\(longitude)'")
+        
+        if (results.count == 0) {
+            return nil
+        } else {
+            return results[0].location
+        }
+    }
+
+    
     //MARK: -
 }

+ 0 - 20
iOSClient/FileSystem/TableGPS+CoreDataClass.h

@@ -1,20 +0,0 @@
-//
-//  TableGPS+CoreDataClass.h
-//  Nextcloud
-//
-//  Created by Marino Faggiana on 17/02/17.
-//  Copyright © 2017 TWS. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-#import <CoreData/CoreData.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface TableGPS : NSManagedObject
-
-@end
-
-NS_ASSUME_NONNULL_END
-
-#import "TableGPS+CoreDataProperties.h"

+ 0 - 13
iOSClient/FileSystem/TableGPS+CoreDataClass.m

@@ -1,13 +0,0 @@
-//
-//  TableGPS+CoreDataClass.m
-//  Nextcloud
-//
-//  Created by Marino Faggiana on 17/02/17.
-//  Copyright © 2017 TWS. All rights reserved.
-//
-
-#import "TableGPS+CoreDataClass.h"
-
-@implementation TableGPS
-
-@end

+ 0 - 29
iOSClient/FileSystem/TableGPS+CoreDataProperties.h

@@ -1,29 +0,0 @@
-//
-//  TableGPS+CoreDataProperties.h
-//  Nextcloud
-//
-//  Created by Marino Faggiana on 17/02/17.
-//  Copyright © 2017 TWS. All rights reserved.
-//
-
-#import "TableGPS+CoreDataClass.h"
-
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface TableGPS (CoreDataProperties)
-
-+ (NSFetchRequest<TableGPS *> *)fetchRequest;
-
-@property (nullable, nonatomic, copy) NSString *latitude;
-@property (nullable, nonatomic, copy) NSString *location;
-@property (nullable, nonatomic, copy) NSString *longitude;
-@property (nullable, nonatomic, copy) NSString *placemarkAdministrativeArea;
-@property (nullable, nonatomic, copy) NSString *placemarkCountry;
-@property (nullable, nonatomic, copy) NSString *placemarkLocality;
-@property (nullable, nonatomic, copy) NSString *placemarkPostalCode;
-@property (nullable, nonatomic, copy) NSString *placemarkThoroughfare;
-
-@end
-
-NS_ASSUME_NONNULL_END

+ 0 - 26
iOSClient/FileSystem/TableGPS+CoreDataProperties.m

@@ -1,26 +0,0 @@
-//
-//  TableGPS+CoreDataProperties.m
-//  Nextcloud
-//
-//  Created by Marino Faggiana on 17/02/17.
-//  Copyright © 2017 TWS. All rights reserved.
-//
-
-#import "TableGPS+CoreDataProperties.h"
-
-@implementation TableGPS (CoreDataProperties)
-
-+ (NSFetchRequest<TableGPS *> *)fetchRequest {
-	return [[NSFetchRequest alloc] initWithEntityName:@"TableGPS"];
-}
-
-@dynamic latitude;
-@dynamic location;
-@dynamic longitude;
-@dynamic placemarkAdministrativeArea;
-@dynamic placemarkCountry;
-@dynamic placemarkLocality;
-@dynamic placemarkPostalCode;
-@dynamic placemarkThoroughfare;
-
-@end

+ 2 - 2
iOSClient/Main/CCDetail.m

@@ -830,8 +830,8 @@
         localFile = [CCCoreData getLocalFileWithFileID:fileID activeAccount:app.activeAccount];
         
         if ([localFile.exifLatitude floatValue] != 0 || [localFile.exifLongitude floatValue] != 0) {
-            
-            NSString *location = [CCCoreData getLocationFromGeoLatitude:localFile.exifLatitude longitude:localFile.exifLongitude];
+                        
+            NSString *location = [[NCManageDatabase sharedInstance] getLocationFromGeoLatitude:localFile.exifLatitude longitude:localFile.exifLongitude];
             
             if ([localFile.exifDate isEqualToDate:[NSDate distantPast]] == NO && location) {
                 

+ 1 - 1
iOSClient/Main/CCSection.m

@@ -293,7 +293,7 @@
     CCSectionDataSourceActivity *sectionDataSource = [CCSectionDataSourceActivity new];
     NSDate *oldDate = [NSDate date];
     
-    for (DBActivity *record in records) {
+    for (tableActivity *record in records) {
         
         NSDateComponents* comps = [[NSCalendar currentCalendar] components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:record.date];
         NSDate *date = [[NSCalendar currentCalendar] dateFromComponents:comps];

+ 1 - 1
iOSClient/PhotosCameraUpload/CCPhotosCameraUpload.m

@@ -216,7 +216,7 @@
     
         if ([localFile.exifLatitude floatValue] > 0 || [localFile.exifLongitude floatValue] > 0) {
         
-            NSString *location = [CCCoreData getLocationFromGeoLatitude:localFile.exifLatitude longitude:localFile.exifLongitude];
+            NSString *location = [[NCManageDatabase sharedInstance] getLocationFromGeoLatitude:localFile.exifLatitude longitude:localFile.exifLongitude];
             
             addLocation = [NSString stringWithFormat:@"%@, %@", addLocation, location];
         

+ 6 - 4
iOSClient/Settings/CCAdvanced.m

@@ -234,7 +234,7 @@
         return;
     }
     
-    for (DBActivity *activity in activities) {
+    for (tableActivity *activity in activities) {
         
         NSString *date, *type, *actionFile, *note;
         
@@ -290,7 +290,7 @@
 {
     [self deselectFormRow:sender];
     
-    [[NCManageDatabase sharedInstance] clearDB:[DBActivity class] account:app.activeAccount];
+    [[NCManageDatabase sharedInstance] clearDB:[tableActivity class] account:app.activeAccount];
         
     [app.activeActivity reloadDatasource];
 }
@@ -317,13 +317,15 @@
             [[NSURLCache sharedURLCache] setMemoryCapacity:0];
             [[NSURLCache sharedURLCache] setDiskCapacity:0];
             
-            [[NCManageDatabase sharedInstance] clearDB:[DBActivity class] account:app.activeAccount];
+            [[NCManageDatabase sharedInstance] clearDB:[tableActivity class] account:app.activeAccount];
 
             [CCCoreData flushTableAutomaticUploadAccount:app.activeAccount selector:nil];
             [CCCoreData flushTableCapabilitiesAccount:app.activeAccount];
             [CCCoreData flushTableDirectoryAccount:app.activeAccount];
             [CCCoreData flushTableExternalSitesAccount:app.activeAccount];
-            [CCCoreData flushTableGPS];
+                        
+            [[NCManageDatabase sharedInstance] clearDB:[tableGPS class] account:app.activeAccount];
+            
             [CCCoreData flushTableLocalFileAccount:app.activeAccount];
             [CCCoreData flushTableMetadataAccount:app.activeAccount];
             [CCCoreData flushTableShareAccount:app.activeAccount];

+ 1 - 1
iOSClient/Settings/CCManageAccount.m

@@ -324,7 +324,7 @@
 {
     [CCCoreData flushTableAccount:account];
     
-    [[NCManageDatabase sharedInstance] clearDB:[DBActivity class] account:account];
+    [[NCManageDatabase sharedInstance] clearDB:[tableActivity class] account:account];
     
     [CCCoreData flushTableAutomaticUploadAccount:account selector:nil];
     [CCCoreData flushTableCapabilitiesAccount:account];

+ 27 - 2
iOSClient/Utility/CCExifGeo.m

@@ -23,6 +23,30 @@
 
 #import "CCExifGeo.h"
 
+#ifndef EXTENSION
+    #ifdef CUSTOM_BUILD
+        #import "CustomSwift.h"
+    #else
+        #import "Nextcloud-Swift.h"
+    #endif
+#else
+    #ifdef EXTENSION_SHARE
+        #ifdef CUSTOM_BUILD
+            #import "CustomSwiftShare.h"
+        #else
+            #import "Share-Swift.h"
+        #endif
+    #endif
+
+    #ifdef EXTENSION_PICKER
+        #ifdef CUSTOM_BUILD
+            #import "CustomSwiftPick.h"
+        #else
+            #import "Picker-Swift.h"
+        #endif
+    #endif
+#endif
+
 @implementation CCExifGeo
 
 + (void)setExifLocalTableFileID:(CCMetadata *)metadata directoryUser:(NSString *)directoryUser activeAccount:(NSString *)activeAccount
@@ -82,7 +106,8 @@
 + (void)setGeocoderFileID:(NSString *)fileID exifDate:(NSDate *)exifDate latitude:(NSString*)latitude longitude:(NSString*)longitude
 {
     // If exists already geocoder data in TableGPS exit
-    if ([CCCoreData getLocationFromGeoLatitude:latitude longitude:longitude]) return;
+    if ([[NCManageDatabase sharedInstance] getLocationFromGeoLatitude:latitude longitude:longitude])
+        return;
     
     CLGeocoder *geocoder = [[CLGeocoder alloc] init];
     CLLocation *location = [[CLLocation alloc] initWithLatitude:[latitude doubleValue] longitude:[longitude doubleValue]];
@@ -113,7 +138,7 @@
             // GPS
             if ([location length] > 0) {
                 
-                [CCCoreData setGeocoderLocation:location placemarkAdministrativeArea:placemark.administrativeArea placemarkCountry:placemark.country placemarkLocality:placemark.locality placemarkPostalCode:placemark.postalCode placemarkThoroughfare:placemark.thoroughfare latitude:latitude longitude:longitude];
+                [[NCManageDatabase sharedInstance] addGeocoderLocation:location placemarkAdministrativeArea:placemark.administrativeArea placemarkCountry:placemark.country placemarkLocality:placemark.locality placemarkPostalCode:placemark.postalCode placemarkThoroughfare:placemark.thoroughfare latitude:latitude longitude:longitude];
                 
                 NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:exifDate, fileID, nil];
                 

+ 1 - 1
iOSClient/cryptocloud.xcdatamodeld/.xccurrentversion

@@ -3,6 +3,6 @@
 <plist version="1.0">
 <dict>
 	<key>_XCCurrentVersionName</key>
-	<string>cryptocloud 8.xcdatamodel</string>
+	<string>cryptocloud 9.xcdatamodel</string>
 </dict>
 </plist>

+ 164 - 0
iOSClient/cryptocloud.xcdatamodeld/cryptocloud 9.xcdatamodel/contents

@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="12141" systemVersion="16E195" minimumToolsVersion="Xcode 7.0" sourceLanguage="Objective-C" userDefinedModelVersionIdentifier="cryptocloud">
+    <entity name="TableAccount" representedClassName="TableAccount" syncable="YES">
+        <attribute name="account" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="active" optional="YES" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="address" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="cameraUpload" optional="YES" attributeType="Boolean" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="cameraUploadBackground" optional="YES" attributeType="Boolean" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="cameraUploadCreateSubfolder" optional="YES" attributeType="Boolean" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="cameraUploadCryptatedPhoto" optional="YES" attributeType="Boolean" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="cameraUploadCryptatedVideo" optional="YES" attributeType="Boolean" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="cameraUploadDatePhoto" optional="YES" attributeType="Date" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="cameraUploadDateVideo" optional="YES" attributeType="Date" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="cameraUploadFolderName" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="cameraUploadFolderPath" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="cameraUploadFull" optional="YES" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="cameraUploadPhoto" optional="YES" attributeType="Boolean" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="cameraUploadSaveAlbum" optional="YES" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="cameraUploadVideo" optional="YES" attributeType="Boolean" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="cameraUploadWWAnPhoto" optional="YES" attributeType="Boolean" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="cameraUploadWWAnVideo" optional="YES" attributeType="Boolean" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="displayName" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="email" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="enabled" optional="YES" attributeType="Boolean" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="optimization" optional="YES" attributeType="Date" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="password" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="phone" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="quota" optional="YES" attributeType="Double" defaultValueString="0.0" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="quotaFree" optional="YES" attributeType="Double" defaultValueString="0.0" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="quotaRelative" optional="YES" attributeType="Double" defaultValueString="0.0" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="quotaTotal" optional="YES" attributeType="Double" defaultValueString="0.0" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="quotaUsed" optional="YES" attributeType="Double" defaultValueString="0.0" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="twitter" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="url" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="user" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="webpage" optional="YES" attributeType="String" syncable="YES"/>
+    </entity>
+    <entity name="TableAutomaticUpload" representedClassName="TableAutomaticUpload" syncable="YES">
+        <attribute name="account" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="assetLocalIdentifier" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="date" optional="YES" attributeType="Date" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="fileName" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="lock" optional="YES" attributeType="Boolean" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="priority" optional="YES" attributeType="Integer 16" defaultValueString="0" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="selector" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="selectorPost" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="serverUrl" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="session" optional="YES" attributeType="String" syncable="YES"/>
+    </entity>
+    <entity name="TableCapabilities" representedClassName="TableCapabilities" syncable="YES">
+        <attribute name="account" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="themingBackground" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="themingColor" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="themingLogo" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="themingName" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="themingSlogan" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="themingUrl" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="versionMajor" optional="YES" attributeType="Integer 16" defaultValueString="0" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="versionMicro" optional="YES" attributeType="Integer 16" defaultValueString="0" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="versionMinor" optional="YES" attributeType="Integer 16" defaultValueString="0" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="versionString" optional="YES" attributeType="String" syncable="YES"/>
+    </entity>
+    <entity name="TableCertificates" representedClassName="TableCertificates" syncable="YES">
+        <attribute name="certificateLocation" optional="YES" attributeType="String" syncable="YES"/>
+    </entity>
+    <entity name="TableDirectory" representedClassName="TableDirectory" syncable="YES">
+        <attribute name="account" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="dateReadDirectory" optional="YES" attributeType="Date" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="directoryID" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="favorite" optional="YES" attributeType="Boolean" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="fileID" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="lock" optional="YES" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="offline" optional="YES" attributeType="Boolean" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="permissions" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="rev" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="serverUrl" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="synchronized" optional="YES" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="NO" syncable="YES"/>
+    </entity>
+    <entity name="TableExternalSites" representedClassName="TableExternalSites" syncable="YES">
+        <attribute name="account" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="icon" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="idExternalSite" optional="YES" attributeType="Integer 64" defaultValueString="0" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="lang" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="name" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="type" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="url" optional="YES" attributeType="String" syncable="YES"/>
+    </entity>
+    <entity name="TableGPS" representedClassName="TableGPS" syncable="YES">
+        <attribute name="latitude" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="location" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="longitude" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="placemarkAdministrativeArea" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="placemarkCountry" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="placemarkLocality" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="placemarkPostalCode" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="placemarkThoroughfare" optional="YES" attributeType="String" syncable="YES"/>
+    </entity>
+    <entity name="TableLocalFile" representedClassName="TableLocalFile" syncable="YES">
+        <attribute name="account" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="date" optional="YES" attributeType="Date" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="exifDate" optional="YES" attributeType="Date" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="exifLatitude" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="exifLongitude" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="favorite" optional="YES" attributeType="Boolean" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="fileID" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="fileName" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="fileNamePrint" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="offline" optional="YES" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="rev" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="size" optional="YES" attributeType="Integer 64" defaultValueString="0" usesScalarValueType="NO" syncable="YES"/>
+    </entity>
+    <entity name="TableMetadata" representedClassName="TableMetadata" syncable="YES">
+        <attribute name="account" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="assetLocalIdentifier" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="cryptated" optional="YES" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="date" optional="YES" attributeType="Date" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="directory" optional="YES" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="directoryID" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="errorPasscode" optional="YES" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="favorite" optional="YES" attributeType="Boolean" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="fileID" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="fileName" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="fileNameData" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="fileNamePrint" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="iconName" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="model" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="nameCurrentDevice" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="permissions" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="protocol" optional="YES" attributeType="String" defaultValueString="1" syncable="YES"/>
+        <attribute name="rev" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="session" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="sessionError" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="sessionID" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="sessionSelector" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="sessionSelectorPost" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="sessionTaskIdentifier" optional="YES" attributeType="Integer 16" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="sessionTaskIdentifierPlist" optional="YES" attributeType="Integer 16" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="size" optional="YES" attributeType="Integer 64" defaultValueString="0" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="thumbnailExists" optional="YES" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="NO" syncable="YES"/>
+        <attribute name="title" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="type" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="typeFile" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="uuid" optional="YES" attributeType="String" syncable="YES"/>
+    </entity>
+    <entity name="TableShare" representedClassName="TableShare" syncable="YES">
+        <attribute name="account" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="fileName" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="serverUrl" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="shareLink" optional="YES" attributeType="String" syncable="YES"/>
+        <attribute name="shareUserAndGroup" optional="YES" attributeType="String" syncable="YES"/>
+    </entity>
+    <elements>
+        <element name="TableAccount" positionX="-6597" positionY="111" width="171" height="540"/>
+        <element name="TableAutomaticUpload" positionX="-6597" positionY="801" width="128" height="195"/>
+        <element name="TableCapabilities" positionX="-6390" positionY="261" width="128" height="210"/>
+        <element name="TableCertificates" positionX="-6597" positionY="711" width="128" height="60"/>
+        <element name="TableDirectory" positionX="-6372" positionY="111" width="162" height="210"/>
+        <element name="TableExternalSites" positionX="-6399" positionY="252" width="128" height="150"/>
+        <element name="TableGPS" positionX="-6597" positionY="990" width="128" height="165"/>
+        <element name="TableLocalFile" positionX="-6138" positionY="111" width="162" height="225"/>
+        <element name="TableMetadata" positionX="-6138" positionY="402" width="162" height="510"/>
+        <element name="TableShare" positionX="-6597" positionY="558" width="128" height="120"/>
+    </elements>
+</model>