diff --git a/iphone/Maps/Core/Settings/MWMSettings.h b/iphone/Maps/Core/Settings/MWMSettings.h index 49978d655..9a69de341 100644 --- a/iphone/Maps/Core/Settings/MWMSettings.h +++ b/iphone/Maps/Core/Settings/MWMSettings.h @@ -1,6 +1,12 @@ NS_SWIFT_NAME(SettingsBridge) @interface MWMSettings : NSObject ++ (BOOL)liveTrafficEnabled; ++ (void)setLiveTrafficEnabled:(BOOL)liveTrafficEnabled; + ++ (NSURL *)liveTrafficUrl; ++ (void)setLiveTrafficUrl:(NSURL *)liveTrafficUrl; + + (BOOL)buildings3dViewEnabled; + (void)setBuildings3dViewEnabled:(BOOL)buildings3dViewEnabled; diff --git a/iphone/Maps/Core/Settings/MWMSettings.mm b/iphone/Maps/Core/Settings/MWMSettings.mm index 297cb7a8a..7e18deda6 100644 --- a/iphone/Maps/Core/Settings/MWMSettings.mm +++ b/iphone/Maps/Core/Settings/MWMSettings.mm @@ -26,6 +26,40 @@ NSString * const kUDFileLoggingEnabledKey = @"FileLoggingEnabledKey"; @implementation MWMSettings ++ (BOOL)liveTrafficEnabled; +{ + return GetFramework().LoadTrafficHttpEnabled(); +} + ++ (void)setLiveTrafficEnabled:(BOOL)liveTrafficEnabled; +{ + auto &f = GetFramework(); + f.SaveTrafficHttpEnabled(liveTrafficEnabled); + f.SetTrafficHttpEnabled(liveTrafficEnabled); +} + ++ (NSURL *)liveTrafficUrl; +{ + NSString * link = @(GetFramework().LoadTrafficHttpUrl().c_str()); + if ([link length] == 0) { + return nil; + } else { + return [NSURL URLWithString:link]; + } +} + ++ (void)setLiveTrafficUrl:(NSURL *)liveTrafficUrl; +{ + auto &f = GetFramework(); + if (liveTrafficUrl == nil) { + f.SaveTrafficHttpUrl(@"".UTF8String); + f.SetTrafficHttpUrl(@"".UTF8String); + } else { + f.SaveTrafficHttpUrl(liveTrafficUrl.absoluteString.UTF8String); + f.SetTrafficHttpUrl(liveTrafficUrl.absoluteString.UTF8String); + } +} + + (BOOL)buildings3dViewEnabled; { bool _ = true, on = true; diff --git a/iphone/Maps/LocalizedStrings/en-GB.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/en-GB.lproj/Localizable.strings index 91bb86e4e..11e15e040 100644 --- a/iphone/Maps/LocalizedStrings/en-GB.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/en-GB.lproj/Localizable.strings @@ -696,6 +696,13 @@ "editor_place_doesnt_exist" = "Place does not exist"; "text_more_button" = "…more"; +/* Live traffic data */ +"traffic_http" = "Live Traffic"; +"traffic_http_enabled" = "Enable live traffic data"; +"traffic_http_enabled_description" = "When enabled, the app will periodically retrieve traffic information from the configured URL."; +"traffic_http_url" = "Traffic service URL"; +"traffic_http_url_not_set" = "Not set"; + /* Phone number error message */ "error_enter_correct_phone" = "Enter a valid phone number"; "error_enter_correct_web" = "Enter a valid web address"; diff --git a/iphone/Maps/LocalizedStrings/en.lproj/Localizable.strings b/iphone/Maps/LocalizedStrings/en.lproj/Localizable.strings index 36cf58aa1..545807d65 100644 --- a/iphone/Maps/LocalizedStrings/en.lproj/Localizable.strings +++ b/iphone/Maps/LocalizedStrings/en.lproj/Localizable.strings @@ -714,6 +714,13 @@ "editor_place_doesnt_exist" = "Place does not exist"; "text_more_button" = "…more"; +/* Live traffic data */ +"traffic_http" = "Live Traffic"; +"traffic_http_enabled" = "Enable live traffic data"; +"traffic_http_enabled_description" = "When enabled, the app will periodically retrieve traffic information from the configured URL."; +"traffic_http_url" = "Traffic service URL"; +"traffic_http_url_not_set" = "Not set"; + /* Phone number error message */ "error_enter_correct_phone" = "Enter a valid phone number"; "error_enter_correct_web" = "Enter a valid web address"; diff --git a/iphone/Maps/Maps.xcodeproj/project.pbxproj b/iphone/Maps/Maps.xcodeproj/project.pbxproj index 1698a9be3..078df4c8b 100644 --- a/iphone/Maps/Maps.xcodeproj/project.pbxproj +++ b/iphone/Maps/Maps.xcodeproj/project.pbxproj @@ -15,6 +15,7 @@ 272F1F3B2E0EE0A300FA52EF /* NoExistingProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 272F1F3A2E0EE09500FA52EF /* NoExistingProfileView.swift */; }; 272F1F3D2E0EE0C800FA52EF /* ProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 272F1F3C2E0EE0C400FA52EF /* ProfileView.swift */; }; 272F1F462E0EEF9400FA52EF /* SafariView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 272F1F452E0EEF8B00FA52EF /* SafariView.swift */; }; + 2747205A2E439FBA00C516DF /* libtraffxml.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 274720592E439FBA00C516DF /* libtraffxml.a */; }; 2765D1D02E13F9C20005CA2B /* BridgeControllers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2765D1CD2E13F9BC0005CA2B /* BridgeControllers.swift */; }; 27697F742E25177600FBD913 /* AboutView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27697F732E25177300FBD913 /* AboutView.swift */; }; 27697F7F2E254A5500FBD913 /* CopyrightView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27697F7C2E254A5000FBD913 /* CopyrightView.swift */; }; @@ -774,6 +775,7 @@ 272F1F3A2E0EE09500FA52EF /* NoExistingProfileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NoExistingProfileView.swift; sourceTree = ""; }; 272F1F3C2E0EE0C400FA52EF /* ProfileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileView.swift; sourceTree = ""; }; 272F1F452E0EEF8B00FA52EF /* SafariView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SafariView.swift; sourceTree = ""; }; + 274720592E439FBA00C516DF /* libtraffxml.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libtraffxml.a; sourceTree = BUILT_PRODUCTS_DIR; }; 2765D1CD2E13F9BC0005CA2B /* BridgeControllers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BridgeControllers.swift; sourceTree = ""; }; 27697F732E25177300FBD913 /* AboutView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutView.swift; sourceTree = ""; }; 27697F7C2E254A5000FBD913 /* CopyrightView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CopyrightView.swift; sourceTree = ""; }; @@ -1813,6 +1815,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 2747205A2E439FBA00C516DF /* libtraffxml.a in Frameworks */, FAF9DDA32A86DC54000D7037 /* libharfbuzz.a in Frameworks */, FA456C3C26BDC6AD00B83C20 /* Chart.framework in Frameworks */, FA853BF326BC5DE50026D455 /* libshaders.a in Frameworks */, @@ -2046,6 +2049,7 @@ 29B97323FDCFA39411CA2CEA /* Frameworks */ = { isa = PBXGroup; children = ( + 274720592E439FBA00C516DF /* libtraffxml.a */, FAF9DDA22A86DC54000D7037 /* libharfbuzz.a */, FA456C3B26BDC6AD00B83C20 /* Chart.framework */, FA853BF226BC5DE50026D455 /* libshaders.a */, diff --git a/iphone/Maps/Model/Settings.swift b/iphone/Maps/Model/Settings.swift index caa36e0b7..b1c4e7239 100644 --- a/iphone/Maps/Model/Settings.swift +++ b/iphone/Maps/Model/Settings.swift @@ -373,6 +373,28 @@ import Combine } + /// If live traffic data should be used + @objc static var hasLiveTraffic: Bool { + get { + return SettingsBridge.liveTrafficEnabled() + } + set { + SettingsBridge.setLiveTrafficEnabled(newValue) + } + } + + + /// The url of the live traffic data server + @objc static var liveTrafficServerUrl: URL? { + get { + return SettingsBridge.liveTrafficUrl() + } + set { + SettingsBridge.setLiveTrafficUrl(newValue) + } + } + + // MARK: Methods diff --git a/iphone/Maps/UI/Settings/SettingsNavigationView.swift b/iphone/Maps/UI/Settings/SettingsNavigationView.swift index 01096b02c..abb308849 100644 --- a/iphone/Maps/UI/Settings/SettingsNavigationView.swift +++ b/iphone/Maps/UI/Settings/SettingsNavigationView.swift @@ -44,6 +44,14 @@ struct SettingsNavigationView: View { @State var shouldAvoidMotorwaysWhileRouting: Bool = false + /// If live traffic data should be used + @State var hasLiveTraffic: Bool = false + + + /// The url of the live traffic data server + @State var liveTrafficServerUrlString: String = "" + + /// The actual view var body: some View { List { @@ -123,6 +131,24 @@ struct SettingsNavigationView: View { } header: { Text("driving_options_title") } + + Section { + Toggle(isOn: $hasLiveTraffic) { + VStack(alignment: .leading) { + Text("traffic_http_enabled") + + Text("traffic_http_enabled_description") + .font(.footnote) + .foregroundStyle(.secondary) + } + } + .tint(.accent) + + TextField("traffic_http_url", text: $liveTrafficServerUrlString, prompt: Text("traffic_http_url_not_set")) + .tint(.accent) + } header: { + Text("traffic_http") + } } .accentColor(.accent) .navigationViewStyle(StackNavigationViewStyle()) @@ -138,6 +164,8 @@ struct SettingsNavigationView: View { shouldAvoidUnpavedRoadsWhileRouting = Settings.shouldAvoidUnpavedRoadsWhileRouting shouldAvoidFerriesWhileRouting = Settings.shouldAvoidFerriesWhileRouting shouldAvoidMotorwaysWhileRouting = Settings.shouldAvoidMotorwaysWhileRouting + hasLiveTraffic = Settings.hasLiveTraffic + liveTrafficServerUrlString = Settings.liveTrafficServerUrl?.absoluteString ?? "" } .onChange(of: hasPerspectiveViewWhileRouting) { changedHasPerspectiveViewWhileRouting in Settings.hasPerspectiveViewWhileRouting = changedHasPerspectiveViewWhileRouting @@ -174,5 +202,15 @@ struct SettingsNavigationView: View { .onChange(of: shouldAvoidMotorwaysWhileRouting) { changedShouldAvoidMotorwaysWhileRouting in Settings.shouldAvoidMotorwaysWhileRouting = changedShouldAvoidMotorwaysWhileRouting } + .onChange(of: hasLiveTraffic) { changedHasLiveTraffic in + Settings.hasLiveTraffic = changedHasLiveTraffic + } + .onChange(of: liveTrafficServerUrlString) { changedLiveTrafficServerUrlString in + if !changedLiveTrafficServerUrlString.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty, let changedLiveTrafficServerUrl = URL(string: changedLiveTrafficServerUrlString.trimmingCharacters(in: .whitespacesAndNewlines)) { + Settings.liveTrafficServerUrl = changedLiveTrafficServerUrl + } else { + Settings.liveTrafficServerUrl = nil + } + } } } diff --git a/xcode/CoMaps.xcworkspace/contents.xcworkspacedata b/xcode/CoMaps.xcworkspace/contents.xcworkspacedata index 490f821db..82eb96a82 100644 --- a/xcode/CoMaps.xcworkspace/contents.xcworkspacedata +++ b/xcode/CoMaps.xcworkspace/contents.xcworkspacedata @@ -157,6 +157,9 @@ + + diff --git a/xcode/traffxml/traffxml.xcodeproj/project.pbxproj b/xcode/traffxml/traffxml.xcodeproj/project.pbxproj new file mode 100644 index 000000000..3e0c759bb --- /dev/null +++ b/xcode/traffxml/traffxml.xcodeproj/project.pbxproj @@ -0,0 +1,266 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 2747204F2E439E3000C516DF /* traff_decoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2747203F2E439DDE00C516DF /* traff_decoder.cpp */; }; + 274720502E439E3000C516DF /* traff_source.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 274720452E439DDE00C516DF /* traff_source.cpp */; }; + 274720512E439E3000C516DF /* traff_model.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 274720412E439DDE00C516DF /* traff_model.cpp */; }; + 274720522E439E3000C516DF /* traff_model_xml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 274720432E439DDE00C516DF /* traff_model_xml.cpp */; }; + 274720532E439E3000C516DF /* traff_storage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 274720472E439DDE00C516DF /* traff_storage.cpp */; }; + 274720542E439E3000C516DF /* traff_decoder.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2747203E2E439DDE00C516DF /* traff_decoder.hpp */; }; + 274720552E439E3000C516DF /* traff_model.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 274720402E439DDE00C516DF /* traff_model.hpp */; }; + 274720562E439E3000C516DF /* traff_storage.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 274720462E439DDE00C516DF /* traff_storage.hpp */; }; + 274720572E439E3000C516DF /* traff_source.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 274720442E439DDE00C516DF /* traff_source.hpp */; }; + 274720582E439E3000C516DF /* traff_model_xml.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 274720422E439DDE00C516DF /* traff_model_xml.hpp */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 2747203E2E439DDE00C516DF /* traff_decoder.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = traff_decoder.hpp; sourceTree = ""; }; + 2747203F2E439DDE00C516DF /* traff_decoder.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = traff_decoder.cpp; sourceTree = ""; }; + 274720402E439DDE00C516DF /* traff_model.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = traff_model.hpp; sourceTree = ""; }; + 274720412E439DDE00C516DF /* traff_model.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = traff_model.cpp; sourceTree = ""; }; + 274720422E439DDE00C516DF /* traff_model_xml.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = traff_model_xml.hpp; sourceTree = ""; }; + 274720432E439DDE00C516DF /* traff_model_xml.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = traff_model_xml.cpp; sourceTree = ""; }; + 274720442E439DDE00C516DF /* traff_source.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = traff_source.hpp; sourceTree = ""; }; + 274720452E439DDE00C516DF /* traff_source.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = traff_source.cpp; sourceTree = ""; }; + 274720462E439DDE00C516DF /* traff_storage.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = traff_storage.hpp; sourceTree = ""; }; + 274720472E439DDE00C516DF /* traff_storage.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = traff_storage.cpp; sourceTree = ""; }; + 67BECB4A1DDA43AF00FC4E99 /* libtraffxml.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libtraffxml.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 67BECB581DDA43FB00FC4E99 /* common-debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "common-debug.xcconfig"; path = "../common-debug.xcconfig"; sourceTree = ""; }; + 67BECB591DDA440100FC4E99 /* common-release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "common-release.xcconfig"; path = "../common-release.xcconfig"; sourceTree = ""; }; + FAFD413F26BBE3FC00D1DE1B /* libbase.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libbase.a; sourceTree = BUILT_PRODUCTS_DIR; }; + FAFD414126BBE3FC00D1DE1B /* libcoding.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libcoding.a; sourceTree = BUILT_PRODUCTS_DIR; }; + FAFD414326BBE88000D1DE1B /* libplatform.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libplatform.a; sourceTree = BUILT_PRODUCTS_DIR; }; + FAFD414526BBE88700D1DE1B /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + FAFD414926BBE98B00D1DE1B /* libindexer.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libindexer.a; sourceTree = BUILT_PRODUCTS_DIR; }; + FAFD414B26BBE9BB00D1DE1B /* libicu.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libicu.a; sourceTree = BUILT_PRODUCTS_DIR; }; + FAFD414D26BBE9C300D1DE1B /* libgeometry.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libgeometry.a; sourceTree = BUILT_PRODUCTS_DIR; }; + FAFD414F26BBE9C800D1DE1B /* libprotobuf.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libprotobuf.a; sourceTree = BUILT_PRODUCTS_DIR; }; + FAFD415126BBE9E000D1DE1B /* librouting.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = librouting.a; sourceTree = BUILT_PRODUCTS_DIR; }; + FAFD415326BBE9E800D1DE1B /* libsuccinct.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libsuccinct.a; sourceTree = BUILT_PRODUCTS_DIR; }; + FAFD415526BBEA5600D1DE1B /* librouting_common.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = librouting_common.a; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 67BECB471DDA43AF00FC4E99 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 67BECB411DDA43AF00FC4E99 = { + isa = PBXGroup; + children = ( + 67BECB581DDA43FB00FC4E99 /* common-debug.xcconfig */, + 67BECB591DDA440100FC4E99 /* common-release.xcconfig */, + 67BECB5A1DDA449C00FC4E99 /* traffxml */, + 67BECB4B1DDA43AF00FC4E99 /* Products */, + 67BECB831DDA474400FC4E99 /* Frameworks */, + ); + indentWidth = 2; + sourceTree = ""; + tabWidth = 2; + }; + 67BECB4B1DDA43AF00FC4E99 /* Products */ = { + isa = PBXGroup; + children = ( + 67BECB4A1DDA43AF00FC4E99 /* libtraffxml.a */, + ); + name = Products; + sourceTree = ""; + }; + 67BECB5A1DDA449C00FC4E99 /* traffxml */ = { + isa = PBXGroup; + children = ( + 2747203E2E439DDE00C516DF /* traff_decoder.hpp */, + 2747203F2E439DDE00C516DF /* traff_decoder.cpp */, + 274720402E439DDE00C516DF /* traff_model.hpp */, + 274720412E439DDE00C516DF /* traff_model.cpp */, + 274720422E439DDE00C516DF /* traff_model_xml.hpp */, + 274720432E439DDE00C516DF /* traff_model_xml.cpp */, + 274720442E439DDE00C516DF /* traff_source.hpp */, + 274720452E439DDE00C516DF /* traff_source.cpp */, + 274720462E439DDE00C516DF /* traff_storage.hpp */, + 274720472E439DDE00C516DF /* traff_storage.cpp */, + ); + name = traffxml; + path = ../../traffxml; + sourceTree = ""; + }; + 67BECB831DDA474400FC4E99 /* Frameworks */ = { + isa = PBXGroup; + children = ( + FAFD415526BBEA5600D1DE1B /* librouting_common.a */, + FAFD415326BBE9E800D1DE1B /* libsuccinct.a */, + FAFD415126BBE9E000D1DE1B /* librouting.a */, + FAFD414F26BBE9C800D1DE1B /* libprotobuf.a */, + FAFD414D26BBE9C300D1DE1B /* libgeometry.a */, + FAFD414B26BBE9BB00D1DE1B /* libicu.a */, + FAFD414926BBE98B00D1DE1B /* libindexer.a */, + FAFD414526BBE88700D1DE1B /* libz.tbd */, + FAFD414326BBE88000D1DE1B /* libplatform.a */, + FAFD413F26BBE3FC00D1DE1B /* libbase.a */, + FAFD414126BBE3FC00D1DE1B /* libcoding.a */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 67BECB481DDA43AF00FC4E99 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 274720542E439E3000C516DF /* traff_decoder.hpp in Headers */, + 274720552E439E3000C516DF /* traff_model.hpp in Headers */, + 274720562E439E3000C516DF /* traff_storage.hpp in Headers */, + 274720572E439E3000C516DF /* traff_source.hpp in Headers */, + 274720582E439E3000C516DF /* traff_model_xml.hpp in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 67BECB491DDA43AF00FC4E99 /* traffxml */ = { + isa = PBXNativeTarget; + buildConfigurationList = 67BECB551DDA43B000FC4E99 /* Build configuration list for PBXNativeTarget "traffxml" */; + buildPhases = ( + 67BECB461DDA43AF00FC4E99 /* Sources */, + 67BECB471DDA43AF00FC4E99 /* Frameworks */, + 67BECB481DDA43AF00FC4E99 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = traffxml; + productName = traffxml; + productReference = 67BECB4A1DDA43AF00FC4E99 /* libtraffxml.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 67BECB421DDA43AF00FC4E99 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + DefaultBuildSystemTypeForWorkspace = Latest; + LastUpgradeCheck = 1640; + TargetAttributes = { + 67BECB491DDA43AF00FC4E99 = { + CreatedOnToolsVersion = 8.1; + ProvisioningStyle = Automatic; + }; + }; + }; + buildConfigurationList = 67BECB451DDA43AF00FC4E99 /* Build configuration list for PBXProject "traffxml" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 67BECB411DDA43AF00FC4E99; + productRefGroup = 67BECB4B1DDA43AF00FC4E99 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 67BECB491DDA43AF00FC4E99 /* traffxml */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 67BECB461DDA43AF00FC4E99 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2747204F2E439E3000C516DF /* traff_decoder.cpp in Sources */, + 274720502E439E3000C516DF /* traff_source.cpp in Sources */, + 274720512E439E3000C516DF /* traff_model.cpp in Sources */, + 274720522E439E3000C516DF /* traff_model_xml.cpp in Sources */, + 274720532E439E3000C516DF /* traff_storage.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 67BECB531DDA43B000FC4E99 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 67BECB581DDA43FB00FC4E99 /* common-debug.xcconfig */; + buildSettings = { + }; + name = Debug; + }; + 67BECB541DDA43B000FC4E99 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 67BECB591DDA440100FC4E99 /* common-release.xcconfig */; + buildSettings = { + }; + name = Release; + }; + 67BECB561DDA43B000FC4E99 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + EXECUTABLE_PREFIX = lib; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "$(OMIM_ROOT)/3party/pugixml/pugixml/src", + ); + MACOSX_DEPLOYMENT_TARGET = 11.0; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 67BECB571DDA43B000FC4E99 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + EXECUTABLE_PREFIX = lib; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "$(OMIM_ROOT)/3party/pugixml/pugixml/src", + ); + MACOSX_DEPLOYMENT_TARGET = 11.0; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 67BECB451DDA43AF00FC4E99 /* Build configuration list for PBXProject "traffxml" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 67BECB531DDA43B000FC4E99 /* Debug */, + 67BECB541DDA43B000FC4E99 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 67BECB551DDA43B000FC4E99 /* Build configuration list for PBXNativeTarget "traffxml" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 67BECB561DDA43B000FC4E99 /* Debug */, + 67BECB571DDA43B000FC4E99 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 67BECB421DDA43AF00FC4E99 /* Project object */; +}