From 5203fbbe85b3f003ea37bb945dcd4fc6425ee060 Mon Sep 17 00:00:00 2001 From: Grzegorz Adam Hankiewicz Date: Wed, 14 Jun 2017 08:23:45 +0200 Subject: [PATCH 01/10] Updates image url and email. --- README.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.rst b/README.rst index ccfbe0e..afb311a 100644 --- a/README.rst +++ b/README.rst @@ -2,7 +2,7 @@ Record my GPS position ====================== -:author: Grzegorz Adam Hankiewicz +:author: Grzegorz Adam Hankiewicz .. contents:: @@ -53,12 +53,12 @@ __ http://efaber.net/ App store ========= -.. image:: https://github.com/downloads/svet/Record-my-position/record_my_gps_position_qr_appstore.png +.. image:: https://cloud.github.com/downloads/svet/Record-my-position/record_my_gps_position_qr_appstore.png :align: right Record my GPS position can be downloaded for free from the Apple App Store -(http://itunes.com/apps/electrichandssoftware/recordmygpsposition/). +(https://itunes.apple.com/app/record-my-gps-position/id405865492?mt=8). Requests and issues From f906455fce190f3b3c9cdfbad4527fb723464c83 Mon Sep 17 00:00:00 2001 From: Grzegorz Adam Hankiewicz Date: Wed, 14 Jun 2017 08:26:02 +0200 Subject: [PATCH 02/10] Removes old adhoc target, tweaks some basic project values. --- Record_my_position.xcodeproj/project.pbxproj | 237 +++---------------- resources/Er_recorder.plist | 38 --- 2 files changed, 30 insertions(+), 245 deletions(-) delete mode 100644 resources/Er_recorder.plist diff --git a/Record_my_position.xcodeproj/project.pbxproj b/Record_my_position.xcodeproj/project.pbxproj index 994a507..c747f4c 100755 --- a/Record_my_position.xcodeproj/project.pbxproj +++ b/Record_my_position.xcodeproj/project.pbxproj @@ -22,16 +22,6 @@ D52550B713C9C0950050DD86 /* UIImageView+ELHASO.m in Sources */ = {isa = PBXBuildFile; fileRef = D52550AB13C9C0950050DD86 /* UIImageView+ELHASO.m */; }; D52550B813C9C0950050DD86 /* UILabel+ELHASO.m in Sources */ = {isa = PBXBuildFile; fileRef = D52550AD13C9C0950050DD86 /* UILabel+ELHASO.m */; }; D52550B913C9C0950050DD86 /* UINavigationController+ELHASO.m in Sources */ = {isa = PBXBuildFile; fileRef = D52550AF13C9C0950050DD86 /* UINavigationController+ELHASO.m */; }; - D52550BA13C9C0950050DD86 /* Base64+ELHASO.m in Sources */ = {isa = PBXBuildFile; fileRef = D525509C13C9C0950050DD86 /* Base64+ELHASO.m */; }; - D52550BB13C9C0950050DD86 /* CLLocation+ELHASO.m in Sources */ = {isa = PBXBuildFile; fileRef = D525509E13C9C0950050DD86 /* CLLocation+ELHASO.m */; }; - D52550BC13C9C0950050DD86 /* ELHASO.m in Sources */ = {isa = PBXBuildFile; fileRef = D52550A113C9C0950050DD86 /* ELHASO.m */; }; - D52550BD13C9C0950050DD86 /* NSArray+ELHASO.m in Sources */ = {isa = PBXBuildFile; fileRef = D52550A313C9C0950050DD86 /* NSArray+ELHASO.m */; }; - D52550BE13C9C0950050DD86 /* NSDictionary+ELHASO.m in Sources */ = {isa = PBXBuildFile; fileRef = D52550A513C9C0950050DD86 /* NSDictionary+ELHASO.m */; }; - D52550BF13C9C0950050DD86 /* NSString+ELHASO.m in Sources */ = {isa = PBXBuildFile; fileRef = D52550A713C9C0950050DD86 /* NSString+ELHASO.m */; }; - D52550C013C9C0950050DD86 /* UIImage+ELHASO.m in Sources */ = {isa = PBXBuildFile; fileRef = D52550A913C9C0950050DD86 /* UIImage+ELHASO.m */; }; - D52550C113C9C0950050DD86 /* UIImageView+ELHASO.m in Sources */ = {isa = PBXBuildFile; fileRef = D52550AB13C9C0950050DD86 /* UIImageView+ELHASO.m */; }; - D52550C213C9C0950050DD86 /* UILabel+ELHASO.m in Sources */ = {isa = PBXBuildFile; fileRef = D52550AD13C9C0950050DD86 /* UILabel+ELHASO.m */; }; - D52550C313C9C0950050DD86 /* UINavigationController+ELHASO.m in Sources */ = {isa = PBXBuildFile; fileRef = D52550AF13C9C0950050DD86 /* UINavigationController+ELHASO.m */; }; D52550C413C9C0950050DD86 /* Base64+ELHASO.m in Sources */ = {isa = PBXBuildFile; fileRef = D525509C13C9C0950050DD86 /* Base64+ELHASO.m */; }; D52550C513C9C0950050DD86 /* CLLocation+ELHASO.m in Sources */ = {isa = PBXBuildFile; fileRef = D525509E13C9C0950050DD86 /* CLLocation+ELHASO.m */; }; D52550C613C9C0950050DD86 /* ELHASO.m in Sources */ = {isa = PBXBuildFile; fileRef = D52550A113C9C0950050DD86 /* ELHASO.m */; }; @@ -57,15 +47,6 @@ D5753E4E13D332450088E034 /* usage_notes.html in Resources */ = {isa = PBXBuildFile; fileRef = D5753E4413D332450088E034 /* usage_notes.html */; }; D5753E4F13D332450088E034 /* usage_short_battery_life.html in Resources */ = {isa = PBXBuildFile; fileRef = D5753E4513D332450088E034 /* usage_short_battery_life.html */; }; D5753E5013D332450088E034 /* usage_what_is_this.html in Resources */ = {isa = PBXBuildFile; fileRef = D5753E4613D332450088E034 /* usage_what_is_this.html */; }; - D5753E5113D332450088E034 /* credits.html in Resources */ = {isa = PBXBuildFile; fileRef = D5753E3D13D332450088E034 /* credits.html */; }; - D5753E5213D332450088E034 /* index.plist in Resources */ = {isa = PBXBuildFile; fileRef = D5753E3E13D332450088E034 /* index.plist */; }; - D5753E5413D332450088E034 /* source.html in Resources */ = {isa = PBXBuildFile; fileRef = D5753E4013D332450088E034 /* source.html */; }; - D5753E5513D332450088E034 /* usage_doesnt_record.html in Resources */ = {isa = PBXBuildFile; fileRef = D5753E4113D332450088E034 /* usage_doesnt_record.html */; }; - D5753E5613D332450088E034 /* usage_exporting.html in Resources */ = {isa = PBXBuildFile; fileRef = D5753E4213D332450088E034 /* usage_exporting.html */; }; - D5753E5713D332450088E034 /* usage_formats.html in Resources */ = {isa = PBXBuildFile; fileRef = D5753E4313D332450088E034 /* usage_formats.html */; }; - D5753E5813D332450088E034 /* usage_notes.html in Resources */ = {isa = PBXBuildFile; fileRef = D5753E4413D332450088E034 /* usage_notes.html */; }; - D5753E5913D332450088E034 /* usage_short_battery_life.html in Resources */ = {isa = PBXBuildFile; fileRef = D5753E4513D332450088E034 /* usage_short_battery_life.html */; }; - D5753E5A13D332450088E034 /* usage_what_is_this.html in Resources */ = {isa = PBXBuildFile; fileRef = D5753E4613D332450088E034 /* usage_what_is_this.html */; }; D5753E5B13D332450088E034 /* credits.html in Resources */ = {isa = PBXBuildFile; fileRef = D5753E3D13D332450088E034 /* credits.html */; }; D5753E5C13D332450088E034 /* index.plist in Resources */ = {isa = PBXBuildFile; fileRef = D5753E3E13D332450088E034 /* index.plist */; }; D5753E5E13D332450088E034 /* source.html in Resources */ = {isa = PBXBuildFile; fileRef = D5753E4013D332450088E034 /* source.html */; }; @@ -77,14 +58,10 @@ D5753E6413D332450088E034 /* usage_what_is_this.html in Resources */ = {isa = PBXBuildFile; fileRef = D5753E4613D332450088E034 /* usage_what_is_this.html */; }; D5753E6913D3348B0088E034 /* HTML_view_controller.m in Sources */ = {isa = PBXBuildFile; fileRef = D5753E6613D3348B0088E034 /* HTML_view_controller.m */; }; D5753E6A13D3348B0088E034 /* Info_view_controller.m in Sources */ = {isa = PBXBuildFile; fileRef = D5753E6813D3348B0088E034 /* Info_view_controller.m */; }; - D5753E6B13D3348B0088E034 /* HTML_view_controller.m in Sources */ = {isa = PBXBuildFile; fileRef = D5753E6613D3348B0088E034 /* HTML_view_controller.m */; }; - D5753E6C13D3348B0088E034 /* Info_view_controller.m in Sources */ = {isa = PBXBuildFile; fileRef = D5753E6813D3348B0088E034 /* Info_view_controller.m */; }; D5753E6D13D3348B0088E034 /* HTML_view_controller.m in Sources */ = {isa = PBXBuildFile; fileRef = D5753E6613D3348B0088E034 /* HTML_view_controller.m */; }; D5753E6E13D3348B0088E034 /* Info_view_controller.m in Sources */ = {isa = PBXBuildFile; fileRef = D5753E6813D3348B0088E034 /* Info_view_controller.m */; }; D5753E9813D33D8D0088E034 /* info_icon.png in Resources */ = {isa = PBXBuildFile; fileRef = D5753E9613D33D8D0088E034 /* info_icon.png */; }; D5753E9913D33D8D0088E034 /* info_icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D5753E9713D33D8D0088E034 /* info_icon@2x.png */; }; - D5753E9A13D33D8D0088E034 /* info_icon.png in Resources */ = {isa = PBXBuildFile; fileRef = D5753E9613D33D8D0088E034 /* info_icon.png */; }; - D5753E9B13D33D8D0088E034 /* info_icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D5753E9713D33D8D0088E034 /* info_icon@2x.png */; }; D5753E9C13D33D8D0088E034 /* info_icon.png in Resources */ = {isa = PBXBuildFile; fileRef = D5753E9613D33D8D0088E034 /* info_icon.png */; }; D5753E9D13D33D8D0088E034 /* info_icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D5753E9713D33D8D0088E034 /* info_icon@2x.png */; }; D57789F8130B3EDF00AB5803 /* back.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D57789F6130B3EDF00AB5803 /* back.jpg */; }; @@ -130,42 +107,7 @@ D5AAF85C15CDB55D006D6D90 /* DCStatusBarOverlay.m in Sources */ = {isa = PBXBuildFile; fileRef = D5AAF85815CDB55D006D6D90 /* DCStatusBarOverlay.m */; }; D5AAF85E15CDB5BD006D6D90 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D5AAF85D15CDB5BD006D6D90 /* QuartzCore.framework */; }; D5AAF87015CDD13B006D6D90 /* EHReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = D5AAF86515CDD13B006D6D90 /* EHReachability.m */; }; - D5AAF87115CDD13B006D6D90 /* EHReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = D5AAF86515CDD13B006D6D90 /* EHReachability.m */; }; D5AAF87215CDD13B006D6D90 /* EHReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = D5AAF86515CDD13B006D6D90 /* EHReachability.m */; }; - D5B08A55133D30E700A60B34 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = D56FF234127AC9C60023FC0C /* Icon.png */; }; - D5B08A56133D30E700A60B34 /* Icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D56FF246127ACA810023FC0C /* Icon@2x.png */; }; - D5B08A57133D30E700A60B34 /* capture_icon.png in Resources */ = {isa = PBXBuildFile; fileRef = D5B75C6A1297D87800A4142B /* capture_icon.png */; }; - D5B08A58133D30E700A60B34 /* capture_icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D5B75C6B1297D87800A4142B /* capture_icon@2x.png */; }; - D5B08A59133D30E700A60B34 /* share_icon.png in Resources */ = {isa = PBXBuildFile; fileRef = D5C86D1D1299CF8D00253C7F /* share_icon.png */; }; - D5B08A5A133D30E700A60B34 /* share_icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D5C86D1E1299CF8D00253C7F /* share_icon@2x.png */; }; - D5B08A5B133D30E700A60B34 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = D5F770701305EF3A006914C7 /* Default.png */; }; - D5B08A5C133D30E700A60B34 /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D5F770711305EF3A006914C7 /* Default@2x.png */; }; - D5B08A5D133D30E700A60B34 /* back.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D57789F6130B3EDF00AB5803 /* back.jpg */; }; - D5B08A5E133D30E700A60B34 /* back@2x.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D57789F7130B3EDF00AB5803 /* back@2x.jpg */; }; - D5B08A60133D30E700A60B34 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; }; - D5B08A61133D30E700A60B34 /* App_delegate.m in Sources */ = {isa = PBXBuildFile; fileRef = D59D0350126E372400F4D543 /* App_delegate.m */; }; - D5B08A62133D30E700A60B34 /* EGODatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = D5BEDA78126F8C6A0056DB78 /* EGODatabase.m */; }; - D5B08A63133D30E700A60B34 /* EGODatabaseRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = D5BEDA7A126F8C6A0056DB78 /* EGODatabaseRequest.m */; }; - D5B08A64133D30E700A60B34 /* EGODatabaseResult.m in Sources */ = {isa = PBXBuildFile; fileRef = D5BEDA7C126F8C6A0056DB78 /* EGODatabaseResult.m */; }; - D5B08A65133D30E700A60B34 /* EGODatabaseRow.m in Sources */ = {isa = PBXBuildFile; fileRef = D5BEDA7E126F8C6A0056DB78 /* EGODatabaseRow.m */; }; - D5B08A67133D30E700A60B34 /* GPS.m in Sources */ = {isa = PBXBuildFile; fileRef = D5C47781127177D500CB008F /* GPS.m */; }; - D5B08A68133D30E700A60B34 /* hardware.m in Sources */ = {isa = PBXBuildFile; fileRef = D51EB90C127A297C0016E191 /* hardware.m */; }; - D5B08A69133D30E700A60B34 /* DB.m in Sources */ = {isa = PBXBuildFile; fileRef = D544A086127F5FAA00835938 /* DB.m */; }; - D5B08A6A133D30E700A60B34 /* DB_log.m in Sources */ = {isa = PBXBuildFile; fileRef = D544A088127F5FAA00835938 /* DB_log.m */; }; - D5B08A6B133D30E700A60B34 /* Rows_to_attachment.m in Sources */ = {isa = PBXBuildFile; fileRef = D544A08A127F5FAA00835938 /* Rows_to_attachment.m */; }; - D5B08A6D133D30E700A60B34 /* Capture_tab.m in Sources */ = {isa = PBXBuildFile; fileRef = D5D7CDCD128A9D1300B83104 /* Capture_tab.m */; }; - D5B08A6E133D30E700A60B34 /* Log_tab.m in Sources */ = {isa = PBXBuildFile; fileRef = D5D7CDCF128A9D1300B83104 /* Log_tab.m */; }; - D5B08A6F133D30E700A60B34 /* Share_tab.m in Sources */ = {isa = PBXBuildFile; fileRef = D5D7CDD1128A9D1300B83104 /* Share_tab.m */; }; - D5B08A70133D30E700A60B34 /* Tab_controller.m in Sources */ = {isa = PBXBuildFile; fileRef = D5D7CDD3128A9D1300B83104 /* Tab_controller.m */; }; - D5B08A71133D30E700A60B34 /* Note_taking_controller.m in Sources */ = {isa = PBXBuildFile; fileRef = D5D7CDED128AB14000B83104 /* Note_taking_controller.m */; }; - D5B08A72133D30E700A60B34 /* View_controller.m in Sources */ = {isa = PBXBuildFile; fileRef = D558C123128D481400641FE9 /* View_controller.m */; }; - D5B08A74133D30E700A60B34 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; - D5B08A75133D30E700A60B34 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; - D5B08A76133D30E700A60B34 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; }; - D5B08A77133D30E700A60B34 /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = D5BEDAA1126F8D130056DB78 /* libsqlite3.dylib */; }; - D5B08A78133D30E700A60B34 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D5C477B112717BEA00CB008F /* CoreLocation.framework */; }; - D5B08A79133D30E700A60B34 /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D5DF0B7D127636C300A9BC0D /* MessageUI.framework */; }; - D5B08A7A133D30E700A60B34 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D5C4AFCC12897956005BE697 /* SystemConfiguration.framework */; }; D5B75C6C1297D87800A4142B /* capture_icon.png in Resources */ = {isa = PBXBuildFile; fileRef = D5B75C6A1297D87800A4142B /* capture_icon.png */; }; D5B75C6D1297D87800A4142B /* capture_icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D5B75C6B1297D87800A4142B /* capture_icon@2x.png */; }; D5BEDA96126F8C6A0056DB78 /* EGODatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = D5BEDA78126F8C6A0056DB78 /* EGODatabase.m */; }; @@ -265,7 +207,6 @@ D5AAF86415CDD13B006D6D90 /* EHReachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EHReachability.h; sourceTree = ""; }; D5AAF86515CDD13B006D6D90 /* EHReachability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EHReachability.m; sourceTree = ""; }; D5AAF86615CDD13B006D6D90 /* README.rst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README.rst; sourceTree = ""; }; - D5B08A7E133D30E700A60B34 /* Er_recorder.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Er_recorder.app; sourceTree = BUILT_PRODUCTS_DIR; }; D5B08A80133D30E700A60B34 /* Er_recorder.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Er_recorder.plist; path = resources/Er_recorder.plist; sourceTree = ""; }; D5B75C6A1297D87800A4142B /* capture_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = capture_icon.png; sourceTree = ""; }; D5B75C6B1297D87800A4142B /* capture_icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "capture_icon@2x.png"; sourceTree = ""; }; @@ -330,20 +271,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - D5B08A73133D30E700A60B34 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - D5B08A74133D30E700A60B34 /* Foundation.framework in Frameworks */, - D5B08A75133D30E700A60B34 /* UIKit.framework in Frameworks */, - D5B08A76133D30E700A60B34 /* CoreGraphics.framework in Frameworks */, - D5B08A77133D30E700A60B34 /* libsqlite3.dylib in Frameworks */, - D5B08A78133D30E700A60B34 /* CoreLocation.framework in Frameworks */, - D5B08A79133D30E700A60B34 /* MessageUI.framework in Frameworks */, - D5B08A7A133D30E700A60B34 /* SystemConfiguration.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -351,7 +278,6 @@ isa = PBXGroup; children = ( 1D6058910D05DD3D006BFB54 /* Record_my_position.app */, - D5B08A7E133D30E700A60B34 /* Er_recorder.app */, D59AAF14134BC5BC00E81139 /* Record_my_position_appstore.app */, ); name = Products; @@ -579,9 +505,9 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - 1D6058900D05DD3D006BFB54 /* Record_my_position */ = { + 1D6058900D05DD3D006BFB54 /* devel */ = { isa = PBXNativeTarget; - buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "Record_my_position" */; + buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "devel" */; buildPhases = ( 1D60588D0D05DD3D006BFB54 /* Resources */, 1D60588E0D05DD3D006BFB54 /* Sources */, @@ -591,14 +517,14 @@ ); dependencies = ( ); - name = Record_my_position; + name = devel; productName = Record_my_position; productReference = 1D6058910D05DD3D006BFB54 /* Record_my_position.app */; productType = "com.apple.product-type.application"; }; - D59AAEE9134BC5BC00E81139 /* Record_my_position_appstore */ = { + D59AAEE9134BC5BC00E81139 /* appstore */ = { isa = PBXNativeTarget; - buildConfigurationList = D59AAF11134BC5BC00E81139 /* Build configuration list for PBXNativeTarget "Record_my_position_appstore" */; + buildConfigurationList = D59AAF11134BC5BC00E81139 /* Build configuration list for PBXNativeTarget "appstore" */; buildPhases = ( D59AAEEA134BC5BC00E81139 /* Resources */, D59AAEF5134BC5BC00E81139 /* Sources */, @@ -608,33 +534,26 @@ ); dependencies = ( ); - name = Record_my_position_appstore; + name = appstore; productName = Record_my_position; productReference = D59AAF14134BC5BC00E81139 /* Record_my_position_appstore.app */; productType = "com.apple.product-type.application"; }; - D5B08A53133D30E700A60B34 /* Er recorder adhoc */ = { - isa = PBXNativeTarget; - buildConfigurationList = D5B08A7B133D30E700A60B34 /* Build configuration list for PBXNativeTarget "Er recorder adhoc" */; - buildPhases = ( - D5B08A54133D30E700A60B34 /* Resources */, - D5B08A5F133D30E700A60B34 /* Sources */, - D5B08A73133D30E700A60B34 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "Er recorder adhoc"; - productName = Record_my_position; - productReference = D5B08A7E133D30E700A60B34 /* Er_recorder.app */; - productType = "com.apple.product-type.application"; - }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ 29B97313FDCFA39411CA2CEA /* Project object */ = { isa = PBXProject; + attributes = { + TargetAttributes = { + 1D6058900D05DD3D006BFB54 = { + ProvisioningStyle = Manual; + }; + D59AAEE9134BC5BC00E81139 = { + ProvisioningStyle = Manual; + }; + }; + }; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Record_my_position" */; compatibilityVersion = "Xcode 3.1"; developmentRegion = English; @@ -649,9 +568,8 @@ projectDirPath = ""; projectRoot = ""; targets = ( - 1D6058900D05DD3D006BFB54 /* Record_my_position */, - D5B08A53133D30E700A60B34 /* Er recorder adhoc */, - D59AAEE9134BC5BC00E81139 /* Record_my_position_appstore */, + 1D6058900D05DD3D006BFB54 /* devel */, + D59AAEE9134BC5BC00E81139 /* appstore */, ); }; /* End PBXProject section */ @@ -713,34 +631,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - D5B08A54133D30E700A60B34 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - D5B08A55133D30E700A60B34 /* Icon.png in Resources */, - D5B08A56133D30E700A60B34 /* Icon@2x.png in Resources */, - D5B08A57133D30E700A60B34 /* capture_icon.png in Resources */, - D5B08A58133D30E700A60B34 /* capture_icon@2x.png in Resources */, - D5B08A59133D30E700A60B34 /* share_icon.png in Resources */, - D5B08A5A133D30E700A60B34 /* share_icon@2x.png in Resources */, - D5B08A5B133D30E700A60B34 /* Default.png in Resources */, - D5B08A5C133D30E700A60B34 /* Default@2x.png in Resources */, - D5B08A5D133D30E700A60B34 /* back.jpg in Resources */, - D5B08A5E133D30E700A60B34 /* back@2x.jpg in Resources */, - D5753E5113D332450088E034 /* credits.html in Resources */, - D5753E5213D332450088E034 /* index.plist in Resources */, - D5753E5413D332450088E034 /* source.html in Resources */, - D5753E5513D332450088E034 /* usage_doesnt_record.html in Resources */, - D5753E5613D332450088E034 /* usage_exporting.html in Resources */, - D5753E5713D332450088E034 /* usage_formats.html in Resources */, - D5753E5813D332450088E034 /* usage_notes.html in Resources */, - D5753E5913D332450088E034 /* usage_short_battery_life.html in Resources */, - D5753E5A13D332450088E034 /* usage_what_is_this.html in Resources */, - D5753E9A13D33D8D0088E034 /* info_icon.png in Resources */, - D5753E9B13D33D8D0088E034 /* info_icon@2x.png in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -822,43 +712,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - D5B08A5F133D30E700A60B34 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - D5B08A60133D30E700A60B34 /* main.m in Sources */, - D5B08A61133D30E700A60B34 /* App_delegate.m in Sources */, - D5B08A62133D30E700A60B34 /* EGODatabase.m in Sources */, - D5B08A63133D30E700A60B34 /* EGODatabaseRequest.m in Sources */, - D5B08A64133D30E700A60B34 /* EGODatabaseResult.m in Sources */, - D5B08A65133D30E700A60B34 /* EGODatabaseRow.m in Sources */, - D5B08A67133D30E700A60B34 /* GPS.m in Sources */, - D5B08A68133D30E700A60B34 /* hardware.m in Sources */, - D5B08A69133D30E700A60B34 /* DB.m in Sources */, - D5B08A6A133D30E700A60B34 /* DB_log.m in Sources */, - D5B08A6B133D30E700A60B34 /* Rows_to_attachment.m in Sources */, - D5B08A6D133D30E700A60B34 /* Capture_tab.m in Sources */, - D5B08A6E133D30E700A60B34 /* Log_tab.m in Sources */, - D5B08A6F133D30E700A60B34 /* Share_tab.m in Sources */, - D5B08A70133D30E700A60B34 /* Tab_controller.m in Sources */, - D5B08A71133D30E700A60B34 /* Note_taking_controller.m in Sources */, - D5B08A72133D30E700A60B34 /* View_controller.m in Sources */, - D52550BA13C9C0950050DD86 /* Base64+ELHASO.m in Sources */, - D52550BB13C9C0950050DD86 /* CLLocation+ELHASO.m in Sources */, - D52550BC13C9C0950050DD86 /* ELHASO.m in Sources */, - D52550BD13C9C0950050DD86 /* NSArray+ELHASO.m in Sources */, - D52550BE13C9C0950050DD86 /* NSDictionary+ELHASO.m in Sources */, - D52550BF13C9C0950050DD86 /* NSString+ELHASO.m in Sources */, - D52550C013C9C0950050DD86 /* UIImage+ELHASO.m in Sources */, - D52550C113C9C0950050DD86 /* UIImageView+ELHASO.m in Sources */, - D52550C213C9C0950050DD86 /* UILabel+ELHASO.m in Sources */, - D52550C313C9C0950050DD86 /* UINavigationController+ELHASO.m in Sources */, - D5753E6B13D3348B0088E034 /* HTML_view_controller.m in Sources */, - D5753E6C13D3348B0088E034 /* Info_view_controller.m in Sources */, - D5AAF87115CDD13B006D6D90 /* EHReachability.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXSourcesBuildPhase section */ /* Begin XCBuildConfiguration section */ @@ -866,6 +719,7 @@ isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = NO; + DEVELOPMENT_TEAM = ""; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -875,6 +729,7 @@ USE_DCINTROSPECT, ); INFOPLIST_FILE = "resources/Record_my_position-dev.plist"; + PROVISIONING_PROFILE_SPECIFIER = ""; }; name = Debug; }; @@ -882,6 +737,7 @@ isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; + DEVELOPMENT_TEAM = ""; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Record_my_position_Prefix.pch; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -889,6 +745,7 @@ USE_DCINTROSPECT, ); INFOPLIST_FILE = "resources/Record_my_position-dev.plist"; + PROVISIONING_PROFILE_SPECIFIER = ""; VALIDATE_PRODUCT = YES; }; name = Release; @@ -911,7 +768,7 @@ src, external, ); - IPHONEOS_DEPLOYMENT_TARGET = 3.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; OTHER_LDFLAGS = "-weak-lSystem"; PREBINDING = NO; PRODUCT_NAME = Record_my_position; @@ -937,7 +794,7 @@ src, external, ); - IPHONEOS_DEPLOYMENT_TARGET = 3.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; OTHER_LDFLAGS = "-weak-lSystem"; PREBINDING = NO; @@ -952,12 +809,14 @@ buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; COPY_PHASE_STRIP = NO; + DEVELOPMENT_TEAM = ""; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Record_my_position_Prefix.pch; INFOPLIST_FILE = "resources/Record_my_position-appstore.plist"; PRODUCT_NAME = Record_my_position_appstore; + PROVISIONING_PROFILE_SPECIFIER = ""; }; name = Debug; }; @@ -966,39 +825,12 @@ buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; COPY_PHASE_STRIP = YES; + DEVELOPMENT_TEAM = ""; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Record_my_position_Prefix.pch; INFOPLIST_FILE = "resources/Record_my_position-appstore.plist"; PRODUCT_NAME = Record_my_position_appstore; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - D5B08A7C133D30E700A60B34 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_ENTITLEMENTS = resources/Entitlements.plist; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; - COPY_PHASE_STRIP = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = Record_my_position_Prefix.pch; - INFOPLIST_FILE = resources/Er_recorder.plist; - PRODUCT_NAME = Er_recorder; - }; - name = Debug; - }; - D5B08A7D133D30E700A60B34 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_ENTITLEMENTS = resources/Entitlements.plist; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; - COPY_PHASE_STRIP = YES; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = Record_my_position_Prefix.pch; - INFOPLIST_FILE = resources/Er_recorder.plist; - PRODUCT_NAME = Er_recorder; + PROVISIONING_PROFILE_SPECIFIER = ""; VALIDATE_PRODUCT = YES; }; name = Release; @@ -1006,7 +838,7 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "Record_my_position" */ = { + 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "devel" */ = { isa = XCConfigurationList; buildConfigurations = ( 1D6058940D05DD3E006BFB54 /* Debug */, @@ -1024,7 +856,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - D59AAF11134BC5BC00E81139 /* Build configuration list for PBXNativeTarget "Record_my_position_appstore" */ = { + D59AAF11134BC5BC00E81139 /* Build configuration list for PBXNativeTarget "appstore" */ = { isa = XCConfigurationList; buildConfigurations = ( D59AAF12134BC5BC00E81139 /* Debug */, @@ -1033,15 +865,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - D5B08A7B133D30E700A60B34 /* Build configuration list for PBXNativeTarget "Er recorder adhoc" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - D5B08A7C133D30E700A60B34 /* Debug */, - D5B08A7D133D30E700A60B34 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; /* End XCConfigurationList section */ }; rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; diff --git a/resources/Er_recorder.plist b/resources/Er_recorder.plist deleted file mode 100644 index 9d37622..0000000 --- a/resources/Er_recorder.plist +++ /dev/null @@ -1,38 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleDisplayName - Er Recorder - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIconFile - Icon.png - CFBundleIdentifier - com.elhaso.recordmygpsposition - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - APPL - CFBundleSignature - ???? - UIBackgroundModes - - location - - CFBundleVersion - 1.4.2 - LSRequiresIPhoneOS - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - - UIFileSharingEnabled - - - From d0c5a551f06d339ffa78ecde851ab850233f954e Mon Sep 17 00:00:00 2001 From: Grzegorz Adam Hankiewicz Date: Wed, 14 Jun 2017 08:50:29 +0200 Subject: [PATCH 03/10] Moves precompiled header into source directory. --- Record_my_position.xcodeproj/project.pbxproj | 10 +++++----- .../Record_my_position_Prefix.pch | 0 2 files changed, 5 insertions(+), 5 deletions(-) rename Record_my_position_Prefix.pch => src/Record_my_position_Prefix.pch (100%) diff --git a/Record_my_position.xcodeproj/project.pbxproj b/Record_my_position.xcodeproj/project.pbxproj index c747f4c..3c45db8 100755 --- a/Record_my_position.xcodeproj/project.pbxproj +++ b/Record_my_position.xcodeproj/project.pbxproj @@ -302,7 +302,6 @@ D5B08A80133D30E700A60B34 /* Er_recorder.plist */, 8D1107310486CEB800E47090 /* Record_my_position-dev.plist */, D59AAF16134BC5BC00E81139 /* Record_my_position-appstore.plist */, - 32CA4F630368D1EE00C91783 /* Record_my_position_Prefix.pch */, ); name = Other; sourceTree = ""; @@ -333,6 +332,7 @@ D5C47781127177D500CB008F /* GPS.m */, D5BEDA3D126F8C100056DB78 /* macro.h */, 29B97316FDCFA39411CA2CEA /* main.m */, + 32CA4F630368D1EE00C91783 /* Record_my_position_Prefix.pch */, ); path = src; sourceTree = ""; @@ -723,7 +723,7 @@ GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = Record_my_position_Prefix.pch; + GCC_PREFIX_HEADER = src/Record_my_position_Prefix.pch; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", USE_DCINTROSPECT, @@ -739,7 +739,7 @@ COPY_PHASE_STRIP = YES; DEVELOPMENT_TEAM = ""; GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = Record_my_position_Prefix.pch; + GCC_PREFIX_HEADER = src/Record_my_position_Prefix.pch; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", USE_DCINTROSPECT, @@ -813,7 +813,7 @@ GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = Record_my_position_Prefix.pch; + GCC_PREFIX_HEADER = src/Record_my_position_Prefix.pch; INFOPLIST_FILE = "resources/Record_my_position-appstore.plist"; PRODUCT_NAME = Record_my_position_appstore; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -827,7 +827,7 @@ COPY_PHASE_STRIP = YES; DEVELOPMENT_TEAM = ""; GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = Record_my_position_Prefix.pch; + GCC_PREFIX_HEADER = src/Record_my_position_Prefix.pch; INFOPLIST_FILE = "resources/Record_my_position-appstore.plist"; PRODUCT_NAME = Record_my_position_appstore; PROVISIONING_PROFILE_SPECIFIER = ""; diff --git a/Record_my_position_Prefix.pch b/src/Record_my_position_Prefix.pch similarity index 100% rename from Record_my_position_Prefix.pch rename to src/Record_my_position_Prefix.pch From 30b2f7426a5079f67885312da5d0a1af929ead8f Mon Sep 17 00:00:00 2001 From: Grzegorz Adam Hankiewicz Date: Wed, 14 Jun 2017 08:56:29 +0200 Subject: [PATCH 04/10] Removes DCIntrospect external submodule. --- .gitmodules | 3 -- Record_my_position.xcodeproj/project.pbxproj | 47 +++----------------- external/DCIntrospect | 1 - src/App_delegate.m | 11 ----- 4 files changed, 5 insertions(+), 57 deletions(-) delete mode 160000 external/DCIntrospect diff --git a/.gitmodules b/.gitmodules index 77728ff..59b59fb 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,9 +4,6 @@ [submodule "external/ELHASO-iOS-snippets"] path = external/ELHASO-iOS-snippets url = git://github.com/gradha/ELHASO-iOS-snippets.git -[submodule "external/DCIntrospect"] - path = external/DCIntrospect - url = git://github.com/gradha/DCIntrospect.git [submodule "external/EHReachability"] path = external/EHReachability url = git://github.com/gradha/EHReachability.git diff --git a/Record_my_position.xcodeproj/project.pbxproj b/Record_my_position.xcodeproj/project.pbxproj index 3c45db8..39f8d16 100755 --- a/Record_my_position.xcodeproj/project.pbxproj +++ b/Record_my_position.xcodeproj/project.pbxproj @@ -101,10 +101,6 @@ D59AAF0F134BC5BC00E81139 /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D5DF0B7D127636C300A9BC0D /* MessageUI.framework */; }; D59AAF10134BC5BC00E81139 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D5C4AFCC12897956005BE697 /* SystemConfiguration.framework */; }; D59D0351126E372400F4D543 /* App_delegate.m in Sources */ = {isa = PBXBuildFile; fileRef = D59D0350126E372400F4D543 /* App_delegate.m */; }; - D5AAF85915CDB55D006D6D90 /* DCCrossHairView.m in Sources */ = {isa = PBXBuildFile; fileRef = D5AAF85115CDB55D006D6D90 /* DCCrossHairView.m */; }; - D5AAF85A15CDB55D006D6D90 /* DCFrameView.m in Sources */ = {isa = PBXBuildFile; fileRef = D5AAF85315CDB55D006D6D90 /* DCFrameView.m */; }; - D5AAF85B15CDB55D006D6D90 /* DCIntrospect.m in Sources */ = {isa = PBXBuildFile; fileRef = D5AAF85515CDB55D006D6D90 /* DCIntrospect.m */; }; - D5AAF85C15CDB55D006D6D90 /* DCStatusBarOverlay.m in Sources */ = {isa = PBXBuildFile; fileRef = D5AAF85815CDB55D006D6D90 /* DCStatusBarOverlay.m */; }; D5AAF85E15CDB5BD006D6D90 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D5AAF85D15CDB5BD006D6D90 /* QuartzCore.framework */; }; D5AAF87015CDD13B006D6D90 /* EHReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = D5AAF86515CDD13B006D6D90 /* EHReachability.m */; }; D5AAF87215CDD13B006D6D90 /* EHReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = D5AAF86515CDD13B006D6D90 /* EHReachability.m */; }; @@ -193,15 +189,6 @@ D59AAF16134BC5BC00E81139 /* Record_my_position-appstore.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Record_my_position-appstore.plist"; path = "resources/Record_my_position-appstore.plist"; sourceTree = ""; }; D59D034F126E372400F4D543 /* App_delegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = App_delegate.h; sourceTree = ""; }; D59D0350126E372400F4D543 /* App_delegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = App_delegate.m; sourceTree = ""; }; - D5AAF85015CDB55D006D6D90 /* DCCrossHairView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DCCrossHairView.h; path = DCIntrospect/DCIntrospect/DCCrossHairView.h; sourceTree = ""; }; - D5AAF85115CDB55D006D6D90 /* DCCrossHairView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DCCrossHairView.m; path = DCIntrospect/DCIntrospect/DCCrossHairView.m; sourceTree = ""; }; - D5AAF85215CDB55D006D6D90 /* DCFrameView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DCFrameView.h; path = DCIntrospect/DCIntrospect/DCFrameView.h; sourceTree = ""; }; - D5AAF85315CDB55D006D6D90 /* DCFrameView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DCFrameView.m; path = DCIntrospect/DCIntrospect/DCFrameView.m; sourceTree = ""; }; - D5AAF85415CDB55D006D6D90 /* DCIntrospect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DCIntrospect.h; path = DCIntrospect/DCIntrospect/DCIntrospect.h; sourceTree = ""; }; - D5AAF85515CDB55D006D6D90 /* DCIntrospect.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DCIntrospect.m; path = DCIntrospect/DCIntrospect/DCIntrospect.m; sourceTree = ""; }; - D5AAF85615CDB55D006D6D90 /* DCIntrospectSettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DCIntrospectSettings.h; path = DCIntrospect/DCIntrospect/DCIntrospectSettings.h; sourceTree = ""; }; - D5AAF85715CDB55D006D6D90 /* DCStatusBarOverlay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DCStatusBarOverlay.h; path = DCIntrospect/DCIntrospect/DCStatusBarOverlay.h; sourceTree = ""; }; - D5AAF85815CDB55D006D6D90 /* DCStatusBarOverlay.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DCStatusBarOverlay.m; path = DCIntrospect/DCIntrospect/DCStatusBarOverlay.m; sourceTree = ""; }; D5AAF85D15CDB5BD006D6D90 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; D5AAF86115CDD13B006D6D90 /* Apple_ReadMe.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Apple_ReadMe.txt; sourceTree = ""; }; D5AAF86415CDD13B006D6D90 /* EHReachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EHReachability.h; sourceTree = ""; }; @@ -425,22 +412,6 @@ path = info; sourceTree = ""; }; - D5AAF84F15CDB550006D6D90 /* DCIntrospect */ = { - isa = PBXGroup; - children = ( - D5AAF85015CDB55D006D6D90 /* DCCrossHairView.h */, - D5AAF85115CDB55D006D6D90 /* DCCrossHairView.m */, - D5AAF85215CDB55D006D6D90 /* DCFrameView.h */, - D5AAF85315CDB55D006D6D90 /* DCFrameView.m */, - D5AAF85415CDB55D006D6D90 /* DCIntrospect.h */, - D5AAF85515CDB55D006D6D90 /* DCIntrospect.m */, - D5AAF85615CDB55D006D6D90 /* DCIntrospectSettings.h */, - D5AAF85715CDB55D006D6D90 /* DCStatusBarOverlay.h */, - D5AAF85815CDB55D006D6D90 /* DCStatusBarOverlay.m */, - ); - name = DCIntrospect; - sourceTree = ""; - }; D5AAF85F15CDD13B006D6D90 /* EHReachability */ = { isa = PBXGroup; children = ( @@ -455,7 +426,6 @@ D5BEDA51126F8C6A0056DB78 /* external */ = { isa = PBXGroup; children = ( - D5AAF84F15CDB550006D6D90 /* DCIntrospect */, D51EB90A127A297C0016E191 /* egf */, D5BEDA52126F8C6A0056DB78 /* egodatabase */, D5AAF85F15CDD13B006D6D90 /* EHReachability */, @@ -667,10 +637,6 @@ D52550B913C9C0950050DD86 /* UINavigationController+ELHASO.m in Sources */, D5753E6913D3348B0088E034 /* HTML_view_controller.m in Sources */, D5753E6A13D3348B0088E034 /* Info_view_controller.m in Sources */, - D5AAF85915CDB55D006D6D90 /* DCCrossHairView.m in Sources */, - D5AAF85A15CDB55D006D6D90 /* DCFrameView.m in Sources */, - D5AAF85B15CDB55D006D6D90 /* DCIntrospect.m in Sources */, - D5AAF85C15CDB55D006D6D90 /* DCStatusBarOverlay.m in Sources */, D5AAF87015CDD13B006D6D90 /* EHReachability.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -724,10 +690,6 @@ GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = src/Record_my_position_Prefix.pch; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - USE_DCINTROSPECT, - ); INFOPLIST_FILE = "resources/Record_my_position-dev.plist"; PROVISIONING_PROFILE_SPECIFIER = ""; }; @@ -740,10 +702,6 @@ DEVELOPMENT_TEAM = ""; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = src/Record_my_position_Prefix.pch; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - USE_DCINTROSPECT, - ); INFOPLIST_FILE = "resources/Record_my_position-dev.plist"; PROVISIONING_PROFILE_SPECIFIER = ""; VALIDATE_PRODUCT = YES; @@ -787,6 +745,11 @@ ); "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; GCC_C_LANGUAGE_STANDARD = c99; + GCC_PREPROCESSOR_DEFINITIONS = ( + RELEASE, + NS_BLOCK_ASSERTIONS, + NDEBUG, + ); GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_SHADOW = YES; GCC_WARN_UNUSED_VARIABLE = YES; diff --git a/external/DCIntrospect b/external/DCIntrospect deleted file mode 160000 index fb6aaa5..0000000 --- a/external/DCIntrospect +++ /dev/null @@ -1 +0,0 @@ -Subproject commit fb6aaa54833d25b322befc9879c02d2518d40e75 diff --git a/src/App_delegate.m b/src/App_delegate.m index bde2634..7e29444 100644 --- a/src/App_delegate.m +++ b/src/App_delegate.m @@ -7,12 +7,6 @@ #import "EHReachability.h" -#ifdef USE_DCINTROSPECT -#ifdef TARGET_IPHONE_SIMULATOR -#import "DCIntrospect.h" -#endif -#endif - /** \mainpage Record my position * * \section meta Meta @@ -90,11 +84,6 @@ - (BOOL)application:(UIApplication *)application [window_ makeKeyAndVisible]; -#ifdef USE_DCINTROSPECT -#if TARGET_IPHONE_SIMULATOR - [[DCIntrospect sharedIntrospector] start]; -#endif -#endif return YES; } From 1436615607dee8887b033893e26150f1a39049b2 Mon Sep 17 00:00:00 2001 From: Grzegorz Adam Hankiewicz Date: Wed, 14 Jun 2017 09:08:19 +0200 Subject: [PATCH 05/10] Removes UDID based file stamping. --- external/egf/hardware.h | 4 +--- external/egf/hardware.m | 18 ++---------------- src/controllers/Share_tab.m | 5 ++--- 3 files changed, 5 insertions(+), 22 deletions(-) diff --git a/external/egf/hardware.h b/external/egf/hardware.h index c44dc4c..69dca1c 100644 --- a/external/egf/hardware.h +++ b/external/egf/hardware.h @@ -1,3 +1,4 @@ +// vim:tabstop=4 shiftwidth=4 syntax=objc /** * \file hardware.h * \brief Functions to query the underlying hardware. @@ -47,7 +48,6 @@ struct Hardware_info_t HW_FAMILY family; // Hardware family. char version; // Zero or positive means recognised version. char *name; // Hardware name as C string. - char udid[UDID_LEN + 1]; // UDID plus NULL terminator. }; @@ -56,5 +56,3 @@ void destroy_hardware_info(Hardware_info **info); #endif // __EGF_HARDWARE_H__ - -// vim:tabstop=4 shiftwidth=4 syntax=objc diff --git a/external/egf/hardware.m b/external/egf/hardware.m index 3a6d86d..e9b2954 100644 --- a/external/egf/hardware.m +++ b/external/egf/hardware.m @@ -1,4 +1,4 @@ -// vim:tabstop=4 shiftwidth=4 encoding=utf-8 syntax=objc +// vim:tabstop=4 shiftwidth=4 syntax=objc #include "egf/hardware.h" @@ -34,26 +34,12 @@ } info->name = calloc(1, size); if (!info->name) { - DLOG(@"Not enough memory to get hardware name (%lu).", size); + DLOG(@"Not enough memory to get hardware name (%ld).", size); free(info); info = 0; goto exit; } - info->udid[0] = 0; - UIDevice *dev = [UIDevice currentDevice]; - NSString *udid = dev.uniqueIdentifier; - if (udid) { - if (UDID_LEN == strlen([udid cStringUsingEncoding:1])) { - strncpy(info->udid, [udid cStringUsingEncoding:1], UDID_LEN); - info->udid[UDID_LEN] = 0; - } else { - DLOG(@"Unexpected UDID length for '%@'.", udid); - } - } else { - DLOG(@"Couldn't read UDID."); - } - sysctlbyname("hw.machine", info->name, &size, 0, 0); DLOG(@"Retrieved hardware string '%s'.", info->name); diff --git a/src/controllers/Share_tab.m b/src/controllers/Share_tab.m index 76fe6d8..11bf151 100644 --- a/src/controllers/Share_tab.m +++ b/src/controllers/Share_tab.m @@ -271,10 +271,9 @@ - (NSString*)get_export_filename Hardware_info *info = get_hardware_info(); NSString *ret = [NSString stringWithFormat:@"positions %04d-%02d-%02d " - @"%02d:%02d:%02d %s %s", [now year], [now month], [now day], + @"%02d:%02d:%02d %s", [now year], [now month], [now day], [now hour], [now minute], [now second], - (info && info->name) ? (info->name) : ("unknown"), - (info && info->udid[0]) ? (info->udid) : ("no udid"), nil]; + (info && info->name) ? (info->name) : ("unknown")]; destroy_hardware_info(&info); return ret; From 30d6cc1339c8a2c8399d8f4364458bb0b79a7dab Mon Sep 17 00:00:00 2001 From: Grzegorz Adam Hankiewicz Date: Wed, 14 Jun 2017 09:09:41 +0200 Subject: [PATCH 06/10] Updates project to recommended Xcode settings. --- Record_my_position.xcodeproj/project.pbxproj | 57 ++++++++++++++++---- resources/Record_my_position-appstore.plist | 12 ++--- resources/Record_my_position-dev.plist | 16 +++--- 3 files changed, 61 insertions(+), 24 deletions(-) diff --git a/Record_my_position.xcodeproj/project.pbxproj b/Record_my_position.xcodeproj/project.pbxproj index 39f8d16..57c0a9d 100755 --- a/Record_my_position.xcodeproj/project.pbxproj +++ b/Record_my_position.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 45; + objectVersion = 46; objects = { /* Begin PBXBuildFile section */ @@ -515,6 +515,7 @@ 29B97313FDCFA39411CA2CEA /* Project object */ = { isa = PBXProject; attributes = { + LastUpgradeCheck = 0830; TargetAttributes = { 1D6058900D05DD3D006BFB54 = { ProvisioningStyle = Manual; @@ -525,7 +526,7 @@ }; }; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Record_my_position" */; - compatibilityVersion = "Xcode 3.1"; + compatibilityVersion = "Xcode 3.2"; developmentRegion = English; hasScannedForEncodings = 1; knownRegions = ( @@ -690,7 +691,9 @@ GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = src/Record_my_position_Prefix.pch; + GCC_THUMB_SUPPORT = NO; INFOPLIST_FILE = "resources/Record_my_position-dev.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.yourcompany.${PRODUCT_NAME:rfc1034identifier}"; PROVISIONING_PROFILE_SPECIFIER = ""; }; name = Debug; @@ -702,7 +705,9 @@ DEVELOPMENT_TEAM = ""; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = src/Record_my_position_Prefix.pch; + GCC_THUMB_SUPPORT = NO; INFOPLIST_FILE = "resources/Record_my_position-dev.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.yourcompany.${PRODUCT_NAME:rfc1034identifier}"; PROVISIONING_PROFILE_SPECIFIER = ""; VALIDATE_PRODUCT = YES; }; @@ -712,21 +717,36 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = ( - armv7, - armv6, - ); + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = c99; + GCC_NO_COMMON_BLOCKS = YES; GCC_PREPROCESSOR_DEFINITIONS = DEBUG; + GCC_THUMB_SUPPORT = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_SHADOW = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ( src, external, ); IPHONEOS_DEPLOYMENT_TARGET = 8.0; + ONLY_ACTIVE_ARCH = YES; OTHER_LDFLAGS = "-weak-lSystem"; PREBINDING = NO; PRODUCT_NAME = Record_my_position; @@ -739,19 +759,32 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = ( - armv7, - armv6, - ); + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = c99; + GCC_NO_COMMON_BLOCKS = YES; GCC_PREPROCESSOR_DEFINITIONS = ( RELEASE, NS_BLOCK_ASSERTIONS, NDEBUG, ); + GCC_THUMB_SUPPORT = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_SHADOW = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ( src, @@ -777,7 +810,9 @@ GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = src/Record_my_position_Prefix.pch; + GCC_THUMB_SUPPORT = NO; INFOPLIST_FILE = "resources/Record_my_position-appstore.plist"; + PRODUCT_BUNDLE_IDENTIFIER = com.elhaso.recordmyposition; PRODUCT_NAME = Record_my_position_appstore; PROVISIONING_PROFILE_SPECIFIER = ""; }; @@ -791,7 +826,9 @@ DEVELOPMENT_TEAM = ""; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = src/Record_my_position_Prefix.pch; + GCC_THUMB_SUPPORT = NO; INFOPLIST_FILE = "resources/Record_my_position-appstore.plist"; + PRODUCT_BUNDLE_IDENTIFIER = com.elhaso.recordmyposition; PRODUCT_NAME = Record_my_position_appstore; PROVISIONING_PROFILE_SPECIFIER = ""; VALIDATE_PRODUCT = YES; diff --git a/resources/Record_my_position-appstore.plist b/resources/Record_my_position-appstore.plist index e9e0319..d554f20 100644 --- a/resources/Record_my_position-appstore.plist +++ b/resources/Record_my_position-appstore.plist @@ -11,7 +11,7 @@ CFBundleIconFile Icon.png CFBundleIdentifier - com.elhaso.recordmyposition + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName @@ -20,19 +20,19 @@ APPL CFBundleSignature ???? + CFBundleVersion + 1.4.2 + LSRequiresIPhoneOS + UIBackgroundModes location - CFBundleVersion - 1.4.2 - LSRequiresIPhoneOS + UIFileSharingEnabled UISupportedInterfaceOrientations UIInterfaceOrientationPortrait - UIFileSharingEnabled - diff --git a/resources/Record_my_position-dev.plist b/resources/Record_my_position-dev.plist index 760ea25..fcbed82 100644 --- a/resources/Record_my_position-dev.plist +++ b/resources/Record_my_position-dev.plist @@ -11,30 +11,30 @@ CFBundleIconFile Icon.png CFBundleIdentifier - com.yourcompany.${PRODUCT_NAME:rfc1034identifier} + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 - UIRequiresPersistentWiFi - CFBundleName ${PRODUCT_NAME} CFBundlePackageType APPL CFBundleSignature ???? + CFBundleVersion + 1.4.2 + LSRequiresIPhoneOS + UIBackgroundModes location - CFBundleVersion - 1.4.2 - LSRequiresIPhoneOS + UIFileSharingEnabled + + UIRequiresPersistentWiFi UISupportedInterfaceOrientations UIInterfaceOrientationPortrait - UIFileSharingEnabled - From b3a775a3fa6559bb1781864dfddf6dc04946ca8a Mon Sep 17 00:00:00 2001 From: Grzegorz Adam Hankiewicz Date: Wed, 14 Jun 2017 09:13:30 +0200 Subject: [PATCH 07/10] Fixes main window not having a root controller at launch. --- src/App_delegate.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/App_delegate.m b/src/App_delegate.m index 7e29444..e3a204e 100644 --- a/src/App_delegate.m +++ b/src/App_delegate.m @@ -80,7 +80,7 @@ - (BOOL)application:(UIApplication *)application launch_options]]; tab_controller_ = [Tab_controller new]; - [window_ addSubview:tab_controller_.view]; + [window_ setRootViewController:tab_controller_]; [window_ makeKeyAndVisible]; From b8fcfe7dee750f7a60ae913eeea4efeab5691993 Mon Sep 17 00:00:00 2001 From: Grzegorz Adam Hankiewicz Date: Wed, 14 Jun 2017 09:23:51 +0200 Subject: [PATCH 08/10] Patches some compilation warnings. --- src/controllers/Capture_tab.m | 1 - src/controllers/Info_view_controller.h | 2 +- src/controllers/Info_view_controller.m | 6 +++--- src/controllers/Share_tab.m | 11 ++++++----- src/db/DB.m | 8 ++++---- src/db/DB_log.h | 2 +- 6 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/controllers/Capture_tab.m b/src/controllers/Capture_tab.m index 9016684..25a3d90 100644 --- a/src/controllers/Capture_tab.m +++ b/src/controllers/Capture_tab.m @@ -8,7 +8,6 @@ @interface Capture_tab () - (void)gps_switch_changed; -- (void)gps_switch_changed; - (void)update_gui; - (void)start_timer; - (void)add_note; diff --git a/src/controllers/Info_view_controller.h b/src/controllers/Info_view_controller.h index 3b94a87..8aef0fe 100644 --- a/src/controllers/Info_view_controller.h +++ b/src/controllers/Info_view_controller.h @@ -8,7 +8,7 @@ NSString *title_; } -@property (nonatomic, retain) NSString *title; +@property (nonatomic, copy) NSString *title; @property (nonatomic, retain) NSArray *items; @end diff --git a/src/controllers/Info_view_controller.m b/src/controllers/Info_view_controller.m index d2706a0..8e6c174 100644 --- a/src/controllers/Info_view_controller.m +++ b/src/controllers/Info_view_controller.m @@ -45,7 +45,7 @@ - (UITableViewCell *)tableView:(UITableView *)tableView reuseIdentifier:identifier] autorelease]; cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; - cell.textLabel.text = [self.items get:indexPath.row * 2]; + cell.textLabel.text = [self.items get:(int)indexPath.row * 2]; cell.textLabel.textColor = [UIColor colorWithRed:0x12 / 255.0 green:0x65 / 255.0 blue:0x74 / 255.0 alpha:1]; cell.textLabel.adjustsFontSizeToFitWidth = YES; @@ -64,8 +64,8 @@ - (NSInteger)tableView:(UITableView *)tableView - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - NSString *title = [self.items get:indexPath.row * 2]; - id content = [self.items get:indexPath.row * 2 + 1]; + NSString *title = [self.items get:(int)indexPath.row * 2]; + id content = [self.items get:(int)indexPath.row * 2 + 1]; if ([content isKindOfClass:[NSString class]]) { HTML_view_controller *controller = [HTML_view_controller new]; diff --git a/src/controllers/Share_tab.m b/src/controllers/Share_tab.m index 11bf151..8213d2a 100644 --- a/src/controllers/Share_tab.m +++ b/src/controllers/Share_tab.m @@ -264,15 +264,16 @@ - (void)share_by_email - (NSString*)get_export_filename { NSDateComponents *now = [[NSCalendar currentCalendar] - components:NSDayCalendarUnit | NSMonthCalendarUnit | - NSYearCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | - NSSecondCalendarUnit fromDate:[NSDate date]]; + components:NSCalendarUnitDay | NSCalendarUnitMonth | + NSCalendarUnitYear | NSCalendarUnitHour | NSCalendarUnitMinute | + NSCalendarUnitSecond fromDate:[NSDate date]]; Hardware_info *info = get_hardware_info(); NSString *ret = [NSString stringWithFormat:@"positions %04d-%02d-%02d " - @"%02d:%02d:%02d %s", [now year], [now month], [now day], - [now hour], [now minute], [now second], + @"%02d:%02d:%02d %s", + (int)[now year], (int)[now month], (int)[now day], + (int)[now hour], (int)[now minute], (int)[now second], (info && info->name) ? (info->name) : ("unknown")]; destroy_hardware_info(&info); diff --git a/src/db/DB.m b/src/db/DB.m index 36287e9..9c2b815 100644 --- a/src/db/DB.m +++ b/src/db/DB.m @@ -72,7 +72,7 @@ + (void)preserve_old_db + (DB*)open_database { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - const int db_version = [defaults integerForKey:_DB_MODEL_KEY]; + const int db_version = (int)[defaults integerForKey:_DB_MODEL_KEY]; if (_DB_MODEL_VERSION != db_version) { DLOG(@"Preious DB model %d, I was expecting %d. Purging!", db_version, _DB_MODEL_VERSION); @@ -208,7 +208,7 @@ - (void)flush if (!data) return; - DLOG(@"Flushing %d entries to disk.", data.count); + DLOG(@"Flushing %ld entries to disk.", (long)data.count); NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; for (DB_log *db_log in data) { @@ -249,7 +249,7 @@ - (void)flush @"VALUES (NULL, ?, ?, 0, 0, -1, -1,-1, ?, ?, ?, ?, ?, ?," @"?, ?)", [NSNumber numberWithInt:DB_ROW_TYPE_LOG], db_log.text, - [NSNumber numberWithInt:db_log->timestamp_], + [NSNumber numberWithLong:db_log->timestamp_], [NSNumber numberWithBool:db_log->in_background_], [NSNumber numberWithInt:db_log->accuracy_], [NSNumber numberWithDouble:db_log.location.speed], @@ -280,7 +280,7 @@ - (int)get_num_entries EGODatabaseRow *row = [result rowAtIndex:0]; total += [row intForColumnIndex:0]; } - return total + buffer_.count; + return total + (int)buffer_.count; } /** Queries the database for rows to make an attachment from. diff --git a/src/db/DB_log.h b/src/db/DB_log.h index 4be75b1..8f5f6a2 100644 --- a/src/db/DB_log.h +++ b/src/db/DB_log.h @@ -21,7 +21,7 @@ int row_type_; /// Seconds since epoch for the event. - int timestamp_; + long timestamp_; /// Tells if the application was in foreground. BOOL in_background_; From 813595d79f4f185e1349914ac7088467cd75fa7a Mon Sep 17 00:00:00 2001 From: Grzegorz Adam Hankiewicz Date: Sun, 19 Nov 2017 20:30:16 +0100 Subject: [PATCH 09/10] Updates GPS opening to check and ask for user permission. Refs #40. --- README.rst | 13 ++-- Record_my_position.xcodeproj/project.pbxproj | 2 - resources/Record_my_position-appstore.plist | 6 ++ resources/Record_my_position-dev.plist | 4 ++ src/GPS.h | 1 + src/GPS.m | 16 ++++- src/controllers/Capture_tab.m | 74 +++++++++++++++++++- 7 files changed, 107 insertions(+), 9 deletions(-) diff --git a/README.rst b/README.rst index afb311a..8497834 100644 --- a/README.rst +++ b/README.rst @@ -74,11 +74,14 @@ Source code Requirements ------------ -The source code uses SDK 4.1 and deploys on 3.x. Patches are welcome -to make it compile out of the box with previous SDK versions. In -order to dynamically generate the versioned splash number, you need -Cobra (http://cobra-language.com/) to compile the -``script/watermark.cobra`` program and run it. +The source code compiles against SDK 8.0, which is the current lowest supported +SDK by Apple. Previous to the 8.0 update the code supported deployment on 3.x +OS versions, but that's not Apple's cup of tea, you are presumed to upgrade +your hardware every year, so you likely won't make use of that anyway. + +In order to dynamically generate the versioned splash number, you need Cobra +(http://cobra-language.com/) to compile the ``script/watermark.cobra`` program +and run it. Installation diff --git a/Record_my_position.xcodeproj/project.pbxproj b/Record_my_position.xcodeproj/project.pbxproj index 57c0a9d..b24f1f0 100755 --- a/Record_my_position.xcodeproj/project.pbxproj +++ b/Record_my_position.xcodeproj/project.pbxproj @@ -194,7 +194,6 @@ D5AAF86415CDD13B006D6D90 /* EHReachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EHReachability.h; sourceTree = ""; }; D5AAF86515CDD13B006D6D90 /* EHReachability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EHReachability.m; sourceTree = ""; }; D5AAF86615CDD13B006D6D90 /* README.rst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README.rst; sourceTree = ""; }; - D5B08A80133D30E700A60B34 /* Er_recorder.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Er_recorder.plist; path = resources/Er_recorder.plist; sourceTree = ""; }; D5B75C6A1297D87800A4142B /* capture_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = capture_icon.png; sourceTree = ""; }; D5B75C6B1297D87800A4142B /* capture_icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "capture_icon@2x.png"; sourceTree = ""; }; D5BEDA3D126F8C100056DB78 /* macro.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = macro.h; sourceTree = ""; }; @@ -286,7 +285,6 @@ 29B97315FDCFA39411CA2CEA /* Other */ = { isa = PBXGroup; children = ( - D5B08A80133D30E700A60B34 /* Er_recorder.plist */, 8D1107310486CEB800E47090 /* Record_my_position-dev.plist */, D59AAF16134BC5BC00E81139 /* Record_my_position-appstore.plist */, ); diff --git a/resources/Record_my_position-appstore.plist b/resources/Record_my_position-appstore.plist index d554f20..fb07598 100644 --- a/resources/Record_my_position-appstore.plist +++ b/resources/Record_my_position-appstore.plist @@ -30,9 +30,15 @@ UIFileSharingEnabled + UIRequiresPersistentWiFi + UISupportedInterfaceOrientations UIInterfaceOrientationPortrait + NSLocationAlwaysUsageDescription + This permission is needed to record your location even when you switch away from the app. + ITSAppUsesNonExemptEncryption + diff --git a/resources/Record_my_position-dev.plist b/resources/Record_my_position-dev.plist index fcbed82..fb07598 100644 --- a/resources/Record_my_position-dev.plist +++ b/resources/Record_my_position-dev.plist @@ -36,5 +36,9 @@ UIInterfaceOrientationPortrait + NSLocationAlwaysUsageDescription + This permission is needed to record your location even when you switch away from the app. + ITSAppUsesNonExemptEncryption + diff --git a/src/GPS.h b/src/GPS.h index db713e8..20aee28 100644 --- a/src/GPS.h +++ b/src/GPS.h @@ -50,6 +50,7 @@ typedef enum ACCURACY_ENUM ACCURACY; + (NSString*)key_path; - (id)init; - (bool)start; +- (void)requestPermissions; - (void)stop; - (void)add_watcher:(id)watcher; - (void)remove_watcher:(id)watcher; diff --git a/src/GPS.m b/src/GPS.m index c40018c..3613517 100644 --- a/src/GPS.m +++ b/src/GPS.m @@ -150,7 +150,14 @@ + (NSString*)degrees_to_dms:(CLLocationDegrees)value latitude:(BOOL)latitude */ - (bool)start { - if (manager_.locationServicesEnabled) { + const CLAuthorizationStatus status = [CLLocationManager authorizationStatus]; + BOOL shouldWork = (kCLAuthorizationStatusAuthorizedWhenInUse == status + || kCLAuthorizationStatusAuthorizedAlways == status); + + if (!shouldWork) + return false; + + if ([CLLocationManager locationServicesEnabled]) { if (!self.gps_is_on && !nolog_) [[DB get] log:@"Starting to update location"]; @@ -165,6 +172,13 @@ - (bool)start } } +/** Requests the OS to ask the user for always permissions. + */ +- (void)requestPermissions +{ + [manager_ requestAlwaysAuthorization]; +} + /** Stops the GPS tracking. * You can call this function anytime, doesn't really fail. */ diff --git a/src/controllers/Capture_tab.m b/src/controllers/Capture_tab.m index 25a3d90..80f2cf3 100644 --- a/src/controllers/Capture_tab.m +++ b/src/controllers/Capture_tab.m @@ -199,7 +199,9 @@ - (void)gps_switch_changed if ([start_switch_ isOn]) { if (![gps start]) { start_switch_.on = false; - [self warn:@"Couldn't start GPS" title:@"GPS"]; + if (![self check_gps_permissions]) { + [self warn:@"Couldn't start GPS" title:@"GPS"]; + } } else { [gps add_watcher:self]; watching_ = YES; @@ -375,6 +377,76 @@ - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object context:context]; } +#pragma mark - +#pragma mark GPS permission dance + +/** + Validates permissions against the user interface. + + Returns YES if the permission state was handled, NO if everything is fine and + GPS should really work. + */ +- (BOOL)check_gps_permissions +{ + const CLAuthorizationStatus status = [CLLocationManager authorizationStatus]; + + if (kCLAuthorizationStatusRestricted == status) { + [self warn:@"Global permissions disallow using the GPS" + title:@"GPS is disabled"]; + return YES; + } + + if (kCLAuthorizationStatusDenied == status) { + [self ask_gps_permissions]; + return YES; + } + + if (kCLAuthorizationStatusNotDetermined == status) { + [[GPS get] requestPermissions]; + return YES; + } + + return NO; +} + + +/** Asks the user for permissions. + * + * Actually, we can't, so we display a button instead which opens the global + * preferences to guide the user there. + */ +- (void)ask_gps_permissions +{ + NSDictionary* info = [[NSBundle mainBundle] infoDictionary]; + NSString* title + = @"Allow Record My Position to access your location at all times?"; + NSString* message = [info objectForKey:@"NSLocationAlwaysUsageDescription"]; + + UIAlertController* alert = [UIAlertController + alertControllerWithTitle:title message:message + preferredStyle:UIAlertControllerStyleAlert]; + + [alert addAction:[UIAlertAction actionWithTitle:@"Cancel" + style:UIAlertActionStyleDefault handler:^(UIAlertAction* _Nonnull action) + { + // If users cancels, show the updated denied message. + dispatch_async_ui(^{ + [self warn:@"The app won't work wihout permissions" + title:@"No permissions"]; + }); + }]]; + + [alert addAction:[UIAlertAction actionWithTitle:@"Open Settings" + style:UIAlertActionStyleDefault + handler:^(UIAlertAction* _Nonnull action) + { + [[UIApplication sharedApplication] openURL:[NSURL + URLWithString:UIApplicationOpenSettingsURLString]]; + }]]; + + [self presentViewController:alert animated:true completion:nil]; +} + @end // vim:tabstop=4 shiftwidth=4 syntax=objc From cd88527c139b5e92c6012b37e5bf22f5f553f0a6 Mon Sep 17 00:00:00 2001 From: Grzegorz Adam Hankiewicz Date: Sun, 19 Nov 2017 21:09:35 +0100 Subject: [PATCH 10/10] Adds when in use message support for iPhone X. Refs #40. --- resources/Record_my_position-appstore.plist | 4 ++++ resources/Record_my_position-dev.plist | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/resources/Record_my_position-appstore.plist b/resources/Record_my_position-appstore.plist index fb07598..b789a85 100644 --- a/resources/Record_my_position-appstore.plist +++ b/resources/Record_my_position-appstore.plist @@ -38,6 +38,10 @@ NSLocationAlwaysUsageDescription This permission is needed to record your location even when you switch away from the app. + NSLocationAlwaysAndWhenInUseUsageDescription + This permission is needed to record your location even when you switch away from the app. + NSLocationWhenInUseUsageDescription + This permission is needed to record your location even when you switch away from the app. ITSAppUsesNonExemptEncryption diff --git a/resources/Record_my_position-dev.plist b/resources/Record_my_position-dev.plist index fb07598..b789a85 100644 --- a/resources/Record_my_position-dev.plist +++ b/resources/Record_my_position-dev.plist @@ -38,6 +38,10 @@ NSLocationAlwaysUsageDescription This permission is needed to record your location even when you switch away from the app. + NSLocationAlwaysAndWhenInUseUsageDescription + This permission is needed to record your location even when you switch away from the app. + NSLocationWhenInUseUsageDescription + This permission is needed to record your location even when you switch away from the app. ITSAppUsesNonExemptEncryption