diff --git a/enzevalos_iphone.xcodeproj/project.pbxproj b/enzevalos_iphone.xcodeproj/project.pbxproj index 568990edf3edf69bb8bc36b2842d46db68a2e534..b36c8f7c8e09beb0f0af269411c8e407db68dca9 100644 --- a/enzevalos_iphone.xcodeproj/project.pbxproj +++ b/enzevalos_iphone.xcodeproj/project.pbxproj @@ -23,6 +23,7 @@ 0EF73F4324237E6500932FA0 /* SMIMEHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EF73F4224237E6500932FA0 /* SMIMEHelpers.swift */; }; 0EFEF0952417C0B400BB2FF7 /* CHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EFEF0942417C0B400BB2FF7 /* CHelpers.swift */; }; 12680CE3CA4B14F980A48941 /* Pods_enzevalos_iphone.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4F2D682FEE7B85A09D7E4650 /* Pods_enzevalos_iphone.framework */; }; + 32261743260C7CE60068CBD4 /* ContactMailListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32261742260C7CE60068CBD4 /* ContactMailListView.swift */; }; 3E6B07DE2011246500E49609 /* invitationText.html in Resources */ = {isa = PBXBuildFile; fileRef = 3E6B07DD2011246500E49609 /* invitationText.html */; }; 3EB4FAA420120096001D0625 /* DialogOption.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EB4FAA320120096001D0625 /* DialogOption.swift */; }; 3EC35F2420037651008BDF95 /* InvitationHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EC35F2320037651008BDF95 /* InvitationHelper.swift */; }; @@ -83,7 +84,6 @@ 476EEF9922A872BF00BB4EF7 /* enzevalos_iphoneUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 476EEF9822A872BF00BB4EF7 /* enzevalos_iphoneUITests.swift */; }; 476EEFA122A873A800BB4EF7 /* OnboardingTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 476EEFA022A873A800BB4EF7 /* OnboardingTest.swift */; }; 476EEFA722A87B9800BB4EF7 /* accounts.json in Resources */ = {isa = PBXBuildFile; fileRef = 476EEFA622A87B9800BB4EF7 /* accounts.json */; }; - 477120A8254C289B00B28C64 /* ContactTabView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 477120A7254C289B00B28C64 /* ContactTabView.swift */; }; 477120AE254C28F900B28C64 /* TabSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 477120AD254C28F900B28C64 /* TabSupport.swift */; }; 477120BC254C401E00B28C64 /* AddressRecord+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 477120BB254C401E00B28C64 /* AddressRecord+CoreDataProperties.swift */; }; 477120C2254C676000B28C64 /* ContactView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 477120C1254C676000B28C64 /* ContactView.swift */; }; @@ -297,6 +297,7 @@ 0EF73F4224237E6500932FA0 /* SMIMEHelpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SMIMEHelpers.swift; sourceTree = "<group>"; }; 0EFEF0942417C0B400BB2FF7 /* CHelpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CHelpers.swift; sourceTree = "<group>"; }; 101F3BA8A4325D747C9721A1 /* Pods-enzevalos_iphoneTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-enzevalos_iphoneTests.debug.xcconfig"; path = "Target Support Files/Pods-enzevalos_iphoneTests/Pods-enzevalos_iphoneTests.debug.xcconfig"; sourceTree = "<group>"; }; + 32261742260C7CE60068CBD4 /* ContactMailListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactMailListView.swift; sourceTree = "<group>"; }; 3E6B07DD2011246500E49609 /* invitationText.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; name = invitationText.html; path = Invitation/invitationText.html; sourceTree = "<group>"; }; 3E9708AD1FAC925D005825C9 /* enzevalos_iphone.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = enzevalos_iphone.entitlements; sourceTree = "<group>"; }; 3E9708AE1FAC925D005825C9 /* enzevalos-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "enzevalos-Info.plist"; sourceTree = "<group>"; }; @@ -472,7 +473,6 @@ 476EEF9A22A872BF00BB4EF7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 476EEFA022A873A800BB4EF7 /* OnboardingTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OnboardingTest.swift; sourceTree = "<group>"; }; 476EEFA622A87B9800BB4EF7 /* accounts.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = accounts.json; sourceTree = "<group>"; }; - 477120A7254C289B00B28C64 /* ContactTabView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactTabView.swift; sourceTree = "<group>"; }; 477120AD254C28F900B28C64 /* TabSupport.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabSupport.swift; sourceTree = "<group>"; }; 477120BB254C401E00B28C64 /* AddressRecord+CoreDataProperties.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AddressRecord+CoreDataProperties.swift"; sourceTree = "<group>"; }; 477120C1254C676000B28C64 /* ContactView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactView.swift; sourceTree = "<group>"; }; @@ -1038,8 +1038,8 @@ 477120A6254C287B00B28C64 /* Contact */ = { isa = PBXGroup; children = ( - 477120A7254C289B00B28C64 /* ContactTabView.swift */, 477120C1254C676000B28C64 /* ContactView.swift */, + 32261742260C7CE60068CBD4 /* ContactMailListView.swift */, ); path = Contact; sourceTree = "<group>"; @@ -1875,7 +1875,6 @@ files = ( 476801DE21846A5A00F7F259 /* OutgoingMail.swift in Sources */, 47B71AAF2538354A00CA87C6 /* OnboardingValueState.swift in Sources */, - 477120A8254C289B00B28C64 /* ContactTabView.swift in Sources */, 47BCAF2A259CD5CE0008FE4B /* KeyManagementModel.swift in Sources */, 47C09C76243B3395007F74A2 /* SmallContactListView.swift in Sources */, 47EABF272423BFDD00774A93 /* AuthenticationScreen.swift in Sources */, @@ -1922,6 +1921,7 @@ 47EABF2B2423C20C00774A93 /* LoadingBlocker.swift in Sources */, 475B00351F7B9565006CDD41 /* CryptoObject.swift in Sources */, 4706D661225CD21D00B3F1D3 /* ExportKeyHelper.swift in Sources */, + 32261743260C7CE60068CBD4 /* ContactMailListView.swift in Sources */, 4775D7B02443539E0052F2CC /* DialogProtocols.swift in Sources */, 475B00331F7B9565006CDD41 /* SwiftPGP.swift in Sources */, 477548E421F77BA0000B22A8 /* StudyParameterProtocol.swift in Sources */, diff --git a/enzevalos_iphone.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/enzevalos_iphone.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 0000000000000000000000000000000000000000..2b3d923d4b7a393c5e30f2d866e022de482c88ae --- /dev/null +++ b/enzevalos_iphone.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,16 @@ +{ + "object": { + "pins": [ + { + "package": "MailCore2", + "repositoryURL": "https://github.com/MailCore/mailcore2", + "state": { + "branch": "master", + "revision": "fad23d736ed5a63cf8321469d3a98a583f55df97", + "version": null + } + } + ] + }, + "version": 1 +} diff --git a/enzevalos_iphone/Assets.xcassets/Contents.json b/enzevalos_iphone/Assets.xcassets/Contents.json index da4a164c918651cdd1e11dca5cc62c333f097601..73c00596a7fca3f3d4bdd64053b69d86745f9e10 100644 --- a/enzevalos_iphone/Assets.xcassets/Contents.json +++ b/enzevalos_iphone/Assets.xcassets/Contents.json @@ -1,6 +1,6 @@ { "info" : { - "version" : 1, - "author" : "xcode" + "author" : "xcode", + "version" : 1 } -} \ No newline at end of file +} diff --git a/enzevalos_iphone/Assets.xcassets/Emoji/Bob.imageset/Bob.png b/enzevalos_iphone/Assets.xcassets/Emoji/Bob.imageset/Bob.png new file mode 100644 index 0000000000000000000000000000000000000000..14aa18d366980484d11953602334f7d309526d1c Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/Emoji/Bob.imageset/Bob.png differ diff --git a/enzevalos_iphone/Assets.xcassets/Emoji/Bob.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/Emoji/Bob.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..52101c069952788e41b9075195e29e2567a92279 --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/Emoji/Bob.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "Bob.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/Emoji/Charlie.imageset/Charlie.png b/enzevalos_iphone/Assets.xcassets/Emoji/Charlie.imageset/Charlie.png new file mode 100644 index 0000000000000000000000000000000000000000..40d7f299dd23737684a80d4c20f43a4e55c460f1 Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/Emoji/Charlie.imageset/Charlie.png differ diff --git a/enzevalos_iphone/Assets.xcassets/Emoji/Charlie.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/Emoji/Charlie.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..0179af56ad3d75b3c08c86f4cd07c03f71eec8cf --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/Emoji/Charlie.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "Charlie.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/Emoji/Contents.json b/enzevalos_iphone/Assets.xcassets/Emoji/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..73c00596a7fca3f3d4bdd64053b69d86745f9e10 --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/Emoji/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/Emoji/Dali.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/Emoji/Dali.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..92701ba28084ee6a528c78a32a3920f94575fb6d --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/Emoji/Dali.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "Dali.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/Emoji/Dali.imageset/Dali.png b/enzevalos_iphone/Assets.xcassets/Emoji/Dali.imageset/Dali.png new file mode 100644 index 0000000000000000000000000000000000000000..48ced29b177bbf0cc4bb1bf70d07d6451bf86771 Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/Emoji/Dali.imageset/Dali.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..73c00596a7fca3f3d4bdd64053b69d86745f9e10 --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon0.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon0.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..496e8eb0268227c198956b876ecef28b9085a3cd --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon0.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs106047397033627025.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon0.imageset/cs106047397033627025.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon0.imageset/cs106047397033627025.png new file mode 100644 index 0000000000000000000000000000000000000000..48e64f12b73d5499247817958f9ec82674ffab3a Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon0.imageset/cs106047397033627025.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon1.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon1.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..4cedc09fe6486b5ac03456955ae4dc30c50b4a0a --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon1.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs1048486361028912.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon1.imageset/cs1048486361028912.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon1.imageset/cs1048486361028912.png new file mode 100644 index 0000000000000000000000000000000000000000..ad1ac1f654e2e780532742d0173485248d98985d Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon1.imageset/cs1048486361028912.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon10.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon10.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..338db8581f0597c217577ed558ae41c22f9e03bc --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon10.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs11361288859011089.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon10.imageset/cs11361288859011089.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon10.imageset/cs11361288859011089.png new file mode 100644 index 0000000000000000000000000000000000000000..d505a54998c3f5730effa737086b09409ef58397 Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon10.imageset/cs11361288859011089.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon11.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon11.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..b7593b26054e4e53d665b853bdd38ef15b80c09c --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon11.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs11365107979606767.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon11.imageset/cs11365107979606767.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon11.imageset/cs11365107979606767.png new file mode 100644 index 0000000000000000000000000000000000000000..2312cd74dcd5ea24f05cfa8039bc8f8fa4f060ae Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon11.imageset/cs11365107979606767.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon12.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon12.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..6684493348f6a7b875de71facc2fa47f84567d21 --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon12.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs100214067654451312.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon12.imageset/cs100214067654451312.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon12.imageset/cs100214067654451312.png new file mode 100644 index 0000000000000000000000000000000000000000..96bef50261f112caab347281c7fb28a08cf51dfc Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon12.imageset/cs100214067654451312.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon13.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon13.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..05a8819435bec81b50f2c77f07b483c7db116b42 --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon13.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs100279640926771550.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon13.imageset/cs100279640926771550.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon13.imageset/cs100279640926771550.png new file mode 100644 index 0000000000000000000000000000000000000000..f877df997deb8e22605d5c08ec5aaf72c2c6ca43 Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon13.imageset/cs100279640926771550.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon14.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon14.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..0c696b626f520a93a3859db3c788f841f73bf682 --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon14.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs100367196602765414.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon14.imageset/cs100367196602765414.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon14.imageset/cs100367196602765414.png new file mode 100644 index 0000000000000000000000000000000000000000..c74b100d09da0bd9008e06f5ba0011bdc6117352 Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon14.imageset/cs100367196602765414.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon15.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon15.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..f490b311fe8f84c03538e23ab7b6a9390731ca2d --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon15.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs100444304289930325.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon15.imageset/cs100444304289930325.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon15.imageset/cs100444304289930325.png new file mode 100644 index 0000000000000000000000000000000000000000..2d1ddbc4c127b2d919b98c34f277800d55166e38 Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon15.imageset/cs100444304289930325.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon16.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon16.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..395c24bedef29c2de5d9ea66def18da123bc7447 --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon16.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs100630750052269087.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon16.imageset/cs100630750052269087.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon16.imageset/cs100630750052269087.png new file mode 100644 index 0000000000000000000000000000000000000000..5538bd7d7045830335dcc15f39d377133376eec7 Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon16.imageset/cs100630750052269087.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon17.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon17.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..9a1dfe50c77304a216bad049622a49ffe88a1c2a --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon17.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs101172805621739638.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon17.imageset/cs101172805621739638.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon17.imageset/cs101172805621739638.png new file mode 100644 index 0000000000000000000000000000000000000000..347634eda5fd41d28d019945218022d12f429ed3 Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon17.imageset/cs101172805621739638.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon18.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon18.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..0dd2fd6e215e85f62e3a60d368f2923e4b358679 --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon18.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs101724504648038815.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon18.imageset/cs101724504648038815.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon18.imageset/cs101724504648038815.png new file mode 100644 index 0000000000000000000000000000000000000000..06fcdb878ce1df261cee59be8c09d4550e35e28e Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon18.imageset/cs101724504648038815.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon19.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon19.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..3ef802f763b4576c72ed21a3b7199be9df1f3469 --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon19.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs101767157496046490.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon19.imageset/cs101767157496046490.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon19.imageset/cs101767157496046490.png new file mode 100644 index 0000000000000000000000000000000000000000..e113ad31599dd6638832a7aba607359267912c8b Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon19.imageset/cs101767157496046490.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon2.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon2.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..38f52c2b2f958660a1768ea3097aa204e59092ef --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon2.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs1125646615313076.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon2.imageset/cs1125646615313076.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon2.imageset/cs1125646615313076.png new file mode 100644 index 0000000000000000000000000000000000000000..c3a55f4c1a9ff84c8df4d923f56b8c8d15c047ee Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon2.imageset/cs1125646615313076.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon20.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon20.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..8c1322604bf1150d333ed0a1c9dd05f85ad7db9b --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon20.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs101957715605808227.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon20.imageset/cs101957715605808227.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon20.imageset/cs101957715605808227.png new file mode 100644 index 0000000000000000000000000000000000000000..eaaaccb1328738274c422a15ece0dc2a521ae32d Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon20.imageset/cs101957715605808227.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon21.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon21.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..28444de308d77cea333cc814e3eb95ae51da3c49 --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon21.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs102400950696764945.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon21.imageset/cs102400950696764945.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon21.imageset/cs102400950696764945.png new file mode 100644 index 0000000000000000000000000000000000000000..1b49c5a2eb373e748a0ce8ef8650c4d4b54cb2dd Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon21.imageset/cs102400950696764945.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon22.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon22.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..219fd315a0bbfe3a0cad75a11408ad8bb06c105f --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon22.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs102422236815498498.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon22.imageset/cs102422236815498498.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon22.imageset/cs102422236815498498.png new file mode 100644 index 0000000000000000000000000000000000000000..71299059b2d9e388ac0de18e2e6b7442e54084bf Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon22.imageset/cs102422236815498498.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon23.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon23.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..5d3c0efffa89f0f2b7038dc7529a6ca14d0a1a0a --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon23.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs102861240281778234.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon23.imageset/cs102861240281778234.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon23.imageset/cs102861240281778234.png new file mode 100644 index 0000000000000000000000000000000000000000..067b3a5c69dae65a0659c6635a46a73ec37afeb4 Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon23.imageset/cs102861240281778234.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon24.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon24.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..1a337b718d665279d11ddfff348b03fe7b695084 --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon24.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs102996970073821635.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon24.imageset/cs102996970073821635.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon24.imageset/cs102996970073821635.png new file mode 100644 index 0000000000000000000000000000000000000000..2751f69a935a64ffb8db5f2f565dd63a4f6cf4de Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon24.imageset/cs102996970073821635.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon25.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon25.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..63fabbc993eb6326906dadc667e5ba34a5268fc5 --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon25.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs103078152548071803.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon25.imageset/cs103078152548071803.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon25.imageset/cs103078152548071803.png new file mode 100644 index 0000000000000000000000000000000000000000..c288ef5fe0be6b9ba12152c15a0c500771b268d4 Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon25.imageset/cs103078152548071803.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon26.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon26.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..fbd42b9f93d4b9d85cf3a4d6f6562c265daaf673 --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon26.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs103423283580625484.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon26.imageset/cs103423283580625484.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon26.imageset/cs103423283580625484.png new file mode 100644 index 0000000000000000000000000000000000000000..751fb817f525e7cf27d64e46a908b507ace4b89b Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon26.imageset/cs103423283580625484.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon27.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon27.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..6f2c97887de277cb953b9ad876cf61c6f6eb8ed3 --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon27.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs103486772320911001.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon27.imageset/cs103486772320911001.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon27.imageset/cs103486772320911001.png new file mode 100644 index 0000000000000000000000000000000000000000..52f54a89f4006422e4a7110e2009c83d7e5f0783 Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon27.imageset/cs103486772320911001.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon28.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon28.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..8326d093abfa0a8cdc90ab184fd67a748e38fee9 --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon28.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs103587423973880298.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon28.imageset/cs103587423973880298.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon28.imageset/cs103587423973880298.png new file mode 100644 index 0000000000000000000000000000000000000000..b5d1a1c549c75d6aae45d2f2608076f2ec0601a7 Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon28.imageset/cs103587423973880298.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon29.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon29.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..6f177f7ae25159a9772bf41347bc3901eab33314 --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon29.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs103659213402785408.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon29.imageset/cs103659213402785408.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon29.imageset/cs103659213402785408.png new file mode 100644 index 0000000000000000000000000000000000000000..330c5d5e9b683427a099d91e8706f644820940e1 Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon29.imageset/cs103659213402785408.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon3.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon3.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..f0923e2363d779a81aa61604ad370093376d38df --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon3.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs10188651804540743.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon3.imageset/cs10188651804540743.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon3.imageset/cs10188651804540743.png new file mode 100644 index 0000000000000000000000000000000000000000..50980539b3497d64d721534865f44378b7204f34 Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon3.imageset/cs10188651804540743.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon30.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon30.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..087b947a0ca104c0b880f6995303438f2f6997a0 --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon30.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs103663933281312281.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon30.imageset/cs103663933281312281.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon30.imageset/cs103663933281312281.png new file mode 100644 index 0000000000000000000000000000000000000000..c5f45e7dea862d2ad21c6e506267ac17abb89a96 Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon30.imageset/cs103663933281312281.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon31.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon31.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..0121902d7227f15ed62798d39526dab8eee7a649 --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon31.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs103822919467497853.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon31.imageset/cs103822919467497853.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon31.imageset/cs103822919467497853.png new file mode 100644 index 0000000000000000000000000000000000000000..d10d1e1591dee487f4948ab0e2ee31f30d092af2 Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon31.imageset/cs103822919467497853.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon32.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon32.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..3cfe11a74f52c0ec33e48e02b5fb1722b0a9432a --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon32.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs103987180036984774.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon32.imageset/cs103987180036984774.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon32.imageset/cs103987180036984774.png new file mode 100644 index 0000000000000000000000000000000000000000..dbeb21ecf8a690b9477878c7515f8e4c6eecaa8c Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon32.imageset/cs103987180036984774.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon33.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon33.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..6ad87612de6e027a9da143b04d19c51554cb4d91 --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon33.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs104029297788010187.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon33.imageset/cs104029297788010187.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon33.imageset/cs104029297788010187.png new file mode 100644 index 0000000000000000000000000000000000000000..446cfadbbfeacc81c9011e775dfcee12a22e4602 Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon33.imageset/cs104029297788010187.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon34.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon34.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..f3aa89dfd6f44dca7ea26c97969b0159d965143a --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon34.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs104058099070443101.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon34.imageset/cs104058099070443101.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon34.imageset/cs104058099070443101.png new file mode 100644 index 0000000000000000000000000000000000000000..2135438a60379a8d88c2bf58a0cdcf713dc19392 Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon34.imageset/cs104058099070443101.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon35.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon35.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..dec2c1a6a060079b85091dc73f4b5e848ef1f5a4 --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon35.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs104393807829754417.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon35.imageset/cs104393807829754417.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon35.imageset/cs104393807829754417.png new file mode 100644 index 0000000000000000000000000000000000000000..763f1123f18283c818dc42077357e1d147259e35 Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon35.imageset/cs104393807829754417.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon36.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon36.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..96f398a10cc852aaa18486576992416e64efe2c4 --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon36.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs104495237148868391.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon36.imageset/cs104495237148868391.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon36.imageset/cs104495237148868391.png new file mode 100644 index 0000000000000000000000000000000000000000..1d89152b84bc2c416d78a314db3c4b6b160ec06e Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon36.imageset/cs104495237148868391.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon37.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon37.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..9ed14548fdb989088ade439514dd13cbbe2ce592 --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon37.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs104551932686398700.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon37.imageset/cs104551932686398700.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon37.imageset/cs104551932686398700.png new file mode 100644 index 0000000000000000000000000000000000000000..c9e12aabe39cb276ef7c1b2baab76a0a427dfac2 Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon37.imageset/cs104551932686398700.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon38.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon38.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..32e25c04674ad9779421dbcc15e7fc24a963f8e9 --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon38.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs104563437674275986.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon38.imageset/cs104563437674275986.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon38.imageset/cs104563437674275986.png new file mode 100644 index 0000000000000000000000000000000000000000..80b8bbdee67916439d71bb83409188aea6c80caf Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon38.imageset/cs104563437674275986.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon39.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon39.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..75bf0a262869fe3fd5a4fcb1c2281e038d14f9aa --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon39.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs104924347815727490.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon39.imageset/cs104924347815727490.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon39.imageset/cs104924347815727490.png new file mode 100644 index 0000000000000000000000000000000000000000..e054f4f61c806907f22c9ccbca50430e8103c726 Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon39.imageset/cs104924347815727490.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon4.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon4.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..ae1963922e94ffef4c3191d6546fdd7d5f28abe5 --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon4.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs10445905019035139.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon4.imageset/cs10445905019035139.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon4.imageset/cs10445905019035139.png new file mode 100644 index 0000000000000000000000000000000000000000..44774132c039b46588e943150a30318182e7a07e Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon4.imageset/cs10445905019035139.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon40.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon40.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..9b88b2b40820b96dffb8d710a29049a4868c14b1 --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon40.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs104968955657654599.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon40.imageset/cs104968955657654599.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon40.imageset/cs104968955657654599.png new file mode 100644 index 0000000000000000000000000000000000000000..66f35cdd9bbda00f22e74d5b648a1479eeb4dc76 Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon40.imageset/cs104968955657654599.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon41.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon41.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..e6c66436bf2dc333142f12f4a7c08e309c00998a --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon41.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs104983947614280485.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon41.imageset/cs104983947614280485.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon41.imageset/cs104983947614280485.png new file mode 100644 index 0000000000000000000000000000000000000000..5edf414d8577b60e82353e3dbabfc7106d2891dd Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon41.imageset/cs104983947614280485.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon42.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon42.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..c6ff1625f739f732cfa85f3de658be1460be4a80 --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon42.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs105013173991731446.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon42.imageset/cs105013173991731446.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon42.imageset/cs105013173991731446.png new file mode 100644 index 0000000000000000000000000000000000000000..ad8a58ea8795b1f00903f364f9599df24badbb69 Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon42.imageset/cs105013173991731446.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon43.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon43.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..5002cf9df80fa89c505f8d526595ce9ec0972aee --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon43.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs105105240413858862.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon43.imageset/cs105105240413858862.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon43.imageset/cs105105240413858862.png new file mode 100644 index 0000000000000000000000000000000000000000..bea0dc1c4e86d85f68f625e1eb4682db319b8eec Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon43.imageset/cs105105240413858862.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon44.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon44.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..3ad0622ae2fb737cc7e1395adeb962da6453bd94 --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon44.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs105149584509303839.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon44.imageset/cs105149584509303839.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon44.imageset/cs105149584509303839.png new file mode 100644 index 0000000000000000000000000000000000000000..a640b8d4a871a04da22627ef694207f10085848e Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon44.imageset/cs105149584509303839.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon45.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon45.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..c9b0db0adaab321308a8d6d0522485f1778f2adf --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon45.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs105316240118440367.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon45.imageset/cs105316240118440367.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon45.imageset/cs105316240118440367.png new file mode 100644 index 0000000000000000000000000000000000000000..d29d5d1f047c75f6336e3b226e40b3018ed0bd32 Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon45.imageset/cs105316240118440367.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon46.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon46.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..5c3b3024252290093c1b5404f5ca7acdd8a5039c --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon46.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs105362030430960514.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon46.imageset/cs105362030430960514.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon46.imageset/cs105362030430960514.png new file mode 100644 index 0000000000000000000000000000000000000000..d428489cd9cc8b66f501f320e21030bfb4670e7e Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon46.imageset/cs105362030430960514.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon47.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon47.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..256ece6df4710932f85246a486940506b56dbb7f --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon47.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs105479796479016880.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon47.imageset/cs105479796479016880.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon47.imageset/cs105479796479016880.png new file mode 100644 index 0000000000000000000000000000000000000000..e47b2b4bcaa0d506c9eb14174b15e65688233f42 Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon47.imageset/cs105479796479016880.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon48.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon48.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..e3b0427819f0b763a979f3144d00c82a719afe2e --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon48.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs105703236117912354.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon48.imageset/cs105703236117912354.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon48.imageset/cs105703236117912354.png new file mode 100644 index 0000000000000000000000000000000000000000..6e37608f3cc7b67129d390988c7342768bc9c424 Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon48.imageset/cs105703236117912354.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon49.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon49.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..d433ca724435ef186c049528eed3cf21aa4641cf --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon49.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs105773704768325821.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon49.imageset/cs105773704768325821.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon49.imageset/cs105773704768325821.png new file mode 100644 index 0000000000000000000000000000000000000000..a64db374e9df610ccf4aeec5213dd2c36cedae92 Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon49.imageset/cs105773704768325821.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon5.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon5.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..5535049bb256b2bb47d7b85166a4a8f0da044b7b --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon5.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs10562124521050923.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon5.imageset/cs10562124521050923.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon5.imageset/cs10562124521050923.png new file mode 100644 index 0000000000000000000000000000000000000000..ae477d1aec529fe72d47662e001cf1966ebb18c0 Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon5.imageset/cs10562124521050923.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon6.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon6.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..d43774e8df226162f7ee9b8ac35cfa296e6e9a3e --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon6.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs10712649413789781.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon6.imageset/cs10712649413789781.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon6.imageset/cs10712649413789781.png new file mode 100644 index 0000000000000000000000000000000000000000..f85eb18b0b8afc7321aa81812fa5d1cc0af0b1dd Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon6.imageset/cs10712649413789781.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon7.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon7.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..caf61571caa980625df6b9898c341f9c0c3a478a --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon7.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs10823521825795415.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon7.imageset/cs10823521825795415.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon7.imageset/cs10823521825795415.png new file mode 100644 index 0000000000000000000000000000000000000000..ca50dda317073731b6972f452a56be6094f19345 Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon7.imageset/cs10823521825795415.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon8.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon8.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..f12be0f3ead14afffe1e1f5f7ff368bb578a16b2 --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon8.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs11010345522393046.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon8.imageset/cs11010345522393046.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon8.imageset/cs11010345522393046.png new file mode 100644 index 0000000000000000000000000000000000000000..211a13b985892a7a36d035f2d9b76bf512051035 Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon8.imageset/cs11010345522393046.png differ diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon9.imageset/Contents.json b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon9.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..a79376486d51752d903ccac2620d7d632be7ae01 --- /dev/null +++ b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon9.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cs11096764340505821.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/enzevalos_iphone/Assets.xcassets/cartoons/cartoon9.imageset/cs11096764340505821.png b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon9.imageset/cs11096764340505821.png new file mode 100644 index 0000000000000000000000000000000000000000..bedd6184ea119dddc60b011b9aea6853e91305bf Binary files /dev/null and b/enzevalos_iphone/Assets.xcassets/cartoons/cartoon9.imageset/cs11096764340505821.png differ diff --git a/enzevalos_iphone/CNContactExtension.swift b/enzevalos_iphone/CNContactExtension.swift index 32a227a323193fa6aabe6f8d9dddd5b2edfa1e1c..d7d6955d0573a7ab02b15fb5ce29507e63de1564 100644 --- a/enzevalos_iphone/CNContactExtension.swift +++ b/enzevalos_iphone/CNContactExtension.swift @@ -42,3 +42,12 @@ extension CNContact { } } + +extension UIColor { + static var random: UIColor { + return UIColor(red: .random(in: 0...1), + green: .random(in: 0...1), + blue: .random(in: 0...1), + alpha: 1.0) + } +} diff --git a/enzevalos_iphone/ContactHandler.swift b/enzevalos_iphone/ContactHandler.swift index 35f37d2205e573fbd091dc92667ffb28b13174ff..82c3d01f7102d31d258702353679b575fd4bf130 100644 --- a/enzevalos_iphone/ContactHandler.swift +++ b/enzevalos_iphone/ContactHandler.swift @@ -24,6 +24,8 @@ import SwiftUI // TODO: Mark displayname as from CNContact class ContactHandler { + static var cartoons = true + private let store = CNContactStore() static let handler = ContactHandler() let keysToFetch = [CNContactGivenNameKey, CNContactFamilyNameKey, CNContactNicknameKey, CNContactIdentifierKey, CNContactImageDataKey] as [CNKeyDescriptor] @@ -99,6 +101,17 @@ class ContactHandler { } } + + private static func mapToCartoon(name: String, key: String?) -> Image { + let maxCartoons = 50 + var id = abs(name.hash % maxCartoons) + if let key = key { + id = abs(key.hash % maxCartoons) + } + return Image("cartoon\(id)") + .resizable() + } + public static func makeImageFromName(_ name: String, color: UIColor) -> UIImage { var text: NSAttributedString var tag = String() @@ -148,6 +161,10 @@ class ContactHandler { if let imageData = addr.image, let image = UIImage(data: imageData) { return Image(uiImage: image) } + if cartoons { + // TODO: Fix mapping to key. + return mapToCartoon(name: addr.name, key: nil) + } return Image(uiImage: makeImageFromName(addr.name, color: getColor(name: addr.name) )) } diff --git a/enzevalos_iphone/MailHandler.swift b/enzevalos_iphone/MailHandler.swift index ba2ee7a33deb845432bb5b0ec85047392ccc72be..0804f453fb4402150d9c206dfe822b3fe162f2fc 100644 --- a/enzevalos_iphone/MailHandler.swift +++ b/enzevalos_iphone/MailHandler.swift @@ -57,6 +57,9 @@ static var INBOX: String { return UserManager.backendInboxFolderPath } + static var SENT: String { + return UserManager.backendSentFolderPath + } private var IMAPSes: MCOIMAPSession? var IMAPSession: MCOIMAPSession? { if IMAPSes == nil { diff --git a/enzevalos_iphone/PreviewSampleData/SimulatorData.swift b/enzevalos_iphone/PreviewSampleData/SimulatorData.swift index 88cd8056f6caf617fa48c4a053884bc28d1966d9..428081ad60c8119a1a478e909bb86c62b1c81398 100644 --- a/enzevalos_iphone/PreviewSampleData/SimulatorData.swift +++ b/enzevalos_iphone/PreviewSampleData/SimulatorData.swift @@ -37,9 +37,9 @@ struct SimulatorData_Previews: PreviewProvider { struct ProxyData { // Different Contacts - static let Alice = ProxyContact(name: "Alice", email: "alice@example.com", avatar: ProxyContact.makeImg("Alice", color: .blue)) - static let Bob = ProxyContact(name: "Bob", email: "Bob.lord.of.kingsbridge.and.king.of.england@huge.subdomain.with. a.long.long.long.domain.example.com", avatar: ProxyContact.makeImg("Bob", color: .red)) - static let Charlie = ProxyContact(name: "Charlie", email: "charlie@example.com", avatar: ProxyContact.makeImg("Charlie", color: .green)) + static let Alice = ProxyContact(emails: ["salvador.felipe.jacinto.dali@abc.de"], name: "Salvador Felipe Jacinto Dalí y Domenech", email: "alice@example.com", avatar: ProxyContact.makeImg("Alice", color: .blue)) + static let Bob = ProxyContact(emails: ["hallo@abc.de", "zweildrei.de"], name: "Bob Walker", email: "Bob.lord.of.kingsbridge.and.king.of.england@huge.subdomain.with. a.long.long.long.domain.example.com", avatar: ProxyContact.makeImg("Bob", color: .red)) + static let Charlie = ProxyContact(emails: ["Charlie@blah.de", "zweildrei.de","charlie@gmx.not","Charlie@blah.de", "zweildrei.de","charlie@gmx.nt"], name: "Charlie Marley", email: "charlie@example.com", avatar: ProxyContact.makeImg("Charlie", color: .green)) static let Landmarks = [ Landmark(name: "Berlin", domain: "exampledomain.de", location: .init(latitude: 52.520008, longitude: 13.404954)), Landmark(name: "New York", domain: "secondexampledomain.de", location: .init(latitude: 40.730610, longitude: -73.935242)), @@ -90,6 +90,8 @@ struct ProxyFolder: DisplayFolder { } struct ProxyContact: DisplayContact { + var emails: [String] + typealias K = ProxyPublicKey typealias C = ProxyContact @@ -126,6 +128,15 @@ struct ProxyContact: DisplayContact { } public static func makeImg(_ name: String, color: UIColor) -> Image { + let cartoon = ContactHandler.cartoons + + if cartoon { + let maxCartoons = 50 + let id = abs(name.hash % maxCartoons) + return Image("cartoon\(id)") + .resizable() + } + var text: NSAttributedString var tag = String() if name.count > 0 { @@ -172,12 +183,13 @@ struct ProxyContact: DisplayContact { } -struct ProxyMail: DisplayMail { +struct ProxyMail: DisplayMail, Identifiable { typealias U = ProxyContact typealias D = DialogStruct typealias K = ProxyPublicKey var previewName: String + let id = UUID() var displayAttachments: [DisplayAttachment] = [] @@ -261,3 +273,4 @@ JVBERi0xLjUKJdDUxdgKMTI1IDAgb2JqCjw8Ci9MZW5ndGggNTM1NCAgICAgIAovRmlsdGVyIC9GbGF0 } + diff --git a/enzevalos_iphone/SwiftUI/Contact/ContactMailListView.swift b/enzevalos_iphone/SwiftUI/Contact/ContactMailListView.swift new file mode 100644 index 0000000000000000000000000000000000000000..8244467c7f9ef66b9dd3f2a07a08a9c7b359909b --- /dev/null +++ b/enzevalos_iphone/SwiftUI/Contact/ContactMailListView.swift @@ -0,0 +1,150 @@ +// +// ContactMailListView.swift +// enzevalos_iphone +// +// Created by Amir Rajabi and Goekhan Guemues on 25.03.21 +// Copyright © 2021 fu-berlin. All rights reserved. +// + +import SwiftUI +import CoreData + +/// A view that shows up to three emails received from or sent to this contact depending on the folderType. +struct ContactMailListView: View { + public var folderpath: String + public var folderName: String + public var emailAddresses: [String] + public var fetchRequest: FetchRequest<MailRecord> + public var emails: FetchedResults<MailRecord>{fetchRequest.wrappedValue} + + + init(folderpath: String, folderName: String, emailAddresses: [String]) { + fetchRequest = MailRecord.mailsInFolderFetchRequest(folderpath: folderpath) + self.folderpath = folderpath + self.folderName = folderName + self.emailAddresses = emailAddresses + } + + + var body: some View { + ZStack { + newRoundedRectangle() + VStack { + // Creates a filtered array of the array emails + let filteredEmails = self.emails.filter(filterEmailList) + + // Lists up to three emails of the contact from the filtered emails + ForEach (0..<min(3,filteredEmails.count)) { record in + NavigationLink( + destination: ReadMainView(model: ReadModel(mail: filteredEmails[record]))) { + MailRowView(mail: filteredEmails[record]) + } + if record < min(2, filteredEmails.count - 1) { + Divider() + } + } + + // If the list contains more than three emails, a button is displayed + if filteredEmails.count > 3{ + HStack { + Spacer() + NavigationLink( + destination: MoreContactMailView(folderpath: folderpath, folderName: folderName, emailAddresses: emailAddresses)) { + Text(NSLocalizedString("Contact.Button.ShowMore", comment: "Contact.Button.ShowMore")) + } + }.padding(.top, -10) + } + + } + .padding(.trailing) + .padding(.vertical, 9) + + } + .padding(.horizontal,5) + } + + /// Depending on the folder type of the email, a check is made as to whether the contact is the sender or recipient of the email. + /// - Parameter email: the email that is being checked + func filterEmailList(email: MailRecord) -> Bool { + + // TODO: Checking the foldertype doesn't list (all) the emails. + // It seems that the set flags in foldertype are buged right now. + // For now it checks the folderName. + if folderName == "Inbox"{ + + if (emailAddresses.contains(email.sender.email)) { + return true + } + } + else{ + + var counter = 0 + + while counter < email.addresses.count { + if (emailAddresses.contains(email.addresses[counter].email)) { + return true + } + counter += 1} + + return false + } + + return false + } + +} + +/// A view to list all emails received from or sent to the contact, depending on the clicked more button in ContactMailListView. +struct MoreContactMailView: View { + var folderpath: String + var folderName: String + var emailAddresses: [String] + + public var fetchRequest: FetchRequest<MailRecord> + public var emails: FetchedResults<MailRecord>{fetchRequest.wrappedValue} + + var receivedHeader: LocalizedStringKey = "Contact.Received.Header" + var sentHeader: LocalizedStringKey = "Contact.Sent.Header" + + + init(folderpath: String, folderName: String, emailAddresses: [String]) { + fetchRequest = MailRecord.mailsInFolderFetchRequest(folderpath: folderpath) + self.folderpath = folderpath + self.folderName = folderName + self.emailAddresses = emailAddresses + } + + + var body: some View { + + // Creates an instance of ContactMailListView to use the filteredEmailList function + let functionCall = ContactMailListView(folderpath: folderpath, folderName: folderName, emailAddresses: emailAddresses) + let filteredEmails = self.emails.filter(functionCall.filterEmailList) + + // The header is set depending on the folder name of the emails retrieved + let header = (folderName == "Sent") ? sentHeader : receivedHeader + HStack{ + Text(header) + .font(.title) + .fontWeight(.semibold) + Spacer() + }.padding(.leading, 21) + .padding(.top, 5) + + List (filteredEmails, id: \.self){ record in + NavigationLink( + destination: ReadMainView(model: ReadModel(mail: record))) { + MailRowView(mail: record) + } + } + } +} + + + +struct ContactMailListView_Previews: PreviewProvider { + static var previews: some View { + ContactMailListView(folderpath: "INBOX", folderName: "INBOX", emailAddresses: []) + .environment(\.managedObjectContext, PersistentDataProvider.proxyPersistentDataProvider.persistentContainer.viewContext) + } +} diff --git a/enzevalos_iphone/SwiftUI/Contact/ContactTabView.swift b/enzevalos_iphone/SwiftUI/Contact/ContactTabView.swift deleted file mode 100644 index 4c6fd44cc1f90e04daf24b1461793fe8a7a61af8..0000000000000000000000000000000000000000 --- a/enzevalos_iphone/SwiftUI/Contact/ContactTabView.swift +++ /dev/null @@ -1,125 +0,0 @@ -// -// ContactView.swift -// enzevalos_iphone -// -// Created by Oliver Wiese on 30.10.20. -// Copyright © 2020 fu-berlin. All rights reserved. -// - -import SwiftUI - -/// A subview for ContactView -struct ContactTabView <C: DisplayContact, M: DisplayMail>: View { - - public var contact: C - public var fromMail: M? - public var derivedFromKey: Bool = true - - private var keyID: String? { - return fromMail?.signatureKey?.keyID - } - - var body: some View { - VStack{ - VStack(alignment: .leading, spacing: 3) { - Text(contact.name) - .font(.title) - rating - if contact.name != contact.email { - row(label: "ContactView.EMail.Name", data: contact.email, action: composeMail) - .padding(.bottom, 10) - } - key - }.padding(5) - icon - backgroundInfo - Spacer() - } - } - - private var icon: some View { - contact.avatar - .resizable() - .frame(width: 130, height: 110) - .clipShape(Circle()) - .overlay(Circle().stroke(Color.white, lineWidth: 4)) - .shadow(radius: 10) - .padding(10) - } - - private var key: AnyView? { - if let keyID = keyID { - var label: LocalizedStringKey = "ContactView.Key.Signature.Name" - if fromMail == nil { - label = "ContactView.Key.Primary.Name" - } - return AnyView(row(label: label, data: keyID, action: inspectKey)) - } else { - return AnyView(Button("Invitation.Welcome.Try.InvitationMail", action: invite)) - } - } - - private var rating: some View { - HStack { - Text("ContactView.Rating.Name") - .foregroundColor(.gray) - Text(contact.rating(mail: fromMail).name) - .foregroundColor(contact.rating(mail: fromMail).color) - } - } - - var backgroundInfo: some View { - VStack (alignment: .leading, spacing: 3){ - if derivedFromKey, let discovery = contact.primaryKey?.discovery { - row(label: "ContactView.KnownSince", data: discovery.dateToString, action: nil) // TODO Add discovery mail? - } else if let discovery = contact.discovery { - row(label: "ContactView.KnownSince", data: discovery.dateToString, action: nil) - } else { - row(label: "ContactView.KnownSince.Unknown", data:nil, action: nil) - } - if derivedFromKey, let last = contact.primaryKey?.lastSeen { - row(label: "ContactView.LastMail.Name", data: last.dateToString, action: nil) - } - else if let last = contact.last { - row(label: "ContactView.LastMail.Name", data: last.dateToString, action: nil) - } else { - row(label: "ContactView.LastMail.No", data: nil, action: nil) - } - } .padding(10) - } - - private func row(label: LocalizedStringKey, data: String?, action: ((()->Void)?)) -> some View { - HStack { - Text(label) - .foregroundColor(.gray) - if let data = data, let action = action { - Button(data, action: action) - } else if let data = data{ - Text(data) - .foregroundColor(.gray) - } - } - } - - private func composeMail() { - print("Compose mail!") - } - - private func inspectKey() { - print("Inspect key!") - } - - private func invite() { - print("Invite user!") - } - -} - -struct ContactTabView_Previews: PreviewProvider { - static var previews: some View { - ContactTabView<ProxyContact, ProxyMail>(contact: ProxyData.Alice) - ContactTabView<ProxyContact, ProxyMail>(contact: ProxyData.Bob) - ContactTabView<ProxyContact, ProxyMail>(contact: ProxyData.Charlie) - - } -} diff --git a/enzevalos_iphone/SwiftUI/Contact/ContactView.swift b/enzevalos_iphone/SwiftUI/Contact/ContactView.swift index aba0935a46e7feef5a54f9c86071afe5dfcb191c..310dbf7430ddb30a5ca1cb0d9d3b9c00cd375298 100644 --- a/enzevalos_iphone/SwiftUI/Contact/ContactView.swift +++ b/enzevalos_iphone/SwiftUI/Contact/ContactView.swift @@ -3,6 +3,7 @@ // enzevalos_iphone // // Created by Oliver Wiese on 30.10.20. +// Modified by Amir Rajabi and Goekhan Guemues on 25.03.21 // Copyright © 2020 fu-berlin. All rights reserved. // @@ -10,41 +11,307 @@ import SwiftUI // TODO: Add contact book, related addresses, related keys, related mails. -struct ContactView <C: DisplayContact, M: DisplayMail>: View { +/// A model of all published properties used in ContactView +class ContactProperties: ObservableObject { + @Published var emailAddress: String = "" + @Published var showKeysPopup = false + @Published var composeMail = false +} + +/// A contact view with all associated email addresses and also some emails received from or sent to this contact. +/// - Parameter contact: the contact that is being viewed +struct ContactView <C: DisplayContact>: View { public var contact: C - public var fromMail: M? - public var derivedFromKey: Bool = true + @StateObject var properties = ContactProperties() + /// Creates the view body var body: some View { - TabView{ - ForEach(Tabs, id: \.id ){ tab in - tab.content - .tabItem { - tab.image - Text(tab.description) + ZStack { + VStack { + HStack { + avatar + + VStack (alignment: .leading) { + contactName.padding(.bottom) + knownSince + }.padding(.leading) + Spacer() + }.padding(.leading, 15) + ScrollView { + + // A list of all email addresses associated to the contact + newHeader(header: NSLocalizedString("Contact.Email.Header", + comment: "Header for the section")) + listContactAddresses + + // Up to three emails received from this contact + newHeader(header: NSLocalizedString("Contact.Received.Header", + comment: "Header for the section")) + ContactMailListView(folderpath: MailHandler.INBOX, + folderName: NSLocalizedString("Inbox", comment: "Inbox"), + emailAddresses: contact.emails) + + // Up to three emails sent to this contact + newHeader(header: NSLocalizedString("Contact.Sent.Header", + comment: "Header for the section")) + ContactMailListView(folderpath: MailHandler.SENT, + folderName: NSLocalizedString("Sent", comment: "Sent"), + emailAddresses: contact.emails).padding(.bottom, 25) + + // TODO: Add a section here with all keys of this contact } + .padding(.horizontal,5) + + }.padding(.top, 20) + .blur(radius: properties.showKeysPopup ? 2 : 0) + + // Toggles the popup screen of all keys + if properties.showKeysPopup { + CryptoKeysPopup } + + }.background(Color(.systemGroupedBackground)) + .navigationBarItems(trailing: editButton) + .sheet(isPresented: $properties.composeMail) { + ComposeView(preData: PreMailData(body: "", + subject: "", + to: [properties.emailAddress], + cc: [], + bcc: [])) } - .navigationTitle("ContactView.Title") - } - - var Tabs:[Tab] { - get { - return [ - Tab( - tab: 0, image: Image(systemName: "touchid"), - description: "ContactView.Tab.Contact.Description", - content:AnyView(ContactTabView(contact: contact, fromMail: fromMail, derivedFromKey: derivedFromKey)) - ) - ] + } + + + // TODO: Add an action for the Edit button + private var editButton: some View { + Button {} label: { + Text(NSLocalizedString("edit", comment: "edit")).font(.body) } } + + /// Styling the contact's avatar. + private var avatar: some View { + contact.avatar + .resizable() + .frame(width: 110, height: 110, alignment: .center) + .clipShape(Circle()) + .overlay(Circle().stroke(Color.white, lineWidth: 4)) + .shadow(radius: 10) + .padding(.bottom) + } + + /// Styling the contact's display name. + private var contactName: some View { + // TODO: Show proper name. + // Currently for debugging purposes we show the email before "@" as name + Text(contact.name.components(separatedBy: "@")[0]) + .font(.title) + .fixedSize(horizontal: false, vertical: true) + } + + /// Shows how long the contact is known. + /// If it is unknown, display an 'Add to contact book' button. + var knownSince: some View { + VStack (alignment: .leading){ + + if let discovery = contact.primaryKey?.discovery { + row(label: "ContactView.KnownSince", data: discovery.dateToString) + // TODO Add discovery mail? + } else if let discovery = contact.discovery { + row(label: "ContactView.KnownSince", data: discovery.dateToString) + } else { + row(label: "ContactView.KnownSince.Unknown", data:nil) + // TODO: 'Add to contact book' button here + } + } + } + + /// Creates a frame which contains all email addresses of the contact + var listContactAddresses: some View { + ZStack{ + newRoundedRectangle() + VStack { + ForEach(contact.emails, id: \.self){ eachAddress in + + // This row shows the email address and the label + HStack { + + // When an address is clicked, the ComposeView is called + Button { + properties.emailAddress = eachAddress + + properties.composeMail = true + } label: { + Text("\(eachAddress)") + .fontWeight(.light) + .font(.title2) + .foregroundColor(.blue) + .truncationMode(.middle) + .frame(maxWidth: .infinity, + maxHeight: .infinity, + alignment: .leading) + emailAddressLabel + } + } + + // This row shows the security rating and a button do display the keys + HStack{ + rating + Button { + withAnimation{ + properties.emailAddress = eachAddress + properties.showKeysPopup.toggle() + } + + } label: { + ZStack { + Capsule() + .frame(height: 25, alignment: .center) + .shadow(color:.gray, radius:2) + .foregroundColor(contact.addressRating(contact).color) + + HStack{ + Text(Image(systemName: "key.fill")) + .rotationEffect(Angle(degrees: 30)) + + Text(NSLocalizedString("Contact.Key.Description", comment: "Contact.Key.Description")) + .fontWeight(.medium) + + }.foregroundColor(.white) + .font(.body) + } + } + }.padding(.vertical,3) + + if eachAddress != contact.emails.last{ + Divider().padding(.top,1) + } + + }.padding(.horizontal,10) + + }.padding(5) + + }.padding(.horizontal,5) + } + + /// Creates a frame for the address label. + /// TODO: Add an addressLabel property to the DisplayContact. + var emailAddressLabel: some View { + Text(NSLocalizedString("Email.Label", comment: "Email Label")) + .font(.caption) + .fontWeight(.light) + .foregroundColor(Color(.systemGray)) + .frame(maxWidth: 50 , + maxHeight: 20, + alignment: .bottomLeading) + } + + /// Shows a list of all keys associated to the email address in a popup screen and blurs the background. + var CryptoKeysPopup : some View { + GeometryReader{ geometry in + HStack{ + if keyID == nil { + Text(NSLocalizedString("Contact.Key.NotAvailable", comment: "Key not available message")) + + } else { + // TODO: keyID should be an array of keys + VStack (alignment: .leading){ + Text(NSLocalizedString("Contact.Key.Available", comment: "Key available message")).padding(.bottom, 3) + Text(" \u{2022} \(keyID!)") + } + } + } + .padding() + .background(Color(.tertiarySystemBackground)) + .cornerRadius(15) + .frame(maxWidth: geometry.size.width, + maxHeight: geometry.size.height, + alignment: .center) + + } + .padding(.horizontal,15) + .background( + Color.black.opacity(0.3) + .edgesIgnoringSafeArea(.all) + .onTapGesture { + properties.showKeysPopup.toggle() + properties.emailAddress = "" + } + ) + + } + + // TODO: Change keyID to an array of keys + private var keyID: String? { + return contact.primaryKey?.keyID + } + + /// Creates the security rating label. + private var rating: some View { + HStack{ + Text(Image(systemName: contact.addressRating(contact).shield)) + .font(.title3) + + Text(contact.addressRating(contact).name) + .fontWeight(.medium) + .font(.body) + + } + .foregroundColor(contact.addressRating(contact).color) + .frame(maxWidth:.infinity, + maxHeight: .infinity, + alignment: .leading) + } + + /// Creates the text for the 'Known since' property. + private func row(label: LocalizedStringKey, data: String?) -> some View { + HStack { + Text(label) + + if let data = data{ + Text(data) + } + + } + .font(.custom("SF Pro", size: 12, relativeTo: .caption)) + .foregroundColor(.gray) + } +} + +/// Creates a header for each section. +struct newHeader: View { + var header: String + var body: some View { + HStack { + Text(header) + .font(.footnote) + .foregroundColor(.secondary) + .padding(.horizontal) + .padding(.top, 20) + .textCase(.uppercase) + Spacer() + } + } +} + +/// Creates a rounded rectangle in which the emails are displayed +struct newRoundedRectangle: View { + var body: some View { + RoundedRectangle(cornerRadius: 20) + .shadow(color:.gray, radius:2) + .background(Color(.systemGroupedBackground)) + .foregroundColor(Color(.tertiarySystemBackground)) + } } struct ContactView_Previews: PreviewProvider { static var previews: some View { - ContactView<ProxyContact, ProxyMail>(contact: ProxyData.Alice) - ContactView<ProxyContact, ProxyMail>(contact: ProxyData.Bob) - ContactView<ProxyContact, ProxyMail>(contact: ProxyData.Charlie) + ContactView<ProxyContact>(contact: ProxyData.Alice) + ContactView<ProxyContact>(contact: ProxyData.Alice) + .colorScheme(.dark) + ContactView<ProxyContact>(contact: ProxyData.Bob) + ContactView<ProxyContact>(contact: ProxyData.Bob) + .colorScheme(.dark) + ContactView<ProxyContact>(contact: ProxyData.Charlie) } } diff --git a/enzevalos_iphone/SwiftUI/DisplayProtocols.swift b/enzevalos_iphone/SwiftUI/DisplayProtocols.swift index 59ddc9046b574349d7eea04fd18bcb1f365904cc..939d5e28c00089167f9d20e9ab7a4edfb7948909 100644 --- a/enzevalos_iphone/SwiftUI/DisplayProtocols.swift +++ b/enzevalos_iphone/SwiftUI/DisplayProtocols.swift @@ -87,6 +87,16 @@ enum ContactSecurityRating { case .Forgable: return Color(ThemeManager.unencryptedMessageColor()) } } + + var shield: String { + switch self { + case .Trustworthy: + return "checkmark.shield.fill" + case .Forgable: + return "exclamationmark.shield.fill" + } + } + } @@ -119,6 +129,7 @@ protocol DisplayContact { var name: String { get } var email: String { get } var avatar: Image { get } + var emails: [String] { get } var isInContactBook: Bool { get } var discovery: Date? { get } var last: Date? { get } @@ -136,7 +147,6 @@ protocol DisplayContact { extension DisplayContact { - func findAddress(temp: Bool) -> AddressRecord { if let addr = PersistentDataProvider.dataProvider.fetchedAddressResultController.fetchedObjects?.first { return addr @@ -144,13 +154,13 @@ extension DisplayContact { fatalError("MISSING ADDR") } - func rating <T:DisplayMail> (mail: T?) -> ContactSecurityRating { - if let mail = mail, mail.signatureState == .ValidSignature { - return .Trustworthy - } - if self.primaryKey != nil && mail == nil { + func addressRating <C:DisplayContact> (_: C) -> ContactSecurityRating { + + // TODO: Add another check of the keys array + if self.primaryKey != nil /* || !self.keys.isEmpty */ { return .Trustworthy } + // TODO Think about Rating in case of a unsigned mail from a sender with aprimary key... return .Forgable } @@ -184,7 +194,6 @@ protocol DisplayMail { var signatureKey: K? { get } var persistentMail: MailRecord? { get } - func markAsRead(isRead: Bool) } diff --git a/enzevalos_iphone/SwiftUI/FolderView/FolderListView.swift b/enzevalos_iphone/SwiftUI/FolderView/FolderListView.swift index aabf01383b0a8350da744ef84cbd2723e137636b..92faa9dacfdaafe627e9448e9ec5a8dd330a1d44 100644 --- a/enzevalos_iphone/SwiftUI/FolderView/FolderListView.swift +++ b/enzevalos_iphone/SwiftUI/FolderView/FolderListView.swift @@ -51,4 +51,3 @@ struct FolderOverView_Previews: PreviewProvider { FolderListView() } } - diff --git a/enzevalos_iphone/SwiftUI/Inbox/InboxView.swift b/enzevalos_iphone/SwiftUI/Inbox/InboxView.swift index 056ad5ac2734a165e31f3366f866cd5db575880e..528c13fbf4790d597ff1a48676df95ab2f684272 100644 --- a/enzevalos_iphone/SwiftUI/Inbox/InboxView.swift +++ b/enzevalos_iphone/SwiftUI/Inbox/InboxView.swift @@ -10,6 +10,7 @@ import SwiftUI //import CoreData + struct InboxView: View { var folderPath: String var name: String diff --git a/enzevalos_iphone/SwiftUI/Inbox/MailRowView.swift b/enzevalos_iphone/SwiftUI/Inbox/MailRowView.swift index fa89a176c49db716dfca1b39e1834ee98474eb3f..a81f07e4afaa42f947a50f1eca1dac3506578751 100644 --- a/enzevalos_iphone/SwiftUI/Inbox/MailRowView.swift +++ b/enzevalos_iphone/SwiftUI/Inbox/MailRowView.swift @@ -1,5 +1,5 @@ // -// MailRow.swift +// MailRowView.swift // enzevalos_iphone // // Created by Oliver Wiese on 27.10.20. @@ -65,5 +65,33 @@ struct MailRow_Previews: PreviewProvider { static var previews: some View { MailRowView(mail: ProxyData.PlainMail) .previewLayout(.sizeThatFits) +======= + .if(activateOnTap, input: {$0.onTapGesture(count: 1, perform: {isLinkActive = true}) + .background( + NavigationLink(destination: ContactView(contact: mail.sender), isActive: $isLinkActive) { + EmptyView() + } + .hidden() + )}) + } + +} + +// A conditional view modifier +extension View { + @ViewBuilder + public func `if`<V>(_ condition: Bool, input: (Self) -> V) -> some View where V: View { + if condition { + input(self) + } else { + self + } + } +} + +struct MailRowView_Previews: PreviewProvider { + static var previews: some View { + MailRowView(mail: ProxyData.PlainMail) +>>>>>>> 290+Dev } } diff --git a/enzevalos_iphone/SwiftUI/LetterboxApp.swift b/enzevalos_iphone/SwiftUI/LetterboxApp.swift index 25870715d77b86cc62c85b6bfb7b574d6a413bfa..a3fb72feed3c5bf347551287b66235d91b904956 100644 --- a/enzevalos_iphone/SwiftUI/LetterboxApp.swift +++ b/enzevalos_iphone/SwiftUI/LetterboxApp.swift @@ -41,4 +41,3 @@ struct LetterboxApp: App { } } } - diff --git a/enzevalos_iphone/SwiftUI/Read/ReadModel.swift b/enzevalos_iphone/SwiftUI/Read/ReadModel.swift index 53460c2f3d66cb3d92a71ce27d73be5b9e57c240..afdf794cf77e05506f3062626cdb772c89903c4b 100644 --- a/enzevalos_iphone/SwiftUI/Read/ReadModel.swift +++ b/enzevalos_iphone/SwiftUI/Read/ReadModel.swift @@ -64,12 +64,11 @@ class ReadModel <M: DisplayMail>: ObservableObject { case .ReplyAll: return PreMailData(body: mail.preparePreviousMailBody(), subject: ResponseType.Reply.addPrefix(subject: mail.subject), to: [mail.sender.email], cc: mail.tos.map({$0.email}) + mail.ccs.map({$0.email}), bcc: mail.bccs.map({$0.email})) case .Forward: - return PreMailData(body: mail.preparePreviousMailBody(), subject: ResponseType.Reply.addPrefix(subject: mail.subject), to: [], cc: [], bcc: []) + return PreMailData(body: mail.preparePreviousMailBody(), subject: ResponseType.Forward.addPrefix(subject: mail.subject), to: [], cc: [], bcc: []) case .Archive: dismissView = true return nil case .Unread: - mail.markAsRead(isRead: !mail.isRead) dismissView = true return nil } diff --git a/enzevalos_iphone/SwiftUI/Read/Tabbed Views/SenderViewChildren/SmallContactListView.swift b/enzevalos_iphone/SwiftUI/Read/Tabbed Views/SenderViewChildren/SmallContactListView.swift index 9c8b20ec7d5054cb25c867c0d59866f6c6c1bb6f..9e42175a945b904c3b1bee6a2540fb3492aa3de2 100644 --- a/enzevalos_iphone/SwiftUI/Read/Tabbed Views/SenderViewChildren/SmallContactListView.swift +++ b/enzevalos_iphone/SwiftUI/Read/Tabbed Views/SenderViewChildren/SmallContactListView.swift @@ -32,7 +32,7 @@ struct SmallContactListView <C: DisplayContact>: View { if showList { ForEach(contacts, id: \.email) {contact in - NavigationLink(destination: ContactView<C, MailRecord>(contact: contact, fromMail: nil)) { + NavigationLink(destination: ContactView<C>(contact: contact)) { HStack { CircleImage(image: contact.avatar, radius: 40) VStack (alignment: .leading, spacing: 2){ diff --git a/enzevalos_iphone/SwiftUI/Read/Tabbed Views/SenderViewMain.swift b/enzevalos_iphone/SwiftUI/Read/Tabbed Views/SenderViewMain.swift index 5426af55d95a15bb985fc8c0210abf361465485b..22e34c1997ca79d888a6121ed7ab8ed9ff65ef4f 100644 --- a/enzevalos_iphone/SwiftUI/Read/Tabbed Views/SenderViewMain.swift +++ b/enzevalos_iphone/SwiftUI/Read/Tabbed Views/SenderViewMain.swift @@ -72,7 +72,7 @@ struct SenderViewMain <M: DisplayMail>: View { } private var icon: some View { - NavigationLink(destination: ContactView(contact: model.mail.sender, fromMail: model.mail)) { + NavigationLink(destination: ContactView(contact: model.mail.sender)) { model.mail.sender.avatar .resizable() .frame(width: 130, height: 110) @@ -90,7 +90,7 @@ struct SenderViewMain <M: DisplayMail>: View { Text(NSLocalizedString("Sender", comment: "Sender")) .font(.headline) .padding(.bottom, 10) - NavigationLink(destination: ContactView(contact: model.mail.sender, fromMail: model.mail)) { + NavigationLink(destination: ContactView(contact: model.mail.sender)) { HStack { VStack (alignment: .leading) { Text(model.mail.sender.name) diff --git a/enzevalos_iphone/SwiftUI/SupportingViews/MailRowView.swift b/enzevalos_iphone/SwiftUI/SupportingViews/MailRowView.swift index fa89a176c49db716dfca1b39e1834ee98474eb3f..1bca8d3ff29d09ebf46daaef845c9e157fbe984b 100644 --- a/enzevalos_iphone/SwiftUI/SupportingViews/MailRowView.swift +++ b/enzevalos_iphone/SwiftUI/SupportingViews/MailRowView.swift @@ -1,5 +1,5 @@ // -// MailRow.swift +// MailRowView.swift // enzevalos_iphone // // Created by Oliver Wiese on 27.10.20. diff --git a/enzevalos_iphone/de.lproj/Localizable.strings b/enzevalos_iphone/de.lproj/Localizable.strings index d2d4ee71864dd49b301d5678d875a4388b3c2b86..4ec91e115604e5f01d38ff999bde70acd7d6fe9a 100644 --- a/enzevalos_iphone/de.lproj/Localizable.strings +++ b/enzevalos_iphone/de.lproj/Localizable.strings @@ -5,6 +5,14 @@ Created by jakobsbode on 06.10.16. Copyright © 2016 fu-berlin. All rights reserved. */ +"Contact.Key.Description" = "Schlüssel"; +"Contact.Email.Header" = "Adressen"; +"Contact.Received.Header" = "Von diesem Kontakt empfangen"; +"Contact.Sent.Header" = "An diesen Kontakt gesendet"; +"Contact.Key.NotAvailable" = "Diese Email-Adresse hat keine Schlüssel."; +"Contact.Key.Available" = "Diese Email-Adresse benutzt folgende Schlüssel:"; +"Contact.Button.ShowMore" = "Mehr..."; +"Email.Label" = "Privat"; "Permission.contactDenied.Title" = "Oops! Zugriff erlauben!"; "Permission.contactDenied.Description" = "Bitte erlaube Zugriff auf Kontakte in Einstellungen -> Datenschutz -> Kontakte"; "Permission.Notification.Title" = "Mitteilungen erlauben"; @@ -266,7 +274,6 @@ "you" = "Deine ID"; "ContactView.Title" = "Kontakt"; "ContactView.Tab.Contact.Description" = "Kontakt"; -"ContactView.Tab.EMail.Description" = "Adressen"; "ContactView.Tab.EMail.Title" = "Verknüpfte Adressen"; "ContactView.Tab.EMail.Data.No" = "Keine verknüpften Adressen. \n Verknüpfungen können über das Adressbuch erfolgen."; "ContactView.ID.Explaination.youCrypto" = "Hier ist deine vertrauenswürdige Identität."; // thisIsYou @@ -280,9 +287,9 @@ "ContactView.Nickname.Title" = "Nickname"; "ContactView.PreferedIDCell.IsPrimID" = "Diese ID wird verwendet um vertrauliche Mails an die Person zu senden."; "ContactView.PreferedIDCell.MakePrimID" = "Diese ID zum Versand von vertraulichen Mails verwenden."; -"ContactView.KnownSince" = "Bekannt seit"; +"ContactView.KnownSince" = "Bekannt seit:"; "ContactView.KnownSince.Unknown" = "Das Datum des ersten Auftauchens ist unbekannt."; -"ContactView.LastMail" = "Letzte erhaltene Mail von "; +"ContactView.LastMail" = "Letzte erhaltene Mail: "; "ContactView.LastMail.Name" = "Letzte erhaltene Mail von"; "ContactView.LastMail.Today" = "Letzte Mail heute erhalten."; "ContactView.LastMail.Ago" = "Letzte Mail vor %@ erhalten."; @@ -292,7 +299,7 @@ "ContactView.Key.Signature.Name" = "Signatur Schlüssel"; "ContactView.Key.Primary.Name" = "Bevorzugter Schlüssel"; "ContactView.Rating.Name" = "Einstufung"; -"ContactView.Rating.Trustworthy" = "Vertrauenswürdig"; +"ContactView.Rating.Trustworthy" = "Sicher"; "ContactView.Rating.Forgable" = "Fälschbar"; "didYouSendThis" = "Hallo, haben Sie mir diese E-Mail geschickt?\nIch frage nur, weil die Mail Ihnen nicht eindeutig zugeordnet werden kann und Ihre vorherigen Mails eindeutig Ihnen zuzuordnen waren. Für Erfahrende: Die Mail hat keine digitale Signatur.\n\n"; "reactButton" = "Um Bestätigung bitten"; diff --git a/enzevalos_iphone/en.lproj/Localizable.strings b/enzevalos_iphone/en.lproj/Localizable.strings index c27a527def77c96f864fa41f3d550ad25ec34b75..48fb4bd5fd16c55101e1a7c0e97749404ee3cc9b 100644 --- a/enzevalos_iphone/en.lproj/Localizable.strings +++ b/enzevalos_iphone/en.lproj/Localizable.strings @@ -5,6 +5,14 @@ Created by jakobsbode on 06.10.16. Copyright © 2016 fu-berlin. All rights reserved. */ +"Contact.Key.Description" = "Show Keys"; +"Contact.Email.Header" = "Addresses"; +"Contact.Received.Header" = "Received from this contact"; +"Contact.Sent.Header" = "Sent to this contact"; +"Contact.Key.NotAvailable" = "This email address doesn't have a key."; +"Contact.Key.Available" = "This email address is using the following keys:"; +"Contact.Button.ShowMore" = "Show more..."; +"Email.Label" = "Private"; "Permission.contactDenied.Title" = "Oops! Please Allow!"; "Permission.contactDenied.Description" = "Please Turn On Access Contacts In Settings -> Privacy -> Contacts ."; "Permission.Notification.Title" = "Allow Notifications"; @@ -236,7 +244,6 @@ "you.Secure" = "Your genuine ID"; "ContactView.Title" = "Contact"; "ContactView.Tab.Contact.Description" = "Contact"; -"ContactView.Tab.EMail.Description" = "Addresses"; "ContactView.Tab.EMail.Title" = "Related Addresses"; "ContactView.Tab.EMail.Data.No" = "No related addresses. \n You can add through your address book."; "ContactView.ID.Explaination.youCrypto" = "Here is your genuine identity."; @@ -250,19 +257,19 @@ "ContactView.Nickname.Title" = "Name"; "ContactView.PreferedIDCell.IsPrimID" = "ID is used to send genuine mails."; "ContactView.PreferedIDCell.MakePrimID" = "Use this ID to send confidential mails."; -"ContactView.KnownSince" = "Known since"; +"ContactView.KnownSince" = "Known since:"; "ContactView.KnownSince.Unknown" = "Unknown first appearance date"; "ContactView.LastMail.Today" = "Last mail received today."; "ContactView.LastMail.Ago" = "Last received mail %@ ago."; -"ContactView.LastMail.Name" = "Last received mail from"; +"ContactView.LastMail.Name" = "Last received mail:"; "ContactView.LastMail.No" = "No mails received."; "ContactView.OtherIDs.Insecure.Title" = "Insecure ID"; "ContactView.EMail.Name" = "E-Mail"; "ContactView.Key.Signature.Name" = "Signature Key"; "ContactView.Key.Primary.Name" = "Primary Key"; "ContactView.Rating.Name" = "Rating"; -"ContactView.Rating.Trustworthy" = "Trustworthy"; -"ContactView.Rating.Forgable" = "Forgable"; +"ContactView.Rating.Trustworthy" = "Secure Email"; +"ContactView.Rating.Forgable" = "Forgable Email"; "didYouSendThis" = "Hey, did you send me this mail?\nI'm just asking because the mail is not confidential and we communicated confidentially before.\n\n"; "reactButton" = "Request Confirmation"; "sendSecureIfPossible" = "Send confidentially if possible"; diff --git a/enzevalos_iphone/persistentData/AddressRecord.swift b/enzevalos_iphone/persistentData/AddressRecord.swift index 416e9a54b7eb34e7d446344cdd827bdadabba75f..060bbcf252c4785129925bb128326495ce9cd348 100644 --- a/enzevalos_iphone/persistentData/AddressRecord.swift +++ b/enzevalos_iphone/persistentData/AddressRecord.swift @@ -127,6 +127,23 @@ extension AddressRecord { } extension AddressRecord: DisplayContact { + var emails: [String] { + get{ + var addresses = [String]() + addresses.append(self.email) + if let keys = self.usedPublicKeys as? Set<PublicKeyRecord> { + for key in keys { + if let set = key.usedAddress as? Set<String> { + addresses.append(contentsOf: set) + } + } + } + return addresses + } + } + + + typealias C = AddressRecord var avatar: Image {