Showing
10 changed files
with
621 additions
and
12 deletions
... | @@ -19,6 +19,13 @@ | ... | @@ -19,6 +19,13 @@ |
19 | 1EBE97212865EE460080EFF7 /* MFYInboxTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EBE97202865EE460080EFF7 /* MFYInboxTableViewCell.swift */; }; | 19 | 1EBE97212865EE460080EFF7 /* MFYInboxTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EBE97202865EE460080EFF7 /* MFYInboxTableViewCell.swift */; }; |
20 | 1EBF5F072840E13F00B8B17F /* SwiftEventBus in Frameworks */ = {isa = PBXBuildFile; productRef = 1EBF5F062840E13F00B8B17F /* SwiftEventBus */; }; | 20 | 1EBF5F072840E13F00B8B17F /* SwiftEventBus in Frameworks */ = {isa = PBXBuildFile; productRef = 1EBF5F062840E13F00B8B17F /* SwiftEventBus */; }; |
21 | 7630AD9A6242D60846D6750C /* Pods_SwiftWarplyFramework.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C0D5F56DD4E5371A50AD2D87 /* Pods_SwiftWarplyFramework.framework */; }; | 21 | 7630AD9A6242D60846D6750C /* Pods_SwiftWarplyFramework.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C0D5F56DD4E5371A50AD2D87 /* Pods_SwiftWarplyFramework.framework */; }; |
22 | + A079366E2885D07700064122 /* AnalysisChildViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A079366D2885D07700064122 /* AnalysisChildViewController.swift */; }; | ||
23 | + A07936702885D95600064122 /* AnalysisItemViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A079366F2885D95600064122 /* AnalysisItemViewCell.swift */; }; | ||
24 | + A07936732885E67400064122 /* AnalysisItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = A07936722885E67400064122 /* AnalysisItem.swift */; }; | ||
25 | + A07936762885E9CC00064122 /* UIColorExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A07936752885E9CC00064122 /* UIColorExtensions.swift */; }; | ||
26 | + A07936792885EF9400064122 /* RESegmentedControl in Frameworks */ = {isa = PBXBuildFile; productRef = A07936782885EF9400064122 /* RESegmentedControl */; }; | ||
27 | + A079367C2885F2F500064122 /* AnalysisHeaderViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A079367B2885F2F500064122 /* AnalysisHeaderViewCell.swift */; }; | ||
28 | + A079367E2885F60A00064122 /* AnalysisHeaderMessageViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A079367D2885F60A00064122 /* AnalysisHeaderMessageViewCell.swift */; }; | ||
22 | E6A77853282933340045BBA8 /* SwiftWarplyFramework.docc in Sources */ = {isa = PBXBuildFile; fileRef = E6A77852282933340045BBA8 /* SwiftWarplyFramework.docc */; }; | 29 | E6A77853282933340045BBA8 /* SwiftWarplyFramework.docc in Sources */ = {isa = PBXBuildFile; fileRef = E6A77852282933340045BBA8 /* SwiftWarplyFramework.docc */; }; |
23 | E6A77854282933340045BBA8 /* SwiftWarplyFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = E6A77851282933340045BBA8 /* SwiftWarplyFramework.h */; settings = {ATTRIBUTES = (Public, ); }; }; | 30 | E6A77854282933340045BBA8 /* SwiftWarplyFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = E6A77851282933340045BBA8 /* SwiftWarplyFramework.h */; settings = {ATTRIBUTES = (Public, ); }; }; |
24 | E6A778DF282933E60045BBA8 /* WarplyReactMethods.m in Sources */ = {isa = PBXBuildFile; fileRef = E6A7785B282933E40045BBA8 /* WarplyReactMethods.m */; }; | 31 | E6A778DF282933E60045BBA8 /* WarplyReactMethods.m in Sources */ = {isa = PBXBuildFile; fileRef = E6A7785B282933E40045BBA8 /* WarplyReactMethods.m */; }; |
... | @@ -157,6 +164,12 @@ | ... | @@ -157,6 +164,12 @@ |
157 | 1EB5F4C728536FD60016F36E /* StepsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StepsViewController.swift; sourceTree = "<group>"; }; | 164 | 1EB5F4C728536FD60016F36E /* StepsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StepsViewController.swift; sourceTree = "<group>"; }; |
158 | 1EB5F4C9285370C90016F36E /* LoyaltyAnalysisViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoyaltyAnalysisViewController.swift; sourceTree = "<group>"; }; | 165 | 1EB5F4C9285370C90016F36E /* LoyaltyAnalysisViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoyaltyAnalysisViewController.swift; sourceTree = "<group>"; }; |
159 | 1EBE97202865EE460080EFF7 /* MFYInboxTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MFYInboxTableViewCell.swift; sourceTree = "<group>"; }; | 166 | 1EBE97202865EE460080EFF7 /* MFYInboxTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MFYInboxTableViewCell.swift; sourceTree = "<group>"; }; |
167 | + A079366D2885D07700064122 /* AnalysisChildViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalysisChildViewController.swift; sourceTree = "<group>"; }; | ||
168 | + A079366F2885D95600064122 /* AnalysisItemViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalysisItemViewCell.swift; sourceTree = "<group>"; }; | ||
169 | + A07936722885E67400064122 /* AnalysisItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalysisItem.swift; sourceTree = "<group>"; }; | ||
170 | + A07936752885E9CC00064122 /* UIColorExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIColorExtensions.swift; sourceTree = "<group>"; }; | ||
171 | + A079367B2885F2F500064122 /* AnalysisHeaderViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalysisHeaderViewCell.swift; sourceTree = "<group>"; }; | ||
172 | + A079367D2885F60A00064122 /* AnalysisHeaderMessageViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalysisHeaderMessageViewCell.swift; sourceTree = "<group>"; }; | ||
160 | A9B7BE01A4E812DE49866EF8 /* Pods-SwiftWarplyFramework.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwiftWarplyFramework.debug.xcconfig"; path = "Target Support Files/Pods-SwiftWarplyFramework/Pods-SwiftWarplyFramework.debug.xcconfig"; sourceTree = "<group>"; }; | 173 | A9B7BE01A4E812DE49866EF8 /* Pods-SwiftWarplyFramework.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwiftWarplyFramework.debug.xcconfig"; path = "Target Support Files/Pods-SwiftWarplyFramework/Pods-SwiftWarplyFramework.debug.xcconfig"; sourceTree = "<group>"; }; |
161 | B9EB8A451EF0C5AD75094EEE /* Pods-SwiftWarplyFramework.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwiftWarplyFramework.release.xcconfig"; path = "Target Support Files/Pods-SwiftWarplyFramework/Pods-SwiftWarplyFramework.release.xcconfig"; sourceTree = "<group>"; }; | 174 | B9EB8A451EF0C5AD75094EEE /* Pods-SwiftWarplyFramework.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwiftWarplyFramework.release.xcconfig"; path = "Target Support Files/Pods-SwiftWarplyFramework/Pods-SwiftWarplyFramework.release.xcconfig"; sourceTree = "<group>"; }; |
162 | C0D5F56DD4E5371A50AD2D87 /* Pods_SwiftWarplyFramework.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwiftWarplyFramework.framework; sourceTree = BUILT_PRODUCTS_DIR; }; | 175 | C0D5F56DD4E5371A50AD2D87 /* Pods_SwiftWarplyFramework.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwiftWarplyFramework.framework; sourceTree = BUILT_PRODUCTS_DIR; }; |
... | @@ -296,6 +309,7 @@ | ... | @@ -296,6 +309,7 @@ |
296 | files = ( | 309 | files = ( |
297 | 1E2966EA2837A21D00F83FAC /* RSBarcodes_Swift in Frameworks */, | 310 | 1E2966EA2837A21D00F83FAC /* RSBarcodes_Swift in Frameworks */, |
298 | 7630AD9A6242D60846D6750C /* Pods_SwiftWarplyFramework.framework in Frameworks */, | 311 | 7630AD9A6242D60846D6750C /* Pods_SwiftWarplyFramework.framework in Frameworks */, |
312 | + A07936792885EF9400064122 /* RESegmentedControl in Frameworks */, | ||
299 | 1EBF5F072840E13F00B8B17F /* SwiftEventBus in Frameworks */, | 313 | 1EBF5F072840E13F00B8B17F /* SwiftEventBus in Frameworks */, |
300 | ); | 314 | ); |
301 | runOnlyForDeploymentPostprocessing = 0; | 315 | runOnlyForDeploymentPostprocessing = 0; |
... | @@ -311,6 +325,42 @@ | ... | @@ -311,6 +325,42 @@ |
311 | name = Frameworks; | 325 | name = Frameworks; |
312 | sourceTree = "<group>"; | 326 | sourceTree = "<group>"; |
313 | }; | 327 | }; |
328 | + A079366A2885CDDC00064122 /* analysis */ = { | ||
329 | + isa = PBXGroup; | ||
330 | + children = ( | ||
331 | + A079367A2885F2D100064122 /* cells */, | ||
332 | + 1EB5F4C9285370C90016F36E /* LoyaltyAnalysisViewController.swift */, | ||
333 | + A079366D2885D07700064122 /* AnalysisChildViewController.swift */, | ||
334 | + ); | ||
335 | + name = analysis; | ||
336 | + sourceTree = "<group>"; | ||
337 | + }; | ||
338 | + A07936712885E65C00064122 /* models */ = { | ||
339 | + isa = PBXGroup; | ||
340 | + children = ( | ||
341 | + A07936722885E67400064122 /* AnalysisItem.swift */, | ||
342 | + ); | ||
343 | + name = models; | ||
344 | + sourceTree = "<group>"; | ||
345 | + }; | ||
346 | + A07936742885E96A00064122 /* utilities */ = { | ||
347 | + isa = PBXGroup; | ||
348 | + children = ( | ||
349 | + A07936752885E9CC00064122 /* UIColorExtensions.swift */, | ||
350 | + ); | ||
351 | + name = utilities; | ||
352 | + sourceTree = "<group>"; | ||
353 | + }; | ||
354 | + A079367A2885F2D100064122 /* cells */ = { | ||
355 | + isa = PBXGroup; | ||
356 | + children = ( | ||
357 | + A079366F2885D95600064122 /* AnalysisItemViewCell.swift */, | ||
358 | + A079367B2885F2F500064122 /* AnalysisHeaderViewCell.swift */, | ||
359 | + A079367D2885F60A00064122 /* AnalysisHeaderMessageViewCell.swift */, | ||
360 | + ); | ||
361 | + name = cells; | ||
362 | + sourceTree = "<group>"; | ||
363 | + }; | ||
314 | C049E0423E2B72D796B777A3 /* Pods */ = { | 364 | C049E0423E2B72D796B777A3 /* Pods */ = { |
315 | isa = PBXGroup; | 365 | isa = PBXGroup; |
316 | children = ( | 366 | children = ( |
... | @@ -341,6 +391,9 @@ | ... | @@ -341,6 +391,9 @@ |
341 | E6A77850282933340045BBA8 /* SwiftWarplyFramework */ = { | 391 | E6A77850282933340045BBA8 /* SwiftWarplyFramework */ = { |
342 | isa = PBXGroup; | 392 | isa = PBXGroup; |
343 | children = ( | 393 | children = ( |
394 | + A07936712885E65C00064122 /* models */, | ||
395 | + A079366A2885CDDC00064122 /* analysis */, | ||
396 | + A07936742885E96A00064122 /* utilities */, | ||
344 | E6A7785E282933E40045BBA8 /* CouponsViewController.swift */, | 397 | E6A7785E282933E40045BBA8 /* CouponsViewController.swift */, |
345 | 1EA1AF092835346A008998AA /* CouponsTableViewCell.swift */, | 398 | 1EA1AF092835346A008998AA /* CouponsTableViewCell.swift */, |
346 | E6A7785D282933E40045BBA8 /* CouponViewController.swift */, | 399 | E6A7785D282933E40045BBA8 /* CouponViewController.swift */, |
... | @@ -359,7 +412,6 @@ | ... | @@ -359,7 +412,6 @@ |
359 | 1EB236AA28816B680063777A /* ShareViewController.swift */, | 412 | 1EB236AA28816B680063777A /* ShareViewController.swift */, |
360 | 1EB236AC28816C560063777A /* NumberPopupViewController.swift */, | 413 | 1EB236AC28816C560063777A /* NumberPopupViewController.swift */, |
361 | 1EB236AE28816CAB0063777A /* NumbersTableViewCell.swift */, | 414 | 1EB236AE28816CAB0063777A /* NumbersTableViewCell.swift */, |
362 | - 1EB5F4C9285370C90016F36E /* LoyaltyAnalysisViewController.swift */, | ||
363 | 1EB5F4C728536FD60016F36E /* StepsViewController.swift */, | 415 | 1EB5F4C728536FD60016F36E /* StepsViewController.swift */, |
364 | E6A77860282933E40045BBA8 /* MyApi.h */, | 416 | E6A77860282933E40045BBA8 /* MyApi.h */, |
365 | E6A778DC282933E60045BBA8 /* MyApi.m */, | 417 | E6A778DC282933E60045BBA8 /* MyApi.m */, |
... | @@ -669,6 +721,7 @@ | ... | @@ -669,6 +721,7 @@ |
669 | packageProductDependencies = ( | 721 | packageProductDependencies = ( |
670 | 1E2966E92837A21D00F83FAC /* RSBarcodes_Swift */, | 722 | 1E2966E92837A21D00F83FAC /* RSBarcodes_Swift */, |
671 | 1EBF5F062840E13F00B8B17F /* SwiftEventBus */, | 723 | 1EBF5F062840E13F00B8B17F /* SwiftEventBus */, |
724 | + A07936782885EF9400064122 /* RESegmentedControl */, | ||
672 | ); | 725 | ); |
673 | productName = SwiftWarplyFramework; | 726 | productName = SwiftWarplyFramework; |
674 | productReference = E6A7784E282933340045BBA8 /* SwiftWarplyFramework.framework */; | 727 | productReference = E6A7784E282933340045BBA8 /* SwiftWarplyFramework.framework */; |
... | @@ -701,6 +754,7 @@ | ... | @@ -701,6 +754,7 @@ |
701 | packageReferences = ( | 754 | packageReferences = ( |
702 | 1E2966E82837A21D00F83FAC /* XCRemoteSwiftPackageReference "RSBarcodes_Swift" */, | 755 | 1E2966E82837A21D00F83FAC /* XCRemoteSwiftPackageReference "RSBarcodes_Swift" */, |
703 | 1EBF5F052840E13F00B8B17F /* XCRemoteSwiftPackageReference "SwiftEventBus" */, | 756 | 1EBF5F052840E13F00B8B17F /* XCRemoteSwiftPackageReference "SwiftEventBus" */, |
757 | + A07936772885EF9400064122 /* XCRemoteSwiftPackageReference "RESegmentedControl" */, | ||
704 | ); | 758 | ); |
705 | productRefGroup = E6A7784F282933340045BBA8 /* Products */; | 759 | productRefGroup = E6A7784F282933340045BBA8 /* Products */; |
706 | projectDirPath = ""; | 760 | projectDirPath = ""; |
... | @@ -787,6 +841,8 @@ | ... | @@ -787,6 +841,8 @@ |
787 | E6A77904282933E60045BBA8 /* WLEvent.m in Sources */, | 841 | E6A77904282933E60045BBA8 /* WLEvent.m in Sources */, |
788 | E6A77927282933E70045BBA8 /* UIRefreshControl+AFNetworking.m in Sources */, | 842 | E6A77927282933E70045BBA8 /* UIRefreshControl+AFNetworking.m in Sources */, |
789 | E6A77955282933E70045BBA8 /* ViewControllerExtensions.swift in Sources */, | 843 | E6A77955282933E70045BBA8 /* ViewControllerExtensions.swift in Sources */, |
844 | + A07936762885E9CC00064122 /* UIColorExtensions.swift in Sources */, | ||
845 | + A079367C2885F2F500064122 /* AnalysisHeaderViewCell.swift in Sources */, | ||
790 | E6A7795A28293D390045BBA8 /* swiftApi.swift in Sources */, | 846 | E6A7795A28293D390045BBA8 /* swiftApi.swift in Sources */, |
791 | E6A77935282933E70045BBA8 /* UIWebView+AFNetworking.m in Sources */, | 847 | E6A77935282933E70045BBA8 /* UIWebView+AFNetworking.m in Sources */, |
792 | E6A77925282933E70045BBA8 /* UIProgressView+AFNetworking.m in Sources */, | 848 | E6A77925282933E70045BBA8 /* UIProgressView+AFNetworking.m in Sources */, |
... | @@ -796,6 +852,7 @@ | ... | @@ -796,6 +852,7 @@ |
796 | E6A77917282933E60045BBA8 /* UIViewController+WLAdditions.m in Sources */, | 852 | E6A77917282933E60045BBA8 /* UIViewController+WLAdditions.m in Sources */, |
797 | 1EA2BB792865BFE8003F2AB0 /* InboxTableViewCell.swift in Sources */, | 853 | 1EA2BB792865BFE8003F2AB0 /* InboxTableViewCell.swift in Sources */, |
798 | E6A77943282933E70045BBA8 /* AFNetworkReachabilityManager.m in Sources */, | 854 | E6A77943282933E70045BBA8 /* AFNetworkReachabilityManager.m in Sources */, |
855 | + A07936702885D95600064122 /* AnalysisItemViewCell.swift in Sources */, | ||
799 | E6A77956282933E70045BBA8 /* GiftsViewController.swift in Sources */, | 856 | E6A77956282933E70045BBA8 /* GiftsViewController.swift in Sources */, |
800 | E6A778F1282933E60045BBA8 /* WLNativeAdTableViewCell.m in Sources */, | 857 | E6A778F1282933E60045BBA8 /* WLNativeAdTableViewCell.m in Sources */, |
801 | E6A77853282933340045BBA8 /* SwiftWarplyFramework.docc in Sources */, | 858 | E6A77853282933340045BBA8 /* SwiftWarplyFramework.docc in Sources */, |
... | @@ -806,6 +863,7 @@ | ... | @@ -806,6 +863,7 @@ |
806 | 1EBE97212865EE460080EFF7 /* MFYInboxTableViewCell.swift in Sources */, | 863 | 1EBE97212865EE460080EFF7 /* MFYInboxTableViewCell.swift in Sources */, |
807 | E6A778FD282933E60045BBA8 /* WLInboxItem.m in Sources */, | 864 | E6A778FD282933E60045BBA8 /* WLInboxItem.m in Sources */, |
808 | E6A778EE282933E60045BBA8 /* WLNativeAdsTableMode.m in Sources */, | 865 | E6A778EE282933E60045BBA8 /* WLNativeAdsTableMode.m in Sources */, |
866 | + A07936732885E67400064122 /* AnalysisItem.swift in Sources */, | ||
809 | E6A778DF282933E60045BBA8 /* WarplyReactMethods.m in Sources */, | 867 | E6A778DF282933E60045BBA8 /* WarplyReactMethods.m in Sources */, |
810 | E6A77941282933E70045BBA8 /* AFURLRequestSerialization.m in Sources */, | 868 | E6A77941282933E70045BBA8 /* AFURLRequestSerialization.m in Sources */, |
811 | E6A77915282933E60045BBA8 /* WLUtils.m in Sources */, | 869 | E6A77915282933E60045BBA8 /* WLUtils.m in Sources */, |
... | @@ -818,8 +876,10 @@ | ... | @@ -818,8 +876,10 @@ |
818 | E6A7794A282933E70045BBA8 /* FMDatabaseAdditions.m in Sources */, | 876 | E6A7794A282933E70045BBA8 /* FMDatabaseAdditions.m in Sources */, |
819 | E6A77903282933E60045BBA8 /* WLAPSItem.m in Sources */, | 877 | E6A77903282933E60045BBA8 /* WLAPSItem.m in Sources */, |
820 | E6A7790B282933E60045BBA8 /* WLPushManager.m in Sources */, | 878 | E6A7790B282933E60045BBA8 /* WLPushManager.m in Sources */, |
879 | + A079366E2885D07700064122 /* AnalysisChildViewController.swift in Sources */, | ||
821 | E6A77950282933E70045BBA8 /* FMResultSet.m in Sources */, | 880 | E6A77950282933E70045BBA8 /* FMResultSet.m in Sources */, |
822 | E6A77936282933E70045BBA8 /* AFAutoPurgingImageCache.m in Sources */, | 881 | E6A77936282933E70045BBA8 /* AFAutoPurgingImageCache.m in Sources */, |
882 | + A079367E2885F60A00064122 /* AnalysisHeaderMessageViewCell.swift in Sources */, | ||
823 | E6A778FF282933E60045BBA8 /* WLBeacon.m in Sources */, | 883 | E6A778FF282933E60045BBA8 /* WLBeacon.m in Sources */, |
824 | E6A7791A282933E60045BBA8 /* WLAPPActionHandler.m in Sources */, | 884 | E6A7791A282933E60045BBA8 /* WLAPPActionHandler.m in Sources */, |
825 | E6A778E1282933E60045BBA8 /* CouponViewController.swift in Sources */, | 885 | E6A778E1282933E60045BBA8 /* CouponViewController.swift in Sources */, |
... | @@ -1069,6 +1129,14 @@ | ... | @@ -1069,6 +1129,14 @@ |
1069 | minimumVersion = 5.0.0; | 1129 | minimumVersion = 5.0.0; |
1070 | }; | 1130 | }; |
1071 | }; | 1131 | }; |
1132 | + A07936772885EF9400064122 /* XCRemoteSwiftPackageReference "RESegmentedControl" */ = { | ||
1133 | + isa = XCRemoteSwiftPackageReference; | ||
1134 | + repositoryURL = "https://github.com/sh-khashimov/RESegmentedControl"; | ||
1135 | + requirement = { | ||
1136 | + kind = upToNextMajorVersion; | ||
1137 | + minimumVersion = 0.5.1; | ||
1138 | + }; | ||
1139 | + }; | ||
1072 | /* End XCRemoteSwiftPackageReference section */ | 1140 | /* End XCRemoteSwiftPackageReference section */ |
1073 | 1141 | ||
1074 | /* Begin XCSwiftPackageProductDependency section */ | 1142 | /* Begin XCSwiftPackageProductDependency section */ |
... | @@ -1082,6 +1150,11 @@ | ... | @@ -1082,6 +1150,11 @@ |
1082 | package = 1EBF5F052840E13F00B8B17F /* XCRemoteSwiftPackageReference "SwiftEventBus" */; | 1150 | package = 1EBF5F052840E13F00B8B17F /* XCRemoteSwiftPackageReference "SwiftEventBus" */; |
1083 | productName = SwiftEventBus; | 1151 | productName = SwiftEventBus; |
1084 | }; | 1152 | }; |
1153 | + A07936782885EF9400064122 /* RESegmentedControl */ = { | ||
1154 | + isa = XCSwiftPackageProductDependency; | ||
1155 | + package = A07936772885EF9400064122 /* XCRemoteSwiftPackageReference "RESegmentedControl" */; | ||
1156 | + productName = RESegmentedControl; | ||
1157 | + }; | ||
1085 | /* End XCSwiftPackageProductDependency section */ | 1158 | /* End XCSwiftPackageProductDependency section */ |
1086 | }; | 1159 | }; |
1087 | rootObject = E6A77845282933340045BBA8 /* Project object */; | 1160 | rootObject = E6A77845282933340045BBA8 /* Project object */; | ... | ... |
1 | { | 1 | { |
2 | "pins" : [ | 2 | "pins" : [ |
3 | { | 3 | { |
4 | + "identity" : "resegmentedcontrol", | ||
5 | + "kind" : "remoteSourceControl", | ||
6 | + "location" : "https://github.com/sh-khashimov/RESegmentedControl", | ||
7 | + "state" : { | ||
8 | + "revision" : "09d8cbd0da906c06d30fb057ab9902dc9d0e26b9", | ||
9 | + "version" : "0.5.1" | ||
10 | + } | ||
11 | + }, | ||
12 | + { | ||
4 | "identity" : "rsbarcodes_swift", | 13 | "identity" : "rsbarcodes_swift", |
5 | "kind" : "remoteSourceControl", | 14 | "kind" : "remoteSourceControl", |
6 | "location" : "https://github.com/yeahdongcn/RSBarcodes_Swift", | 15 | "location" : "https://github.com/yeahdongcn/RSBarcodes_Swift", | ... | ... |
1 | +// | ||
2 | +// AnalysisChildViewController.swift | ||
3 | +// SwiftWarplyFramework | ||
4 | +// | ||
5 | +// Created by Manos Chorianopoulos on 18/7/22. | ||
6 | +// | ||
7 | + | ||
8 | +import UIKit | ||
9 | + | ||
10 | +class AnalysisChildViewController: UITableViewController { | ||
11 | + | ||
12 | + public var index: Int = -1 | ||
13 | + var items: Array<AnalysisItem> = Array() | ||
14 | + | ||
15 | + // TODO: remove this when configuring model | ||
16 | + let hasMessage = true | ||
17 | + | ||
18 | + // lifecycle | ||
19 | + override func viewDidLoad() { | ||
20 | + | ||
21 | + super.viewDidLoad() | ||
22 | + | ||
23 | + self.refreshControl = UIRefreshControl() | ||
24 | + self.refreshControl?.addTarget(self, action: #selector(handleRefresh(_:)), for: .valueChanged) | ||
25 | + | ||
26 | + loadData() | ||
27 | + } | ||
28 | + | ||
29 | + // mvp | ||
30 | + private func loadData() { | ||
31 | + | ||
32 | + self.items = Array() | ||
33 | + } | ||
34 | + | ||
35 | + private func showLoading() { | ||
36 | + } | ||
37 | + | ||
38 | + private func showError() { | ||
39 | + } | ||
40 | + | ||
41 | + private func showContent() { | ||
42 | + } | ||
43 | + | ||
44 | + // private | ||
45 | + @objc func handleRefresh(_ refreshControl: UIRefreshControl) { | ||
46 | + | ||
47 | + loadData() | ||
48 | + } | ||
49 | + | ||
50 | + // MARK: - Table view data source | ||
51 | + override func numberOfSections(in tableView: UITableView) -> Int { | ||
52 | + return 2 | ||
53 | + } | ||
54 | + | ||
55 | + override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { | ||
56 | + if (section == 0) { | ||
57 | + return 1; | ||
58 | + } | ||
59 | + | ||
60 | + return items.count | ||
61 | + } | ||
62 | + | ||
63 | + override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { | ||
64 | + if (indexPath.section == 0) { | ||
65 | + return hasMessage ? 380.0 : 280 | ||
66 | + } | ||
67 | + | ||
68 | + return 160.0 | ||
69 | + } | ||
70 | + | ||
71 | + override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { | ||
72 | + | ||
73 | + // header | ||
74 | + if (indexPath.section == 0) { | ||
75 | + if (hasMessage) { | ||
76 | + return tableView.dequeueReusableCell(withIdentifier: "AnalysisHeaderMessageViewCell", for: indexPath) as! AnalysisHeaderMessageViewCell | ||
77 | + } | ||
78 | + | ||
79 | + return tableView.dequeueReusableCell(withIdentifier: "AnalysisHeaderViewCell", for: indexPath) as! AnalysisHeaderViewCell | ||
80 | + } | ||
81 | + | ||
82 | + let cell = tableView.dequeueReusableCell(withIdentifier: "AnalysisItemViewCell", for: indexPath) as! AnalysisItemViewCell | ||
83 | + cell.configureCell(item: items[indexPath.row]) | ||
84 | + | ||
85 | + return cell | ||
86 | + } | ||
87 | +} |
1 | +// | ||
2 | +// AnalysisHeaderMessageViewCell.swift | ||
3 | +// SwiftWarplyFramework | ||
4 | +// | ||
5 | +// Created by Manos Chorianopoulos on 18/7/22. | ||
6 | +// | ||
7 | + | ||
8 | +import UIKit | ||
9 | + | ||
10 | +class AnalysisHeaderMessageViewCell: UITableViewCell { | ||
11 | + | ||
12 | + // attributes | ||
13 | + @IBOutlet weak var itemImage: UIImageView! | ||
14 | + @IBOutlet weak var messageLabel: UILabel! | ||
15 | + @IBOutlet weak var titleLabel: UILabel! | ||
16 | + | ||
17 | + // lifecycle | ||
18 | + override func awakeFromNib() { | ||
19 | + super.awakeFromNib() | ||
20 | + | ||
21 | + // title | ||
22 | + titleLabel.textColor = UIColor(rgb: 0x435563) | ||
23 | + titleLabel.text = "Αναλυτικά:" | ||
24 | + | ||
25 | + // message | ||
26 | + messageLabel.textColor = UIColor(rgb: 0x435563) | ||
27 | + messageLabel.layer.borderWidth = 1.0 | ||
28 | + messageLabel.layer.borderColor = UIColor(rgb: 0xB2CE69).cgColor | ||
29 | + messageLabel.text = "Μέχρι τώρα έχεις κερδίσει 20,00€ σε προσφορές από 3 κουπόνια!" | ||
30 | + } | ||
31 | +} | ||
32 | + | ||
33 | +extension AnalysisHeaderMessageViewCell { | ||
34 | + func configureCell(item: AnalysisItem) { | ||
35 | + | ||
36 | + // TODO: TO BE IMPLEMENTED | ||
37 | + } | ||
38 | +} |
1 | +// | ||
2 | +// AnalysisHeaderViewCell.swift | ||
3 | +// SwiftWarplyFramework | ||
4 | +// | ||
5 | +// Created by Manos Chorianopoulos on 18/7/22. | ||
6 | +// | ||
7 | + | ||
8 | +import UIKit | ||
9 | + | ||
10 | +class AnalysisHeaderViewCell: UITableViewCell { | ||
11 | + | ||
12 | + // attributes | ||
13 | + @IBOutlet weak var itemImage: UIImageView! | ||
14 | + @IBOutlet weak var titleLabel: UILabel! | ||
15 | + | ||
16 | + // lifecycle | ||
17 | + override func awakeFromNib() { | ||
18 | + super.awakeFromNib() | ||
19 | + | ||
20 | + // title | ||
21 | + titleLabel.textColor = UIColor(rgb: 0x435563) | ||
22 | + titleLabel.text = "Αναλυτικά:" | ||
23 | + } | ||
24 | +} | ||
25 | + | ||
26 | +extension AnalysisHeaderViewCell { | ||
27 | + func configureCell(item: AnalysisItem) { | ||
28 | + | ||
29 | + // TODO: TO BE IMPLEMENTED | ||
30 | + } | ||
31 | +} |
1 | +// | ||
2 | +// AnalysisItem.swift | ||
3 | +// SwiftWarplyFramework | ||
4 | +// | ||
5 | +// Created by Manos Chorianopoulos on 18/7/22. | ||
6 | +// | ||
7 | + | ||
8 | +import UIKit | ||
9 | + | ||
10 | +public class AnalysisItem: Codable { | ||
11 | + | ||
12 | + // attributes | ||
13 | + public var date: Date | ||
14 | + public var image_url: String? | ||
15 | + public var title: String? | ||
16 | + public let subtitle: String? | ||
17 | + public var price: Float | ||
18 | + | ||
19 | + // initialization | ||
20 | + public init() { | ||
21 | + self.date = Date() | ||
22 | + self.image_url = "" | ||
23 | + self.title = "" | ||
24 | + self.subtitle = "" | ||
25 | + self.price = 4.0 | ||
26 | + } | ||
27 | +} |
1 | +// | ||
2 | +// AnalysisItemViewCell.swift | ||
3 | +// SwiftWarplyFramework | ||
4 | +// | ||
5 | +// Created by Manos Chorianopoulos on 18/7/22. | ||
6 | +// | ||
7 | + | ||
8 | +import UIKit | ||
9 | + | ||
10 | +class AnalysisItemViewCell: UITableViewCell { | ||
11 | + | ||
12 | + @IBOutlet weak var dateLabel: UILabel! | ||
13 | + @IBOutlet weak var itemImage: UIImageView! | ||
14 | + @IBOutlet weak var titleLabel: UILabel! | ||
15 | + @IBOutlet weak var priceLabel: UILabel! | ||
16 | + @IBOutlet weak var subtitleLabel: UILabel! | ||
17 | + | ||
18 | + // lifecycle | ||
19 | + override func awakeFromNib() { | ||
20 | + super.awakeFromNib() | ||
21 | + | ||
22 | + // date | ||
23 | + dateLabel.textColor = UIColor(rgb: 0x435563) | ||
24 | + | ||
25 | + // title | ||
26 | + titleLabel.textColor = UIColor(rgb: 0x435563) | ||
27 | + | ||
28 | + // price | ||
29 | + priceLabel.textColor = UIColor(rgb: 0x435563) | ||
30 | + | ||
31 | + // subtitle | ||
32 | + subtitleLabel.textColor = UIColor(rgb: 0x8B97A3) | ||
33 | + } | ||
34 | +} | ||
35 | + | ||
36 | +extension AnalysisItemViewCell { | ||
37 | + func configureCell(item: AnalysisItem) { | ||
38 | + | ||
39 | + // TODO: this is not optimal. we need a static date formatter. we cannot instantiate a new object each time we render a new item. | ||
40 | + let dateFormatter = DateFormatter() | ||
41 | + dateFormatter.dateFormat = "dd-MM-yyyy" | ||
42 | + | ||
43 | + dateLabel.text = dateFormatter.string(from: item.date) | ||
44 | + //itemImage.image = | ||
45 | + titleLabel.text = item.title | ||
46 | + priceLabel.text = String(format: "%.2f€", item.price) | ||
47 | + subtitleLabel.text = item.subtitle | ||
48 | + | ||
49 | + } | ||
50 | +} |
... | @@ -2,30 +2,102 @@ | ... | @@ -2,30 +2,102 @@ |
2 | // LoyaltyAnalysisViewController.swift | 2 | // LoyaltyAnalysisViewController.swift |
3 | // SwiftWarplyFramework | 3 | // SwiftWarplyFramework |
4 | // | 4 | // |
5 | -// Created by Manos Chorianopoulos on 10/6/22. | 5 | +// Created by Manos Chorianopoulos on 18/7/22. |
6 | // | 6 | // |
7 | 7 | ||
8 | import UIKit | 8 | import UIKit |
9 | +import RESegmentedControl | ||
9 | 10 | ||
10 | @objc public class LoyaltyAnalysisViewController: UIViewController { | 11 | @objc public class LoyaltyAnalysisViewController: UIViewController { |
11 | 12 | ||
13 | + @IBOutlet weak var tabView: RESegmentedControl! | ||
14 | + @IBOutlet weak var contentView: UIView! | ||
15 | + var pageController: UIPageViewController! | ||
16 | + | ||
12 | public override func viewDidLoad() { | 17 | public override func viewDidLoad() { |
13 | super.viewDidLoad() | 18 | super.viewDidLoad() |
14 | 19 | ||
15 | self.hidesBottomBarWhenPushed = true | 20 | self.hidesBottomBarWhenPushed = true |
21 | + | ||
22 | + // setup view | ||
23 | + setBackButton() | ||
24 | + setNavigationTitle("Analysis") | ||
25 | + | ||
26 | + // tab | ||
27 | + let titles = ["Εξαργυρωμένα", "Μοιρασμένα δώρα"] | ||
28 | + var segmentItems: [SegmentModel] { | ||
29 | + return titles.map({ SegmentModel(title: $0) }) | ||
30 | + } | ||
16 | 31 | ||
17 | - // Do any additional setup after loading the view. | 32 | + let preset = BootstapPreset(backgroundColor: .white, selectedBackgroundColor: .white, border) |
33 | + tabView.configure(segmentItems: segmentItems, preset: preset) | ||
34 | + | ||
35 | + // pages | ||
36 | + pageController = UIPageViewController(transitionStyle:.scroll, navigationOrientation:.horizontal) | ||
37 | + pageController.dataSource = self; | ||
38 | + pageController.delegate = self; | ||
39 | + | ||
40 | + pageController.view.frame = contentView.bounds; | ||
41 | + addChild(pageController) | ||
42 | + contentView.addSubview(pageController.view) | ||
43 | + pageController .didMove(toParent: self) | ||
18 | } | 44 | } |
19 | 45 | ||
46 | + //////////////////////////////////////////////////////////////////////////////// | ||
47 | + private func viewControllerAt(_ index:Int) -> AnalysisChildViewController? | ||
48 | + { | ||
49 | + let analysisVC = AnalysisChildViewController() | ||
50 | + analysisVC.index = index; | ||
51 | + | ||
52 | + return analysisVC; | ||
53 | + } | ||
20 | 54 | ||
21 | - /* | 55 | +} |
22 | - // MARK: - Navigation | ||
23 | 56 | ||
24 | - // In a storyboard-based application, you will often want to do a little preparation before navigation | 57 | +// MARK: - PageViewController |
25 | - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { | 58 | +extension LoyaltyAnalysisViewController: UIPageViewControllerDataSource, UIPageViewControllerDelegate { |
26 | - // Get the new view controller using segue.destination. | 59 | + |
27 | - // Pass the selected object to the new view controller. | 60 | + public func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? { |
61 | + | ||
62 | + if let analysisVC = viewController as? AnalysisChildViewController { | ||
63 | + var index = analysisVC.index | ||
64 | + if (index == 1) { | ||
65 | + return nil; | ||
66 | + } | ||
67 | + | ||
68 | + index += 1; | ||
69 | + return viewControllerAt(index); | ||
70 | + } | ||
71 | + | ||
72 | + return nil; | ||
73 | + } | ||
74 | + | ||
75 | + public func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? { | ||
76 | + | ||
77 | + if let analysisVC = viewController as? AnalysisChildViewController { | ||
78 | + var index = analysisVC.index | ||
79 | + if (index == 0) { | ||
80 | + return nil; | ||
81 | + } | ||
82 | + | ||
83 | + index -= 1; | ||
84 | + return viewControllerAt(index); | ||
85 | + } | ||
86 | + | ||
87 | + return nil; | ||
88 | + } | ||
89 | + | ||
90 | + | ||
91 | + public func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) { | ||
92 | + | ||
93 | + if (!completed) { | ||
94 | + return; | ||
95 | + } | ||
96 | + | ||
97 | + | ||
98 | + if let childVCs = pageViewController.viewControllers as? [AnalysisChildViewController] { | ||
99 | + let currentIndex = childVCs[0].index | ||
100 | + tabView.selectedSegmentIndex = currentIndex | ||
101 | + } | ||
28 | } | 102 | } |
29 | - */ | ||
30 | - | ||
31 | } | 103 | } | ... | ... |
... | @@ -403,13 +403,215 @@ | ... | @@ -403,13 +403,215 @@ |
403 | <view key="view" contentMode="scaleToFill" id="zWp-Y3-xCW"> | 403 | <view key="view" contentMode="scaleToFill" id="zWp-Y3-xCW"> |
404 | <rect key="frame" x="0.0" y="0.0" width="414" height="896"/> | 404 | <rect key="frame" x="0.0" y="0.0" width="414" height="896"/> |
405 | <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> | 405 | <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> |
406 | + <subviews> | ||
407 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Z7V-En-7Tl" customClass="RESegmentedControl" customModule="RESegmentedControl"> | ||
408 | + <rect key="frame" x="0.0" y="44" width="414" height="50"/> | ||
409 | + <color key="backgroundColor" systemColor="systemBackgroundColor"/> | ||
410 | + <constraints> | ||
411 | + <constraint firstAttribute="height" constant="50" id="W4o-5O-kfL"/> | ||
412 | + </constraints> | ||
413 | + </view> | ||
414 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="FyK-3t-liP"> | ||
415 | + <rect key="frame" x="0.0" y="94" width="414" height="802"/> | ||
416 | + <color key="backgroundColor" systemColor="systemBackgroundColor"/> | ||
417 | + </view> | ||
418 | + </subviews> | ||
406 | <viewLayoutGuide key="safeArea" id="cej-iH-8gP"/> | 419 | <viewLayoutGuide key="safeArea" id="cej-iH-8gP"/> |
407 | <color key="backgroundColor" systemColor="systemBackgroundColor"/> | 420 | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
421 | + <constraints> | ||
422 | + <constraint firstItem="Z7V-En-7Tl" firstAttribute="leading" secondItem="cej-iH-8gP" secondAttribute="leading" id="2VB-wC-r2b"/> | ||
423 | + <constraint firstItem="FyK-3t-liP" firstAttribute="top" secondItem="Z7V-En-7Tl" secondAttribute="bottom" id="E4I-cW-BL9"/> | ||
424 | + <constraint firstItem="FyK-3t-liP" firstAttribute="trailing" secondItem="cej-iH-8gP" secondAttribute="trailing" id="NTr-5G-XH5"/> | ||
425 | + <constraint firstItem="Z7V-En-7Tl" firstAttribute="trailing" secondItem="cej-iH-8gP" secondAttribute="trailing" id="PwM-0Q-xtQ"/> | ||
426 | + <constraint firstAttribute="bottom" secondItem="FyK-3t-liP" secondAttribute="bottom" id="fbh-Cd-dHd"/> | ||
427 | + <constraint firstItem="Z7V-En-7Tl" firstAttribute="top" secondItem="cej-iH-8gP" secondAttribute="top" id="l8U-kf-IRu"/> | ||
428 | + <constraint firstItem="FyK-3t-liP" firstAttribute="leading" secondItem="cej-iH-8gP" secondAttribute="leading" id="qiJ-nX-tRU"/> | ||
429 | + </constraints> | ||
408 | </view> | 430 | </view> |
431 | + <connections> | ||
432 | + <outlet property="contentView" destination="FyK-3t-liP" id="lBC-DU-jIb"/> | ||
433 | + </connections> | ||
409 | </viewController> | 434 | </viewController> |
410 | <placeholder placeholderIdentifier="IBFirstResponder" id="jF4-GM-aCp" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> | 435 | <placeholder placeholderIdentifier="IBFirstResponder" id="jF4-GM-aCp" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> |
411 | </objects> | 436 | </objects> |
412 | - <point key="canvasLocation" x="3126" y="836"/> | 437 | + <point key="canvasLocation" x="3229" y="836"/> |
438 | + </scene> | ||
439 | + <!--Analysis Child View Controller--> | ||
440 | + <scene sceneID="Yng-iu-80u"> | ||
441 | + <objects> | ||
442 | + <tableViewController id="xOZ-Af-1Nw" customClass="AnalysisChildViewController" customModule="SwiftWarplyFramework" customModuleProvider="target" sceneMemberID="viewController"> | ||
443 | + <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="160" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" id="IAk-m8-ZIC"> | ||
444 | + <rect key="frame" x="0.0" y="0.0" width="414" height="896"/> | ||
445 | + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> | ||
446 | + <color key="backgroundColor" systemColor="systemBackgroundColor"/> | ||
447 | + <prototypes> | ||
448 | + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" selectionStyle="default" indentationWidth="10" reuseIdentifier="AnalysisItemViewCell" rowHeight="160" id="iNx-Id-iLB" customClass="AnalysisItemViewCell" customModule="SwiftWarplyFramework" customModuleProvider="target"> | ||
449 | + <rect key="frame" x="0.0" y="44.5" width="414" height="160"/> | ||
450 | + <autoresizingMask key="autoresizingMask"/> | ||
451 | + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="iNx-Id-iLB" id="X28-3l-fcy"> | ||
452 | + <rect key="frame" x="0.0" y="0.0" width="414" height="160"/> | ||
453 | + <autoresizingMask key="autoresizingMask"/> | ||
454 | + <subviews> | ||
455 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="05/05/2022" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fWY-zJ-P1c" userLabel="Date"> | ||
456 | + <rect key="frame" x="10" y="20" width="394" height="16"/> | ||
457 | + <constraints> | ||
458 | + <constraint firstAttribute="height" constant="16" id="5pR-Xb-nB2"/> | ||
459 | + </constraints> | ||
460 | + <fontDescription key="fontDescription" type="boldSystem" pointSize="13"/> | ||
461 | + <nil key="textColor"/> | ||
462 | + <nil key="highlightedColor"/> | ||
463 | + </label> | ||
464 | + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="rW5-M3-c7s"> | ||
465 | + <rect key="frame" x="10" y="46" width="28" height="28"/> | ||
466 | + <constraints> | ||
467 | + <constraint firstAttribute="height" constant="28" id="Nw7-Mi-QTe"/> | ||
468 | + <constraint firstAttribute="width" constant="28" id="hEI-zc-TX4"/> | ||
469 | + </constraints> | ||
470 | + </imageView> | ||
471 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="4,00€" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Pyr-Jo-zxl" userLabel="Price"> | ||
472 | + <rect key="frame" x="341.5" y="50" width="52.5" height="20"/> | ||
473 | + <constraints> | ||
474 | + <constraint firstAttribute="height" constant="20" id="WPI-8H-zbd"/> | ||
475 | + </constraints> | ||
476 | + <fontDescription key="fontDescription" type="boldSystem" pointSize="18"/> | ||
477 | + <nil key="textColor"/> | ||
478 | + <nil key="highlightedColor"/> | ||
479 | + </label> | ||
480 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="248" verticalHuggingPriority="251" text="BOX" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hqA-F6-n9s" userLabel="Title"> | ||
481 | + <rect key="frame" x="42" y="50" width="295.5" height="20"/> | ||
482 | + <constraints> | ||
483 | + <constraint firstAttribute="height" constant="20" id="D6h-47-exa"/> | ||
484 | + </constraints> | ||
485 | + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="18"/> | ||
486 | + <nil key="textColor"/> | ||
487 | + <nil key="highlightedColor"/> | ||
488 | + </label> | ||
489 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="248" verticalHuggingPriority="251" text="Έκπτωτικό κουπόνι" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="xac-fs-J8S" userLabel="Subtitle"> | ||
490 | + <rect key="frame" x="42" y="72" width="295.5" height="21.5"/> | ||
491 | + <fontDescription key="fontDescription" type="system" pointSize="18"/> | ||
492 | + <nil key="textColor"/> | ||
493 | + <nil key="highlightedColor"/> | ||
494 | + </label> | ||
495 | + </subviews> | ||
496 | + <constraints> | ||
497 | + <constraint firstItem="fWY-zJ-P1c" firstAttribute="top" secondItem="X28-3l-fcy" secondAttribute="top" constant="20" id="Gj8-gE-gbj"/> | ||
498 | + <constraint firstAttribute="trailing" secondItem="fWY-zJ-P1c" secondAttribute="trailing" constant="10" id="MNz-as-PZd"/> | ||
499 | + <constraint firstItem="hqA-F6-n9s" firstAttribute="centerY" secondItem="rW5-M3-c7s" secondAttribute="centerY" id="OpX-dx-J0h"/> | ||
500 | + <constraint firstItem="rW5-M3-c7s" firstAttribute="top" secondItem="fWY-zJ-P1c" secondAttribute="bottom" constant="10" id="Sbw-Ar-xiH"/> | ||
501 | + <constraint firstItem="xac-fs-J8S" firstAttribute="leading" secondItem="hqA-F6-n9s" secondAttribute="leading" id="UYN-ui-q74"/> | ||
502 | + <constraint firstItem="rW5-M3-c7s" firstAttribute="leading" secondItem="X28-3l-fcy" secondAttribute="leading" constant="10" id="Vco-mW-IpG"/> | ||
503 | + <constraint firstItem="fWY-zJ-P1c" firstAttribute="leading" secondItem="X28-3l-fcy" secondAttribute="leading" constant="10" id="Ynl-uB-QjI"/> | ||
504 | + <constraint firstItem="xac-fs-J8S" firstAttribute="trailing" secondItem="hqA-F6-n9s" secondAttribute="trailing" id="bKd-IG-1da"/> | ||
505 | + <constraint firstItem="xac-fs-J8S" firstAttribute="top" secondItem="hqA-F6-n9s" secondAttribute="bottom" constant="2" id="mQi-g5-OUm"/> | ||
506 | + <constraint firstItem="Pyr-Jo-zxl" firstAttribute="leading" secondItem="hqA-F6-n9s" secondAttribute="trailing" constant="4" id="mzB-xA-7SR"/> | ||
507 | + <constraint firstAttribute="trailing" secondItem="Pyr-Jo-zxl" secondAttribute="trailing" constant="20" id="nYY-Th-Hob"/> | ||
508 | + <constraint firstItem="hqA-F6-n9s" firstAttribute="leading" secondItem="rW5-M3-c7s" secondAttribute="trailing" constant="4" id="r8B-Tl-KPA"/> | ||
509 | + <constraint firstItem="Pyr-Jo-zxl" firstAttribute="centerY" secondItem="rW5-M3-c7s" secondAttribute="centerY" id="zif-gr-5SM"/> | ||
510 | + </constraints> | ||
511 | + </tableViewCellContentView> | ||
512 | + <connections> | ||
513 | + <outlet property="dateLabel" destination="fWY-zJ-P1c" id="zmh-T6-Uia"/> | ||
514 | + <outlet property="itemImage" destination="rW5-M3-c7s" id="27r-CK-e8f"/> | ||
515 | + <outlet property="priceLabel" destination="Pyr-Jo-zxl" id="hWV-75-Gqf"/> | ||
516 | + <outlet property="subtitleLabel" destination="xac-fs-J8S" id="7ml-5a-zmc"/> | ||
517 | + <outlet property="titleLabel" destination="hqA-F6-n9s" id="zlL-DU-81T"/> | ||
518 | + </connections> | ||
519 | + </tableViewCell> | ||
520 | + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" rowHeight="280" id="HMC-zK-06F" customClass="AnalysisHeaderViewCell" customModule="SwiftWarplyFramework" customModuleProvider="target"> | ||
521 | + <rect key="frame" x="0.0" y="204.5" width="414" height="280"/> | ||
522 | + <autoresizingMask key="autoresizingMask"/> | ||
523 | + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="HMC-zK-06F" id="RtV-Li-Dnj"> | ||
524 | + <rect key="frame" x="0.0" y="0.0" width="414" height="280"/> | ||
525 | + <autoresizingMask key="autoresizingMask"/> | ||
526 | + <subviews> | ||
527 | + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="xmN-ke-oBj"> | ||
528 | + <rect key="frame" x="124" y="31" width="166" height="166"/> | ||
529 | + <constraints> | ||
530 | + <constraint firstAttribute="height" constant="166" id="OG9-xL-K4U"/> | ||
531 | + <constraint firstAttribute="width" constant="166" id="Xgj-YV-J4n"/> | ||
532 | + </constraints> | ||
533 | + </imageView> | ||
534 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Αναλυτικά:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LKw-8l-mRY"> | ||
535 | + <rect key="frame" x="162" y="248" width="90" height="22"/> | ||
536 | + <constraints> | ||
537 | + <constraint firstAttribute="height" constant="22" id="T1B-pX-6hx"/> | ||
538 | + </constraints> | ||
539 | + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="18"/> | ||
540 | + <nil key="textColor"/> | ||
541 | + <nil key="highlightedColor"/> | ||
542 | + </label> | ||
543 | + </subviews> | ||
544 | + <constraints> | ||
545 | + <constraint firstItem="xmN-ke-oBj" firstAttribute="centerX" secondItem="RtV-Li-Dnj" secondAttribute="centerX" id="LvL-o4-MTE"/> | ||
546 | + <constraint firstAttribute="bottom" secondItem="LKw-8l-mRY" secondAttribute="bottom" constant="10" id="jlt-UV-Eud"/> | ||
547 | + <constraint firstItem="xmN-ke-oBj" firstAttribute="top" secondItem="RtV-Li-Dnj" secondAttribute="topMargin" constant="20" id="v4Z-tl-gBX"/> | ||
548 | + <constraint firstItem="LKw-8l-mRY" firstAttribute="centerX" secondItem="RtV-Li-Dnj" secondAttribute="centerX" id="yJq-7A-H3r"/> | ||
549 | + </constraints> | ||
550 | + </tableViewCellContentView> | ||
551 | + <connections> | ||
552 | + <outlet property="itemImage" destination="xmN-ke-oBj" id="zRs-Ks-2Re"/> | ||
553 | + <outlet property="titleLabel" destination="LKw-8l-mRY" id="2Nl-uC-2aJ"/> | ||
554 | + </connections> | ||
555 | + </tableViewCell> | ||
556 | + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" rowHeight="380" id="oPh-jz-GSZ" customClass="AnalysisHeaderMessageViewCell" customModule="SwiftWarplyFramework" customModuleProvider="target"> | ||
557 | + <rect key="frame" x="0.0" y="484.5" width="414" height="380"/> | ||
558 | + <autoresizingMask key="autoresizingMask"/> | ||
559 | + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="oPh-jz-GSZ" id="8oK-tI-pLa"> | ||
560 | + <rect key="frame" x="0.0" y="0.0" width="414" height="380"/> | ||
561 | + <autoresizingMask key="autoresizingMask"/> | ||
562 | + <subviews> | ||
563 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Μέχρι τώρα έχεις κερδίσει 20,00€ σε προσφορές από 3 κουπόνια!" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nkc-wO-by3"> | ||
564 | + <rect key="frame" x="50" y="237" width="314" height="60"/> | ||
565 | + <constraints> | ||
566 | + <constraint firstAttribute="height" constant="60" id="ZEz-dt-NJa"/> | ||
567 | + </constraints> | ||
568 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
569 | + <nil key="textColor"/> | ||
570 | + <nil key="highlightedColor"/> | ||
571 | + </label> | ||
572 | + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="sdY-Vd-bbW"> | ||
573 | + <rect key="frame" x="124" y="31" width="166" height="166"/> | ||
574 | + <constraints> | ||
575 | + <constraint firstAttribute="height" constant="166" id="ZHj-a8-3y1"/> | ||
576 | + <constraint firstAttribute="width" constant="166" id="oqg-jC-ibc"/> | ||
577 | + </constraints> | ||
578 | + </imageView> | ||
579 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Αναλυτικά:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9MF-rh-eec"> | ||
580 | + <rect key="frame" x="166" y="339" width="82" height="20"/> | ||
581 | + <constraints> | ||
582 | + <constraint firstAttribute="height" constant="20" id="XkT-At-XWY"/> | ||
583 | + </constraints> | ||
584 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
585 | + <nil key="textColor"/> | ||
586 | + <nil key="highlightedColor"/> | ||
587 | + </label> | ||
588 | + </subviews> | ||
589 | + <constraints> | ||
590 | + <constraint firstItem="nkc-wO-by3" firstAttribute="top" secondItem="sdY-Vd-bbW" secondAttribute="bottom" constant="40" id="2Yl-Fb-ksG"/> | ||
591 | + <constraint firstItem="sdY-Vd-bbW" firstAttribute="top" secondItem="8oK-tI-pLa" secondAttribute="topMargin" constant="20" id="CEe-Np-pPS"/> | ||
592 | + <constraint firstAttribute="bottomMargin" secondItem="9MF-rh-eec" secondAttribute="bottom" constant="10" id="E0e-rS-Vwh"/> | ||
593 | + <constraint firstItem="sdY-Vd-bbW" firstAttribute="centerX" secondItem="8oK-tI-pLa" secondAttribute="centerX" id="L16-AP-9gA"/> | ||
594 | + <constraint firstItem="nkc-wO-by3" firstAttribute="leading" secondItem="8oK-tI-pLa" secondAttribute="leadingMargin" constant="30" id="MhA-nS-gcP"/> | ||
595 | + <constraint firstAttribute="trailingMargin" secondItem="nkc-wO-by3" secondAttribute="trailing" constant="30" id="dIv-s4-jcV"/> | ||
596 | + <constraint firstItem="9MF-rh-eec" firstAttribute="centerX" secondItem="8oK-tI-pLa" secondAttribute="centerX" id="pKh-jT-Xoe"/> | ||
597 | + </constraints> | ||
598 | + </tableViewCellContentView> | ||
599 | + <connections> | ||
600 | + <outlet property="itemImage" destination="sdY-Vd-bbW" id="FPk-8S-kCA"/> | ||
601 | + <outlet property="messageLabel" destination="nkc-wO-by3" id="4gl-nq-4jN"/> | ||
602 | + <outlet property="titleLabel" destination="9MF-rh-eec" id="ogv-9c-JWm"/> | ||
603 | + </connections> | ||
604 | + </tableViewCell> | ||
605 | + </prototypes> | ||
606 | + <connections> | ||
607 | + <outlet property="dataSource" destination="xOZ-Af-1Nw" id="rM1-30-TpG"/> | ||
608 | + <outlet property="delegate" destination="xOZ-Af-1Nw" id="YFj-hI-ntL"/> | ||
609 | + </connections> | ||
610 | + </tableView> | ||
611 | + </tableViewController> | ||
612 | + <placeholder placeholderIdentifier="IBFirstResponder" id="4gQ-3O-aEc" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> | ||
613 | + </objects> | ||
614 | + <point key="canvasLocation" x="3942.0289855072465" y="835.71428571428567"/> | ||
413 | </scene> | 615 | </scene> |
414 | <!--Wallet View Controller--> | 616 | <!--Wallet View Controller--> |
415 | <scene sceneID="tSr-9x-GQW"> | 617 | <scene sceneID="tSr-9x-GQW"> | ... | ... |
1 | +// | ||
2 | +// UIColorExtensions.swift | ||
3 | +// SwiftWarplyFramework | ||
4 | +// | ||
5 | +// Created by Manos Chorianopoulos on 18/7/22. | ||
6 | +// | ||
7 | + | ||
8 | +import Foundation | ||
9 | +import UIKit | ||
10 | + | ||
11 | +extension UIColor { | ||
12 | + convenience init(rgb: UInt) { | ||
13 | + self.init( | ||
14 | + red: CGFloat((rgb & 0xFF0000) >> 16) / 255.0, | ||
15 | + green: CGFloat((rgb & 0x00FF00) >> 8) / 255.0, | ||
16 | + blue: CGFloat(rgb & 0x0000FF) / 255.0, | ||
17 | + alpha: CGFloat(1.0) | ||
18 | + ) | ||
19 | + } | ||
20 | +} |
-
Please register or login to post a comment