09-03-2022

09-03-2022
parent cb4802af
...@@ -3,10 +3,11 @@ ...@@ -3,10 +3,11 @@
archiveVersion = 1; archiveVersion = 1;
classes = { classes = {
}; };
objectVersion = 50; objectVersion = 51;
objects = { objects = {
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
6515D95E8D2F2D4359205278 /* Pods_Em_call.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0B00F9B8F0E75084992C2D05 /* Pods_Em_call.framework */; };
D5057F9D27BA5E940015C0DC /* VKBookingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5057F9C27BA5E940015C0DC /* VKBookingViewController.swift */; }; D5057F9D27BA5E940015C0DC /* VKBookingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5057F9C27BA5E940015C0DC /* VKBookingViewController.swift */; };
D5057F9E27BA5E940015C0DC /* VKBookingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5057F9C27BA5E940015C0DC /* VKBookingViewController.swift */; }; D5057F9E27BA5E940015C0DC /* VKBookingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5057F9C27BA5E940015C0DC /* VKBookingViewController.swift */; };
D5057F9F27BA5E940015C0DC /* VKBookingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5057F9C27BA5E940015C0DC /* VKBookingViewController.swift */; }; D5057F9F27BA5E940015C0DC /* VKBookingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5057F9C27BA5E940015C0DC /* VKBookingViewController.swift */; };
...@@ -27,9 +28,18 @@ ...@@ -27,9 +28,18 @@
D569AB8627B8E27B0013DCFE /* Em_callUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D569AB8527B8E27B0013DCFE /* Em_callUITests.swift */; }; D569AB8627B8E27B0013DCFE /* Em_callUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D569AB8527B8E27B0013DCFE /* Em_callUITests.swift */; };
D56E5D6D27C26F2500D0E4B9 /* StartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D56E5D6C27C26F2500D0E4B9 /* StartViewController.swift */; }; D56E5D6D27C26F2500D0E4B9 /* StartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D56E5D6C27C26F2500D0E4B9 /* StartViewController.swift */; };
D56E5D7B27C2894300D0E4B9 /* MapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D56E5D7927C2893800D0E4B9 /* MapKit.framework */; }; D56E5D7B27C2894300D0E4B9 /* MapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D56E5D7927C2893800D0E4B9 /* MapKit.framework */; };
D59E3CE027D3B03F008A7E0C /* SettingCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D59E3CDF27D3B03F008A7E0C /* SettingCell.swift */; };
D59E3CE527D3B37B008A7E0C /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D59E3CE427D3B37B008A7E0C /* Extensions.swift */; };
D5A073D527D4B45A0033D455 /* PhotoCellCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5A073D327D4B45A0033D455 /* PhotoCellCollectionViewCell.swift */; };
D5A073D627D4B45A0033D455 /* PhotoCellCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D5A073D427D4B45A0033D455 /* PhotoCellCollectionViewCell.xib */; };
D5B0201027C37BBE00C4BA4F /* MainViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5B0200F27C37BBE00C4BA4F /* MainViewController.swift */; }; D5B0201027C37BBE00C4BA4F /* MainViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5B0200F27C37BBE00C4BA4F /* MainViewController.swift */; };
D5B0201527C3826800C4BA4F /* ArtworkViews.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5B0201427C3826800C4BA4F /* ArtworkViews.swift */; }; D5B0201527C3826800C4BA4F /* ArtworkViews.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5B0201427C3826800C4BA4F /* ArtworkViews.swift */; };
D5B0201A27C382A600C4BA4F /* Artwork.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5B0201927C382A600C4BA4F /* Artwork.swift */; }; D5B0201A27C382A600C4BA4F /* Artwork.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5B0201927C382A600C4BA4F /* Artwork.swift */; };
D5C59AF127CFD1810013EFBB /* netwok.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5C59AF027CFD1810013EFBB /* netwok.swift */; };
D5D82C8D27D21B070068A5B9 /* SettingsLauncher.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5D82C8C27D21B070068A5B9 /* SettingsLauncher.swift */; };
D5D82C9527D273030068A5B9 /* TabBarViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5D82C9427D273030068A5B9 /* TabBarViewController.swift */; };
D5E2042427CE2DD90063A514 /* ProfileViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5E2042327CE2DD90063A514 /* ProfileViewController.swift */; };
D5E2042927CE30E20063A514 /* DataProfileViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5E2042827CE30E20063A514 /* DataProfileViewController.swift */; };
D5E31B2A27BCE16700F5B87D /* PlumViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5E31B2927BCE16700F5B87D /* PlumViewController.swift */; }; D5E31B2A27BCE16700F5B87D /* PlumViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5E31B2927BCE16700F5B87D /* PlumViewController.swift */; };
D5E31B3227BCEC0900F5B87D /* CollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5E31B3127BCEC0900F5B87D /* CollectionViewCell.swift */; }; D5E31B3227BCEC0900F5B87D /* CollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5E31B3127BCEC0900F5B87D /* CollectionViewCell.swift */; };
D5E31B3727BD578F00F5B87D /* PlumbersViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5E31B3627BD578F00F5B87D /* PlumbersViewController.swift */; }; D5E31B3727BD578F00F5B87D /* PlumbersViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5E31B3627BD578F00F5B87D /* PlumbersViewController.swift */; };
...@@ -58,6 +68,9 @@ ...@@ -58,6 +68,9 @@
/* End PBXContainerItemProxy section */ /* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
0B00F9B8F0E75084992C2D05 /* Pods_Em_call.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Em_call.framework; sourceTree = BUILT_PRODUCTS_DIR; };
48F18F4E11F571C00396F435 /* Pods-Em-call.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Em-call.debug.xcconfig"; path = "Target Support Files/Pods-Em-call/Pods-Em-call.debug.xcconfig"; sourceTree = "<group>"; };
B052271505AB519498CE9118 /* Pods-Em-call.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Em-call.release.xcconfig"; path = "Target Support Files/Pods-Em-call/Pods-Em-call.release.xcconfig"; sourceTree = "<group>"; };
D5057F9C27BA5E940015C0DC /* VKBookingViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VKBookingViewController.swift; sourceTree = "<group>"; }; D5057F9C27BA5E940015C0DC /* VKBookingViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VKBookingViewController.swift; sourceTree = "<group>"; };
D514860627BB7FD7006830A3 /* ChatViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatViewController.swift; sourceTree = "<group>"; }; D514860627BB7FD7006830A3 /* ChatViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatViewController.swift; sourceTree = "<group>"; };
D514861327BBEB76006830A3 /* ElectricTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ElectricTableViewController.swift; sourceTree = "<group>"; }; D514861327BBEB76006830A3 /* ElectricTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ElectricTableViewController.swift; sourceTree = "<group>"; };
...@@ -82,9 +95,18 @@ ...@@ -82,9 +95,18 @@
D569AB8727B8E27B0013DCFE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; D569AB8727B8E27B0013DCFE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
D56E5D6C27C26F2500D0E4B9 /* StartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StartViewController.swift; sourceTree = "<group>"; }; D56E5D6C27C26F2500D0E4B9 /* StartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StartViewController.swift; sourceTree = "<group>"; };
D56E5D7927C2893800D0E4B9 /* MapKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MapKit.framework; path = System/Library/Frameworks/MapKit.framework; sourceTree = SDKROOT; }; D56E5D7927C2893800D0E4B9 /* MapKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MapKit.framework; path = System/Library/Frameworks/MapKit.framework; sourceTree = SDKROOT; };
D59E3CDF27D3B03F008A7E0C /* SettingCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingCell.swift; sourceTree = "<group>"; };
D59E3CE427D3B37B008A7E0C /* Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = "<group>"; };
D5A073D327D4B45A0033D455 /* PhotoCellCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoCellCollectionViewCell.swift; sourceTree = "<group>"; };
D5A073D427D4B45A0033D455 /* PhotoCellCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PhotoCellCollectionViewCell.xib; sourceTree = "<group>"; };
D5B0200F27C37BBE00C4BA4F /* MainViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainViewController.swift; sourceTree = "<group>"; }; D5B0200F27C37BBE00C4BA4F /* MainViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainViewController.swift; sourceTree = "<group>"; };
D5B0201427C3826800C4BA4F /* ArtworkViews.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArtworkViews.swift; sourceTree = "<group>"; }; D5B0201427C3826800C4BA4F /* ArtworkViews.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArtworkViews.swift; sourceTree = "<group>"; };
D5B0201927C382A600C4BA4F /* Artwork.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Artwork.swift; sourceTree = "<group>"; }; D5B0201927C382A600C4BA4F /* Artwork.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Artwork.swift; sourceTree = "<group>"; };
D5C59AF027CFD1810013EFBB /* netwok.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = netwok.swift; sourceTree = "<group>"; };
D5D82C8C27D21B070068A5B9 /* SettingsLauncher.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsLauncher.swift; sourceTree = "<group>"; };
D5D82C9427D273030068A5B9 /* TabBarViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabBarViewController.swift; sourceTree = "<group>"; };
D5E2042327CE2DD90063A514 /* ProfileViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileViewController.swift; sourceTree = "<group>"; };
D5E2042827CE30E20063A514 /* DataProfileViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataProfileViewController.swift; sourceTree = "<group>"; };
D5E31B2927BCE16700F5B87D /* PlumViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlumViewController.swift; sourceTree = "<group>"; }; D5E31B2927BCE16700F5B87D /* PlumViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlumViewController.swift; sourceTree = "<group>"; };
D5E31B3127BCEC0900F5B87D /* CollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CollectionViewCell.swift; sourceTree = "<group>"; }; D5E31B3127BCEC0900F5B87D /* CollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CollectionViewCell.swift; sourceTree = "<group>"; };
D5E31B3627BD578F00F5B87D /* PlumbersViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlumbersViewController.swift; sourceTree = "<group>"; }; D5E31B3627BD578F00F5B87D /* PlumbersViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlumbersViewController.swift; sourceTree = "<group>"; };
...@@ -101,6 +123,7 @@ ...@@ -101,6 +123,7 @@
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
D56E5D7B27C2894300D0E4B9 /* MapKit.framework in Frameworks */, D56E5D7B27C2894300D0E4B9 /* MapKit.framework in Frameworks */,
6515D95E8D2F2D4359205278 /* Pods_Em_call.framework in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
...@@ -121,6 +144,15 @@ ...@@ -121,6 +144,15 @@
/* End PBXFrameworksBuildPhase section */ /* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */ /* Begin PBXGroup section */
94DA290F201A32CDF91DEB3F /* Pods */ = {
isa = PBXGroup;
children = (
48F18F4E11F571C00396F435 /* Pods-Em-call.debug.xcconfig */,
B052271505AB519498CE9118 /* Pods-Em-call.release.xcconfig */,
);
path = Pods;
sourceTree = "<group>";
};
D5057F9B27BA5E520015C0DC /* VC */ = { D5057F9B27BA5E520015C0DC /* VC */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
...@@ -137,6 +169,9 @@ ...@@ -137,6 +169,9 @@
D51D340127BF98B9008D5065 /* CalendarViewController.swift */, D51D340127BF98B9008D5065 /* CalendarViewController.swift */,
D56E5D6C27C26F2500D0E4B9 /* StartViewController.swift */, D56E5D6C27C26F2500D0E4B9 /* StartViewController.swift */,
D5B0200F27C37BBE00C4BA4F /* MainViewController.swift */, D5B0200F27C37BBE00C4BA4F /* MainViewController.swift */,
D5E2042327CE2DD90063A514 /* ProfileViewController.swift */,
D5E2042827CE30E20063A514 /* DataProfileViewController.swift */,
D5D82C9427D273030068A5B9 /* TabBarViewController.swift */,
); );
path = VC; path = VC;
sourceTree = "<group>"; sourceTree = "<group>";
...@@ -149,6 +184,7 @@ ...@@ -149,6 +184,7 @@
D569AB8427B8E27B0013DCFE /* Em-callUITests */, D569AB8427B8E27B0013DCFE /* Em-callUITests */,
D569AB5E27B8E27A0013DCFE /* Products */, D569AB5E27B8E27A0013DCFE /* Products */,
D56E5D7827C2893800D0E4B9 /* Frameworks */, D56E5D7827C2893800D0E4B9 /* Frameworks */,
94DA290F201A32CDF91DEB3F /* Pods */,
); );
sourceTree = "<group>"; sourceTree = "<group>";
}; };
...@@ -201,6 +237,7 @@ ...@@ -201,6 +237,7 @@
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
D56E5D7927C2893800D0E4B9 /* MapKit.framework */, D56E5D7927C2893800D0E4B9 /* MapKit.framework */,
0B00F9B8F0E75084992C2D05 /* Pods_Em_call.framework */,
); );
name = Frameworks; name = Frameworks;
sourceTree = "<group>"; sourceTree = "<group>";
...@@ -217,11 +254,17 @@ ...@@ -217,11 +254,17 @@
D5F0237627C4DB76008F4146 /* Data */ = { D5F0237627C4DB76008F4146 /* Data */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
D59E3CE427D3B37B008A7E0C /* Extensions.swift */,
D59E3CDF27D3B03F008A7E0C /* SettingCell.swift */,
D514861827BBEFC8006830A3 /* Track.swift */, D514861827BBEFC8006830A3 /* Track.swift */,
D5B0201427C3826800C4BA4F /* ArtworkViews.swift */, D5B0201427C3826800C4BA4F /* ArtworkViews.swift */,
D5B0201927C382A600C4BA4F /* Artwork.swift */, D5B0201927C382A600C4BA4F /* Artwork.swift */,
D5F0237A27C4DEC4008F4146 /* LocationMng.swift */, D5F0237A27C4DEC4008F4146 /* LocationMng.swift */,
D5D82C8C27D21B070068A5B9 /* SettingsLauncher.swift */,
D5F0238727C4E2AA008F4146 /* ShowAlert.swift */, D5F0238727C4E2AA008F4146 /* ShowAlert.swift */,
D5C59AF027CFD1810013EFBB /* netwok.swift */,
D5A073D327D4B45A0033D455 /* PhotoCellCollectionViewCell.swift */,
D5A073D427D4B45A0033D455 /* PhotoCellCollectionViewCell.xib */,
); );
path = Data; path = Data;
sourceTree = "<group>"; sourceTree = "<group>";
...@@ -233,9 +276,11 @@ ...@@ -233,9 +276,11 @@
isa = PBXNativeTarget; isa = PBXNativeTarget;
buildConfigurationList = D569AB8A27B8E27B0013DCFE /* Build configuration list for PBXNativeTarget "Em-call" */; buildConfigurationList = D569AB8A27B8E27B0013DCFE /* Build configuration list for PBXNativeTarget "Em-call" */;
buildPhases = ( buildPhases = (
9A37A33EB68B46AE3163D023 /* [CP] Check Pods Manifest.lock */,
D569AB5927B8E27A0013DCFE /* Sources */, D569AB5927B8E27A0013DCFE /* Sources */,
D569AB5A27B8E27A0013DCFE /* Frameworks */, D569AB5A27B8E27A0013DCFE /* Frameworks */,
D569AB5B27B8E27A0013DCFE /* Resources */, D569AB5B27B8E27A0013DCFE /* Resources */,
BE0001AC07D9264ACD51BEF6 /* [CP] Embed Pods Frameworks */,
); );
buildRules = ( buildRules = (
); );
...@@ -330,6 +375,7 @@ ...@@ -330,6 +375,7 @@
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
D569AB7027B8E27B0013DCFE /* LaunchScreen.storyboard in Resources */, D569AB7027B8E27B0013DCFE /* LaunchScreen.storyboard in Resources */,
D5A073D627D4B45A0033D455 /* PhotoCellCollectionViewCell.xib in Resources */,
D569AB6D27B8E27B0013DCFE /* Assets.xcassets in Resources */, D569AB6D27B8E27B0013DCFE /* Assets.xcassets in Resources */,
D569AB6827B8E27A0013DCFE /* Main.storyboard in Resources */, D569AB6827B8E27A0013DCFE /* Main.storyboard in Resources */,
); );
...@@ -351,6 +397,48 @@ ...@@ -351,6 +397,48 @@
}; };
/* End PBXResourcesBuildPhase section */ /* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
9A37A33EB68B46AE3163D023 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-Em-call-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
BE0001AC07D9264ACD51BEF6 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Em-call/Pods-Em-call-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Em-call/Pods-Em-call-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Em-call/Pods-Em-call-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */
D569AB5927B8E27A0013DCFE /* Sources */ = { D569AB5927B8E27A0013DCFE /* Sources */ = {
isa = PBXSourcesBuildPhase; isa = PBXSourcesBuildPhase;
...@@ -360,24 +448,32 @@ ...@@ -360,24 +448,32 @@
D5F0237B27C4DEC4008F4146 /* LocationMng.swift in Sources */, D5F0237B27C4DEC4008F4146 /* LocationMng.swift in Sources */,
D5E31B3C27BD651C00F5B87D /* EmerElecricianViewController.swift in Sources */, D5E31B3C27BD651C00F5B87D /* EmerElecricianViewController.swift in Sources */,
D5F0238827C4E2AA008F4146 /* ShowAlert.swift in Sources */, D5F0238827C4E2AA008F4146 /* ShowAlert.swift in Sources */,
D5D82C9527D273030068A5B9 /* TabBarViewController.swift in Sources */,
D5E31B3227BCEC0900F5B87D /* CollectionViewCell.swift in Sources */, D5E31B3227BCEC0900F5B87D /* CollectionViewCell.swift in Sources */,
D558EA5C27BE4A6C003C4578 /* HandmanViewController.swift in Sources */, D558EA5C27BE4A6C003C4578 /* HandmanViewController.swift in Sources */,
D5E2042427CE2DD90063A514 /* ProfileViewController.swift in Sources */,
D5E31B2A27BCE16700F5B87D /* PlumViewController.swift in Sources */, D5E31B2A27BCE16700F5B87D /* PlumViewController.swift in Sources */,
D569AB6B27B8E27A0013DCFE /* Em_call.xcdatamodeld in Sources */, D569AB6B27B8E27A0013DCFE /* Em_call.xcdatamodeld in Sources */,
D569AB6127B8E27A0013DCFE /* AppDelegate.swift in Sources */, D569AB6127B8E27A0013DCFE /* AppDelegate.swift in Sources */,
D5E31B3727BD578F00F5B87D /* PlumbersViewController.swift in Sources */, D5E31B3727BD578F00F5B87D /* PlumbersViewController.swift in Sources */,
D5D82C8D27D21B070068A5B9 /* SettingsLauncher.swift in Sources */,
D514861927BBEFC8006830A3 /* Track.swift in Sources */, D514861927BBEFC8006830A3 /* Track.swift in Sources */,
D59E3CE027D3B03F008A7E0C /* SettingCell.swift in Sources */,
D5B0201A27C382A600C4BA4F /* Artwork.swift in Sources */, D5B0201A27C382A600C4BA4F /* Artwork.swift in Sources */,
D56E5D6D27C26F2500D0E4B9 /* StartViewController.swift in Sources */, D56E5D6D27C26F2500D0E4B9 /* StartViewController.swift in Sources */,
D5F0236F27C4DAD8008F4146 /* ChangePswViewController.swift in Sources */, D5F0236F27C4DAD8008F4146 /* ChangePswViewController.swift in Sources */,
D5057F9D27BA5E940015C0DC /* VKBookingViewController.swift in Sources */, D5057F9D27BA5E940015C0DC /* VKBookingViewController.swift in Sources */,
D5F0236A27C4DAC2008F4146 /* RegistrationViewController.swift in Sources */, D5F0236A27C4DAC2008F4146 /* RegistrationViewController.swift in Sources */,
D558EA6127BE4C65003C4578 /* EmerHandViewController.swift in Sources */, D558EA6127BE4C65003C4578 /* EmerHandViewController.swift in Sources */,
D5A073D527D4B45A0033D455 /* PhotoCellCollectionViewCell.swift in Sources */,
D514860727BB7FD7006830A3 /* ChatViewController.swift in Sources */, D514860727BB7FD7006830A3 /* ChatViewController.swift in Sources */,
D5B0201527C3826800C4BA4F /* ArtworkViews.swift in Sources */, D5B0201527C3826800C4BA4F /* ArtworkViews.swift in Sources */,
D569AB6327B8E27A0013DCFE /* SceneDelegate.swift in Sources */, D569AB6327B8E27A0013DCFE /* SceneDelegate.swift in Sources */,
D5B0201027C37BBE00C4BA4F /* MainViewController.swift in Sources */, D5B0201027C37BBE00C4BA4F /* MainViewController.swift in Sources */,
D59E3CE527D3B37B008A7E0C /* Extensions.swift in Sources */,
D51D33FD27BF8836008D5065 /* MapViewController.swift in Sources */, D51D33FD27BF8836008D5065 /* MapViewController.swift in Sources */,
D5C59AF127CFD1810013EFBB /* netwok.swift in Sources */,
D5E2042927CE30E20063A514 /* DataProfileViewController.swift in Sources */,
D514861427BBEB76006830A3 /* ElectricTableViewController.swift in Sources */, D514861427BBEB76006830A3 /* ElectricTableViewController.swift in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
...@@ -553,6 +649,7 @@ ...@@ -553,6 +649,7 @@
}; };
D569AB8B27B8E27B0013DCFE /* Debug */ = { D569AB8B27B8E27B0013DCFE /* Debug */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
baseConfigurationReference = 48F18F4E11F571C00396F435 /* Pods-Em-call.debug.xcconfig */;
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
...@@ -574,6 +671,7 @@ ...@@ -574,6 +671,7 @@
}; };
D569AB8C27B8E27B0013DCFE /* Release */ = { D569AB8C27B8E27B0013DCFE /* Release */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
baseConfigurationReference = B052271505AB519498CE9118 /* Pods-Em-call.release.xcconfig */;
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
......
...@@ -14,8 +14,8 @@ ...@@ -14,8 +14,8 @@
filePath = "Em-call/VC/ElectricTableViewController.swift" filePath = "Em-call/VC/ElectricTableViewController.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "24" startingLineNumber = "26"
endingLineNumber = "24" endingLineNumber = "26"
landmarkName = "viewDidLoad()" landmarkName = "viewDidLoad()"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
...@@ -46,8 +46,8 @@ ...@@ -46,8 +46,8 @@
filePath = "Em-call/VC/MainViewController.swift" filePath = "Em-call/VC/MainViewController.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "143" startingLineNumber = "176"
endingLineNumber = "143" endingLineNumber = "176"
landmarkName = "coordinateToAdress(_:)" landmarkName = "coordinateToAdress(_:)"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
...@@ -62,8 +62,8 @@ ...@@ -62,8 +62,8 @@
filePath = "Em-call/VC/MainViewController.swift" filePath = "Em-call/VC/MainViewController.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "165" startingLineNumber = "198"
endingLineNumber = "165" endingLineNumber = "198"
landmarkName = "coordinateToAdress(_:)" landmarkName = "coordinateToAdress(_:)"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
...@@ -78,57 +78,9 @@ ...@@ -78,57 +78,9 @@
filePath = "Em-call/VC/HandmanViewController.swift" filePath = "Em-call/VC/HandmanViewController.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "142" startingLineNumber = "124"
endingLineNumber = "142" endingLineNumber = "124"
landmarkName = "unknown" landmarkName = "delegateClick(text:)"
landmarkType = "0">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "2F0178FD-D17C-404D-A048-86C57E9CA753"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Em-call/VC/MapViewController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "20"
endingLineNumber = "20"
landmarkName = "pressSavePosition(_:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "EC91741F-175A-4117-8483-DAB78A259AF1"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Em-call/VC/MapViewController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "19"
endingLineNumber = "19"
landmarkName = "pressSavePosition(_:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "0A60EE08-9D08-458E-B85C-B49126BC8FC4"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Em-call/VC/CalendarViewController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "41"
endingLineNumber = "41"
landmarkName = "saveDateTime(_:)"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
</BreakpointProxy> </BreakpointProxy>
...@@ -142,73 +94,10 @@ ...@@ -142,73 +94,10 @@
filePath = "Em-call/VC/HandmanViewController.swift" filePath = "Em-call/VC/HandmanViewController.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "152" startingLineNumber = "133"
endingLineNumber = "152" endingLineNumber = "133"
landmarkName = "HandmanViewController" landmarkName = "calendarDelegateClick(text:flagData:)"
landmarkType = "21">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "2E2A0951-BCEB-45FD-9EA4-AE80301936F1"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Em-call/VC/HandmanViewController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "150"
endingLineNumber = "150"
landmarkName = "delegateClick(text:)"
landmarkType = "7"> landmarkType = "7">
<Locations>
<Location
uuid = "2E2A0951-BCEB-45FD-9EA4-AE80301936F1 - 3f212e95e80c2359"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Em_call.HandmanViewController.calendarDelegateClick(text: Swift.String, flagData: Swift.Int) -&gt; ()"
moduleName = "Em-call"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/alexsh/Documents/GitHub/Em-call/Em-call/VC/HandmanViewController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "169"
endingLineNumber = "169"
offsetFromSymbolStart = "147">
</Location>
<Location
uuid = "2E2A0951-BCEB-45FD-9EA4-AE80301936F1 - 3f212e95e80c2359"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Em_call.HandmanViewController.calendarDelegateClick(text: Swift.String, flagData: Swift.Int) -&gt; ()"
moduleName = "Em-call"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/alexsh/Documents/GitHub/Em-call/Em-call/VC/HandmanViewController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "169"
endingLineNumber = "169"
offsetFromSymbolStart = "216">
</Location>
<Location
uuid = "2E2A0951-BCEB-45FD-9EA4-AE80301936F1 - 3f212e95e80c2359"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Em_call.HandmanViewController.calendarDelegateClick(text: Swift.String, flagData: Swift.Int) -&gt; ()"
moduleName = "Em-call"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/alexsh/Documents/GitHub/Em-call/Em-call/VC/HandmanViewController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "169"
endingLineNumber = "169"
offsetFromSymbolStart = "291">
</Location>
</Locations>
</BreakpointContent> </BreakpointContent>
</BreakpointProxy> </BreakpointProxy>
<BreakpointProxy <BreakpointProxy
...@@ -237,8 +126,8 @@ ...@@ -237,8 +126,8 @@
filePath = "Em-call/VC/CalendarViewController.swift" filePath = "Em-call/VC/CalendarViewController.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "60" startingLineNumber = "52"
endingLineNumber = "60" endingLineNumber = "52"
landmarkName = "saveContact(_:)" landmarkName = "saveContact(_:)"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
...@@ -253,8 +142,8 @@ ...@@ -253,8 +142,8 @@
filePath = "Em-call/VC/CalendarViewController.swift" filePath = "Em-call/VC/CalendarViewController.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "71" startingLineNumber = "63"
endingLineNumber = "71" endingLineNumber = "63"
landmarkName = "saveContact(_:)" landmarkName = "saveContact(_:)"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
...@@ -269,8 +158,8 @@ ...@@ -269,8 +158,8 @@
filePath = "Em-call/VC/CalendarViewController.swift" filePath = "Em-call/VC/CalendarViewController.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "51" startingLineNumber = "43"
endingLineNumber = "51" endingLineNumber = "43"
landmarkName = "saveContact(_:)" landmarkName = "saveContact(_:)"
landmarkType = "7"> landmarkType = "7">
<Locations> <Locations>
...@@ -317,8 +206,8 @@ ...@@ -317,8 +206,8 @@
filePath = "Em-call/VC/MainViewController.swift" filePath = "Em-call/VC/MainViewController.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "81" startingLineNumber = "94"
endingLineNumber = "81" endingLineNumber = "94"
landmarkName = "viewDidLoad()" landmarkName = "viewDidLoad()"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
...@@ -333,8 +222,8 @@ ...@@ -333,8 +222,8 @@
filePath = "Em-call/VC/MainViewController.swift" filePath = "Em-call/VC/MainViewController.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "101" startingLineNumber = "114"
endingLineNumber = "101" endingLineNumber = "114"
landmarkName = "viewDidAppear(_:)" landmarkName = "viewDidAppear(_:)"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
...@@ -349,8 +238,8 @@ ...@@ -349,8 +238,8 @@
filePath = "Em-call/VC/MainViewController.swift" filePath = "Em-call/VC/MainViewController.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "113" startingLineNumber = "126"
endingLineNumber = "113" endingLineNumber = "126"
landmarkName = "viewDidAppear(_:)" landmarkName = "viewDidAppear(_:)"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
...@@ -381,8 +270,8 @@ ...@@ -381,8 +270,8 @@
filePath = "Em-call/VC/CalendarViewController.swift" filePath = "Em-call/VC/CalendarViewController.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "78" startingLineNumber = "70"
endingLineNumber = "78" endingLineNumber = "70"
landmarkName = "saveCard(_:)" landmarkName = "saveCard(_:)"
landmarkType = "7"> landmarkType = "7">
<Locations> <Locations>
...@@ -445,11 +334,27 @@ ...@@ -445,11 +334,27 @@
filePath = "Em-call/VC/ElectricTableViewController.swift" filePath = "Em-call/VC/ElectricTableViewController.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "118" startingLineNumber = "125"
endingLineNumber = "118" endingLineNumber = "125"
landmarkName = "delegateClick(text:)" landmarkName = "delegateClick(text:)"
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
</BreakpointProxy> </BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "E9296A52-0DE7-4D3F-9A38-1D2BE0D3B30F"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Em-call/VC/EmerElecricianViewController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "25"
endingLineNumber = "25"
landmarkName = "viewDidLoad()"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
</Breakpoints> </Breakpoints>
</Bucket> </Bucket>
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<key>Em-call.xcscheme_^#shared#^_</key> <key>Em-call.xcscheme_^#shared#^_</key>
<dict> <dict>
<key>orderHint</key> <key>orderHint</key>
<integer>0</integer> <integer>2</integer>
</dict> </dict>
</dict> </dict>
</dict> </dict>
......
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:Em-call.xcodeproj">
</FileRef>
<FileRef
location = "group:Pods/Pods.xcodeproj">
</FileRef>
</Workspace>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>
<?xml version="1.0" encoding="UTF-8"?>
<Bucket
uuid = "36B04177-EC1E-495D-B423-6BB16AB94928"
type = "0"
version = "2.0">
<Breakpoints>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "287B8158-EC7B-42DB-871B-5AABD7E62668"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Em-call/VC/ProfileViewController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "56"
endingLineNumber = "56"
landmarkName = "imagePickerController(_:didFinishPickingMediaWithInfo:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "928501E6-B75F-4FD2-BD11-2133648FF1DA"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Em-call/VC/ProfileViewController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "58"
endingLineNumber = "58"
landmarkName = "imagePickerController(_:didFinishPickingMediaWithInfo:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "73F5A172-844F-43C4-8089-8E9128A61CBD"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Em-call/Data/netwok.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "97"
endingLineNumber = "97"
landmarkName = "getArray(jsonArray:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "6BD032B4-85AA-4F43-86DB-107CDCDE20BF"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Em-call/Data/netwok.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "98"
endingLineNumber = "98"
landmarkName = "getArray(jsonArray:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "4C70B23B-007E-40A9-912A-BAF4458AA536"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Em-call/Data/netwok.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "80"
endingLineNumber = "80"
landmarkName = "reqPostEnter(phone:code:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "4D94DE62-F43B-4964-AD0C-0F83EB66D8C6"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Em-call/Data/netwok.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "77"
endingLineNumber = "77"
landmarkName = "reqPostEnter(phone:code:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "36CAB662-C551-4132-97C3-FF88146CB3F7"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Em-call/Data/netwok.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "81"
endingLineNumber = "81"
landmarkName = "reqPostEnter(phone:code:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "78523362-FAFD-4DED-8341-14A875DAE412"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Em-call/VC/StartViewController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "39"
endingLineNumber = "39"
landmarkName = "pressEnter(_:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "61557638-FAA5-4C76-85CE-8E55683A260D"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Em-call/VC/PlumbersViewController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "75"
endingLineNumber = "75"
landmarkName = "PlumbersViewController"
landmarkType = "3">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "87CFDADC-E1F7-4635-A386-5BCEB4888BEB"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Em-call/VC/PlumbersViewController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "72"
endingLineNumber = "72"
landmarkName = "PlumbersViewController"
landmarkType = "3">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "E9CD7D6F-E131-43FB-BCBA-2C3051248555"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Em-call/Data/SettingsLauncher.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "96"
endingLineNumber = "96"
landmarkName = "imagePickerController(_:didFinishPickingMediaWithInfo:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "2BCA10DE-E33E-4CA8-B536-B26D5ACBD23C"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Em-call/VC/PlumbersViewController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "191"
endingLineNumber = "191"
landmarkName = "settingsDelegateClick(img:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "961D3D3C-3B31-4E3B-A6DA-64F7E35755EC"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Em-call/VC/MainViewController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "86"
endingLineNumber = "86"
landmarkName = "viewDidLoad()"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "251E8DE0-67D4-4737-A70B-7AE01636479E"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Em-call/VC/MainViewController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "132"
endingLineNumber = "132"
landmarkName = "viewWillAppear(_:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
</Breakpoints>
</Bucket>
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "booking.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "chat.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "edit.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "eva.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "home.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "ico_changepsw.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "ico_logout.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "plus.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "profile.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
This diff is collapsed.
//
// Extensions.swift
// youtube
//
// Created by Brian Voong on 6/3/16.
// Copyright © 2016 letsbuildthatapp. All rights reserved.
//
import UIKit
extension UIColor {
static func rgb(red: CGFloat, green: CGFloat, blue: CGFloat) -> UIColor {
return UIColor(red: red/255, green: green/255, blue: blue/255, alpha: 1)
}
}
extension UIView {
func addConstraintsWithFormat(_ format: String, views: UIView...) {
var viewsDictionary = [String: UIView]()
for (index, view) in views.enumerated() {
let key = "v\(index)"
view.translatesAutoresizingMaskIntoConstraints = false
viewsDictionary[key] = view
}
addConstraints(NSLayoutConstraint.constraints(withVisualFormat: format, options: NSLayoutConstraint.FormatOptions(), metrics: nil, views: viewsDictionary))
}
}
//
// PhotoCellCollectionViewCell.swift
// Em-call
//
// Created by Alex Sh on 06.03.2022.
//
import UIKit
class PhotoCellCollectionViewCell: UICollectionViewCell, UICollectionViewDataSource, UICollectionViewDelegate {
@IBOutlet weak var imageView: UIImageView!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
/* self.itemSize = CGSizeMake(480, 626);
self.minimumInteritemSpacing = 112;
self.minimumLineSpacing = 112;
self.scrollDirection = UICollectionViewScrollDirectionHorizontal;
layout.sectionInset = UIEdgeInsetsMake(0, 272, 0, 272);*/
}
func configure(by image: UIImage, count: Int) {
imageView.image = image
// countLabel.text = "\(count)"
}
var collectionView: UICollectionView?
func initCell () {
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal
layout.sectionInset = UIEdgeInsets(top: 0, left: 27, bottom: 0, right: 27);
var collectionViewBounds = self.bounds
collectionViewBounds.size.height -= 80
collectionViewBounds.origin.y = 40
collectionView = UICollectionView(frame: collectionViewBounds, collectionViewLayout: layout)
collectionView!.dataSource = self
collectionView!.delegate = self
// Setting the collection view's scrolling behaviour
collectionView!.isPagingEnabled = true
collectionView!.isScrollEnabled = true
collectionView!.setContentOffset(CGPoint(x: 0,y: 0), animated: true)
collectionView!.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "cellWithCollectionView")
addSubview(collectionView!)
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 10
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cellWithCollectionView", for: indexPath as IndexPath)
if indexPath.item%2 == 0
{
cell.backgroundColor = .blue
}
else
{
cell.backgroundColor = .white
}
return cell
}
/*
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
{
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("cellWithCollectionView", forIndexPath: indexPath as IndexPath)
if indexPath.item%2 == 0
{
cell.backgroundColor = .blueColor()
}
else
{
cell.backgroundColor = .whiteColor()
}
return cell
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize
{
return CGSizeMake(100, collectionView.frame.height)
}
*/
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat
{
return 10
}
}
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="17506" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<device id="retina6_1" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17505"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" id="gTV-IL-0wX" customClass="PhotoCellCollectionViewCell" customModule="Em_call" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="50" height="50"/>
<autoresizingMask key="autoresizingMask"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="50" height="50"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Cy9-ix-sFS">
<rect key="frame" x="0.0" y="0.0" width="50" height="50"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
</imageView>
</subviews>
</view>
<viewLayoutGuide key="safeArea" id="ZTg-uK-7eu"/>
<connections>
<outlet property="imageView" destination="Cy9-ix-sFS" id="3cz-Gh-V9J"/>
</connections>
<point key="canvasLocation" x="140.57971014492756" y="124.55357142857142"/>
</collectionViewCell>
</objects>
</document>
//
// SettingCell.swift
// youtube
//
// Created by Brian Voong on 6/18/16.
// Copyright © 2016 letsbuildthatapp. All rights reserved.
//
import UIKit
class BaseCell: UICollectionViewCell {
override init(frame: CGRect) {
super.init(frame: frame)
setupViews()
}
func setupViews() {
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
class SettingCell: BaseCell {
override var isHighlighted: Bool {
didSet {
backgroundColor = isHighlighted ? UIColor.darkGray : UIColor.white
nameLabel.textColor = isHighlighted ? UIColor.white : UIColor.black
iconImageView.tintColor = isHighlighted ? UIColor.white : UIColor.darkGray
nameLabel.textAlignment = .center
}
}
var setting: Setting? {
didSet {
nameLabel.text = setting?.name
if let imageName = setting?.imageName {
iconImageView.image = UIImage(named: imageName)?.withRenderingMode(.alwaysTemplate)
iconImageView.tintColor = UIColor.darkGray
}
}
}
let nameLabel: UILabel = {
let label = UILabel()
label.text = "Setting"
label.font = UIFont.systemFont(ofSize: 18)
label.textAlignment = .center
return label
}()
let iconImageView: UIImageView = {
let imageView = UIImageView()
imageView.image = UIImage(named: "settings")
imageView.contentMode = .scaleAspectFill
return imageView
}()
override func setupViews() {
super.setupViews()
addSubview(nameLabel)
addSubview(iconImageView)
addConstraintsWithFormat("H:|-8-[v0(30)]-8-[v1]|", views: iconImageView, nameLabel)
addConstraintsWithFormat("V:|[v0]|", views: nameLabel)
addConstraintsWithFormat("V:[v0(30)]", views: iconImageView)
addConstraint(NSLayoutConstraint(item: iconImageView, attribute: .centerY, relatedBy: .equal, toItem: self, attribute: .centerY, multiplier: 1, constant: 0))
}
}
//
// SettingsLauncher.swift
// youtube
//
// Created by Alex Sh
import UIKit
class Setting: NSObject {
let name: String
let imageName: String
init(name: String, imageName: String) {
self.name = name
self.imageName = imageName
}
}
protocol SettingsLauncherDelegate:class {
func settingsDelegateClick(img: UIImage?)
}
class SettingsLauncher : UIViewController, UITableViewDelegate, UITableViewDataSource, UIImagePickerControllerDelegate, UINavigationControllerDelegate
{
let imagePickerController = UIImagePickerController()
var imgs: [UIImage]? = nil
let blackView = UIView()
weak var delegate:SettingsLauncherDelegate?
var tableView = UITableView()
var navController:UINavigationController? = nil
let cellId = "cellId"
let cellHeight: CGFloat = 50
var imgArray:[UIImage]? = []
func showSettings(navigVC:UINavigationController) {
//show menu
tableView.delegate = self
tableView.dataSource = self
tableView.delegate = self
imagePickerController.delegate = self
imagePickerController.allowsEditing = true
tableView.register(UITableViewCell.self, forCellReuseIdentifier: cellId)
navController = navigVC
if let window = UIApplication.shared.keyWindow {
blackView.backgroundColor = UIColor(white: 0, alpha: 0.5)
blackView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleDismiss)))
window.addSubview(blackView)
self.tableView.layer.cornerRadius = 10
window.addSubview(tableView)
// let height: CGFloat = CGFloat(settings.count) * cellHeight
let height: CGFloat = 200
let yw = window.frame.height - height
tableView.frame = CGRect(x: 10, y: window.frame.height, width: window.frame.width-10, height: height)
blackView.frame = window.frame
blackView.alpha = 0
UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseOut, animations: {
self.blackView.alpha = 1
self.tableView.frame = CGRect(x:10, y: yw, width: self.tableView.frame.width-10, height: self.tableView.frame.height)
self.tableView.layer.cornerRadius = 10
}, completion: nil)
}
}
@objc func handleDismiss() {
UIView.animate(withDuration: 0.5) {
self.blackView.alpha = 0
if let window = UIApplication.shared.keyWindow {
self.tableView.frame = CGRect(x: 10, y: window.frame.height, width: self.tableView.frame.width-10, height: self.tableView.frame.height)
}
}
}
//The delegate UIImagePickerController
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
guard let image = info[.editedImage] as? UIImage
else {
return }
self.delegate?.settingsDelegateClick(img: image)
self.navController?.dismiss(animated: true)
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
// self.navController?.popViewController(animated: true)
self.navController?.dismiss(animated: true, completion: nil)
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// return trackList.count
return 4
}
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}// Default is 1 if not implemented
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath)
let row = indexPath.row
switch row {
case 0: cell.textLabel?.text = "Select source"
case 1: cell.textLabel?.text = "Camera"
case 2: cell.textLabel?.text = "Photogalery"
case 3: cell.textLabel?.text = "Cancel"
default: break
}
// cell.accessoryType = UITableViewCell.AccessoryType.disclosureIndicator
// cell.text.textAlignment = .center
cell.textLabel?.textAlignment = .center
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
/* let storyboard = UIStoryboard(name: "Main", bundle: nil)
var vc:UIViewController
vc = storyboard.instantiateViewController(withIdentifier: "DataProfile")
(vc as! DataProfileViewController).delegate = self
*/
let row = indexPath.row
// navigationController?.pushViewController(vc, animated: true)
switch row //if indexPath.row == 0
{
case 0:
// navigationController?.pushViewController(vc, animated: true)
return
case 1:
self.imagePickerController.sourceType = .camera // options: .Camera , .PhotoLibrary , .SavedPhotosAlbum
self.navController?.present(self.imagePickerController, animated: true, completion: nil)
case 2:
self.imagePickerController.sourceType = .savedPhotosAlbum
self.navController?.present(self.imagePickerController, animated: true, completion: nil)
// self.navController?.pushViewController(self.imagePickerController, animated: true)
case 3:
return
default: return
}
}
}
//
// netwok.swift
// Em-call
//
// Created by Alex Sh on 02.03.2022.
//
import Foundation
import Alamofire
public enum HTTPMethod: String {
case options = "OPTIONS"
case get = "GET"
case head = "HEAD"
case post = "POST"
case put = "PUT"
case patch = "PATCH"
case delete = "DELETE"
case trace = "TRACE"
case connect = "CONNECT"
}
struct Post {
var id: Int
var title: String
var body: String
var userId: Int
}
public typealias HTTPHeaders = [String: String]
public protocol ParameterEncoding {
func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest
/* func request(_: URLConvertible, method: HTTPMethod, parameters: Parameters?, encoding: ParameterEncoding, headers: HTTPHeaders?)*/
}
public typealias Parameters = [String: Any]
class network {
var post:Post = Post(id: 0, title: "https://fixid.zolotoykod.ru", body: "", userId: 0)
var params: [String: Any] = [
"phone": "",
"code": "" ]
var status:Int = 0
/* init?(json: [String: Any]) {
guard
let id = json["id"] as? Int,
let title = json["title"] as? String,
let body = json["body"] as? String,
let userId = json["userId"] as? Int
else {
return nil
}
post.id = id
post.title = title
post.body = body
post.userId = userId
}*/
func reqPostEnter(phone:String,code:String) -> Int {
//вход
//var params: [String: Any]
params["phone"] = phone
params["code"] = code
// var r
request("https://fixid.zolotoykod.ru/applicant-auth/login", method: .post, parameters: params)
// .validate()
.responseJSON { responseJSON in
print(responseJSON)
// return r }
switch responseJSON.result {
case .success(let value):
guard
let jsonObject = value as? [String: Any]
else { return }
let ret = jsonObject["statusCode"]
// self.status = self.getArray( jsonArray: responseJSON) ?? 1
self.status = ret as! Int
// print(post)
case .failure(let error):
print(error)
}
}
return status
}
func getArray( jsonArray: Any) -> Int? {
guard let jsonArray = jsonArray as? Array<[String: Any]> else { return nil }
// var posts: [Post] = []
for jsonObject in jsonArray {
// let json = jsonObject as? [String: Any]
let json = jsonObject
if json["statusCode"] as! Int > 299 {
// if json?["statusCode"] as! Int > 299 {
return 1
}
}
return 0
}
/* static func getArray(from jsonArray: Any) -> [Post]? {
guard let jsonArray = jsonArray as? Array<[String: Any]> else { return nil }
// var posts: [Post] = []
for jsonObject in jsonArray {
// if let post = Post(json: jsonObject) {
// posts.append(post) }
}
return posts
}*/
func reqGet() {
//получение списка заявителей
request("https://fixid.zolotoykod.ru/applicant?offset=0&limit=10").responseJSON { response in
print(response)
}
}
func reqPost() {
//получение списка заявителей
request("https://fixid.zolotoykod.ru/applicant-auth/login").responseJSON { response in
print(response)
}
}
//request(URLConvertible, method: HTTPMethod, parameters: Parameters?, encoding: ParameterEncoding, headers: HTTPHeaders?)
/* func fetchAllRooms(completion: ([RemoteRoom]?) -> Void) {
Alamofire.request(
"https://fixid.zolotoykod.ru/applicant?",
method:.get,
parameters: ["include_docs": "true"],
encoding: JSONEncoding.default)
.validate()
.responseJSON { (response) -> Void in
guard response.result.isSuccess else {
print("Error while fetching remote rooms: \(response.result.error)")
completion(nil)
return
}
guard let value = response.result.value as? [String: AnyObject],
let rows = value["rows"] as? [[String: AnyObject]] else {
print("Malformed data received from fetchAllRooms service")
completion(nil)
return
}
// var rooms = [RemoteRoom]()
// for roomDict in rows { rooms.append(RemoteRoom(jsonData: roomDict)) }
// completion(rooms)
}
}*/
}
...@@ -9,21 +9,90 @@ import UIKit ...@@ -9,21 +9,90 @@ import UIKit
class ChangePswViewController: UIViewController { class ChangePswViewController: UIViewController {
@IBOutlet weak var newPsw: UITextField!
@IBOutlet weak var retryNewPsw: UITextField!
@IBOutlet weak var smsCode: UILabel!
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
// Do any additional setup after loading the view. // Do any additional setup after loading the view.
} }
@IBAction func sendNewPassword(_ sender: Any) {
if newPsw.text == "" || retryNewPsw.text == "" {
DispatchQueue.main.async {
let alert = UIAlertController(title: "Warning", message: "<New Password> or <Retry new password> is empty", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
self.present(alert, animated: true)
}
// _ = self.navigationController?.popViewController( animated: true)
return
}
if newPsw.text == retryNewPsw.text {
// checkTelephone()
let passwrd = newPsw.text ?? ""
if passwrd != "" {
// self.delegate?.registrationDelegateClick(text:passwrd,flagData:1)
DispatchQueue.main.async {
let alert = UIAlertController(title: "Success", message: "Wait Confirmation code", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
self.present(alert, animated: true)
}
}
}
else {
DispatchQueue.main.async {
let alert = UIAlertController(title: "Warning", message: "<New password> does not match <Retry new password>", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
self.present(alert, animated: true)
}
}
}
/* @IBAction func butChangePsw(_ sender: Any) {
// MARK: - Navigation if newPsw.text == "" || retryNewPsw.text == "" {
DispatchQueue.main.async {
let alert = UIAlertController(title: "Warning", message: "<New Password> or <Retry new password> is empty", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
self.present(alert, animated: true)
}
return
}
if newPsw.text == retryNewPsw.text {
// checkTelephone()
let passwrd = newPsw.text ?? ""
if passwrd != "" {
// self.delegate?.registrationDelegateClick(text:passwrd,flagData:1)
DispatchQueue.main.async {
let alert = UIAlertController(title: "Success", message: "Wait Confirmation code", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
self.present(alert, animated: true)
}
}
}
else {
DispatchQueue.main.async {
let alert = UIAlertController(title: "Warning", message: "<New password> does not match <Retry new password>", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
self.present(alert, animated: true)
}
return
}
_ = self.navigationController?.popViewController( animated: true)
}
func sendPswToServer(psw:String) {
}
/* // MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before 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?) { override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destination. // Get the new view controller using segue.destination.
// Pass the selected object to the new view controller. // Pass the selected object to the new view controller.
} } */
*/
} }
...@@ -7,8 +7,19 @@ ...@@ -7,8 +7,19 @@
import UIKit import UIKit
protocol RegistrationViewControllerDelegate:class {
func registrationDelegateClick(text:String,flagData:Int)
}
class RegistrationViewController: UIViewController { class RegistrationViewController: UIViewController {
@IBOutlet weak var password: UITextField!
@IBOutlet weak var confPsw: UITextField!
weak var delegate:RegistrationViewControllerDelegate?
@IBOutlet weak var nameUser: UITextField!
@IBOutlet weak var telephonNumber: UITextField!
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
...@@ -16,14 +27,61 @@ class RegistrationViewController: UIViewController { ...@@ -16,14 +27,61 @@ class RegistrationViewController: UIViewController {
} }
/* @IBAction func butReg(_ sender: Any) {
// MARK: - Navigation if password.text == "" || confPsw.text == "" {
DispatchQueue.main.async {
let alert = UIAlertController(title: "Warning", message: "<Password> or <Confirm password> is empty", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
self.present(alert, animated: true)
}
// _ = self.navigationController?.popViewController( animated: true)
return
}
if nameUser.text == "" || telephonNumber.text == "" {
DispatchQueue.main.async {
let alert = UIAlertController(title: "Warning", message: "<Name> or <Telephone number> is empty", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
self.present(alert, animated: true)
}
return
}
if password.text == confPsw.text {
checkTelephone()
let passwrd = password.text ?? ""
if passwrd != "" {
self.delegate?.registrationDelegateClick(text:passwrd,flagData:1)
// DispatchQueue.main.async {
let alert = UIAlertController(title: "Success", message: "Your registration is complete", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
self.present(alert, animated: true)
// }
}
_ = self.navigationController?.popViewController( animated: true)
}
else {
DispatchQueue.main.async {
// self.showAlert.showAlertSample(title: "Warning",message: "Enter new contact does not match Retry new contact")
let alert = UIAlertController(title: "Warning", message: "<Password> does not match <Confirm password>", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
self.present(alert, animated: true)
}
}
}
func checkTelephone() {
}
func sendData() {
}
/* // MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before 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?) { override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destination. // Get the new view controller using segue.destination.
// Pass the selected object to the new view controller. // Pass the selected object to the new view controller.
} } */
*/
} }
...@@ -2,6 +2,10 @@ ...@@ -2,6 +2,10 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"> <plist version="1.0">
<dict> <dict>
<key>LSApplicationCategoryType</key>
<string></string>
<key>CFBundleDisplayName</key>
<string></string>
<key>CFBundleDevelopmentRegion</key> <key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string> <string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key> <key>CFBundleExecutable</key>
...@@ -61,5 +65,7 @@ ...@@ -61,5 +65,7 @@
<string>UIInterfaceOrientationLandscapeLeft</string> <string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string> <string>UIInterfaceOrientationLandscapeRight</string>
</array> </array>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Maps need your location to show you other users</string>
</dict> </dict>
</plist> </plist>
platform :ios, '11.0'
inhibit_all_warnings!
use_frameworks!
target 'Em-call' do
pod 'Alamofire', '~> 4.9.1'
end
...@@ -31,14 +31,6 @@ class CalendarViewController: UIViewController { ...@@ -31,14 +31,6 @@ class CalendarViewController: UIViewController {
let strDate = dateFormatter.string(from: dateAndTimePicker.date) let strDate = dateFormatter.string(from: dateAndTimePicker.date)
// dateLabel.text = strDate // dateLabel.text = strDate
/* let components = dateAndTimePicker.calendar.dateComponents([.month, .day, .year, .hour, .minute], from: selectedDate)
let day = components.day let month = components.month
let year = components.year let hour = components.hour
let minute = components.minute
let textDateTime:String = String(describing:year) + "/" +
String(describing:month) + "/" + String(describing:day) + " " +
String(describing:hour) + ":" + String(describing:minute) */
// self.delegate?.calendarDelegateClick(text: textDateTime,flagData:0)
self.delegate?.calendarDelegateClick(text: strDate,flagData:0) self.delegate?.calendarDelegateClick(text: strDate,flagData:0)
_ = self.navigationController?.popViewController( animated: true) _ = self.navigationController?.popViewController( animated: true)
......
...@@ -27,7 +27,12 @@ class ChatViewController: UIViewController { ...@@ -27,7 +27,12 @@ class ChatViewController: UIViewController {
print("Click") print("Click")
} }
override func viewWillAppear(_ animated: Bool) {
self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor : UIColor.black]
self.navigationController?.navigationBar.barTintColor = UIColor.white
self.navigationController?.navigationBar.topItem?.title = "CHAT"
self.navigationController?.navigationItem.title = "CHAT"
}
/* /*
// MARK: - Navigation // MARK: - Navigation
......
//
// DataProfileViewController.swift
// Em-call
//
// Created by Alex Sh on 01.03.2022.
//
import UIKit
protocol DataProfileViewControllerDelegate:class {
func dataProfileDelegateClick(text:String,flagData:Int)
}
class DataProfileViewController: UIViewController {
@IBOutlet weak var name: UITextField!
@IBOutlet weak var email: UITextField!
@IBOutlet weak var contact: UITextField!
@IBOutlet weak var payment: UITextField!
weak var delegate:DataProfileViewControllerDelegate?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
@IBAction func saveName(_ sender: Any) {
if name.text == "" {
DispatchQueue.main.async {
let alert = UIAlertController(title: "Warning", message: "<Name> is empty", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
self.present(alert, animated: true)
}
return
}
else {
let sname = name.text ?? " "
self.delegate?.dataProfileDelegateClick(text: sname,flagData:0)
_ = self.navigationController?.popViewController( animated: true)
}
}
@IBAction func saveEMail(_ sender: Any) {
if email.text == "" {
DispatchQueue.main.async {
let alert = UIAlertController(title: "Warning", message: "<E-mail> is empty", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
self.present(alert, animated: true)
}
return
}
else {
let sname = email.text ?? " "
self.delegate?.dataProfileDelegateClick(text: sname,flagData:1)
_ = self.navigationController?.popViewController( animated: true)
}
}
@IBAction func saveContact(_ sender: Any) {
if contact.text == "" {
DispatchQueue.main.async {
let alert = UIAlertController(title: "Warning", message: "<Contact> is empty", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
self.present(alert, animated: true)
}
return
}
else {
let sname = contact.text ?? " "
self.delegate?.dataProfileDelegateClick(text: sname,flagData:2)
_ = self.navigationController?.popViewController( animated: true)
}
}
@IBAction func savePayment(_ sender: Any) {
if payment.text == "" {
DispatchQueue.main.async {
let alert = UIAlertController(title: "Warning", message: "<Payment> is empty", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
self.present(alert, animated: true)
}
return
}
else {
let sname = payment.text ?? " "
self.delegate?.dataProfileDelegateClick(text: sname,flagData:3)
_ = self.navigationController?.popViewController( animated: true)
}
}
/*
// 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.
}
*/
}
...@@ -7,9 +7,11 @@ ...@@ -7,9 +7,11 @@
import UIKit import UIKit
class ElectricTableViewController:UIViewController,UITableViewDataSource, UITableViewDelegate class ElectricTableViewController:UIViewController,UITableViewDataSource, UITableViewDelegate, UITextFieldDelegate
{ {
let trackList = Track.getTrackList() //let trackList = Track.getTrackList()
@IBOutlet weak var descProblem: UITextField!
let cellReuseIdentifier = "cell" let cellReuseIdentifier = "cell"
var address = "Unknow address" var address = "Unknow address"
var dateAndTime = "2022/02/23" var dateAndTime = "2022/02/23"
...@@ -25,6 +27,7 @@ class ElectricTableViewController:UIViewController,UITableViewDataSource, UITabl ...@@ -25,6 +27,7 @@ class ElectricTableViewController:UIViewController,UITableViewDataSource, UITabl
tableView.rowHeight = 65 tableView.rowHeight = 65
tableView.delegate = self tableView.delegate = self
tableView.dataSource = self tableView.dataSource = self
descProblem.delegate = self
} }
@IBAction func BookNowClick(_ sender: Any) { @IBAction func BookNowClick(_ sender: Any) {
...@@ -37,13 +40,17 @@ class ElectricTableViewController:UIViewController,UITableViewDataSource, UITabl ...@@ -37,13 +40,17 @@ class ElectricTableViewController:UIViewController,UITableViewDataSource, UITabl
} }
navigationController?.pushViewController(vc, animated: true) navigationController?.pushViewController(vc, animated: true)
} }
// @IBAction func tapGesture(_ sender: Any) { view.endEditing(true) }
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
descProblem.resignFirstResponder()
}
// MARK: - Table view data source // MARK: - Table view data source
/* /* override func numberOfSections(in tableView: UITableView) -> Int {
override func numberOfSections(in tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections // #warning Incomplete implementation, return the number of sections
return 1 return 1 }*/
}
*/
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
switch section { switch section {
case 0: return 1 case 0: return 1
......
...@@ -7,9 +7,12 @@ ...@@ -7,9 +7,12 @@
import UIKit import UIKit
class EmerElecricianViewController: UIViewController, UITableViewDataSource, class EmerElecricianViewController: UIViewController, UITableViewDataSource, UITableViewDelegate
UITableViewDelegate
{ {
var address = "Unknow address"
var dateAndTime = "2022/02/23"
var contact = "+1 123 112 11 22"
var card = "**** **** **** 1234"
@IBAction func butBackClick(_ sender: Any) { @IBAction func butBackClick(_ sender: Any) {
_ = self.navigationController?.popViewController( animated: true) _ = self.navigationController?.popViewController( animated: true)
...@@ -39,16 +42,37 @@ class EmerElecricianViewController: UIViewController, UITableViewDataSource, ...@@ -39,16 +42,37 @@ class EmerElecricianViewController: UIViewController, UITableViewDataSource,
navigationController?.pushViewController(vc, animated: true) navigationController?.pushViewController(vc, animated: true)
} }
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return trackList.count //return trackList.count
return 1
}
func numberOfSections(in tableView: UITableView) -> Int {
return 4
}// Default is 1 if not implemented
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
switch section {
case 0: return ("Work location")
case 1: return ("Date and Time")
case 2: return ("Your contacts")
case 3: return ("Payment")
default: return ("Work location")
} // return ("Work location")
} }
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: cellReuseIdentifier, for: indexPath) let cell = tableView.dequeueReusableCell(withIdentifier: cellReuseIdentifier, for: indexPath)
let track = trackList[indexPath.row]
cell.textLabel?.text = track.song let section = indexPath.section
cell.detailTextLabel?.text = track.artist switch section {
case 0: cell.textLabel?.text = address
case 1: cell.textLabel?.text = dateAndTime
case 2: cell.textLabel?.text = contact
case 3: cell.textLabel?.text = card
default: break
}
cell.accessoryType = UITableViewCell.AccessoryType.disclosureIndicator cell.accessoryType = UITableViewCell.AccessoryType.disclosureIndicator
return cell return cell
...@@ -60,52 +84,63 @@ class EmerElecricianViewController: UIViewController, UITableViewDataSource, ...@@ -60,52 +84,63 @@ class EmerElecricianViewController: UIViewController, UITableViewDataSource,
let storyboard = UIStoryboard(name: "Main", bundle: nil) let storyboard = UIStoryboard(name: "Main", bundle: nil)
let nameXibName = ["Map","Calendar"] let nameXibName = ["Map","Calendar"]
let vc:UIViewController let vc:UIViewController
// var indexPath = tableView.indexPathForSelectedRow! let section = indexPath.section
// var vc:UIViewController
switch indexPath.row //if indexPath.row == 0 switch section //if indexPath.row == 0
{ {
case 0: case 0:
/* let vc = storyboard.instantiateViewController(identifier: "Map") as! MapViewController*/ /* if #available(iOS 13.0, *) {
if #available(iOS 13.0, *) {
vc = storyboard.instantiateViewController(identifier: nameXibName[indexPath.row]) as! MapViewController vc = storyboard.instantiateViewController(identifier: nameXibName[indexPath.row]) as! MapViewController
} else { } else {*/
vc = storyboard.instantiateViewController(withIdentifier: nameXibName[indexPath.row]) vc = storyboard.instantiateViewController(withIdentifier: nameXibName[0])
// Fallback on earlier versions (vc as! MapViewController).delegate = self
}
// let mapController:MapViewController! = MapViewController() // let mapController:MapViewController! = MapViewController()
navigationController?.pushViewController(vc, animated: true) navigationController?.pushViewController(vc, animated: true)
case 1: case 1:
if #available(iOS 13.0, *) { vc = storyboard.instantiateViewController(withIdentifier: nameXibName[1])
vc = storyboard.instantiateViewController(identifier: nameXibName[indexPath.row]) as! CalendarViewController (vc as! CalendarViewController).delegate = self
} else {
vc = storyboard.instantiateViewController(withIdentifier: nameXibName[indexPath.row])
}
navigationController?.pushViewController(vc, animated: true) navigationController?.pushViewController(vc, animated: true)
case 2: if #available(iOS 13.0, *) { case 2:
vc = storyboard.instantiateViewController(identifier: nameXibName[1]) as! CalendarViewController
} else {
vc = storyboard.instantiateViewController(withIdentifier: nameXibName[1]) vc = storyboard.instantiateViewController(withIdentifier: nameXibName[1])
} (vc as! CalendarViewController).delegate = self
navigationController?.pushViewController(vc, animated: true) navigationController?.pushViewController(vc, animated: true)
case 3: if #available(iOS 13.0, *) { case 3:
vc = storyboard.instantiateViewController(identifier: nameXibName[1]) as! CalendarViewController
} else {
vc = storyboard.instantiateViewController(withIdentifier: nameXibName[1]) vc = storyboard.instantiateViewController(withIdentifier: nameXibName[1])
} (vc as! CalendarViewController).delegate = self
navigationController?.pushViewController(vc, animated: true) navigationController?.pushViewController(vc, animated: true)
default: default:
return return
} }
} } /*
/*
// MARK: - Navigation // MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before 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?) { override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destination. // Get the new view controller using segue.destination. // Pass the selected object to the new view controller.
// Pass the selected object to the new view controller.
} }
*/ */
}
extension EmerElecricianViewController:MapViewControllerDelegate {
func delegateClick(text:String) {
address = text
// NotificationCenter.default.post(name: NSNotification.Name(rawValue: "delegateClick"), object: nil)
tableView.reloadData()
}
}
extension EmerElecricianViewController:CalendarViewControllerDelegate {
func calendarDelegateClick(text:String,flagData:Int) {
switch flagData {
case 0:
dateAndTime = text
case 1:
contact = text
case 2:
card = text
default:
break
}
tableView.reloadData()
}
} }
...@@ -14,11 +14,17 @@ class EmerHandViewController: UIViewController, UITableViewDataSource, ...@@ -14,11 +14,17 @@ class EmerHandViewController: UIViewController, UITableViewDataSource,
@IBOutlet weak var tableView: UITableView! @IBOutlet weak var tableView: UITableView!
let trackList = Track.getTrackList() let trackList = Track.getTrackList()
let cellReuseIdentifier = "cell" let cellReuseIdentifier = "cell"
var address = "Unknow address"
var dateAndTime = "2022/02/23"
var contact = "+1 123 112 11 22"
var card = "**** **** **** 1234"
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
tableView.register(UITableViewCell.self, forCellReuseIdentifier: cellReuseIdentifier) tableView.register(UITableViewCell.self, forCellReuseIdentifier: cellReuseIdentifier)
tableView.rowHeight = 65 tableView.rowHeight = 45
tableView.delegate = self tableView.delegate = self
tableView.dataSource = self tableView.dataSource = self
} }
...@@ -52,59 +58,66 @@ class EmerHandViewController: UIViewController, UITableViewDataSource, ...@@ -52,59 +58,66 @@ class EmerHandViewController: UIViewController, UITableViewDataSource,
} }
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return trackList.count
return 1
}
func numberOfSections(in tableView: UITableView) -> Int {
return 4
}// Default is 1 if not implemented
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
switch section {
case 0: return ("Work location")
case 1: return ("Date and Time")
case 2: return ("Your contacts")
case 3: return ("Payment")
default: return ("Work location")
} // return ("Work location")
} }
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: cellReuseIdentifier, for: indexPath) let cell = tableView.dequeueReusableCell(withIdentifier: cellReuseIdentifier, for: indexPath)
let track = trackList[indexPath.row] //let track = trackList[indexPath.row]
cell.textLabel?.text = track.song let section = indexPath.section
cell.detailTextLabel?.text = track.artist switch section {
case 0: cell.textLabel?.text = address
case 1: cell.textLabel?.text = dateAndTime
case 2: cell.textLabel?.text = contact
case 3: cell.textLabel?.text = card
default: break
}
cell.accessoryType = UITableViewCell.AccessoryType.disclosureIndicator cell.accessoryType = UITableViewCell.AccessoryType.disclosureIndicator
return cell return cell
} }
// method to run when table view cell is tapped // method to run when table view cell is tapped
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("You tapped cell number \(indexPath.row).") print("You tapped cell number \(indexPath.row).")
let storyboard = UIStoryboard(name: "Main", bundle: nil) let storyboard = UIStoryboard(name: "Main", bundle: nil)
let nameXibName = ["Map","Calendar"] let nameXibName = ["Map","Calendar"]
// var indexPath = tableView.indexPathForSelectedRow! let section = indexPath.section
let vc:UIViewController var vc:UIViewController
switch indexPath.row //if indexPath.row == 0 switch section //if indexPath.row == 0
{ {
case 0: case 0:
/* let vc = storyboard.instantiateViewController(identifier: "Map") as! MapViewController*/ vc = storyboard.instantiateViewController(withIdentifier: nameXibName[0])
if #available(iOS 13.0, *) { (vc as! MapViewController).delegate = self
vc = storyboard.instantiateViewController(identifier: nameXibName[indexPath.row]) as! MapViewController navigationController?.pushViewController(vc , animated: true)
} else { return
vc = storyboard.instantiateViewController(withIdentifier: "BookingVK")
}
// let mapController:MapViewController! = MapViewController()
navigationController?.pushViewController(vc, animated: true)
case 1: case 1:
if #available(iOS 13.0, *) { vc = storyboard.instantiateViewController(withIdentifier: nameXibName[1])
vc = storyboard.instantiateViewController(identifier: nameXibName[indexPath.row]) as! CalendarViewController (vc as! CalendarViewController).delegate = self
} else {
vc = storyboard.instantiateViewController(withIdentifier: "BookingVK")
}
navigationController?.pushViewController(vc, animated: true) navigationController?.pushViewController(vc, animated: true)
case 2: if #available(iOS 13.0, *) { return
vc = storyboard.instantiateViewController(identifier: nameXibName[1]) as! CalendarViewController case 2:
} else {
vc = storyboard.instantiateViewController(withIdentifier: nameXibName[1]) vc = storyboard.instantiateViewController(withIdentifier: nameXibName[1])
} (vc as! CalendarViewController).delegate = self
navigationController?.pushViewController(vc, animated: true) navigationController?.pushViewController(vc, animated: true)
case 3: if #available(iOS 13.0, *) { case 3:
vc = storyboard.instantiateViewController(identifier: nameXibName[1]) as! CalendarViewController
} else {
vc = storyboard.instantiateViewController(withIdentifier: nameXibName[1]) vc = storyboard.instantiateViewController(withIdentifier: nameXibName[1])
} (vc as! CalendarViewController).delegate = self
navigationController?.pushViewController(vc, animated: true) navigationController?.pushViewController(vc, animated: true)
default: return
default:
return
} }
} }
/* /*
...@@ -118,3 +131,28 @@ class EmerHandViewController: UIViewController, UITableViewDataSource, ...@@ -118,3 +131,28 @@ class EmerHandViewController: UIViewController, UITableViewDataSource,
*/ */
} }
extension EmerHandViewController:MapViewControllerDelegate {
func delegateClick(text:String) {
address = text
// NotificationCenter.default.post(name: NSNotification.Name(rawValue: "delegateClick"), object: nil)
tableView.reloadData()
}
}
extension EmerHandViewController:CalendarViewControllerDelegate {
func calendarDelegateClick(text:String,flagData:Int) {
switch flagData {
case 0:
dateAndTime = text
case 1:
contact = text
case 2:
card = text
default:
break
}
tableView.reloadData()
}
}
...@@ -15,6 +15,7 @@ class HandmanViewController: UIViewController, UITableViewDataSource, ...@@ -15,6 +15,7 @@ class HandmanViewController: UIViewController, UITableViewDataSource,
@IBOutlet weak var tableView: UITableView! @IBOutlet weak var tableView: UITableView!
@IBOutlet weak var descProblem: UITextField!
@IBOutlet weak var addr: UILabel! @IBOutlet weak var addr: UILabel!
//let trackList = Track.getTrackList() //let trackList = Track.getTrackList()
let cellReuseIdentifier = "cell" let cellReuseIdentifier = "cell"
...@@ -27,7 +28,7 @@ class HandmanViewController: UIViewController, UITableViewDataSource, ...@@ -27,7 +28,7 @@ class HandmanViewController: UIViewController, UITableViewDataSource,
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
tableView.register(UITableViewCell.self, forCellReuseIdentifier: cellReuseIdentifier) tableView.register(UITableViewCell.self, forCellReuseIdentifier: cellReuseIdentifier)
tableView.rowHeight = 65 tableView.rowHeight = 45
tableView.delegate = self tableView.delegate = self
tableView.dataSource = self tableView.dataSource = self
} }
...@@ -44,8 +45,12 @@ class HandmanViewController: UIViewController, UITableViewDataSource, ...@@ -44,8 +45,12 @@ class HandmanViewController: UIViewController, UITableViewDataSource,
navigationController?.pushViewController(vc, animated: true) navigationController?.pushViewController(vc, animated: true)
} }
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { // @IBAction func tapGesture(_ sender: Any) {view.endEditing(true) }
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
descProblem.resignFirstResponder()
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1 return 1
} }
...@@ -87,55 +92,32 @@ class HandmanViewController: UIViewController, UITableViewDataSource, ...@@ -87,55 +92,32 @@ class HandmanViewController: UIViewController, UITableViewDataSource,
var vc:UIViewController var vc:UIViewController
switch section //if indexPath.row == 0 switch section //if indexPath.row == 0
{ {
case 0: /* let vc = storyboard.instantiateViewController(identifier: "Map") as! MapViewController*/ case 0: vc = storyboard.instantiateViewController(withIdentifier: nameXibName[0])
/* if #available(iOS 13.0, *) {
vc = storyboard.instantiateViewController(identifier: nameXibName[0]) as! MapViewController
} else {*/
vc = storyboard.instantiateViewController(withIdentifier: nameXibName[0])
// } // (vc as! MapViewController).delegate = self
// if vc != nil {
(vc as! MapViewController).delegate = self (vc as! MapViewController).delegate = self
navigationController?.pushViewController(vc , animated: true) navigationController?.pushViewController(vc , animated: true)
// } case 1: vc = storyboard.instantiateViewController(withIdentifier: nameXibName[1])
return
case 1:
/* if #available(iOS 13.0, *) {
vc = storyboard.instantiateViewController(identifier: nameXibName[1]) as! CalendarViewController
} else {*/
vc = storyboard.instantiateViewController(withIdentifier: nameXibName[1])
// }
(vc as! CalendarViewController).delegate = self (vc as! CalendarViewController).delegate = self
navigationController?.pushViewController(vc, animated: true) navigationController?.pushViewController(vc , animated: true)
return case 2:
case 2: /* if #available(iOS 13.0, *) {
vc = storyboard.instantiateViewController(identifier: nameXibName[1]) as! CalendarViewController
} else {*/
vc = storyboard.instantiateViewController(withIdentifier: nameXibName[1]) vc = storyboard.instantiateViewController(withIdentifier: nameXibName[1])
// }
(vc as! CalendarViewController).delegate = self (vc as! CalendarViewController).delegate = self
navigationController?.pushViewController(vc, animated: true) navigationController?.pushViewController(vc , animated: true)
case 3: /* if #available(iOS 13.0, *) { case 3:
vc = storyboard.instantiateViewController(identifier: nameXibName[1]) as! CalendarViewController
} else {*/
vc = storyboard.instantiateViewController(withIdentifier: nameXibName[1]) vc = storyboard.instantiateViewController(withIdentifier: nameXibName[1])
// }
(vc as! CalendarViewController).delegate = self (vc as! CalendarViewController).delegate = self
navigationController?.pushViewController(vc, animated: true) navigationController?.pushViewController(vc , animated: true)
default: return default: return
} }
} }
} }
/* /*// MARK: - Navigation
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before 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?) { override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destination. // Get the new view controller using segue.destination.
// Pass the selected object to the new view controller. // Pass the selected object to the new view controller.
} }*/
*/
extension HandmanViewController:MapViewControllerDelegate { extension HandmanViewController:MapViewControllerDelegate {
func delegateClick(text:String) { func delegateClick(text:String) {
...@@ -146,7 +128,6 @@ extension HandmanViewController:MapViewControllerDelegate { ...@@ -146,7 +128,6 @@ extension HandmanViewController:MapViewControllerDelegate {
} }
extension HandmanViewController:CalendarViewControllerDelegate { extension HandmanViewController:CalendarViewControllerDelegate {
func calendarDelegateClick(text:String,flagData:Int) { func calendarDelegateClick(text:String,flagData:Int) {
switch flagData { switch flagData {
case 0: case 0:
dateAndTime = text dateAndTime = text
...@@ -159,5 +140,4 @@ extension HandmanViewController:CalendarViewControllerDelegate { ...@@ -159,5 +140,4 @@ extension HandmanViewController:CalendarViewControllerDelegate {
} }
tableView.reloadData() tableView.reloadData()
} }
} }
...@@ -12,7 +12,7 @@ import MapKit ...@@ -12,7 +12,7 @@ import MapKit
class MainViewController: UIViewController, UITextFieldDelegate //, CLLocationManagerDelegate class MainViewController: UIViewController, UITextFieldDelegate //, CLLocationManagerDelegate
{ {
@IBOutlet weak var text_Location: UITextField! @IBOutlet weak var text_Location: UITextField!
var count:Int = 0
var showAlert:ShowAlert = ShowAlert() var showAlert:ShowAlert = ShowAlert()
@IBOutlet weak var mapView: MKMapView! @IBOutlet weak var mapView: MKMapView!
//let locationManager = LocationMng(mainView:self) //let locationManager = LocationMng(mainView:self)
...@@ -39,8 +39,12 @@ class MainViewController: UIViewController, UITextFieldDelegate //, CLLocationM ...@@ -39,8 +39,12 @@ class MainViewController: UIViewController, UITextFieldDelegate //, CLLocationM
buttonEmergency.isHidden = false buttonEmergency.isHidden = false
//self.View = UIView() //self.View = UIView()
self.view.isOpaque = false // сообщаем системе что myView будет иметь полупрозрачные нарисованные элементы self.view.isOpaque = false // сообщаем системе что myView будет иметь полупрозрачные нарисованные элементы
count = count + 1
if count%2 == 1 {
self.view.alpha = 0.7 // прозрачность всего UIView self.view.alpha = 0.7 // прозрачность всего UIView
} else {
self.view.alpha = 1.0
}
/* let detailsWidth: CGFloat = view.bounds.width /* let detailsWidth: CGFloat = view.bounds.width
let detailsHeight: CGFloat = view.bounds.height - 100 let detailsHeight: CGFloat = view.bounds.height - 100
let detailsViewFrame: CGRect = CGRect(x: 0, let detailsViewFrame: CGRect = CGRect(x: 0,
...@@ -77,7 +81,16 @@ class MainViewController: UIViewController, UITextFieldDelegate //, CLLocationM ...@@ -77,7 +81,16 @@ class MainViewController: UIViewController, UITextFieldDelegate //, CLLocationM
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
// setupBackButton()
// self.navigationItem.titleView?.isHidden = false
self.title = "LOGO"
self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor : UIColor.white]
self.navigationController?.navigationBar.barTintColor = UIColor.black
self.navigationItem.title = "LOGO"
//London coordinates //London coordinates
self.navigationController?.navigationBar.topItem?.title = "Logo"
self.navigationController?.navigationItem.title = "Logo"
let initialLocation = CLLocation(latitude: 51.509865, longitude: -0.118092) let initialLocation = CLLocation(latitude: 51.509865, longitude: -0.118092)
mapView.centerToLocation(initialLocation) mapView.centerToLocation(initialLocation)
buttonEmergency.isHidden = false buttonEmergency.isHidden = false
...@@ -115,6 +128,23 @@ class MainViewController: UIViewController, UITextFieldDelegate //, CLLocationM ...@@ -115,6 +128,23 @@ class MainViewController: UIViewController, UITextFieldDelegate //, CLLocationM
} }
override func viewWillAppear(_ animated: Bool) {
self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor : UIColor.white]
self.navigationController?.navigationBar.barTintColor = UIColor.black
self.navigationController?.navigationBar.topItem?.title = "LOGO"
self.navigationController?.navigationItem.title = "LOGO"
}
override func viewWillDisappear(_ animated: Bool) {
self.view.alpha = 1.0
count = 0
}
func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
let item = UIBarButtonItem(title: "LOGO", style: .plain, target: nil, action: nil)
viewController.navigationItem.backBarButtonItem = item
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool { func textFieldShouldReturn(_ textField: UITextField) -> Bool {
text_Location.resignFirstResponder() text_Location.resignFirstResponder()
} }
...@@ -136,6 +166,9 @@ class MainViewController: UIViewController, UITextFieldDelegate //, CLLocationM ...@@ -136,6 +166,9 @@ class MainViewController: UIViewController, UITextFieldDelegate //, CLLocationM
return pinView! return pinView!
} }
@IBAction func tapGesture(_ sender: Any) {
view.endEditing(true)
}
// Преобразуем координаты в Адрес // Преобразуем координаты в Адрес
func coordinateToAdress(_ locations: CLLocation) { func coordinateToAdress(_ locations: CLLocation) {
CLGeocoder().reverseGeocodeLocation(locations /*.last!*/) { (placemarks, error) in CLGeocoder().reverseGeocodeLocation(locations /*.last!*/) { (placemarks, error) in
...@@ -194,8 +227,13 @@ class MainViewController: UIViewController, UITextFieldDelegate //, CLLocationM ...@@ -194,8 +227,13 @@ class MainViewController: UIViewController, UITextFieldDelegate //, CLLocationM
} }
} }
} }
/*
extension UIViewController {
func setupBackButton() {
let customBackButton = UIBarButtonItem(title: " ", style: .plain, target: nil, action: nil)
navigationItem.backBarButtonItem = customBackButton
}}
*/
private extension MKMapView { private extension MKMapView {
func centerToLocation( func centerToLocation(
_ location: CLLocation, _ location: CLLocation,
......
...@@ -112,17 +112,12 @@ self.textLocation.text = city + " , " + street + " , " + subLocality ...@@ -112,17 +112,12 @@ self.textLocation.text = city + " , " + street + " , " + subLocality
} }
} }
/* /* // MARK: - Navigation
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before 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?) { override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destination. // Get the new view controller using segue.destination.
// Pass the selected object to the new view controller. // Pass the selected object to the new view controller.
} } */
*/
} }
private extension MKMapView { private extension MKMapView {
func centerToLocation( func centerToLocation(
......
...@@ -11,22 +11,25 @@ import UIKit ...@@ -11,22 +11,25 @@ import UIKit
class PlumViewController: UIViewController, UITableViewDataSource, class PlumViewController: UIViewController, UITableViewDataSource,
UITableViewDelegate UITableViewDelegate
{ {
let trackList = Track.getTrackList() // let trackList = Track.getTrackList()
let cellReuseIdentifier = "cell" let cellReuseIdentifier = "cell"
var address = "Unknow address"
var dateAndTime = "2022/02/23"
var contact = "+1 123 112 11 22"
var card = "**** **** **** 1234"
@IBOutlet weak var tableView: UITableView! @IBOutlet weak var tableView: UITableView!
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
tableView.register(UITableViewCell.self, forCellReuseIdentifier: cellReuseIdentifier) tableView.register(UITableViewCell.self, forCellReuseIdentifier: cellReuseIdentifier)
tableView.rowHeight = 65 tableView.rowHeight = 45
tableView.delegate = self tableView.delegate = self
tableView.dataSource = self tableView.dataSource = self
} }
@IBAction func BOOK_Click(_ sender: Any) { @IBAction func BOOK_Click(_ sender: Any) {
let storyboard = UIStoryboard(name: "Main", bundle: nil) let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc:UIViewController let vc:UIViewController
...@@ -39,17 +42,38 @@ class PlumViewController: UIViewController, UITableViewDataSource, ...@@ -39,17 +42,38 @@ class PlumViewController: UIViewController, UITableViewDataSource,
navigationController?.pushViewController(vc, animated: true) navigationController?.pushViewController(vc, animated: true)
} }
// @IBAction func tapGesture(_ sender: Any) { view.endEditing(true) }
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return trackList.count // return trackList.count
return 1
}
func numberOfSections(in tableView: UITableView) -> Int {
return 4
}// Default is 1 if not implemented
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
switch section {
case 0: return ("Work location")
case 1: return ("Date and Time")
case 2: return ("Your contacts")
case 3: return ("Payment")
default: return ("Work location")
} // return ("Work location")
} }
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: cellReuseIdentifier, for: indexPath) let cell = tableView.dequeueReusableCell(withIdentifier: cellReuseIdentifier, for: indexPath)
// as! TableViewCell let section = indexPath.section
let track = trackList[indexPath.row] switch section {
case 0: cell.textLabel?.text = address
cell.textLabel?.text = track.song case 1: cell.textLabel?.text = dateAndTime
cell.detailTextLabel?.text = track.artist case 2: cell.textLabel?.text = contact
case 3: cell.textLabel?.text = card
default: break
}
cell.accessoryType = UITableViewCell.AccessoryType.disclosureIndicator cell.accessoryType = UITableViewCell.AccessoryType.disclosureIndicator
// } // }
...@@ -65,30 +89,55 @@ class PlumViewController: UIViewController, UITableViewDataSource, ...@@ -65,30 +89,55 @@ class PlumViewController: UIViewController, UITableViewDataSource,
let nameXibName = ["Map","Calendar"] let nameXibName = ["Map","Calendar"]
// var indexPath = tableView.indexPathForSelectedRow! // var indexPath = tableView.indexPathForSelectedRow!
let vc:UIViewController let vc:UIViewController
switch indexPath.row //if indexPath.row == 0 switch indexPath.section //if indexPath.row == 0
{ {
case 0: case 0:
/* let vc = storyboard.instantiateViewController(identifier: "Map") as! MapViewController*/ vc = storyboard.instantiateViewController(withIdentifier: nameXibName[0])
if #available(iOS 13.0, *) { (vc as! MapViewController).delegate = self
vc = storyboard.instantiateViewController(identifier: nameXibName[indexPath.row]) as! MapViewController // navigationController?.pushViewController(vc, animated: true)
} else {
vc = storyboard.instantiateViewController(withIdentifier: nameXibName[indexPath.row])
// Fallback on earlier versions
}
// let mapController:MapViewController! = MapViewController()
navigationController?.pushViewController(vc, animated: true)
case 1: case 1:
let vc = storyboard.instantiateViewController(withIdentifier: nameXibName[indexPath.row]) as! CalendarViewController vc = storyboard.instantiateViewController(withIdentifier: nameXibName[1])
navigationController?.pushViewController(vc, animated: true) (vc as! CalendarViewController).delegate = self
case 2: let vc = storyboard.instantiateViewController(withIdentifier: nameXibName[1]) as! CalendarViewController // navigationController?.pushViewController(vc, animated: true)
navigationController?.pushViewController(vc, animated: true) case 2:
case 3: let vc = storyboard.instantiateViewController(withIdentifier: nameXibName[1]) as! CalendarViewController vc = storyboard.instantiateViewController(withIdentifier: nameXibName[1])
navigationController?.pushViewController(vc, animated: true) (vc as! CalendarViewController).delegate = self
// navigationController?.pushViewController(vc, animated: true)
case 3:
vc = storyboard.instantiateViewController(withIdentifier: nameXibName[1])
(vc as! CalendarViewController).delegate = self
// navigationController?.pushViewController(vc, animated: true)
default: default:
return return
} }
navigationController?.pushViewController(vc, animated: true)
} }
} }
extension PlumViewController:MapViewControllerDelegate {
func delegateClick(text:String) {
address = text
// NotificationCenter.default.post(name: NSNotification.Name(rawValue: "delegateClick"), object: nil)
tableView.reloadData()
}
}
extension PlumViewController:CalendarViewControllerDelegate {
func calendarDelegateClick(text:String,flagData:Int) {
switch flagData {
case 0:
dateAndTime = text
case 1:
contact = text
case 2:
card = text
default:
break
}
tableView.reloadData()
}
}
...@@ -7,25 +7,84 @@ ...@@ -7,25 +7,84 @@
import UIKit import UIKit
class PlumbersViewController: UIViewController,UITableViewDataSource, UITableViewDelegate {
let trackList = Track.getTrackList()
class PlumbersViewController: UIViewController,UITableViewDataSource, UITableViewDelegate, UITextFieldDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate
{
var settingsLauncher:SettingsLauncher = SettingsLauncher()
@IBOutlet weak var tabBar: UITabBar!
var isfirstTimeTransform:Bool = true;
var TRANSFORM_CELL_VALUE = CGAffineTransform(scaleX: 0.8, y: 0.8)
let ANIMATION_SPEED = 0.2
@IBOutlet weak var descProblem: UITextField!
// let imagePickerController = UIImagePickerController()
let cellReuseIdentifier = "cell" let cellReuseIdentifier = "cell"
var address = "Unknow address" var address = "Unknow address"
var dateAndTime = "2022/02/23" var dateAndTime = "2022/02/23"
var contact = "+1 123 112 11 22" var contact = "+1 123 112 11 22"
var card = "**** **** **** 1234" var card = "**** **** **** 1234"
private var images = [UIImage(named: "plus")!]
@IBOutlet weak var collectionView: UICollectionView!{
didSet {
collectionView.delegate = self
collectionView.dataSource = self
collectionView.register(UINib.init(nibName: "PhotoCellCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "photoCell")
collectionView.backgroundColor = .clear
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal
collectionView.isPagingEnabled = true
collectionView.isScrollEnabled = true
collectionView.setContentOffset(CGPoint(x: 0,y: 0), animated: true)
}
}
@IBOutlet weak var tableView: UITableView! @IBOutlet weak var tableView: UITableView!
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
// imagePickerController.delegate = self
self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: cellReuseIdentifier) self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: cellReuseIdentifier)
tableView.rowHeight = 65 tableView.rowHeight = 65
tableView.delegate = self tableView.delegate = self
tableView.dataSource = self tableView.dataSource = self
descProblem.delegate = self
settingsLauncher.delegate = self
/*
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal
featuredVideos = UICollectionView(frame: UIScreen.mainScreen().bounds, collectionViewLayout: layout)
collectionView!.setContentOffset(CGPoint(x: 0,y: 0), animated: true)
featuredVideos!.registerClass(CollectionViewCell.self, forCellWithReuseIdentifier: "cellId")
view.addSubview(featuredVideos!)*/
}
@IBAction func pressAddPhoto(_ sender: Any) {
guard let navVC = self.navigationController
else { return }
settingsLauncher.showSettings(navigVC: navVC)
}
//The delegate UIImagePickerController
/* func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
guard let image = info[.editedImage] as? UIImage
else {
return }
images.append(image)
collectionView.reloadData()
dismiss(animated: true)
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
self.dismiss(animated: true, completion: nil)
}
func getDocumentsDirectory() -> URL {
let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
return paths[0]
} }
*/
@IBAction func BOOK_NOW_Click(_ sender: Any) { @IBAction func BOOK_NOW_Click(_ sender: Any) {
let storyboard = UIStoryboard(name: "Main", bundle: nil) let storyboard = UIStoryboard(name: "Main", bundle: nil)
...@@ -37,6 +96,13 @@ class PlumbersViewController: UIViewController,UITableViewDataSource, UITableVie ...@@ -37,6 +96,13 @@ class PlumbersViewController: UIViewController,UITableViewDataSource, UITableVie
} }
navigationController?.pushViewController(vc, animated: true) navigationController?.pushViewController(vc, animated: true)
} }
// @IBAction func tapGesture(_ sender: Any) {view.endEditing(true) }
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
descProblem.resignFirstResponder()
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1 return 1
} }
...@@ -118,5 +184,97 @@ extension PlumbersViewController:CalendarViewControllerDelegate { ...@@ -118,5 +184,97 @@ extension PlumbersViewController:CalendarViewControllerDelegate {
} }
tableView.reloadData() tableView.reloadData()
} }
}
//
extension PlumbersViewController:SettingsLauncherDelegate {
func settingsDelegateClick(img: UIImage?) {
if img != nil {
images.append(img!)
}
collectionView.reloadData()
}
}
extension PlumbersViewController: UICollectionViewDelegate, UICollectionViewDataSource {
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return images.count
//return 4
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "photoCell", for: indexPath) as! PhotoCellCollectionViewCell
let image = images[indexPath.row]
cell.configure(by: image, count: indexPath.row + 1)
if (indexPath.row == 0 && isfirstTimeTransform) { // make a bool and set YES initially, this check will prevent fist load transform
isfirstTimeTransform = false;
}else{
cell.transform = TRANSFORM_CELL_VALUE; // the new cell will always be transform and without animation
}
return cell
}
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint,
targetContentOffset: UnsafeMutablePointer<CGPoint>) {
//minimumLineSpacing and insetForSection are two constants in my code
//this cell width is for my case, adapt to yours
let cellItemWidth = view.frame.width - (10)
// let cellItemWidth = view.frame.width - (insetForSection.left + insetForSection.right)
let pageWidth = Float(cellItemWidth + 5)
// let pageWidth = Float(cellItemWidth + minimumLineSpacing)
let offsetXAfterDragging = Float(scrollView.contentOffset.x)
let targetOffsetX = Float(targetContentOffset.pointee.x)
let pagesCountForOffset = pagesCount(forOffset: offsetXAfterDragging, withTargetOffset: targetOffsetX, pageWidth: pageWidth)
var newTargetOffsetX = pagesCountForOffset * pageWidth
keepNewTargetInBounds(&newTargetOffsetX, scrollView)
//ignore target
targetContentOffset.pointee.x = CGFloat(offsetXAfterDragging)
let newTargetPoint = CGPoint(x: CGFloat(newTargetOffsetX), y: scrollView.contentOffset.y)
scrollView.setContentOffset(newTargetPoint, animated: true)
//if you're using pageControl
// pageControl.currentPage = Int(newTargetOffsetX / pageWidth)
}
fileprivate func pagesCount(forOffset offset: Float, withTargetOffset targetOffset: Float, pageWidth: Float) -> Float {
let isRightDirection = targetOffset > offset
let roundFunction = isRightDirection ? ceilf : floorf
let pagesCountForOffset = roundFunction(offset / pageWidth)
return pagesCountForOffset
}
fileprivate func keepNewTargetInBounds(_ newTargetOffsetX: inout Float, _ scrollView: UIScrollView) {
if newTargetOffsetX < 0 { newTargetOffsetX = 0 }
let contentSizeWidth = Float(scrollView.contentSize.width)
if newTargetOffsetX > contentSizeWidth { newTargetOffsetX = contentSizeWidth }
}
}
extension PlumbersViewController: UICollectionViewDelegateFlowLayout {
/* func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: view.frame.width/3, height: view.frame.width/3)
}
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 0
}
*/
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
return 2
}
} }
//
// ProfileViewController.swift
// Em-call
//
// Created by Alex Sh on 01.03.2022.
//
import UIKit
class ProfileViewController: UIViewController,UITableViewDataSource, UITableViewDelegate,
UIImagePickerControllerDelegate, UINavigationControllerDelegate
{
let cellReuseIdentifier = "cell"
var name = "Any name"
var email = "e_mail@server.en"
var contact = "+1 123 112 11 22"
var card = "**** **** **** 1234"
let imagePickerController = UIImagePickerController()
@IBOutlet weak var roundImage: UIImageView!
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
imagePickerController.delegate = self
imagePickerController.allowsEditing = true
tableView.register(UITableViewCell.self, forCellReuseIdentifier: cellReuseIdentifier)
tableView.rowHeight = 45
tableView.delegate = self
tableView.dataSource = self
// Do any additional setup after loading the view.
}
override func viewWillAppear(_ animated: Bool) {
self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor : UIColor.black]
self.navigationController?.navigationBar.barTintColor = UIColor.white
self.navigationController?.navigationBar.topItem?.title = "PROFILE"
self.navigationController?.navigationItem.title = "PROFILE"
}
@IBAction func pressChangePsw(_ sender: Any) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
var vc:UIViewController
vc = storyboard.instantiateViewController(withIdentifier: "ChangePswd")
navigationController?.pushViewController(vc, animated: true)
}
@IBAction func pressImagePicker(_ sender: Any) {
self.imagePickerController.sourceType = .savedPhotosAlbum // options: .Camera , .PhotoLibrary , .SavedPhotosAlbum
self.present(self.imagePickerController, animated: true, completion: nil)
}
//The delegate UIImagePickerController
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
guard let image = info[.editedImage] as? UIImage
else {
return }
roundImage.image = image
roundImage.layer.cornerRadius = 30
// let imageName = UUID().uuidString
// let imagePath = getDocumentsDirectory().appendingPathComponent(imageName)
// if let jpegData = image.jpegData(compressionQuality: 0.8) {
// try? jpegData.write(to: imagePath)
// }
dismiss(animated: true)
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
self.dismiss(animated: true, completion: nil)
}
func getDocumentsDirectory() -> URL {
let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
return paths[0]
}
func numberOfSections(in tableView: UITableView) -> Int {
return 4
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
switch section {
case 0: return 1
case 1: return 1
case 2: return 1
case 3: return 1
// case 5: return 2
default: return 1
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: cellReuseIdentifier, for: indexPath)
//let track = trackList[indexPath.row]
let section = indexPath.section
switch section {
// case 0: cell.textLabel?.text = ""
// return cell
case 0: cell.textLabel?.text = name
case 1: cell.textLabel?.text = email
case 2: cell.textLabel?.text = contact
case 3: cell.textLabel?.text = card
default: break
}
cell.accessoryType = UITableViewCell.AccessoryType.disclosureIndicator
return cell
}
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
// let rets:String? = mainTable.tableView(tableView, titleForHeaderInSection: section)
// return rets!
switch section {
// case 0: return ("")
// return ("ico")
case 0: return ("Name")
case 1: return ("Your e-mail")
case 2: return ("Your contacts")
case 3: return ("Payment")
default: return ("Work location")
} // return ("Work location")
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
var vc:UIViewController
vc = storyboard.instantiateViewController(withIdentifier: "DataProfile")
(vc as! DataProfileViewController).delegate = self
/// let nameXibName = ["Map","Calendar"]
// let section = indexPath.section
navigationController?.pushViewController(vc, animated: true)
/* switch section //if indexPath.row == 0
{
case 0:
navigationController?.pushViewController(vc, animated: true)
return
case 1:
navigationController?.pushViewController(vc, animated: true)
case 2:
navigationController?.pushViewController(vc, animated: true)
case 3:
navigationController?.pushViewController(vc, animated: true)
default: return
}*/
}
/*
// 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.
}
*/
}
/*extension ProfileViewController:MapViewControllerDelegate {
func delegateClick(text:String) {
address = text
// NotificationCenter.default.post(name: NSNotification.Name(rawValue: "delegateClick"), object: nil)
tableView.reloadData()
}
}*/
extension ProfileViewController:DataProfileViewControllerDelegate {
func dataProfileDelegateClick(text:String,flagData:Int) {
switch flagData {
case 0:
name = text
case 1:
email = text
case 2:
contact = text
case 3:
card = text
default:
break
}
tableView.reloadData()
}
}
...@@ -8,13 +8,53 @@ ...@@ -8,13 +8,53 @@
import UIKit import UIKit
class StartViewController: UIViewController { class StartViewController: UIViewController {
var net:network = network()
var showAlert:ShowAlert=ShowAlert()
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
// Do any additional setup after loading the view. // Do any additional setup after loading the view.
} }
@IBOutlet weak var teleNumber: UITextField!
@IBOutlet weak var password: UITextField!
@IBAction func pressEnter(_ sender: Any) {
if let number = teleNumber.text,
let psw = password.text {
if number == "" || psw == ""{
DispatchQueue.main.async {
let alert = UIAlertController(title: "Warning", message: "<Phone> or <Password> is empty", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
self.present(alert, animated: true)
}
return
}
//debug
let storyboard = UIStoryboard(name: "Main", bundle: nil)
var vc:UIViewController
vc = storyboard.instantiateViewController(withIdentifier: "TabBar")
navigationController?.pushViewController(vc, animated: true)
/*
let status = net.reqPostEnter(phone: number,code: psw)
if (status > 299) //|| (status == 0)
{
// showAlert.showAlertSample(title: "Warning", message: "Error!")
DispatchQueue.main.async {
let alert = UIAlertController(title: "Warning", message: "<Phone> is empty", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
self.present(alert, animated: true)
}
} else {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
var vc:UIViewController
vc = storyboard.instantiateViewController(withIdentifier: "TabBar")
navigationController?.pushViewController(vc, animated: true)
}
*/
}
}
/* /*
// MARK: - Navigation // MARK: - Navigation
......
...@@ -22,6 +22,7 @@ class VKBookingViewController: UIViewController,UITableViewDataSource, UITableVi ...@@ -22,6 +22,7 @@ class VKBookingViewController: UIViewController,UITableViewDataSource, UITableVi
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
self.navigationItem.title = "BOOKING"
segmentControl.addTarget(self, action: #selector(segmentAction(_:)), for: .valueChanged) segmentControl.addTarget(self, action: #selector(segmentAction(_:)), for: .valueChanged)
self.tableViewWork.register(UITableViewCell.self, forCellReuseIdentifier: cellReuseIdentifier) self.tableViewWork.register(UITableViewCell.self, forCellReuseIdentifier: cellReuseIdentifier)
tableViewWork.rowHeight = 60 tableViewWork.rowHeight = 60
...@@ -32,6 +33,13 @@ class VKBookingViewController: UIViewController,UITableViewDataSource, UITableVi ...@@ -32,6 +33,13 @@ class VKBookingViewController: UIViewController,UITableViewDataSource, UITableVi
// self.title = "Booking" // self.title = "Booking"
} }
override func viewWillAppear(_ animated: Bool) {
self.navigationController?.navigationBar.topItem?.title = "BOOKING"
self.navigationController?.navigationItem.title = "BOOKING"
self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor : UIColor.black]
self.navigationController?.navigationBar.barTintColor = UIColor.white
}
@objc func segmentAction(_ segmentedControl: UISegmentedControl) { @objc func segmentAction(_ segmentedControl: UISegmentedControl) {
switch (segmentedControl.selectedSegmentIndex) { switch (segmentedControl.selectedSegmentIndex) {
case 0: case 0:
......
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '11.0'
inhibit_all_warnings!
use_frameworks!
target 'Em-call' do
pod 'Alamofire', '~> 4'
end
PODS:
- Alamofire (4.8.2)
DEPENDENCIES:
- Alamofire (~> 4)
SPEC REPOS:
https://github.com/CocoaPods/Specs.git:
- Alamofire
SPEC CHECKSUMS:
Alamofire: ae5c501addb7afdbb13687d7f2f722c78734c2d3
PODFILE CHECKSUM: 7582d84ab22417dcd39c1050fc33b0d59521e533
COCOAPODS: 1.8.4
Copyright (c) 2014 Alamofire Software Foundation (http://alamofire.org/)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
![Alamofire: Elegant Networking in Swift](https://raw.githubusercontent.com/Alamofire/Alamofire/master/alamofire.png)
[![Build Status](https://travis-ci.org/Alamofire/Alamofire.svg?branch=master)](https://travis-ci.org/Alamofire/Alamofire)
[![CocoaPods Compatible](https://img.shields.io/cocoapods/v/Alamofire.svg)](https://img.shields.io/cocoapods/v/Alamofire.svg)
[![Carthage Compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)
[![Platform](https://img.shields.io/cocoapods/p/Alamofire.svg?style=flat)](https://alamofire.github.io/Alamofire)
[![Twitter](https://img.shields.io/badge/twitter-@AlamofireSF-blue.svg?style=flat)](https://twitter.com/AlamofireSF)
[![Gitter](https://badges.gitter.im/Alamofire/Alamofire.svg)](https://gitter.im/Alamofire/Alamofire?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
Alamofire is an HTTP networking library written in Swift.
- [Features](#features)
- [Component Libraries](#component-libraries)
- [Requirements](#requirements)
- [Migration Guides](#migration-guides)
- [Communication](#communication)
- [Installation](#installation)
- [Usage](https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md)
- **Intro -** [Making a Request](https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#making-a-request), [Response Handling](https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#response-handling), [Response Validation](https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#response-validation), [Response Caching](https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#response-caching)
- **HTTP -** [HTTP Methods](https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#http-methods), [Parameter Encoding](https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#parameter-encoding), [HTTP Headers](https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#http-headers), [Authentication](https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#authentication)
- **Large Data -** [Downloading Data to a File](https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#downloading-data-to-a-file), [Uploading Data to a Server](https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#uploading-data-to-a-server)
- **Tools -** [Statistical Metrics](https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#statistical-metrics), [cURL Command Output](https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#curl-command-output)
- [Advanced Usage](https://github.com/Alamofire/Alamofire/blob/master/Documentation/AdvancedUsage.md)
- **URL Session -** [Session Manager](https://github.com/Alamofire/Alamofire/blob/master/Documentation/AdvancedUsage.md#session-manager), [Session Delegate](https://github.com/Alamofire/Alamofire/blob/master/Documentation/AdvancedUsage.md#session-delegate), [Request](https://github.com/Alamofire/Alamofire/blob/master/Documentation/AdvancedUsage.md#request)
- **Routing -** [Routing Requests](https://github.com/Alamofire/Alamofire/blob/master/Documentation/AdvancedUsage.md#routing-requests), [Adapting and Retrying Requests](https://github.com/Alamofire/Alamofire/blob/master/Documentation/AdvancedUsage.md#adapting-and-retrying-requests)
- **Model Objects -** [Custom Response Serialization](https://github.com/Alamofire/Alamofire/blob/master/Documentation/AdvancedUsage.md#custom-response-serialization)
- **Connection -** [Security](https://github.com/Alamofire/Alamofire/blob/master/Documentation/AdvancedUsage.md#security), [Network Reachability](https://github.com/Alamofire/Alamofire/blob/master/Documentation/AdvancedUsage.md#network-reachability)
- [Open Radars](#open-radars)
- [FAQ](#faq)
- [Credits](#credits)
- [Donations](#donations)
- [License](#license)
## Features
- [x] Chainable Request / Response Methods
- [x] URL / JSON / plist Parameter Encoding
- [x] Upload File / Data / Stream / MultipartFormData
- [x] Download File using Request or Resume Data
- [x] Authentication with URLCredential
- [x] HTTP Response Validation
- [x] Upload and Download Progress Closures with Progress
- [x] cURL Command Output
- [x] Dynamically Adapt and Retry Requests
- [x] TLS Certificate and Public Key Pinning
- [x] Network Reachability
- [x] Comprehensive Unit and Integration Test Coverage
- [x] [Complete Documentation](https://alamofire.github.io/Alamofire)
## Component Libraries
In order to keep Alamofire focused specifically on core networking implementations, additional component libraries have been created by the [Alamofire Software Foundation](https://github.com/Alamofire/Foundation) to bring additional functionality to the Alamofire ecosystem.
- [AlamofireImage](https://github.com/Alamofire/AlamofireImage) - An image library including image response serializers, `UIImage` and `UIImageView` extensions, custom image filters, an auto-purging in-memory cache and a priority-based image downloading system.
- [AlamofireNetworkActivityIndicator](https://github.com/Alamofire/AlamofireNetworkActivityIndicator) - Controls the visibility of the network activity indicator on iOS using Alamofire. It contains configurable delay timers to help mitigate flicker and can support `URLSession` instances not managed by Alamofire.
## Requirements
- iOS 8.0+ / macOS 10.10+ / tvOS 9.0+ / watchOS 2.0+
- Xcode 8.3+
- Swift 3.1+
## Migration Guides
- [Alamofire 4.0 Migration Guide](https://github.com/Alamofire/Alamofire/blob/master/Documentation/Alamofire%204.0%20Migration%20Guide.md)
- [Alamofire 3.0 Migration Guide](https://github.com/Alamofire/Alamofire/blob/master/Documentation/Alamofire%203.0%20Migration%20Guide.md)
- [Alamofire 2.0 Migration Guide](https://github.com/Alamofire/Alamofire/blob/master/Documentation/Alamofire%202.0%20Migration%20Guide.md)
## Communication
- If you **need help with making network requests**, use [Stack Overflow](https://stackoverflow.com/questions/tagged/alamofire) and tag `alamofire`.
- If you need to **find or understand an API**, check [our documentation](http://alamofire.github.io/Alamofire/) or [Apple's documentation for `URLSession`](https://developer.apple.com/documentation/foundation/url_loading_system), on top of which Alamofire is built.
- If you need **help with an Alamofire feature**, use [our forum on swift.org](https://forums.swift.org/c/related-projects/alamofire).
- If you'd like to **discuss Alamofire best practices**, use [our forum on swift.org](https://forums.swift.org/c/related-projects/alamofire).
- If you'd like to **discuss a feature request**, use [our forum on swift.org](https://forums.swift.org/c/related-projects/alamofire).
- If you **found a bug**, open an issue and follow the guide. The more detail the better!
- If you **want to contribute**, submit a pull request.
## Installation
### CocoaPods
[CocoaPods](https://cocoapods.org) is a dependency manager for Cocoa projects. You can install it with the following command:
```bash
$ gem install cocoapods
```
> CocoaPods 1.1+ is required to build Alamofire 4.0+.
To integrate Alamofire into your Xcode project using CocoaPods, specify it in your `Podfile`:
```ruby
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'
use_frameworks!
target '<Your Target Name>' do
pod 'Alamofire', '~> 4.7'
end
```
Then, run the following command:
```bash
$ pod install
```
### Carthage
[Carthage](https://github.com/Carthage/Carthage) is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.
You can install Carthage with [Homebrew](https://brew.sh/) using the following command:
```bash
$ brew update
$ brew install carthage
```
To integrate Alamofire into your Xcode project using Carthage, specify it in your `Cartfile`:
```ogdl
github "Alamofire/Alamofire" ~> 4.7
```
Run `carthage update` to build the framework and drag the built `Alamofire.framework` into your Xcode project.
### Swift Package Manager
The [Swift Package Manager](https://swift.org/package-manager/) is a tool for automating the distribution of Swift code and is integrated into the `swift` compiler. It is in early development, but Alamofire does support its use on supported platforms.
Once you have your Swift package set up, adding Alamofire as a dependency is as easy as adding it to the `dependencies` value of your `Package.swift`.
#### Swift 3
```swift
dependencies: [
.Package(url: "https://github.com/Alamofire/Alamofire.git", majorVersion: 4)
]
```
#### Swift 4
```swift
dependencies: [
.package(url: "https://github.com/Alamofire/Alamofire.git", from: "4.0.0")
]
```
### Manually
If you prefer not to use any of the aforementioned dependency managers, you can integrate Alamofire into your project manually.
#### Embedded Framework
- Open up Terminal, `cd` into your top-level project directory, and run the following command "if" your project is not initialized as a git repository:
```bash
$ git init
```
- Add Alamofire as a git [submodule](https://git-scm.com/docs/git-submodule) by running the following command:
```bash
$ git submodule add https://github.com/Alamofire/Alamofire.git
```
- Open the new `Alamofire` folder, and drag the `Alamofire.xcodeproj` into the Project Navigator of your application's Xcode project.
> It should appear nested underneath your application's blue project icon. Whether it is above or below all the other Xcode groups does not matter.
- Select the `Alamofire.xcodeproj` in the Project Navigator and verify the deployment target matches that of your application target.
- Next, select your application project in the Project Navigator (blue project icon) to navigate to the target configuration window and select the application target under the "Targets" heading in the sidebar.
- In the tab bar at the top of that window, open the "General" panel.
- Click on the `+` button under the "Embedded Binaries" section.
- You will see two different `Alamofire.xcodeproj` folders each with two different versions of the `Alamofire.framework` nested inside a `Products` folder.
> It does not matter which `Products` folder you choose from, but it does matter whether you choose the top or bottom `Alamofire.framework`.
- Select the top `Alamofire.framework` for iOS and the bottom one for OS X.
> You can verify which one you selected by inspecting the build log for your project. The build target for `Alamofire` will be listed as either `Alamofire iOS`, `Alamofire macOS`, `Alamofire tvOS` or `Alamofire watchOS`.
- And that's it!
> The `Alamofire.framework` is automagically added as a target dependency, linked framework and embedded framework in a copy files build phase which is all you need to build on the simulator and a device.
## Open Radars
The following radars have some effect on the current implementation of Alamofire.
- [`rdar://21349340`](http://www.openradar.me/radar?id=5517037090635776) - Compiler throwing warning due to toll-free bridging issue in test case
- `rdar://26870455` - Background URL Session Configurations do not work in the simulator
- `rdar://26849668` - Some URLProtocol APIs do not properly handle `URLRequest`
- [`rdar://36082113`](http://openradar.appspot.com/radar?id=4942308441063424) - `URLSessionTaskMetrics` failing to link on watchOS 3.0+
## Resolved Radars
The following radars have been resolved over time after being filed against the Alamofire project.
- [`rdar://26761490`](http://www.openradar.me/radar?id=5010235949318144) - Swift string interpolation causing memory leak with common usage (Resolved on 9/1/17 in Xcode 9 beta 6).
## FAQ
### What's the origin of the name Alamofire?
Alamofire is named after the [Alamo Fire flower](https://aggie-horticulture.tamu.edu/wildseed/alamofire.html), a hybrid variant of the Bluebonnet, the official state flower of Texas.
### What logic belongs in a Router vs. a Request Adapter?
Simple, static data such as paths, parameters and common headers belong in the `Router`. Dynamic data such as an `Authorization` header whose value can changed based on an authentication system belongs in a `RequestAdapter`.
The reason the dynamic data MUST be placed into the `RequestAdapter` is to support retry operations. When a `Request` is retried, the original request is not rebuilt meaning the `Router` will not be called again. The `RequestAdapter` is called again allowing the dynamic data to be updated on the original request before retrying the `Request`.
## Credits
Alamofire is owned and maintained by the [Alamofire Software Foundation](http://alamofire.org). You can follow them on Twitter at [@AlamofireSF](https://twitter.com/AlamofireSF) for project updates and releases.
### Security Disclosure
If you believe you have identified a security vulnerability with Alamofire, you should report it as soon as possible via email to security@alamofire.org. Please do not post it to a public issue tracker.
## Donations
The [ASF](https://github.com/Alamofire/Foundation#members) is looking to raise money to officially stay registered as a federal non-profit organization.
Registering will allow us members to gain some legal protections and also allow us to put donations to use, tax free.
Donating to the ASF will enable us to:
- Pay our yearly legal fees to keep the non-profit in good status
- Pay for our mail servers to help us stay on top of all questions and security issues
- Potentially fund test servers to make it easier for us to test the edge cases
- Potentially fund developers to work on one of our projects full-time
The community adoption of the ASF libraries has been amazing.
We are greatly humbled by your enthusiasm around the projects, and want to continue to do everything we can to move the needle forward.
With your continued support, the ASF will be able to improve its reach and also provide better legal safety for the core members.
If you use any of our libraries for work, see if your employers would be interested in donating.
Any amount you can donate today to help us reach our goal would be greatly appreciated.
[![paypal](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=W34WPEE74APJQ)
## License
Alamofire is released under the MIT license. [See LICENSE](https://github.com/Alamofire/Alamofire/blob/master/LICENSE) for details.
This diff is collapsed.
This diff is collapsed.
//
// DispatchQueue+Alamofire.swift
//
// Copyright (c) 2014 Alamofire Software Foundation (http://alamofire.org/)
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
//
import Dispatch
import Foundation
extension DispatchQueue {
static var userInteractive: DispatchQueue { return DispatchQueue.global(qos: .userInteractive) }
static var userInitiated: DispatchQueue { return DispatchQueue.global(qos: .userInitiated) }
static var utility: DispatchQueue { return DispatchQueue.global(qos: .utility) }
static var background: DispatchQueue { return DispatchQueue.global(qos: .background) }
func after(_ delay: TimeInterval, execute closure: @escaping () -> Void) {
asyncAfter(deadline: .now() + delay, execute: closure)
}
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
PODS:
- Alamofire (4.8.2)
DEPENDENCIES:
- Alamofire (~> 4)
SPEC REPOS:
https://github.com/CocoaPods/Specs.git:
- Alamofire
SPEC CHECKSUMS:
Alamofire: ae5c501addb7afdbb13687d7f2f722c78734c2d3
PODFILE CHECKSUM: 7582d84ab22417dcd39c1050fc33b0d59521e533
COCOAPODS: 1.8.4
This diff is collapsed.
This diff is collapsed.
#import <Foundation/Foundation.h>
@interface PodsDummy_Alamofire : NSObject
@end
@implementation PodsDummy_Alamofire
@end
This diff is collapsed.
This diff is collapsed.
framework module Alamofire {
umbrella header "Alamofire-umbrella.h"
export *
module * { export * }
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
${PODS_ROOT}/Target Support Files/Pods-Em-call/Pods-Em-call-frameworks.sh
${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment