From 3a03c1be302aeeaebf46c95db4f9139a185f896b Mon Sep 17 00:00:00 2001 From: Deniz Duezgoeren Date: Wed, 17 Jul 2019 21:54:38 +0200 Subject: [PATCH] Added app icons, launch screen; changed colours in ViewControllers to colour literals --- AvH Plan.xcodeproj/project.pbxproj | 19 +++ .../AppIcon.appiconset/Contents.json | 54 ++++--- .../AppIcon.appiconset/app_icon_ios.png | Bin 0 -> 20689 bytes .../AppIcon.appiconset/avh20x1.png | Bin 0 -> 437 bytes .../AppIcon.appiconset/avh20x2-1.png | Bin 0 -> 812 bytes .../AppIcon.appiconset/avh20x2.png | Bin 0 -> 812 bytes .../AppIcon.appiconset/avh20x3.png | Bin 0 -> 1201 bytes .../AppIcon.appiconset/avh29x1.png | Bin 0 -> 647 bytes .../AppIcon.appiconset/avh29x2-1.png | Bin 0 -> 1186 bytes .../AppIcon.appiconset/avh29x2.png | Bin 0 -> 1186 bytes .../AppIcon.appiconset/avh29x3.png | Bin 0 -> 1704 bytes .../AppIcon.appiconset/avh40x1.png | Bin 0 -> 812 bytes .../AppIcon.appiconset/avh40x2-1.png | Bin 0 -> 1496 bytes .../AppIcon.appiconset/avh40x2.png | Bin 0 -> 1496 bytes .../AppIcon.appiconset/avh40x3.png | Bin 0 -> 2329 bytes .../AppIcon.appiconset/avh60x2.png | Bin 0 -> 2329 bytes .../AppIcon.appiconset/avh60x3.png | Bin 0 -> 3368 bytes .../AppIcon.appiconset/avh76x1.png | Bin 0 -> 1467 bytes .../AppIcon.appiconset/avh76x2.png | Bin 0 -> 2899 bytes .../AppIcon.appiconset/avh83,5x2.png | Bin 0 -> 3105 bytes AvH Plan/Base.lproj/LaunchScreen.storyboard | 38 ++++- AvH Plan/Base.lproj/Main.storyboard | 23 ++- AvH Plan/DataFetcher.swift | 136 ++++++++---------- AvH Plan/GeneralPlanViewController.swift | 2 +- AvH Plan/InfoViewController.swift | 10 +- AvH Plan/MenuViewCell.xib | 8 ++ AvH Plan/MenuViewController.swift | 18 +-- AvH Plan/PersonalPlanViewController.swift | 29 +--- AvH Plan/PlanViewCell.xib | 8 ++ AvH Plan/PlanViewController.swift | 20 ++- AvH Plan/de.lproj/LaunchScreen.strings | 12 ++ AvH Plan/en.lproj/LaunchScreen.strings | 1 + Podfile | 1 - 33 files changed, 211 insertions(+), 168 deletions(-) create mode 100644 AvH Plan/Assets.xcassets/AppIcon.appiconset/app_icon_ios.png create mode 100644 AvH Plan/Assets.xcassets/AppIcon.appiconset/avh20x1.png create mode 100644 AvH Plan/Assets.xcassets/AppIcon.appiconset/avh20x2-1.png create mode 100644 AvH Plan/Assets.xcassets/AppIcon.appiconset/avh20x2.png create mode 100644 AvH Plan/Assets.xcassets/AppIcon.appiconset/avh20x3.png create mode 100644 AvH Plan/Assets.xcassets/AppIcon.appiconset/avh29x1.png create mode 100644 AvH Plan/Assets.xcassets/AppIcon.appiconset/avh29x2-1.png create mode 100644 AvH Plan/Assets.xcassets/AppIcon.appiconset/avh29x2.png create mode 100644 AvH Plan/Assets.xcassets/AppIcon.appiconset/avh29x3.png create mode 100644 AvH Plan/Assets.xcassets/AppIcon.appiconset/avh40x1.png create mode 100644 AvH Plan/Assets.xcassets/AppIcon.appiconset/avh40x2-1.png create mode 100644 AvH Plan/Assets.xcassets/AppIcon.appiconset/avh40x2.png create mode 100644 AvH Plan/Assets.xcassets/AppIcon.appiconset/avh40x3.png create mode 100644 AvH Plan/Assets.xcassets/AppIcon.appiconset/avh60x2.png create mode 100644 AvH Plan/Assets.xcassets/AppIcon.appiconset/avh60x3.png create mode 100644 AvH Plan/Assets.xcassets/AppIcon.appiconset/avh76x1.png create mode 100644 AvH Plan/Assets.xcassets/AppIcon.appiconset/avh76x2.png create mode 100644 AvH Plan/Assets.xcassets/AppIcon.appiconset/avh83,5x2.png create mode 100644 AvH Plan/de.lproj/LaunchScreen.strings create mode 100644 AvH Plan/en.lproj/LaunchScreen.strings diff --git a/AvH Plan.xcodeproj/project.pbxproj b/AvH Plan.xcodeproj/project.pbxproj index dc9eadb..c7f74b0 100644 --- a/AvH Plan.xcodeproj/project.pbxproj +++ b/AvH Plan.xcodeproj/project.pbxproj @@ -11,6 +11,7 @@ 2E65263AFD35D6B542E89AE4 /* Pods_AvH_Plan.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7605BB0678C9E27A1D3E9DAA /* Pods_AvH_Plan.framework */; }; A957A75122DDC15500E0A2ED /* MenuViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A957A74F22DDC15500E0A2ED /* MenuViewCell.swift */; }; A957A75222DDC15500E0A2ED /* MenuViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = A957A75022DDC15500E0A2ED /* MenuViewCell.xib */; }; + A958A92222DF5388007052B0 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = A958A92422DF5388007052B0 /* Localizable.strings */; }; A96133802299867400B541D4 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A961337F2299867400B541D4 /* AppDelegate.swift */; }; A96133822299867400B541D4 /* PlanViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A96133812299867400B541D4 /* PlanViewController.swift */; }; A96133872299867400B541D4 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A96133852299867400B541D4 /* Main.storyboard */; }; @@ -53,6 +54,9 @@ 7605BB0678C9E27A1D3E9DAA /* Pods_AvH_Plan.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_AvH_Plan.framework; sourceTree = BUILT_PRODUCTS_DIR; }; A957A74F22DDC15500E0A2ED /* MenuViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuViewCell.swift; sourceTree = ""; }; A957A75022DDC15500E0A2ED /* MenuViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MenuViewCell.xib; sourceTree = ""; }; + A958A91E22DF528C007052B0 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Main.strings; sourceTree = ""; }; + A958A92322DF5388007052B0 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; + A958A92522DF538C007052B0 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = ""; }; A961337C2299867400B541D4 /* AvH Plan.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "AvH Plan.app"; sourceTree = BUILT_PRODUCTS_DIR; }; A961337F2299867400B541D4 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; A96133812299867400B541D4 /* PlanViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlanViewController.swift; sourceTree = ""; }; @@ -176,6 +180,7 @@ A9D830A622DE258C00D7EA05 /* PlanViewCell.xib */, A96D4CC722DDE01A006BAB34 /* GeneralPlanViewController.swift */, A96D4CC922DDE184006BAB34 /* PersonalPlanViewController.swift */, + A958A92422DF5388007052B0 /* Localizable.strings */, ); path = "AvH Plan"; sourceTree = ""; @@ -288,6 +293,7 @@ knownRegions = ( en, Base, + de, ); mainGroup = A96133732299867300B541D4; productRefGroup = A961337D2299867400B541D4 /* Products */; @@ -307,6 +313,7 @@ buildActionMask = 2147483647; files = ( A961338C2299867A00B541D4 /* LaunchScreen.storyboard in Resources */, + A958A92222DF5388007052B0 /* Localizable.strings in Resources */, A957A75222DDC15500E0A2ED /* MenuViewCell.xib in Resources */, A96133892299867A00B541D4 /* Assets.xcassets in Resources */, A96133872299867400B541D4 /* Main.storyboard in Resources */, @@ -480,10 +487,20 @@ /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ + A958A92422DF5388007052B0 /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + A958A92322DF5388007052B0 /* en */, + A958A92522DF538C007052B0 /* de */, + ); + name = Localizable.strings; + sourceTree = ""; + }; A96133852299867400B541D4 /* Main.storyboard */ = { isa = PBXVariantGroup; children = ( A96133862299867400B541D4 /* Base */, + A958A91E22DF528C007052B0 /* de */, ); name = Main.storyboard; sourceTree = ""; @@ -503,6 +520,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; @@ -564,6 +582,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; diff --git a/AvH Plan/Assets.xcassets/AppIcon.appiconset/Contents.json b/AvH Plan/Assets.xcassets/AppIcon.appiconset/Contents.json index d8db8d6..fc014c0 100644 --- a/AvH Plan/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/AvH Plan/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,93 +1,111 @@ { "images" : [ { - "idiom" : "iphone", "size" : "20x20", + "idiom" : "iphone", + "filename" : "avh20x2-1.png", "scale" : "2x" }, { - "idiom" : "iphone", "size" : "20x20", + "idiom" : "iphone", + "filename" : "avh20x3.png", "scale" : "3x" }, { - "idiom" : "iphone", "size" : "29x29", + "idiom" : "iphone", + "filename" : "avh29x2.png", "scale" : "2x" }, { - "idiom" : "iphone", "size" : "29x29", + "idiom" : "iphone", + "filename" : "avh29x3.png", "scale" : "3x" }, { - "idiom" : "iphone", "size" : "40x40", + "idiom" : "iphone", + "filename" : "avh40x2-1.png", "scale" : "2x" }, { - "idiom" : "iphone", "size" : "40x40", + "idiom" : "iphone", + "filename" : "avh40x3.png", "scale" : "3x" }, { - "idiom" : "iphone", "size" : "60x60", + "idiom" : "iphone", + "filename" : "avh60x2.png", "scale" : "2x" }, { - "idiom" : "iphone", "size" : "60x60", + "idiom" : "iphone", + "filename" : "avh60x3.png", "scale" : "3x" }, { - "idiom" : "ipad", "size" : "20x20", + "idiom" : "ipad", + "filename" : "avh20x1.png", "scale" : "1x" }, { - "idiom" : "ipad", "size" : "20x20", + "idiom" : "ipad", + "filename" : "avh20x2.png", "scale" : "2x" }, { - "idiom" : "ipad", "size" : "29x29", + "idiom" : "ipad", + "filename" : "avh29x1.png", "scale" : "1x" }, { - "idiom" : "ipad", "size" : "29x29", + "idiom" : "ipad", + "filename" : "avh29x2-1.png", "scale" : "2x" }, { - "idiom" : "ipad", "size" : "40x40", + "idiom" : "ipad", + "filename" : "avh40x1.png", "scale" : "1x" }, { - "idiom" : "ipad", "size" : "40x40", + "idiom" : "ipad", + "filename" : "avh40x2.png", "scale" : "2x" }, { - "idiom" : "ipad", "size" : "76x76", + "idiom" : "ipad", + "filename" : "avh76x1.png", "scale" : "1x" }, { - "idiom" : "ipad", "size" : "76x76", + "idiom" : "ipad", + "filename" : "avh76x2.png", "scale" : "2x" }, { - "idiom" : "ipad", "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "avh83,5x2.png", "scale" : "2x" }, { - "idiom" : "ios-marketing", "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "app_icon_ios.png", "scale" : "1x" } ], diff --git a/AvH Plan/Assets.xcassets/AppIcon.appiconset/app_icon_ios.png b/AvH Plan/Assets.xcassets/AppIcon.appiconset/app_icon_ios.png new file mode 100644 index 0000000000000000000000000000000000000000..775d52a35ed381f7825f83d09bbfdfc0cd567ab2 GIT binary patch literal 20689 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 literal 0 HcmV?d00001 diff --git a/AvH Plan/Assets.xcassets/AppIcon.appiconset/avh20x2-1.png b/AvH Plan/Assets.xcassets/AppIcon.appiconset/avh20x2-1.png new file mode 100644 index 0000000000000000000000000000000000000000..2da628e4392b14d49b6d360cfd0493ee0bfa8031 GIT binary patch literal 812 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 P00000NkvXXu0mjfG&VDC literal 0 HcmV?d00001 diff --git a/AvH Plan/Assets.xcassets/AppIcon.appiconset/avh29x1.png b/AvH Plan/Assets.xcassets/AppIcon.appiconset/avh29x1.png new file mode 100644 index 0000000000000000000000000000000000000000..c6fe8c33bc42f0cb69cd86b21b26addd4148757c GIT binary patch literal 647 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 N?X4ZHP}d)%{|Bd3?N0yz literal 0 HcmV?d00001 diff --git a/AvH Plan/Assets.xcassets/AppIcon.appiconset/avh40x2.png b/AvH Plan/Assets.xcassets/AppIcon.appiconset/avh40x2.png new file mode 100644 index 0000000000000000000000000000000000000000..1e76fabf5bbb7c628b5cd3d9a58be425ba7b5662 GIT binary patch literal 1496 zcmb`F`9IVN7{|ZkmNU6SDkC}aGK+27N*ZT{F^MF^vO@0MSB_ct5mIDHO>$0%R~V(& zM#IQ$#0*Bvm~qS)%;lKb9sk3AUeEjaJkRsP^V25>=4dN(O#K)D05bM=R&asCj*t)* z^zJdC8i9eL;I`KR)TqXqU=azhbg%?~wj!xRA5j1h24J^btN}+P;P@7Bsso(f0kC=i z)&Mv+0?th!crysz0=kU?-F^>pX$85of$p>mxqc9G>kxA56u$dW*u6{Gy+_!iSLA-5 zi02nk?|(!e42bz)#C!+E{jlQx-zERRNc=e}889XpFfJ81AsIM%ENEIPct$#CLM{X+ z^JqpoWL7qGPC67X6Fx5+u_zxrE+2|h3Y*dhACV8AJ03w$j>0QOEht43Rbm!YVuawpXwgMzG3i$|b1zQ($Nxu|qTj$`c^6)kVc-sO3toVo93!?jr#d{UR`;|n? zr)ze_OSj5a;N{D%&zD>)R@`1voU69nt5!X$$sS0i7joCDj_F&yIBfgoO(y|=iN=s^8i)>}bd|+p^k)E_s5Fb{vI>?zF zYgt{i+^+SaURq%<9nrm;g=Xb+GYb25i_z<4pXo39)@#15Kl{R{9ALiu#;P7*RAJaP zgX~xRn~g)84MQ~4$kwZGjMszPZ?H@xmf1M6iyGZ+p4e+2W3-L$v`_4Q#IZVYdp$GE z&p&qh2`tP!vwxmFxWL3Nvam~B?9$%&3TKkUnV}vKs2l>7JHNI!zs_CU*k9P>{oLgK zr0p%!4=CG*tJ^&4_5pQ=M`IrDa(OI4?eW?BeC|Gvd%)j6M63s;iN5sa) z8qnbqZ?8@9ejTKv{Yy>JG`~@mx<2E0PA@vZy!62twZ3p6cetU3Q@NrP=IOQ+rbIxo zkE!6UsAf~b6Gwa+952oHp3RV67#c5-rVWmpPt>){b|&J&)eLJLUgyuoakAaA)Q!Ti5&0=nfV>WK>)6x6kwYaGgRd!pyXD zhMdVE1mfen+tO@YD<8r7nzEuI{l#UBGC!3lPdRkABg9fb6aw$I4E9EssxHjp}vE1%~#;7U(xi6pLt zk5gz>8%-kbO&p(oVj+5lLsd^E=SN$}lWNy}YAn1q8!pk~^3;8+uf!eNYnss#+*x)o zvZzYcFu56Of4kycyC!Ai+F5VCH_v}~P~=p5<0#3zWL#ysLY-xhS>eXDz-Mk;?HmL& z$RX`(hpTd#3J)A}aX;nR_nM+SznhjOQ@ZXG)-47X8c@rNoDy5xsw#r<^!ZZdWaEyq zO$kL4#Blimp&Dg0XF&@X^|%sXgL(Z87QEY;O>w%AHKreyUkw}Va9a0$A5*Ra=sm=T zP4j-6vR{4j>PcV`nm)|F0TGqhbC@D}R(ReW1wpSuNMNWIgrp0-03qo>Wg&j&pym)i zFjN`hrwi4E_~}5!AjosjOAsU&st!TwLiHgjJ~tppZD^!mfIz}QsUXVQn33h^YV1*z N?X4ZHP}d)%{|Bd3?N0yz literal 0 HcmV?d00001 diff --git a/AvH Plan/Assets.xcassets/AppIcon.appiconset/avh40x3.png b/AvH Plan/Assets.xcassets/AppIcon.appiconset/avh40x3.png new file mode 100644 index 0000000000000000000000000000000000000000..3a8ab38c4d3e91fd6c984ba22cdb910932aae2e5 GIT binary patch literal 2329 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 kMcqJxWfHhEh0X`rY5+@5Bo-ItpET3 literal 0 HcmV?d00001 diff --git a/AvH Plan/Assets.xcassets/AppIcon.appiconset/avh76x1.png b/AvH Plan/Assets.xcassets/AppIcon.appiconset/avh76x1.png new file mode 100644 index 0000000000000000000000000000000000000000..cc23b84bb83986e642963fa78e5a30aaad3946c8 GIT binary patch literal 1467 zcmc&y{X5eM0RMiy6ow|75v~?-`+sw9Z{T26lJ}=Mbx6cosJan+1h1ohY001lk{Cz|8 z8Tef$hI*F-RNCnSOb+ow0W}PVd3`a$`2_g@Ky493gE0mGLjWBZdJqVH3J5&+F*x2}c%soTyvZ<}Y83I_ z=+p3W&9C4Iy_W7s2O(DO>a^Oaf0s|)MMi}qxhLzdhzYw3p^#rhnjJDK%! z=A>uNq<7AUciyB+mcS)j=$19J;hGA0U9~Z9*(p!$d_(P=zp^P`<5Hmgu~4_A=$l9G zjCcNwSCMFU;r#YO>8@hwfg59o3cehnuuhdu`j^a{EM=c8pNlM;JXgVvuH-~liO*NE z@sFotpKueZ=I~X##A<%r3t2+VQc4v&wVIRkTu6G!%c$j(>K3!>=Q8X0Usq^}0mwSD4-0dZZww0U^(-LR}>R8D28+s0&V z<4W4s6*^1Bm{KsNmEBV-BOJvDS2e=ZjPq1qc+1Rr4U4a43zyjoE3+c?taybhQFA34 zfoz2*)$nE71-VA5&`6b9sZu9X>6VtY3bjt9)~Pi*jaJWZI^8$@E&pFMR@LG33rsKg zhbIGoCGESw&ctWu0KmXEz}F}Agdb-hECL4F8ndH_jdhu1v$Xs?7V9k0EiHHsftFtcw* z0~edRDh=i4vHbh5dOeyD$wFXH<~@ScJL;!PUc^jMp}Ji62}OOHlrE8EO2*+@E|C&AA0?6?yODuw_HKOXRVWsZWsxTAyKk+( z+e6>-qH8hLe$*YGsN6AB*AO+N4RFx>I`pRDmy$Yn^C)|Rq1VG{b1h>7lpudJ3#S5X zDp8)uP&f*X47EXRLWaUn#z+bR<%OicQFcg*4Qexz0z;W1VF;855(Xd4gJA)h~xnuKzu}B(`$t9{_i&rI2i0(gNn@j4}xjCLjV8( literal 0 HcmV?d00001 diff --git a/AvH Plan/Assets.xcassets/AppIcon.appiconset/avh76x2.png b/AvH Plan/Assets.xcassets/AppIcon.appiconset/avh76x2.png new file mode 100644 index 0000000000000000000000000000000000000000..9d5defbe3730b8e7d51b1569f6fd25249c978a0a GIT binary patch literal 2899 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 GIsSico^Ub% literal 0 HcmV?d00001 diff --git a/AvH Plan/Assets.xcassets/AppIcon.appiconset/avh83,5x2.png b/AvH Plan/Assets.xcassets/AppIcon.appiconset/avh83,5x2.png new file mode 100644 index 0000000000000000000000000000000000000000..693604ec54bc413a3c44dc550b0e4094cc7c8a4a GIT binary patch literal 3105 zcmX|@cRbbq7sq8pS*gs68zHidNL?DO*NXMqM+rBxII#DXx+2qC|49mCday zdvmXQ?e+Wk*5mhhocHH^&UwGy=e+)WzBDq>q`$~* zAf5AtYO0bU`#6_@g7UG7z6u#xRWj|7Jrz)2c%o(DOGd`>Sw@6a3#TAjlX4 z1!)hwhjqnvo<;?8ajiT}5d1I9PZwQan*W4s(>5qR=gP28f=~T`=dsW(8jZd4u*CGEE$u`AO05(p^(*o3!uObWZ5jgO2q%Sk7g}A4FTj1Eot(B ze{F1AdoKQ!un_6C<>W*jS&05M-;tj_f=_v`(vrj!AKa9gPDu}#%~)Q(39QUm76Jh( z5g(zVB!-?n4v3O(c8$)Ql#fI)L)G_4n&o5o_uceU zWV-dI2EoPR)X|16l&K9&II8&Zw4o^;x^fLW?%BTGeX)Um=h6hfQ)q5NdD57_?leS= zrL{0SeQ-n{l6 zlD?DZM=Uf8@uS>>dNvggWe`G}U}PLE@!sTPlkwkbx%HDEKFNvzTWhqgb}WQON~2_x zy?9Wlg$xL8dYDLUe9yIQ2be$8bg+F`(?+g6 zM|jT^>v&B+VW3$$xiIN#-q$A4TSUm8QfBv^`N<%&<(gJlo{S4orK>ElPNRMf5;LsU zth!REmzAB5&S2woB2AnGU~t&YjF#?6!PlQfS>eO+f$Sxhug~@COD80lYqe;GXoPIs#wmc(Z%G6NhZp>YBp(zFP&wlwl z)>A5K2X|~2My5!+5JV*QNaRt-5v4c<#jWj19GZCyMBOF0moBHH(&)B^Nz-XA1Qc4w zvf>nXD~$HvjBy}}U61@y%c-7<^+%eCP{$jgtdyh_On+buoF3377lR(zd@w`HE8st; zg}d6+a$)A%dnDT47@JX59cnDGB*}2x&e>7ThC{{%7UQg)m2#S-DiYFYbLFF5eOWS1 z4H(uteteCWFGETR%ZkXb962kst#Z*6uWJis@{dJ#!~~F1)*X`08?L3y;%`i8kU{%r zonoG&Zt%IV7}97bZZs5#iDDFCG8_D0&i89b)*Jk8T{k|)kRBX6dm98RJ~4bEag1_A zk)-awvXQ#m{AcBrisVTzc7Ep}>#)Zmj$vKiE8*wERARXE_tUUSLyMu4$R?LgZHijs z!5TA?F(&*Dg}K${Mq@)IkJ0WS&vpTd1d7Vm*B(+#@#M7I^1}Hep4s?s3(J>B%^x{x zvD#i~TFM;oed-%mhMY@iuj5V_5~5kAW`08G_cVf-xF9+K-5E?8wWTMYh<5F) zx{%rJ(&T-?QlBWE_gpL)mde<#+R9~jZ5tf4Y|M0iKl>-okR}J|W}A3lz>%{pDXe=J zktO@3+Ox^U=VOxBt^W1b<(Rs19PFLh0_u;u9NnZM$-y$g)!EA=81=}mW^2qIBLFSV|w8Ms{giFyea zD#4NaHU#UHbakxX!ZzD@;9z7~7!j?UjYGTkRoIR1Eqbm-b7DW_A1sJrUTD$@bTEYu zM+AQyx^k;qz~qe@25pE=d%VBUNvou5!`{K5%*^V7-~8CSyj6ySusF#HP@|=k9VlD3{OdRU&xxY{> zOph}QGaCC7v_gSdGNJN_6%1QTq zCD7b-t|!jT3Xhy{-|ju2`l2H>8~wv7hFzQ>p-cN`Oy0w7{Mj!;PUA*K5jUKj8PVb! z_@guC5f(lBIy9)}(K>QV^w9mJ+2Kto_pg3k@h`dGe==*|=TQm4$}3x}fWr~aSf)1A zR}Vj}ftCVQ1f8^idfoa6lmP*PoD>h_TG>s7mhGtTM|tVq7BMCEmEoA8cNA#ws5^dW z!q+hD!5X?9(q`M)`9NxyFi86Ur@ih_x<4fC$)H~xZTwftQ6VYL9o-2~ZHzIe`d`1+^<1 zI%5>$fM#z*k>F6VaTvHqM(muPiv_jEJB!XKmchsLPsz0uW71(psugWv>{HH6Jsw#; zH(}$JM{1IZi#gFkoBaz#tXF+Lxatd+T7Bfe9pyjlUF7FC;i@<1*LR3pwj~bIJ~jqV z&Y?C4KX&F!Dvp0`!94GMfhoq)8~>^YMn6X-mveA(1>-u`D~T=BtJO08mJB(CotAcl z-a9hROQ&;NyCsp)IPVT=A~>ju*p_qXf9@Xl^NbnXZxks>u#)MRMD9p!Fg&?78003c z?VzHhljFyepCO$Cu+)9MmSi9a;$O?RtonXza~eQ0XqVPiXfYw> zJr6{O3%s=53~=40sE0aST)_Vsy$wsknNH3CP+g;R_ImZXfHPX_ng+VLf63Ag)^@fE zz&3#SE<0(b%E|HSHYEbBOaK`H1_i+IH9rom3qQXtry)^cTv4C~&|XmzQ`v&&nFZh; zc&wiGMCvaR@}U75rG_GyxVbo{&xrG~(*+s8;TaQm*EAQSxtoeYE*cLRw4){|-9Gf+pW+QI(^(C-!t literal 0 HcmV?d00001 diff --git a/AvH Plan/Base.lproj/LaunchScreen.storyboard b/AvH Plan/Base.lproj/LaunchScreen.storyboard index bfa3612..879ed5e 100644 --- a/AvH Plan/Base.lproj/LaunchScreen.storyboard +++ b/AvH Plan/Base.lproj/LaunchScreen.storyboard @@ -1,7 +1,11 @@ - - + + + + + - + + @@ -11,15 +15,39 @@ - + + + + + + + + + + + + + + + + + + + - + + + + + + + diff --git a/AvH Plan/Base.lproj/Main.storyboard b/AvH Plan/Base.lproj/Main.storyboard index 6ee8f75..6904453 100644 --- a/AvH Plan/Base.lproj/Main.storyboard +++ b/AvH Plan/Base.lproj/Main.storyboard @@ -15,10 +15,10 @@ - + - + @@ -48,15 +48,15 @@ - + - + - + @@ -87,10 +87,10 @@ - + - + @@ -104,7 +104,7 @@ + + + + + + + + diff --git a/AvH Plan/MenuViewController.swift b/AvH Plan/MenuViewController.swift index 0269992..20e2449 100644 --- a/AvH Plan/MenuViewController.swift +++ b/AvH Plan/MenuViewController.swift @@ -38,6 +38,7 @@ class MenuViewController : UIViewController, UICollectionViewDataSource, UIColle collectionView.register(UINib(nibName: "MenuViewCell", bundle: nil), forCellWithReuseIdentifier: identifier) collectionView.dataSource = self collectionView.delegate = self + collectionView.backgroundColor = #colorLiteral(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0) if #available(iOS 10.0, *) { collectionView.refreshControl = refreshControl @@ -45,8 +46,11 @@ class MenuViewController : UIViewController, UICollectionViewDataSource, UIColle collectionView.addSubview(refreshControl) // likely unnecessary } refreshControl.addTarget(self, action: #selector(objDoAsync(_:)), for: .valueChanged) - refreshControl.tintColor = UIColor(red: 0.39, green: 0.71, blue: 0.96, alpha: 1.0) - refreshControl.attributedTitle = NSAttributedString(string: "Fetching the food menu...") + refreshControl.tintColor = #colorLiteral(red: 0.07843137255, green: 0.5568627451, blue: 1, alpha: 1) + refreshControl.attributedTitle = NSAttributedString(string: NSLocalizedString("fetch_menu", comment: "")) + + self.items = self.df.readMenu() + self.collectionView.reloadData() } @objc private func objDoAsync(_ sender: Any) { @@ -57,14 +61,6 @@ class MenuViewController : UIViewController, UICollectionViewDataSource, UIColle } } - override func viewDidLoad() { - super.viewDidLoad() - collectionView.backgroundColor = UIColor(red: 0.8, green: 0.8, blue: 0.8, alpha: 1.0) - - self.items = self.df.readMenu() - self.collectionView.reloadData() - } - func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return self.items.count } @@ -108,7 +104,7 @@ class MenuViewController : UIViewController, UICollectionViewDataSource, UIColle } func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, verticalSpacingForElementsInSectionAtIndex index: Int) -> CGFloat { - return 1 + return 0 } func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetsForSectionAtIndex index: Int) -> UIEdgeInsets { diff --git a/AvH Plan/PersonalPlanViewController.swift b/AvH Plan/PersonalPlanViewController.swift index c81b90d..4297533 100644 --- a/AvH Plan/PersonalPlanViewController.swift +++ b/AvH Plan/PersonalPlanViewController.swift @@ -14,18 +14,18 @@ class PersonalPlanViewController: PlanViewController { let prefs = UserDefaults.standard @IBAction func toolbarButtonCustomise(_ sender: UIBarButtonItem) { - let alert = UIAlertController(title: "Customise personal page", message: nil, preferredStyle: .alert) + let alert = UIAlertController(title: NSLocalizedString("customize_alert_title", comment: ""), message: nil, preferredStyle: .alert) alert.addTextField { (name) in name.text = self.prefs.string(forKey: "username") - name.placeholder = "Name" + name.placeholder = NSLocalizedString("name", comment: "") } alert.addTextField { (classes) in classes.text = self.prefs.string(forKey: "classes") - classes.placeholder = "Classes" + classes.placeholder = NSLocalizedString("classes", comment: "") } alert.addTextField { (courses) in courses.text = self.prefs.string(forKey: "courses") - courses.placeholder = "Courses" + courses.placeholder = NSLocalizedString("courses", comment: "") } alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { [weak alert] (action) -> Void in _ = self.prefs.set(alert!.textFields![0].text, forKey: "username") @@ -42,24 +42,19 @@ class PersonalPlanViewController: PlanViewController { let user = self.prefs.string(forKey: "username") if (user != nil && user != "") { if (user!.last == "x" || user!.last == "s" || user!.last == "z") { - self.toolbar!.topItem!.title = "\(user!)' Plan" + self.toolbar!.topItem!.title = "\(user!)\(NSLocalizedString("nosplan", comment: ""))" } else { - self.toolbar!.topItem!.title = "\(user!)'s Plan" + self.toolbar!.topItem!.title = "\(user!)\(NSLocalizedString("splan", comment: ""))" } } } - override func viewDidLoad() { - super.viewDidLoad() - - } - override func getViewType() -> String { return "personal" } override func getRefreshViewString() -> String { - return "Fetching your plan..." + return NSLocalizedString("fetch_personal", comment: "") } override func getFromDatabase() -> [SubstModel] { @@ -70,14 +65,4 @@ class PersonalPlanViewController: PlanViewController { return toolbar.bottomAnchor } - /* - // MARK: - Navigation - - // In a storyboard-based application, you will often want to do a little preparation before navigation - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { - // Get the new view controller using segue.destination. - // Pass the selected object to the new view controller. - } - */ - } diff --git a/AvH Plan/PlanViewCell.xib b/AvH Plan/PlanViewCell.xib index 3c53d9e..a702aaf 100644 --- a/AvH Plan/PlanViewCell.xib +++ b/AvH Plan/PlanViewCell.xib @@ -58,11 +58,16 @@ + + + + + @@ -74,12 +79,15 @@ + + + diff --git a/AvH Plan/PlanViewController.swift b/AvH Plan/PlanViewController.swift index 5428b60..397d326 100644 --- a/AvH Plan/PlanViewController.swift +++ b/AvH Plan/PlanViewController.swift @@ -13,7 +13,7 @@ class PlanViewController : UIViewController, UICollectionViewDataSource, UIColle let identifier = "plan_cell" var substs = [SubstModel]() - private let refreshControl = UIRefreshControl() + let refreshControl = UIRefreshControl() let df = DataFetcher() let layout = MagazineLayout() var collectionView: UICollectionView @@ -41,6 +41,7 @@ class PlanViewController : UIViewController, UICollectionViewDataSource, UIColle collectionView.register(UINib(nibName: "PlanViewCell", bundle: nil), forCellWithReuseIdentifier: identifier) collectionView.dataSource = self collectionView.delegate = self + collectionView.backgroundColor = #colorLiteral(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0) if #available(iOS 10.0, *) { collectionView.refreshControl = refreshControl @@ -48,8 +49,11 @@ class PlanViewController : UIViewController, UICollectionViewDataSource, UIColle collectionView.addSubview(refreshControl) } refreshControl.addTarget(self, action: #selector(objDoAsync(_:)), for: .valueChanged) - refreshControl.tintColor = UIColor(red: 0.39, green: 0.71, blue: 0.96, alpha: 1.0) + refreshControl.tintColor = #colorLiteral(red: 0.07843137255, green: 0.5568627451, blue: 1, alpha: 1) refreshControl.attributedTitle = NSAttributedString(string: getRefreshViewString()) + + self.substs = getFromDatabase() + self.collectionView.reloadData() } func getViewType() -> String { @@ -61,7 +65,7 @@ class PlanViewController : UIViewController, UICollectionViewDataSource, UIColle } func getRefreshViewString() -> String { - return "Fetching the plan..." + return NSLocalizedString("fetch_plan", comment: "") } @objc private func objDoAsync(_ sender: Any) { @@ -71,14 +75,6 @@ class PlanViewController : UIViewController, UICollectionViewDataSource, UIColle self.refreshControl.endRefreshing() } } - - override func viewDidLoad() { - super.viewDidLoad() - collectionView.backgroundColor = UIColor(red: 0.8, green: 0.8, blue: 0.8, alpha: 1.0) - - self.substs = getFromDatabase() - self.collectionView.reloadData() - } func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return self.substs.count @@ -141,7 +137,7 @@ class PlanViewController : UIViewController, UICollectionViewDataSource, UIColle } func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, verticalSpacingForElementsInSectionAtIndex index: Int) -> CGFloat { - return 1 + return 0 // change this if needed } func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetsForSectionAtIndex index: Int) -> UIEdgeInsets { diff --git a/AvH Plan/de.lproj/LaunchScreen.strings b/AvH Plan/de.lproj/LaunchScreen.strings new file mode 100644 index 0000000..5ea8b1c --- /dev/null +++ b/AvH Plan/de.lproj/LaunchScreen.strings @@ -0,0 +1,12 @@ + +/* Class = "UITabBarItem"; title = "Information"; ObjectID = "OBW-rE-k7z"; */ +"OBW-rE-k7z.title" = "Informationen"; + +/* Class = "UITabBarItem"; title = "Plan"; ObjectID = "keQ-St-8hM"; */ +"keQ-St-8hM.title" = "Plan"; + +/* Class = "UITabBarItem"; title = "Personal"; ObjectID = "spn-vi-J6I"; */ +"spn-vi-J6I.title" = "Persönlich"; + +/* Class = "UITabBarItem"; title = "Menu"; ObjectID = "zev-fl-fMd"; */ +"zev-fl-fMd.title" = "Speiseplan"; diff --git a/AvH Plan/en.lproj/LaunchScreen.strings b/AvH Plan/en.lproj/LaunchScreen.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/AvH Plan/en.lproj/LaunchScreen.strings @@ -0,0 +1 @@ + diff --git a/Podfile b/Podfile index 497fc16..bcd7158 100644 --- a/Podfile +++ b/Podfile @@ -7,7 +7,6 @@ target 'AvH Plan' do # Pods for AvH Plan pod 'SwiftSoup' - pod 'Kanna' pod 'Alamofire' pod 'SQLite.swift' pod 'MagazineLayout'