forked from organicmaps/organicmaps
parent
7c8b973bf8
commit
fbae7730aa
33 changed files with 916 additions and 297 deletions
|
@ -12,7 +12,7 @@ framework module CoreApi {
|
|||
header "MWMTagGroup.h"
|
||||
header "MWMFrameworkHelper.h"
|
||||
header "MWMCarPlayBookmarkObject.h"
|
||||
header "MWMTrafficManager.h"
|
||||
header "MWMMapOverlayManager.h"
|
||||
header "MWMSearchFrameworkHelper.h"
|
||||
header "MWMNetworkPolicy.h"
|
||||
}
|
||||
|
|
|
@ -83,8 +83,8 @@
|
|||
47A65CAF235008E100DCD85F /* CoreApi-swift.h in Headers */ = {isa = PBXBuildFile; fileRef = 47A65CAE235008C700DCD85F /* CoreApi-swift.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
47C637D12354A6FB00E12DE0 /* MWMEye.mm in Sources */ = {isa = PBXBuildFile; fileRef = 47C637CF2354A6FA00E12DE0 /* MWMEye.mm */; };
|
||||
47C637D22354A6FB00E12DE0 /* MWMEye.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C637D02354A6FB00E12DE0 /* MWMEye.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
47C637D62354AEBE00E12DE0 /* MWMTrafficManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 47C637D42354AEBD00E12DE0 /* MWMTrafficManager.mm */; };
|
||||
47C637D72354AEBE00E12DE0 /* MWMTrafficManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C637D52354AEBE00E12DE0 /* MWMTrafficManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
47C637D62354AEBE00E12DE0 /* MWMMapOverlayManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 47C637D42354AEBD00E12DE0 /* MWMMapOverlayManager.mm */; };
|
||||
47C637D72354AEBE00E12DE0 /* MWMMapOverlayManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C637D52354AEBE00E12DE0 /* MWMMapOverlayManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
47C637DC2354B79B00E12DE0 /* MWMSearchFrameworkHelper.mm in Sources */ = {isa = PBXBuildFile; fileRef = 47C637DA2354B79A00E12DE0 /* MWMSearchFrameworkHelper.mm */; };
|
||||
47C637DD2354B79B00E12DE0 /* MWMSearchFrameworkHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C637DB2354B79B00E12DE0 /* MWMSearchFrameworkHelper.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
47D609DC234FE625008ECC47 /* MWMBookmarksObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 47D609DB234FE625008ECC47 /* MWMBookmarksObserver.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
|
@ -202,8 +202,8 @@
|
|||
47A65CAE235008C700DCD85F /* CoreApi-swift.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CoreApi-swift.h"; sourceTree = "<group>"; };
|
||||
47C637CF2354A6FA00E12DE0 /* MWMEye.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMEye.mm; sourceTree = "<group>"; };
|
||||
47C637D02354A6FB00E12DE0 /* MWMEye.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMEye.h; sourceTree = "<group>"; };
|
||||
47C637D42354AEBD00E12DE0 /* MWMTrafficManager.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMTrafficManager.mm; sourceTree = "<group>"; };
|
||||
47C637D52354AEBE00E12DE0 /* MWMTrafficManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMTrafficManager.h; sourceTree = "<group>"; };
|
||||
47C637D42354AEBD00E12DE0 /* MWMMapOverlayManager.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMMapOverlayManager.mm; sourceTree = "<group>"; };
|
||||
47C637D52354AEBE00E12DE0 /* MWMMapOverlayManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMMapOverlayManager.h; sourceTree = "<group>"; };
|
||||
47C637DA2354B79A00E12DE0 /* MWMSearchFrameworkHelper.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMSearchFrameworkHelper.mm; sourceTree = "<group>"; };
|
||||
47C637DB2354B79B00E12DE0 /* MWMSearchFrameworkHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMSearchFrameworkHelper.h; sourceTree = "<group>"; };
|
||||
47D609DB234FE625008ECC47 /* MWMBookmarksObserver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMBookmarksObserver.h; sourceTree = "<group>"; };
|
||||
|
@ -477,8 +477,8 @@
|
|||
47C637D32354AEA800E12DE0 /* Traffic */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
47C637D52354AEBE00E12DE0 /* MWMTrafficManager.h */,
|
||||
47C637D42354AEBD00E12DE0 /* MWMTrafficManager.mm */,
|
||||
47C637D52354AEBE00E12DE0 /* MWMMapOverlayManager.h */,
|
||||
47C637D42354AEBD00E12DE0 /* MWMMapOverlayManager.mm */,
|
||||
);
|
||||
path = Traffic;
|
||||
sourceTree = "<group>";
|
||||
|
@ -648,7 +648,7 @@
|
|||
479F705B234FBB1100011E2E /* MWMUTM.h in Headers */,
|
||||
47942D98237D675400DEFAE3 /* CatalogPromoItem+Core.h in Headers */,
|
||||
479F704A234F785B00011E2E /* MWMTypes.h in Headers */,
|
||||
47C637D72354AEBE00E12DE0 /* MWMTrafficManager.h in Headers */,
|
||||
47C637D72354AEBE00E12DE0 /* MWMMapOverlayManager.h in Headers */,
|
||||
993F54F2237C5D1100545511 /* PromoDiscoveryCampaignAdapter.h in Headers */,
|
||||
99447849238559F2004DAEE5 /* DeeplinkParsingResult.h in Headers */,
|
||||
47942D9C237D927800DEFAE3 /* PlacePageBookmarkData.h in Headers */,
|
||||
|
@ -768,7 +768,7 @@
|
|||
47E8164123B2B98F008FD836 /* MWMUser.mm in Sources */,
|
||||
471AB98E23AB925D00F56D49 /* MWMMapSearchResult.mm in Sources */,
|
||||
479834EA2342697400724D1E /* MWMTag+Convenience.mm in Sources */,
|
||||
47C637D62354AEBE00E12DE0 /* MWMTrafficManager.mm in Sources */,
|
||||
47C637D62354AEBE00E12DE0 /* MWMMapOverlayManager.mm in Sources */,
|
||||
475784C32344B422008291A4 /* Framework.cpp in Sources */,
|
||||
47942D8D237D634300DEFAE3 /* CatalogPromoData.mm in Sources */,
|
||||
4718C4332355FC3C00640DF1 /* MWMNetworkPolicy.mm in Sources */,
|
||||
|
|
|
@ -17,7 +17,7 @@ FOUNDATION_EXPORT const unsigned char CoreApiVersionString[];
|
|||
#import <CoreApi/MWMStorage.h>
|
||||
#import <CoreApi/MWMTag.h>
|
||||
#import <CoreApi/MWMTagGroup.h>
|
||||
#import <CoreApi/MWMTrafficManager.h>
|
||||
#import <CoreApi/MWMMapOverlayManager.h>
|
||||
#import <CoreApi/MWMTypes.h>
|
||||
#import <CoreApi/MWMUser.h>
|
||||
#import <CoreApi/MWMUTM.h>
|
||||
|
|
|
@ -18,7 +18,7 @@ FOUNDATION_EXPORT const unsigned char CoreApiVersionString[];
|
|||
#import <CoreApi/MWMStorage.h>
|
||||
#import <CoreApi/MWMTag.h>
|
||||
#import <CoreApi/MWMTagGroup.h>
|
||||
#import <CoreApi/MWMTrafficManager.h>
|
||||
#import <CoreApi/MWMMapOverlayManager.h>
|
||||
#import <CoreApi/MWMTypes.h>
|
||||
#import <CoreApi/MWMUser.h>
|
||||
#import <CoreApi/MWMUTM.h>
|
||||
|
|
48
iphone/CoreApi/CoreApi/Traffic/MWMMapOverlayManager.h
Normal file
48
iphone/CoreApi/CoreApi/Traffic/MWMMapOverlayManager.h
Normal file
|
@ -0,0 +1,48 @@
|
|||
#import <Foundation/Foundation.h>
|
||||
|
||||
typedef NS_ENUM(NSUInteger, MWMMapOverlayTrafficState) {
|
||||
MWMMapOverlayTrafficStateDisabled,
|
||||
MWMMapOverlayTrafficStateEnabled,
|
||||
MWMMapOverlayTrafficStateWaitingData,
|
||||
MWMMapOverlayTrafficStateOutdated,
|
||||
MWMMapOverlayTrafficStateNoData,
|
||||
MWMMapOverlayTrafficStateNetworkError,
|
||||
MWMMapOverlayTrafficStateExpiredData,
|
||||
MWMMapOverlayTrafficStateExpiredApp
|
||||
} NS_SWIFT_NAME(MapOverlayTrafficState);
|
||||
|
||||
typedef NS_ENUM(NSUInteger, MWMMapOverlayTransitState) {
|
||||
MWMMapOverlayTransitStateDisabled,
|
||||
MWMMapOverlayTransitStateEnabled,
|
||||
MWMMapOverlayTransitStateNoData,
|
||||
} NS_SWIFT_NAME(MapOverlayTransitState);
|
||||
|
||||
NS_SWIFT_NAME(MapOverlayManagerObserver)
|
||||
@protocol MWMMapOverlayManagerObserver <NSObject>
|
||||
|
||||
- (void)onTrafficStateUpdated;
|
||||
|
||||
@optional
|
||||
- (void)onTransitStateUpdated;
|
||||
- (void)onIsoLinesStateUpdated;
|
||||
|
||||
@end
|
||||
|
||||
NS_SWIFT_NAME(MapOverlayManager)
|
||||
@interface MWMMapOverlayManager : NSObject
|
||||
|
||||
+ (void)addObserver:(id<MWMMapOverlayManagerObserver>)observer;
|
||||
+ (void)removeObserver:(id<MWMMapOverlayManagerObserver>)observer;
|
||||
|
||||
+ (MWMMapOverlayTrafficState)trafficState;
|
||||
+ (MWMMapOverlayTransitState)transitState;
|
||||
|
||||
+ (BOOL)trafficEnabled;
|
||||
+ (BOOL)transitEnabled;
|
||||
+ (BOOL)isoLinesEnabled;
|
||||
|
||||
+ (void)setTrafficEnabled:(BOOL)enable;
|
||||
+ (void)setTransitEnabled:(BOOL)enable;
|
||||
+ (void)setIsoLinesEnabled:(BOOL)enable;
|
||||
|
||||
@end
|
139
iphone/CoreApi/CoreApi/Traffic/MWMMapOverlayManager.mm
Normal file
139
iphone/CoreApi/CoreApi/Traffic/MWMMapOverlayManager.mm
Normal file
|
@ -0,0 +1,139 @@
|
|||
#import "MWMMapOverlayManager.h"
|
||||
|
||||
#include "Framework.h"
|
||||
|
||||
@interface MWMMapOverlayManager ()
|
||||
|
||||
@property(nonatomic) NSHashTable<id<MWMMapOverlayManagerObserver>> *observers;
|
||||
|
||||
@property(nonatomic) TrafficManager::TrafficState trafficState;
|
||||
@property(nonatomic) TransitReadManager::TransitSchemeState transitState;
|
||||
|
||||
@end
|
||||
|
||||
@implementation MWMMapOverlayManager
|
||||
|
||||
#pragma mark - Instance
|
||||
|
||||
+ (MWMMapOverlayManager *)manager {
|
||||
static MWMMapOverlayManager *manager;
|
||||
static dispatch_once_t onceToken = 0;
|
||||
dispatch_once(&onceToken, ^{
|
||||
manager = [[self alloc] initManager];
|
||||
});
|
||||
return manager;
|
||||
}
|
||||
|
||||
- (instancetype)initManager {
|
||||
self = [super init];
|
||||
if (self) {
|
||||
_observers = [NSHashTable weakObjectsHashTable];
|
||||
GetFramework().GetTrafficManager().SetStateListener([self](TrafficManager::TrafficState state) {
|
||||
self.trafficState = state;
|
||||
for (id<MWMMapOverlayManagerObserver> observer in self.observers) {
|
||||
[observer onTrafficStateUpdated];
|
||||
}
|
||||
});
|
||||
GetFramework().GetTransitManager().SetStateListener([self](TransitReadManager::TransitSchemeState state) {
|
||||
self.transitState = state;
|
||||
for (id<MWMMapOverlayManagerObserver> observer in self.observers) {
|
||||
if ([observer respondsToSelector:@selector(onTransitStateUpdated)]) {
|
||||
[observer onTransitStateUpdated];
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - Add/Remove Observers
|
||||
|
||||
+ (void)addObserver:(id<MWMMapOverlayManagerObserver>)observer {
|
||||
[[MWMMapOverlayManager manager].observers addObject:observer];
|
||||
}
|
||||
|
||||
+ (void)removeObserver:(id<MWMMapOverlayManagerObserver>)observer {
|
||||
[[MWMMapOverlayManager manager].observers removeObject:observer];
|
||||
}
|
||||
|
||||
+ (MWMMapOverlayTrafficState)trafficState {
|
||||
switch ([MWMMapOverlayManager manager].trafficState) {
|
||||
case TrafficManager::TrafficState::Disabled:
|
||||
return MWMMapOverlayTrafficStateDisabled;
|
||||
case TrafficManager::TrafficState::Enabled:
|
||||
return MWMMapOverlayTrafficStateEnabled;
|
||||
case TrafficManager::TrafficState::WaitingData:
|
||||
return MWMMapOverlayTrafficStateWaitingData;
|
||||
case TrafficManager::TrafficState::Outdated:
|
||||
return MWMMapOverlayTrafficStateOutdated;
|
||||
case TrafficManager::TrafficState::NoData:
|
||||
return MWMMapOverlayTrafficStateNoData;
|
||||
case TrafficManager::TrafficState::NetworkError:
|
||||
return MWMMapOverlayTrafficStateNetworkError;
|
||||
case TrafficManager::TrafficState::ExpiredData:
|
||||
return MWMMapOverlayTrafficStateExpiredData;
|
||||
case TrafficManager::TrafficState::ExpiredApp:
|
||||
return MWMMapOverlayTrafficStateExpiredApp;
|
||||
}
|
||||
}
|
||||
|
||||
+ (MWMMapOverlayTransitState)transitState {
|
||||
switch ([MWMMapOverlayManager manager].transitState) {
|
||||
case TransitReadManager::TransitSchemeState::Disabled:
|
||||
return MWMMapOverlayTransitStateDisabled;
|
||||
case TransitReadManager::TransitSchemeState::Enabled:
|
||||
return MWMMapOverlayTransitStateEnabled;
|
||||
case TransitReadManager::TransitSchemeState::NoData:
|
||||
return MWMMapOverlayTransitStateNoData;
|
||||
}
|
||||
}
|
||||
|
||||
+ (BOOL)trafficEnabled {
|
||||
return [MWMMapOverlayManager manager].trafficState != TrafficManager::TrafficState::Disabled;
|
||||
}
|
||||
|
||||
+ (BOOL)transitEnabled {
|
||||
return [MWMMapOverlayManager manager].transitState != TransitReadManager::TransitSchemeState::Disabled;
|
||||
}
|
||||
|
||||
+ (BOOL)isoLinesEnabled {
|
||||
return GetFramework().IsolinesEnabled();
|
||||
}
|
||||
|
||||
+ (void)setTrafficEnabled:(BOOL)enable {
|
||||
if (enable) {
|
||||
[self setTransitEnabled:false];
|
||||
[self setIsoLinesEnabled:false];
|
||||
}
|
||||
|
||||
auto &f = GetFramework();
|
||||
f.GetTrafficManager().SetEnabled(enable);
|
||||
f.SaveTrafficEnabled(enable);
|
||||
}
|
||||
|
||||
+ (void)setTransitEnabled:(BOOL)enable {
|
||||
if (enable) {
|
||||
[self setTrafficEnabled:!enable];
|
||||
[self setIsoLinesEnabled:false];
|
||||
}
|
||||
|
||||
auto &f = GetFramework();
|
||||
f.GetTransitManager().EnableTransitSchemeMode(enable);
|
||||
f.SaveTransitSchemeEnabled(enable);
|
||||
}
|
||||
|
||||
+ (void)setIsoLinesEnabled:(BOOL)enable {
|
||||
if (enable) {
|
||||
[self setTrafficEnabled:false];
|
||||
[self setTransitEnabled:false];
|
||||
}
|
||||
|
||||
GetFramework().EnableIsolines(enable);
|
||||
for (id<MWMMapOverlayManagerObserver> observer in [MWMMapOverlayManager manager].observers) {
|
||||
if ([observer respondsToSelector:@selector(onIsoLinesStateUpdated)]) {
|
||||
[observer onIsoLinesStateUpdated];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
|
@ -1,50 +0,0 @@
|
|||
#import <Foundation/Foundation.h>
|
||||
|
||||
typedef NS_ENUM(NSUInteger, MWMTrafficManagerState) {
|
||||
MWMTrafficManagerStateDisabled,
|
||||
MWMTrafficManagerStateEnabled,
|
||||
MWMTrafficManagerStateWaitingData,
|
||||
MWMTrafficManagerStateOutdated,
|
||||
MWMTrafficManagerStateNoData,
|
||||
MWMTrafficManagerStateNetworkError,
|
||||
MWMTrafficManagerStateExpiredData,
|
||||
MWMTrafficManagerStateExpiredApp
|
||||
};
|
||||
|
||||
typedef NS_ENUM(NSUInteger, MWMTransitManagerState) {
|
||||
MWMTransitManagerStateDisabled,
|
||||
MWMTransitManagerStateEnabled,
|
||||
MWMTransitManagerStateNoData,
|
||||
};
|
||||
|
||||
@protocol MWMTrafficManagerObserver<NSObject>
|
||||
|
||||
- (void)onTrafficStateUpdated;
|
||||
|
||||
@optional
|
||||
- (void)onTransitStateUpdated;
|
||||
|
||||
@end
|
||||
|
||||
@interface MWMTrafficManager : NSObject
|
||||
|
||||
+ (void)addObserver:(id<MWMTrafficManagerObserver>)observer;
|
||||
+ (void)removeObserver:(id<MWMTrafficManagerObserver>)observer;
|
||||
|
||||
+ (MWMTrafficManagerState)trafficState;
|
||||
+ (MWMTransitManagerState)transitState;
|
||||
|
||||
+ (BOOL)trafficEnabled;
|
||||
+ (BOOL)transitEnabled;
|
||||
|
||||
+ (void)setTrafficEnabled:(BOOL)enable;
|
||||
+ (void)setTransitEnabled:(BOOL)enable;
|
||||
|
||||
- (instancetype)init __attribute__((unavailable("call +manager instead")));
|
||||
- (instancetype)copy __attribute__((unavailable("call +manager instead")));
|
||||
- (instancetype)copyWithZone:(NSZone *)zone __attribute__((unavailable("call +manager instead")));
|
||||
+ (instancetype)allocWithZone:(struct _NSZone *)zone
|
||||
__attribute__((unavailable("call +manager instead")));
|
||||
+ (instancetype) new __attribute__((unavailable("call +manager instead")));
|
||||
|
||||
@end
|
|
@ -1,125 +0,0 @@
|
|||
#import "MWMTrafficManager.h"
|
||||
|
||||
#include "Framework.h"
|
||||
|
||||
namespace
|
||||
{
|
||||
using Observer = id<MWMTrafficManagerObserver>;
|
||||
using Observers = NSHashTable<Observer>;
|
||||
} // namespace
|
||||
|
||||
@interface MWMTrafficManager ()
|
||||
|
||||
@property(nonatomic) Observers * observers;
|
||||
|
||||
@property(nonatomic) TrafficManager::TrafficState trafficState;
|
||||
@property(nonatomic) TransitReadManager::TransitSchemeState transitState;
|
||||
|
||||
@end
|
||||
|
||||
@implementation MWMTrafficManager
|
||||
|
||||
#pragma mark - Instance
|
||||
|
||||
+ (MWMTrafficManager *)manager
|
||||
{
|
||||
static MWMTrafficManager * manager;
|
||||
static dispatch_once_t onceToken = 0;
|
||||
dispatch_once(&onceToken, ^{
|
||||
manager = [[self alloc] initManager];
|
||||
});
|
||||
return manager;
|
||||
}
|
||||
|
||||
- (instancetype)initManager
|
||||
{
|
||||
self = [super init];
|
||||
if (self)
|
||||
{
|
||||
_observers = [Observers weakObjectsHashTable];
|
||||
auto & m = GetFramework().GetTrafficManager();
|
||||
m.SetStateListener([self](TrafficManager::TrafficState state) {
|
||||
self.trafficState = state;
|
||||
for (Observer observer in self.observers)
|
||||
[observer onTrafficStateUpdated];
|
||||
});
|
||||
GetFramework().GetTransitManager().SetStateListener([self](TransitReadManager::TransitSchemeState state) {
|
||||
self.transitState = state;
|
||||
for (Observer observer in self.observers)
|
||||
{
|
||||
if ([observer respondsToSelector:@selector(onTransitStateUpdated)])
|
||||
[observer onTransitStateUpdated];
|
||||
}
|
||||
});
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - Add/Remove Observers
|
||||
|
||||
+ (void)addObserver:(Observer)observer
|
||||
{
|
||||
[[MWMTrafficManager manager].observers addObject:observer];
|
||||
}
|
||||
|
||||
+ (void)removeObserver:(Observer)observer
|
||||
{
|
||||
[[MWMTrafficManager manager].observers removeObject:observer];
|
||||
}
|
||||
|
||||
+ (MWMTrafficManagerState)trafficState
|
||||
{
|
||||
switch ([MWMTrafficManager manager].trafficState)
|
||||
{
|
||||
case TrafficManager::TrafficState::Disabled: return MWMTrafficManagerStateDisabled;
|
||||
case TrafficManager::TrafficState::Enabled: return MWMTrafficManagerStateEnabled;
|
||||
case TrafficManager::TrafficState::WaitingData: return MWMTrafficManagerStateWaitingData;
|
||||
case TrafficManager::TrafficState::Outdated: return MWMTrafficManagerStateOutdated;
|
||||
case TrafficManager::TrafficState::NoData: return MWMTrafficManagerStateNoData;
|
||||
case TrafficManager::TrafficState::NetworkError: return MWMTrafficManagerStateNetworkError;
|
||||
case TrafficManager::TrafficState::ExpiredData: return MWMTrafficManagerStateExpiredData;
|
||||
case TrafficManager::TrafficState::ExpiredApp: return MWMTrafficManagerStateExpiredApp;
|
||||
}
|
||||
}
|
||||
|
||||
+ (MWMTransitManagerState)transitState
|
||||
{
|
||||
switch ([MWMTrafficManager manager].transitState)
|
||||
{
|
||||
case TransitReadManager::TransitSchemeState::Disabled: return MWMTransitManagerStateDisabled;
|
||||
case TransitReadManager::TransitSchemeState::Enabled: return MWMTransitManagerStateEnabled;
|
||||
case TransitReadManager::TransitSchemeState::NoData: return MWMTransitManagerStateNoData;
|
||||
}
|
||||
}
|
||||
|
||||
+ (BOOL)trafficEnabled
|
||||
{
|
||||
return [MWMTrafficManager manager].trafficState != TrafficManager::TrafficState::Disabled;
|
||||
}
|
||||
|
||||
+ (BOOL)transitEnabled
|
||||
{
|
||||
return [MWMTrafficManager manager].transitState != TransitReadManager::TransitSchemeState::Disabled;
|
||||
}
|
||||
|
||||
+ (void)setTrafficEnabled:(BOOL)enable
|
||||
{
|
||||
if (enable)
|
||||
[self setTransitEnabled:!enable];
|
||||
|
||||
auto & f = GetFramework();
|
||||
f.GetTrafficManager().SetEnabled(enable);
|
||||
f.SaveTrafficEnabled(enable);
|
||||
}
|
||||
|
||||
+ (void)setTransitEnabled:(BOOL)enable
|
||||
{
|
||||
if (enable)
|
||||
[self setTrafficEnabled:!enable];
|
||||
|
||||
auto & f = GetFramework();
|
||||
f.GetTransitManager().EnableTransitSchemeMode(enable);
|
||||
f.SaveTransitSchemeEnabled(enable);
|
||||
}
|
||||
|
||||
@end
|
|
@ -74,15 +74,15 @@ final class SettingsTemplateBuilder {
|
|||
|
||||
private class func createTrafficButton() -> CPGridButton {
|
||||
var trafficIconName = "ic_carplay_trafficlight"
|
||||
let isTrafficEnabled = MWMTrafficManager.trafficEnabled()
|
||||
let isTrafficEnabled = MapOverlayManager.trafficEnabled()
|
||||
if isTrafficEnabled { trafficIconName += "_active" }
|
||||
let trafficButton = CPGridButton(titleVariants: [L("button_layer_traffic")],
|
||||
image: UIImage(named: trafficIconName)!) { _ in
|
||||
MWMTrafficManager.setTrafficEnabled(!isTrafficEnabled)
|
||||
MapOverlayManager.setTrafficEnabled(!isTrafficEnabled)
|
||||
CarPlayService.shared.popTemplate(animated: true)
|
||||
Statistics.logEvent(kStatCarplaySettingsChange,
|
||||
withParameters: [kStatOption : kStatTraffic,
|
||||
kStatValue : (MWMTrafficManager.trafficEnabled() ? kStatOn : kStatOff)])
|
||||
kStatValue : MapOverlayManager.trafficEnabled() ? kStatOn : kStatOff])
|
||||
}
|
||||
return trafficButton
|
||||
}
|
||||
|
|
|
@ -1,24 +1,29 @@
|
|||
final class LayersViewController: MWMViewController {
|
||||
private let transitioning = CoverVerticalModalTransitioning(presentationHeight: 150)
|
||||
|
||||
@IBOutlet weak var trafficButton: VerticallyAlignedButton! {
|
||||
@IBOutlet var trafficButton: VerticallyAlignedButton! {
|
||||
didSet {
|
||||
updateTrafficButton()
|
||||
}
|
||||
}
|
||||
@IBOutlet weak var subwayButton: VerticallyAlignedButton! {
|
||||
@IBOutlet var subwayButton: VerticallyAlignedButton! {
|
||||
didSet {
|
||||
updateSubwayButton()
|
||||
}
|
||||
}
|
||||
@IBOutlet var isoLinesButton: VerticallyAlignedButton! {
|
||||
didSet {
|
||||
updateIsoLinesButton()
|
||||
}
|
||||
}
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
MWMTrafficManager.add(self)
|
||||
MapOverlayManager.add(self)
|
||||
}
|
||||
|
||||
deinit {
|
||||
MWMTrafficManager.remove(self)
|
||||
MapOverlayManager.remove(self)
|
||||
}
|
||||
|
||||
override var transitioningDelegate: UIViewControllerTransitioningDelegate? {
|
||||
|
@ -32,39 +37,51 @@ final class LayersViewController: MWMViewController {
|
|||
}
|
||||
|
||||
private func updateTrafficButton() {
|
||||
let enabled = MWMTrafficManager.trafficEnabled()
|
||||
let enabled = MapOverlayManager.trafficEnabled()
|
||||
trafficButton.setTitleColor(enabled ? UIColor.linkBlue() : UIColor.blackSecondaryText(), for: .normal)
|
||||
trafficButton.imageName = enabled ? "btn_menu_traffic_on" : "btn_menu_traffic_off"
|
||||
}
|
||||
|
||||
private func updateSubwayButton() {
|
||||
let enabled = MWMTrafficManager.transitEnabled()
|
||||
let enabled = MapOverlayManager.transitEnabled()
|
||||
subwayButton.setTitleColor(enabled ? UIColor.linkBlue() : UIColor.blackSecondaryText(), for: .normal)
|
||||
subwayButton.imageName = enabled ? "btn_menu_subway_on" : "btn_menu_subway_off"
|
||||
}
|
||||
|
||||
private func updateIsoLinesButton() {
|
||||
let enabled = MapOverlayManager.isoLinesEnabled()
|
||||
isoLinesButton.setTitleColor(enabled ? UIColor.linkBlue() : UIColor.blackSecondaryText(), for: .normal)
|
||||
isoLinesButton.imageName = enabled ? "btn_menu_isomaps_on" : "btn_menu_isomaps_off"
|
||||
}
|
||||
|
||||
@IBAction func onTrafficButton(_ sender: UIButton) {
|
||||
MWMTrafficManager.setTrafficEnabled(!MWMTrafficManager.trafficEnabled())
|
||||
MapOverlayManager.setTrafficEnabled(!MapOverlayManager.trafficEnabled())
|
||||
}
|
||||
|
||||
@IBAction func onSubwayButton(_ sender: UIButton) {
|
||||
MWMTrafficManager.setTransitEnabled(!MWMTrafficManager.transitEnabled())
|
||||
MapOverlayManager.setTransitEnabled(!MapOverlayManager.transitEnabled())
|
||||
}
|
||||
|
||||
@IBAction func onIsoLinesButton(_ sender: UIButton) {
|
||||
MapOverlayManager.setIsoLinesEnabled(!MapOverlayManager.isoLinesEnabled())
|
||||
}
|
||||
}
|
||||
|
||||
extension LayersViewController: MWMTrafficManagerObserver {
|
||||
extension LayersViewController: MapOverlayManagerObserver {
|
||||
func onTrafficStateUpdated() {
|
||||
updateTrafficButton()
|
||||
let status: String?
|
||||
switch MWMTrafficManager.trafficState() {
|
||||
case .enabled: status = "success"
|
||||
case .noData: status = "unavailable"
|
||||
case .networkError: status = "error"
|
||||
case .disabled: fallthrough
|
||||
case .waitingData: fallthrough
|
||||
case .outdated: fallthrough
|
||||
case .expiredData: fallthrough
|
||||
case .expiredApp: status = nil
|
||||
switch MapOverlayManager.trafficState() {
|
||||
case .enabled:
|
||||
status = "success"
|
||||
case .noData:
|
||||
status = "unavailable"
|
||||
case .networkError:
|
||||
status = "error"
|
||||
case .disabled, .waitingData, .outdated, .expiredData, .expiredApp:
|
||||
status = nil
|
||||
@unknown default:
|
||||
fatalError()
|
||||
}
|
||||
|
||||
if let status = status {
|
||||
|
@ -76,10 +93,15 @@ extension LayersViewController: MWMTrafficManagerObserver {
|
|||
func onTransitStateUpdated() {
|
||||
updateSubwayButton()
|
||||
let status: String?
|
||||
switch MWMTrafficManager.transitState() {
|
||||
case .enabled: status = "success"
|
||||
case .noData: status = "unavailable"
|
||||
case .disabled: status = nil
|
||||
switch MapOverlayManager.transitState() {
|
||||
case .enabled:
|
||||
status = "success"
|
||||
case .noData:
|
||||
status = "unavailable"
|
||||
case .disabled:
|
||||
status = nil
|
||||
@unknown default:
|
||||
fatalError()
|
||||
}
|
||||
|
||||
if let status = status {
|
||||
|
@ -87,4 +109,12 @@ extension LayersViewController: MWMTrafficManagerObserver {
|
|||
"status" : status])
|
||||
}
|
||||
}
|
||||
|
||||
func onIsoLinesStateUpdated() {
|
||||
updateIsoLinesButton()
|
||||
if MapOverlayManager.isoLinesEnabled() {
|
||||
Statistics.logEvent("Map_Layers_activate", withParameters: ["name" : "isolines",
|
||||
"status" : "success"])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,17 +1,16 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14113" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
||||
<device id="retina4_7" orientation="portrait">
|
||||
<adaptation id="fullscreen"/>
|
||||
</device>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="15702" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
||||
<device id="retina4_7" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14088"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15704"/>
|
||||
<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" customClass="LayersViewController" customModule="maps_me" customModuleProvider="target">
|
||||
<connections>
|
||||
<outlet property="isoLinesButton" destination="cf2-qe-I3a" id="mAB-OM-94W"/>
|
||||
<outlet property="subwayButton" destination="beC-fv-00o" id="f2i-0Z-ic5"/>
|
||||
<outlet property="trafficButton" destination="1Ig-dd-0gQ" id="V0v-ga-XL3"/>
|
||||
<outlet property="view" destination="UpL-Ks-9sI" id="d7h-RV-vHz"/>
|
||||
|
@ -36,7 +35,7 @@
|
|||
</userDefinedRuntimeAttributes>
|
||||
</view>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Map Layers" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Kii-gP-WiK">
|
||||
<rect key="frame" x="16" y="12" width="109" height="24"/>
|
||||
<rect key="frame" x="16" y="12" width="108.5" height="24"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="20"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
|
@ -56,65 +55,89 @@
|
|||
<constraint firstItem="Kii-gP-WiK" firstAttribute="centerY" secondItem="vCh-dj-TS1" secondAttribute="centerY" id="jnD-8O-SSU"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="aBL-Bk-1MS">
|
||||
<rect key="frame" x="16" y="48" width="171.5" height="107"/>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" translatesAutoresizingMaskIntoConstraints="NO" id="pn9-Rj-k6E">
|
||||
<rect key="frame" x="16" y="48" width="343" height="106"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1Ig-dd-0gQ" customClass="VerticallyAlignedButton" customModule="maps_me" customModuleProvider="target">
|
||||
<rect key="frame" x="19.5" y="33.5" width="133" height="40"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="10"/>
|
||||
<state key="normal" title="Traffic" image="btn_menu_traffic_off_light">
|
||||
<color key="titleColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</state>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="button_layer_traffic"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="onTrafficButton:" destination="-1" eventType="touchUpInside" id="JS4-WB-z4Y"/>
|
||||
</connections>
|
||||
</button>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="aBL-Bk-1MS">
|
||||
<rect key="frame" x="0.0" y="0.0" width="114.5" height="106"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1Ig-dd-0gQ" customClass="VerticallyAlignedButton" customModule="maps_me" customModuleProvider="target">
|
||||
<rect key="frame" x="21" y="33" width="72" height="40"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="10"/>
|
||||
<state key="normal" title="Traffic" image="btn_menu_traffic_off_light">
|
||||
<color key="titleColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</state>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="button_layer_traffic"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="onTrafficButton:" destination="-1" eventType="touchUpInside" id="JS4-WB-z4Y"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstItem="1Ig-dd-0gQ" firstAttribute="centerY" secondItem="aBL-Bk-1MS" secondAttribute="centerY" id="8zN-sU-LDI"/>
|
||||
<constraint firstItem="1Ig-dd-0gQ" firstAttribute="centerX" secondItem="aBL-Bk-1MS" secondAttribute="centerX" id="Par-LR-kSw"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="F9J-as-uLu">
|
||||
<rect key="frame" x="114.5" y="0.0" width="114" height="106"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="beC-fv-00o" customClass="VerticallyAlignedButton" customModule="maps_me" customModuleProvider="target">
|
||||
<rect key="frame" x="18" y="33" width="78" height="40"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="10"/>
|
||||
<state key="normal" title="Subway" image="btn_menu_subway_off_light">
|
||||
<color key="titleColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</state>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="button_layer_subway"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="onSubwayButton:" destination="-1" eventType="touchUpInside" id="b8q-1N-aS9"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstItem="beC-fv-00o" firstAttribute="centerY" secondItem="F9J-as-uLu" secondAttribute="centerY" id="0NW-p4-wAv"/>
|
||||
<constraint firstItem="beC-fv-00o" firstAttribute="centerX" secondItem="F9J-as-uLu" secondAttribute="centerX" id="w6i-i1-e7F"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nfL-xp-reF">
|
||||
<rect key="frame" x="228.5" y="0.0" width="114.5" height="106"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="cf2-qe-I3a" customClass="VerticallyAlignedButton" customModule="maps_me" customModuleProvider="target">
|
||||
<rect key="frame" x="18" y="33" width="79" height="40"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="10"/>
|
||||
<state key="normal" title="Contour" image="btn_menu_isomaps_off_light">
|
||||
<color key="titleColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</state>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="button_layer_isolines"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="onIsoLinesButton:" destination="-1" eventType="touchUpInside" id="qEV-Fm-bIK"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstItem="cf2-qe-I3a" firstAttribute="centerY" secondItem="nfL-xp-reF" secondAttribute="centerY" id="Vgd-K6-1yq"/>
|
||||
<constraint firstItem="cf2-qe-I3a" firstAttribute="centerX" secondItem="nfL-xp-reF" secondAttribute="centerX" id="uDg-m2-fHv"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstItem="1Ig-dd-0gQ" firstAttribute="centerY" secondItem="aBL-Bk-1MS" secondAttribute="centerY" id="8zN-sU-LDI"/>
|
||||
<constraint firstItem="1Ig-dd-0gQ" firstAttribute="centerX" secondItem="aBL-Bk-1MS" secondAttribute="centerX" id="Par-LR-kSw"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="F9J-as-uLu">
|
||||
<rect key="frame" x="187.5" y="48" width="171.5" height="107"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="beC-fv-00o" customClass="VerticallyAlignedButton" customModule="maps_me" customModuleProvider="target">
|
||||
<rect key="frame" x="15.5" y="33" width="140" height="40"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="10"/>
|
||||
<state key="normal" title="Subway" image="btn_menu_subway_off_light">
|
||||
<color key="titleColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</state>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="button_layer_subway"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="onSubwayButton:" destination="-1" eventType="touchUpInside" id="b8q-1N-aS9"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstItem="beC-fv-00o" firstAttribute="centerY" secondItem="F9J-as-uLu" secondAttribute="centerY" id="0NW-p4-wAv"/>
|
||||
<constraint firstItem="beC-fv-00o" firstAttribute="centerX" secondItem="F9J-as-uLu" secondAttribute="centerX" id="w6i-i1-e7F"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</stackView>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="Rhj-gh-MIj" firstAttribute="trailing" secondItem="F9J-as-uLu" secondAttribute="trailing" constant="16" id="7k6-Uo-iCn"/>
|
||||
<constraint firstItem="Rhj-gh-MIj" firstAttribute="bottom" secondItem="pn9-Rj-k6E" secondAttribute="bottom" id="1nc-Jp-aac"/>
|
||||
<constraint firstItem="vCh-dj-TS1" firstAttribute="leading" secondItem="Rhj-gh-MIj" secondAttribute="leading" id="AoD-Oo-vQU"/>
|
||||
<constraint firstItem="F9J-as-uLu" firstAttribute="width" secondItem="aBL-Bk-1MS" secondAttribute="width" id="E8a-0d-0da"/>
|
||||
<constraint firstItem="aBL-Bk-1MS" firstAttribute="bottom" secondItem="Rhj-gh-MIj" secondAttribute="bottom" constant="1" id="Fwx-RG-4vN"/>
|
||||
<constraint firstItem="F9J-as-uLu" firstAttribute="leading" secondItem="aBL-Bk-1MS" secondAttribute="trailing" id="Ghy-t8-lgr"/>
|
||||
<constraint firstItem="F9J-as-uLu" firstAttribute="top" secondItem="vCh-dj-TS1" secondAttribute="bottom" id="KJS-jN-jfH"/>
|
||||
<constraint firstItem="pn9-Rj-k6E" firstAttribute="top" secondItem="vCh-dj-TS1" secondAttribute="bottom" id="TBO-Sx-h2M"/>
|
||||
<constraint firstItem="Rhj-gh-MIj" firstAttribute="trailing" secondItem="pn9-Rj-k6E" secondAttribute="trailing" constant="16" id="c2e-q9-Efl"/>
|
||||
<constraint firstItem="vCh-dj-TS1" firstAttribute="top" secondItem="Rhj-gh-MIj" secondAttribute="top" id="cU1-3C-ACk"/>
|
||||
<constraint firstItem="F9J-as-uLu" firstAttribute="bottom" secondItem="Rhj-gh-MIj" secondAttribute="bottom" constant="1" id="dmK-OW-wHn"/>
|
||||
<constraint firstItem="Rhj-gh-MIj" firstAttribute="trailing" secondItem="vCh-dj-TS1" secondAttribute="trailing" id="gVb-IK-pdD"/>
|
||||
<constraint firstItem="aBL-Bk-1MS" firstAttribute="leading" secondItem="Rhj-gh-MIj" secondAttribute="leading" constant="16" id="mSQ-bh-xmA"/>
|
||||
<constraint firstItem="aBL-Bk-1MS" firstAttribute="top" secondItem="vCh-dj-TS1" secondAttribute="bottom" id="spb-XJ-7BY"/>
|
||||
<constraint firstItem="pn9-Rj-k6E" firstAttribute="leading" secondItem="Rhj-gh-MIj" secondAttribute="leading" constant="16" id="nIm-wJ-7UK"/>
|
||||
</constraints>
|
||||
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
|
||||
<viewLayoutGuide key="safeArea" id="Rhj-gh-MIj"/>
|
||||
|
@ -125,6 +148,7 @@
|
|||
</view>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="btn_menu_isomaps_off_light" width="40" height="40"/>
|
||||
<image name="btn_menu_subway_off_light" width="40" height="40"/>
|
||||
<image name="btn_menu_traffic_off_light" width="40" height="40"/>
|
||||
</resources>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#import "MWMTrafficButtonViewController.h"
|
||||
|
||||
#import <CoreApi/MWMTrafficManager.h>
|
||||
#import <CoreApi/MWMMapOverlayManager.h>
|
||||
|
||||
#import "MWMAlertViewController.h"
|
||||
#import "MWMButton.h"
|
||||
|
@ -33,7 +33,7 @@ NSArray<UIImage *> * imagesWithName(NSString * name)
|
|||
|
||||
@end
|
||||
|
||||
@interface MWMTrafficButtonViewController ()<MWMTrafficManagerObserver>
|
||||
@interface MWMTrafficButtonViewController ()<MWMMapOverlayManagerObserver>
|
||||
|
||||
@property(nonatomic) NSLayoutConstraint * topOffset;
|
||||
@property(nonatomic) NSLayoutConstraint * leftOffset;
|
||||
|
@ -58,7 +58,7 @@ NSArray<UIImage *> * imagesWithName(NSString * name)
|
|||
[ovc.controlsView addSubview:self.view];
|
||||
[self configLayout];
|
||||
[self refreshAppearance];
|
||||
[MWMTrafficManager addObserver:self];
|
||||
[MWMMapOverlayManager addObserver:self];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
@ -107,42 +107,46 @@ NSArray<UIImage *> * imagesWithName(NSString * name)
|
|||
|
||||
// Traffic state machine: https://confluence.mail.ru/pages/viewpage.action?pageId=103680959
|
||||
[iv stopAnimating];
|
||||
if ([MWMTrafficManager trafficEnabled])
|
||||
if ([MWMMapOverlayManager trafficEnabled])
|
||||
{
|
||||
switch ([MWMTrafficManager trafficState])
|
||||
switch ([MWMMapOverlayManager trafficState])
|
||||
{
|
||||
case MWMTrafficManagerStateDisabled: CHECK(false, ("Incorrect traffic manager state.")); break;
|
||||
case MWMTrafficManagerStateEnabled: btn.imageName = @"btn_traffic_on"; break;
|
||||
case MWMTrafficManagerStateWaitingData:
|
||||
case MWMMapOverlayTrafficStateDisabled: CHECK(false, ("Incorrect traffic manager state.")); break;
|
||||
case MWMMapOverlayTrafficStateEnabled: btn.imageName = @"btn_traffic_on"; break;
|
||||
case MWMMapOverlayTrafficStateWaitingData:
|
||||
iv.animationImages = imagesWithName(@"btn_traffic_update");
|
||||
iv.animationDuration = 0.8;
|
||||
[iv startAnimating];
|
||||
break;
|
||||
case MWMTrafficManagerStateOutdated: btn.imageName = @"btn_traffic_outdated"; break;
|
||||
case MWMTrafficManagerStateNoData:
|
||||
case MWMMapOverlayTrafficStateOutdated: btn.imageName = @"btn_traffic_outdated"; break;
|
||||
case MWMMapOverlayTrafficStateNoData:
|
||||
btn.imageName = @"btn_traffic_on";
|
||||
[[MWMToast toastWithText:L(@"traffic_data_unavailable")] show];
|
||||
break;
|
||||
case MWMTrafficManagerStateNetworkError:
|
||||
[MWMTrafficManager setTrafficEnabled:NO];
|
||||
case MWMMapOverlayTrafficStateNetworkError:
|
||||
[MWMMapOverlayManager setTrafficEnabled:NO];
|
||||
[[MWMAlertViewController activeAlertController] presentNoConnectionAlert];
|
||||
break;
|
||||
case MWMTrafficManagerStateExpiredData:
|
||||
case MWMMapOverlayTrafficStateExpiredData:
|
||||
btn.imageName = @"btn_traffic_outdated";
|
||||
[[MWMToast toastWithText:L(@"traffic_update_maps_text")] show];
|
||||
break;
|
||||
case MWMTrafficManagerStateExpiredApp:
|
||||
case MWMMapOverlayTrafficStateExpiredApp:
|
||||
btn.imageName = @"btn_traffic_outdated";
|
||||
[[MWMToast toastWithText:L(@"traffic_update_app_message")] show];
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if ([MWMTrafficManager transitEnabled])
|
||||
else if ([MWMMapOverlayManager transitEnabled])
|
||||
{
|
||||
btn.imageName = @"btn_subway_on";
|
||||
if ([MWMTrafficManager transitState] == MWMTransitManagerStateNoData)
|
||||
if ([MWMMapOverlayManager transitState] == MWMMapOverlayTransitStateNoData)
|
||||
[[MWMToast toastWithText:L(@"subway_data_unavailable")] show];
|
||||
}
|
||||
else if ([MWMMapOverlayManager isoLinesEnabled])
|
||||
{
|
||||
btn.imageName = @"btn_isoMap_on";
|
||||
}
|
||||
else
|
||||
{
|
||||
btn.imageName = @"btn_layers";
|
||||
|
@ -151,13 +155,17 @@ NSArray<UIImage *> * imagesWithName(NSString * name)
|
|||
|
||||
- (IBAction)buttonTouchUpInside
|
||||
{
|
||||
if ([MWMTrafficManager trafficEnabled])
|
||||
if ([MWMMapOverlayManager trafficEnabled])
|
||||
{
|
||||
[MWMTrafficManager setTrafficEnabled:NO];
|
||||
[MWMMapOverlayManager setTrafficEnabled:NO];
|
||||
}
|
||||
else if ([MWMTrafficManager transitEnabled])
|
||||
else if ([MWMMapOverlayManager transitEnabled])
|
||||
{
|
||||
[MWMTrafficManager setTransitEnabled:NO];
|
||||
[MWMMapOverlayManager setTransitEnabled:NO];
|
||||
}
|
||||
else if ([MWMMapOverlayManager isoLinesEnabled])
|
||||
{
|
||||
[MWMMapOverlayManager setIsoLinesEnabled:NO];
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -175,8 +183,10 @@ NSArray<UIImage *> * imagesWithName(NSString * name)
|
|||
[controller refreshLayout];
|
||||
}
|
||||
|
||||
#pragma mark - MWMTrafficManagerObserver
|
||||
#pragma mark - MWMMapOverlayManagerObserver
|
||||
|
||||
- (void)onTrafficStateUpdated { [self refreshAppearance]; }
|
||||
- (void)onTransitStateUpdated { [self refreshAppearance]; }
|
||||
- (void)onIsoLinesStateUpdated { [self refreshAppearance]; }
|
||||
|
||||
@end
|
||||
|
|
|
@ -293,9 +293,9 @@ using Observers = NSHashTable<Observer>;
|
|||
|
||||
- (IBAction)trafficButtonAction
|
||||
{
|
||||
BOOL const switchOn = ([MWMTrafficManager trafficState] == MWMTrafficManagerStateDisabled);
|
||||
BOOL const switchOn = ([MWMMapOverlayManager trafficState] == MWMMapOverlayTrafficStateDisabled);
|
||||
[Statistics logEvent:kStatMenu withParameters:@{kStatTraffic : switchOn ? kStatOn : kStatOff}];
|
||||
[MWMTrafficManager setTrafficEnabled:switchOn];
|
||||
[MWMMapOverlayManager setTrafficEnabled:switchOn];
|
||||
}
|
||||
|
||||
- (IBAction)settingsButtonAction
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
@objc(MWMNavigationControlView)
|
||||
final class NavigationControlView: SolidTouchView, MWMTextToSpeechObserver, MWMTrafficManagerObserver {
|
||||
final class NavigationControlView: SolidTouchView, MWMTextToSpeechObserver, MapOverlayManagerObserver {
|
||||
@IBOutlet private weak var distanceLabel: UILabel!
|
||||
@IBOutlet private weak var distanceLegendLabel: UILabel!
|
||||
@IBOutlet private weak var distanceWithLegendLabel: UILabel!
|
||||
|
@ -133,7 +133,7 @@ final class NavigationControlView: SolidTouchView, MWMTextToSpeechObserver, MWMT
|
|||
updateLegendSize()
|
||||
|
||||
MWMTextToSpeech.add(self)
|
||||
MWMTrafficManager.add(self)
|
||||
MapOverlayManager.add(self)
|
||||
}
|
||||
|
||||
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
|
||||
|
@ -276,7 +276,7 @@ final class NavigationControlView: SolidTouchView, MWMTextToSpeechObserver, MWMT
|
|||
guard MWMRouter.isRoutingActive() else { return }
|
||||
let isPedestrianRouting = MWMRouter.type() == .pedestrian
|
||||
trafficButton.isHidden = isPedestrianRouting
|
||||
trafficButton.isSelected = MWMTrafficManager.trafficState() != .disabled
|
||||
trafficButton.isSelected = MapOverlayManager.trafficState() != .disabled
|
||||
refreshDiminishTimer()
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
12
iphone/Maps/Images.xcassets/Layers/IsoLines/btn_isoMap_on_dark.imageset/Contents.json
vendored
Normal file
12
iphone/Maps/Images.xcassets/Layers/IsoLines/btn_isoMap_on_dark.imageset/Contents.json
vendored
Normal file
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "btn_isoMap_on_dark.pdf"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
BIN
iphone/Maps/Images.xcassets/Layers/IsoLines/btn_isoMap_on_dark.imageset/btn_isoMap_on_dark.pdf
vendored
Normal file
BIN
iphone/Maps/Images.xcassets/Layers/IsoLines/btn_isoMap_on_dark.imageset/btn_isoMap_on_dark.pdf
vendored
Normal file
Binary file not shown.
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "btn_isoMap_on_highlighted_dark.pdf"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Binary file not shown.
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "btn_isoMap_on_highlighted_light.pdf"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
Binary file not shown.
12
iphone/Maps/Images.xcassets/Layers/IsoLines/btn_isoMap_on_light.imageset/Contents.json
vendored
Normal file
12
iphone/Maps/Images.xcassets/Layers/IsoLines/btn_isoMap_on_light.imageset/Contents.json
vendored
Normal file
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "btn_isoMap_on_light.pdf"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
BIN
iphone/Maps/Images.xcassets/Layers/IsoLines/btn_isoMap_on_light.imageset/btn_isoMap_on_light.pdf
vendored
Normal file
BIN
iphone/Maps/Images.xcassets/Layers/IsoLines/btn_isoMap_on_light.imageset/btn_isoMap_on_light.pdf
vendored
Normal file
Binary file not shown.
12
iphone/Maps/Images.xcassets/Layers/Menu/btn_menu_isomaps_off_dark.imageset/Contents.json
vendored
Normal file
12
iphone/Maps/Images.xcassets/Layers/Menu/btn_menu_isomaps_off_dark.imageset/Contents.json
vendored
Normal file
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "btn_menu_isomaps_off_dark.pdf"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,110 @@
|
|||
%PDF-1.7
|
||||
|
||||
1 0 obj
|
||||
<< /ExtGState << /E1 << /ca 0.040000 >> >> >>
|
||||
endobj
|
||||
|
||||
2 0 obj
|
||||
<< /Length 3 0 R >>
|
||||
stream
|
||||
/DeviceRGB CS
|
||||
/DeviceRGB cs
|
||||
q
|
||||
/E1 gs
|
||||
1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm
|
||||
1.000000 1.000000 1.000000 scn
|
||||
20.000000 0.000000 m
|
||||
31.045696 0.000000 40.000000 8.954304 40.000000 20.000000 c
|
||||
40.000000 31.045696 31.045696 40.000000 20.000000 40.000000 c
|
||||
8.954305 40.000000 0.000000 31.045696 0.000000 20.000000 c
|
||||
0.000000 8.954304 8.954305 0.000000 20.000000 0.000000 c
|
||||
h
|
||||
f*
|
||||
n
|
||||
Q
|
||||
q
|
||||
1.000000 0.000000 -0.000000 1.000000 9.000000 11.805984 cm
|
||||
1.000000 1.000000 1.000000 scn
|
||||
0.115074 1.221742 m
|
||||
7.396101 15.783797 l
|
||||
7.573943 16.149940 8.013315 16.296398 8.368998 16.118557 c
|
||||
8.515455 16.045328 8.630528 15.930255 8.703757 15.783797 c
|
||||
12.825488 7.529874 l
|
||||
15.126963 12.132822 l
|
||||
15.304804 12.488504 15.744176 12.634962 16.099859 12.457121 c
|
||||
16.246317 12.383892 16.361389 12.268818 16.434618 12.132822 c
|
||||
21.884928 1.221742 l
|
||||
21.958157 1.106668 22.000000 0.970672 22.000000 0.834675 c
|
||||
22.000000 0.426686 21.665241 0.102388 21.267714 0.102388 c
|
||||
0.732287 0.102388 l
|
||||
0.324299 0.102388 0.000000 0.426686 0.000000 0.834675 c
|
||||
0.000000 0.970672 0.041845 1.106668 0.115074 1.221742 c
|
||||
0.115074 1.221742 l
|
||||
h
|
||||
17.250595 7.226499 m
|
||||
16.403234 6.169912 l
|
||||
15.587257 7.247420 l
|
||||
14.509748 7.644948 l
|
||||
15.775559 10.176570 l
|
||||
17.250595 7.226499 l
|
||||
17.250595 7.226499 l
|
||||
h
|
||||
10.534475 8.868914 m
|
||||
8.965288 8.586460 l
|
||||
7.783167 9.967344 l
|
||||
5.785069 9.308287 l
|
||||
8.044699 13.838006 l
|
||||
10.534475 8.868914 l
|
||||
10.534475 8.868914 l
|
||||
h
|
||||
f*
|
||||
n
|
||||
Q
|
||||
|
||||
endstream
|
||||
endobj
|
||||
|
||||
3 0 obj
|
||||
1408
|
||||
endobj
|
||||
|
||||
4 0 obj
|
||||
<< /Annots []
|
||||
/Type /Page
|
||||
/MediaBox [ 0.000000 0.000000 40.000000 40.000000 ]
|
||||
/Resources 1 0 R
|
||||
/Contents 2 0 R
|
||||
/Parent 5 0 R
|
||||
>>
|
||||
endobj
|
||||
|
||||
5 0 obj
|
||||
<< /Kids [ 4 0 R ]
|
||||
/Count 1
|
||||
/Type /Pages
|
||||
>>
|
||||
endobj
|
||||
|
||||
6 0 obj
|
||||
<< /Type /Catalog
|
||||
/Pages 5 0 R
|
||||
>>
|
||||
endobj
|
||||
|
||||
xref
|
||||
0 7
|
||||
0000000000 65535 f
|
||||
0000000010 00000 n
|
||||
0000000074 00000 n
|
||||
0000001538 00000 n
|
||||
0000001561 00000 n
|
||||
0000001734 00000 n
|
||||
0000001808 00000 n
|
||||
trailer
|
||||
<< /ID [ (some) (id) ]
|
||||
/Root 6 0 R
|
||||
/Size 7
|
||||
>>
|
||||
startxref
|
||||
1867
|
||||
%%EOF
|
12
iphone/Maps/Images.xcassets/Layers/Menu/btn_menu_isomaps_off_light.imageset/Contents.json
vendored
Normal file
12
iphone/Maps/Images.xcassets/Layers/Menu/btn_menu_isomaps_off_light.imageset/Contents.json
vendored
Normal file
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "btn_menu_isomaps_off_light.pdf"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,113 @@
|
|||
%PDF-1.7
|
||||
|
||||
1 0 obj
|
||||
<< /ExtGState << /E2 << /ca 0.540000 >>
|
||||
/E1 << /ca 0.040000 >>
|
||||
>> >>
|
||||
endobj
|
||||
|
||||
2 0 obj
|
||||
<< /Length 3 0 R >>
|
||||
stream
|
||||
/DeviceRGB CS
|
||||
/DeviceRGB cs
|
||||
q
|
||||
/E1 gs
|
||||
1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm
|
||||
0.000000 0.000000 0.000000 scn
|
||||
20.000000 0.000000 m
|
||||
31.045696 0.000000 40.000000 8.954304 40.000000 20.000000 c
|
||||
40.000000 31.045696 31.045696 40.000000 20.000000 40.000000 c
|
||||
8.954305 40.000000 0.000000 31.045696 0.000000 20.000000 c
|
||||
0.000000 8.954304 8.954305 0.000000 20.000000 0.000000 c
|
||||
h
|
||||
f*
|
||||
n
|
||||
Q
|
||||
q
|
||||
/E2 gs
|
||||
1.000000 0.000000 -0.000000 1.000000 9.000000 11.805984 cm
|
||||
0.000000 0.000000 0.000000 scn
|
||||
0.115074 1.221742 m
|
||||
7.396101 15.783797 l
|
||||
7.573943 16.149940 8.013315 16.296398 8.368998 16.118557 c
|
||||
8.515455 16.045328 8.630528 15.930255 8.703757 15.783797 c
|
||||
12.825488 7.529874 l
|
||||
15.126963 12.132822 l
|
||||
15.304804 12.488504 15.744176 12.634962 16.099859 12.457121 c
|
||||
16.246317 12.383892 16.361389 12.268818 16.434618 12.132822 c
|
||||
21.884928 1.221742 l
|
||||
21.958157 1.106668 22.000000 0.970672 22.000000 0.834675 c
|
||||
22.000000 0.426686 21.665241 0.102388 21.267714 0.102388 c
|
||||
0.732287 0.102388 l
|
||||
0.324299 0.102388 0.000000 0.426686 0.000000 0.834675 c
|
||||
0.000000 0.970672 0.041845 1.106668 0.115074 1.221742 c
|
||||
0.115074 1.221742 l
|
||||
h
|
||||
17.250595 7.226499 m
|
||||
16.403234 6.169912 l
|
||||
15.587257 7.247420 l
|
||||
14.509748 7.644948 l
|
||||
15.775559 10.176570 l
|
||||
17.250595 7.226499 l
|
||||
17.250595 7.226499 l
|
||||
h
|
||||
10.534475 8.868914 m
|
||||
8.965288 8.586460 l
|
||||
7.783167 9.967344 l
|
||||
5.785069 9.308287 l
|
||||
8.044699 13.838006 l
|
||||
10.534475 8.868914 l
|
||||
10.534475 8.868914 l
|
||||
h
|
||||
f*
|
||||
n
|
||||
Q
|
||||
|
||||
endstream
|
||||
endobj
|
||||
|
||||
3 0 obj
|
||||
1415
|
||||
endobj
|
||||
|
||||
4 0 obj
|
||||
<< /Annots []
|
||||
/Type /Page
|
||||
/MediaBox [ 0.000000 0.000000 40.000000 40.000000 ]
|
||||
/Resources 1 0 R
|
||||
/Contents 2 0 R
|
||||
/Parent 5 0 R
|
||||
>>
|
||||
endobj
|
||||
|
||||
5 0 obj
|
||||
<< /Kids [ 4 0 R ]
|
||||
/Count 1
|
||||
/Type /Pages
|
||||
>>
|
||||
endobj
|
||||
|
||||
6 0 obj
|
||||
<< /Type /Catalog
|
||||
/Pages 5 0 R
|
||||
>>
|
||||
endobj
|
||||
|
||||
xref
|
||||
0 7
|
||||
0000000000 65535 f
|
||||
0000000010 00000 n
|
||||
0000000132 00000 n
|
||||
0000001603 00000 n
|
||||
0000001626 00000 n
|
||||
0000001799 00000 n
|
||||
0000001873 00000 n
|
||||
trailer
|
||||
<< /ID [ (some) (id) ]
|
||||
/Root 6 0 R
|
||||
/Size 7
|
||||
>>
|
||||
startxref
|
||||
1932
|
||||
%%EOF
|
12
iphone/Maps/Images.xcassets/Layers/Menu/btn_menu_isomaps_on_dark.imageset/Contents.json
vendored
Normal file
12
iphone/Maps/Images.xcassets/Layers/Menu/btn_menu_isomaps_on_dark.imageset/Contents.json
vendored
Normal file
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "btn_menu_isomaps_on_dark.pdf"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,109 @@
|
|||
%PDF-1.7
|
||||
|
||||
1 0 obj
|
||||
<< >>
|
||||
endobj
|
||||
|
||||
2 0 obj
|
||||
<< /Length 3 0 R >>
|
||||
stream
|
||||
/DeviceRGB CS
|
||||
/DeviceRGB cs
|
||||
q
|
||||
1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm
|
||||
0.294118 0.725490 0.901961 scn
|
||||
20.000000 0.000000 m
|
||||
31.045696 0.000000 40.000000 8.954304 40.000000 20.000000 c
|
||||
40.000000 31.045696 31.045696 40.000000 20.000000 40.000000 c
|
||||
8.954305 40.000000 0.000000 31.045696 0.000000 20.000000 c
|
||||
0.000000 8.954304 8.954305 0.000000 20.000000 0.000000 c
|
||||
h
|
||||
f*
|
||||
n
|
||||
Q
|
||||
q
|
||||
1.000000 0.000000 -0.000000 1.000000 9.000000 11.806000 cm
|
||||
1.000000 1.000000 1.000000 scn
|
||||
0.115074 1.221726 m
|
||||
7.396101 15.783782 l
|
||||
7.573943 16.149925 8.013315 16.296383 8.368998 16.118542 c
|
||||
8.515455 16.045313 8.630528 15.930240 8.703757 15.783782 c
|
||||
12.825488 7.529859 l
|
||||
15.126963 12.132807 l
|
||||
15.304804 12.488489 15.744176 12.634947 16.099859 12.457106 c
|
||||
16.246317 12.383877 16.361389 12.268803 16.434618 12.132807 c
|
||||
21.884928 1.221726 l
|
||||
21.958157 1.106653 22.000000 0.970656 22.000000 0.834660 c
|
||||
22.000000 0.426671 21.665241 0.102373 21.267714 0.102373 c
|
||||
0.732287 0.102373 l
|
||||
0.324299 0.102373 0.000000 0.426671 0.000000 0.834660 c
|
||||
0.000000 0.970656 0.041845 1.106653 0.115074 1.221726 c
|
||||
0.115074 1.221726 l
|
||||
h
|
||||
17.250595 7.226483 m
|
||||
16.403234 6.169897 l
|
||||
15.587257 7.247405 l
|
||||
14.509748 7.644933 l
|
||||
15.775559 10.176555 l
|
||||
17.250595 7.226483 l
|
||||
17.250595 7.226483 l
|
||||
h
|
||||
10.534475 8.868898 m
|
||||
8.965288 8.586445 l
|
||||
7.783167 9.967329 l
|
||||
5.785069 9.308271 l
|
||||
8.044699 13.837991 l
|
||||
10.534475 8.868898 l
|
||||
10.534475 8.868898 l
|
||||
h
|
||||
f*
|
||||
n
|
||||
Q
|
||||
|
||||
endstream
|
||||
endobj
|
||||
|
||||
3 0 obj
|
||||
1401
|
||||
endobj
|
||||
|
||||
4 0 obj
|
||||
<< /Annots []
|
||||
/Type /Page
|
||||
/MediaBox [ 0.000000 0.000000 40.000000 40.000000 ]
|
||||
/Resources 1 0 R
|
||||
/Contents 2 0 R
|
||||
/Parent 5 0 R
|
||||
>>
|
||||
endobj
|
||||
|
||||
5 0 obj
|
||||
<< /Kids [ 4 0 R ]
|
||||
/Count 1
|
||||
/Type /Pages
|
||||
>>
|
||||
endobj
|
||||
|
||||
6 0 obj
|
||||
<< /Type /Catalog
|
||||
/Pages 5 0 R
|
||||
>>
|
||||
endobj
|
||||
|
||||
xref
|
||||
0 7
|
||||
0000000000 65535 f
|
||||
0000000010 00000 n
|
||||
0000000034 00000 n
|
||||
0000001491 00000 n
|
||||
0000001514 00000 n
|
||||
0000001687 00000 n
|
||||
0000001761 00000 n
|
||||
trailer
|
||||
<< /ID [ (some) (id) ]
|
||||
/Root 6 0 R
|
||||
/Size 7
|
||||
>>
|
||||
startxref
|
||||
1820
|
||||
%%EOF
|
12
iphone/Maps/Images.xcassets/Layers/Menu/btn_menu_isomaps_on_light.imageset/Contents.json
vendored
Normal file
12
iphone/Maps/Images.xcassets/Layers/Menu/btn_menu_isomaps_on_light.imageset/Contents.json
vendored
Normal file
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "btn_menu_isomaps_on_light.pdf"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,109 @@
|
|||
%PDF-1.7
|
||||
|
||||
1 0 obj
|
||||
<< >>
|
||||
endobj
|
||||
|
||||
2 0 obj
|
||||
<< /Length 3 0 R >>
|
||||
stream
|
||||
/DeviceRGB CS
|
||||
/DeviceRGB cs
|
||||
q
|
||||
1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm
|
||||
0.117647 0.588235 0.941176 scn
|
||||
20.000000 0.000000 m
|
||||
31.045696 0.000000 40.000000 8.954304 40.000000 20.000000 c
|
||||
40.000000 31.045696 31.045696 40.000000 20.000000 40.000000 c
|
||||
8.954305 40.000000 0.000000 31.045696 0.000000 20.000000 c
|
||||
0.000000 8.954304 8.954305 0.000000 20.000000 0.000000 c
|
||||
h
|
||||
f*
|
||||
n
|
||||
Q
|
||||
q
|
||||
1.000000 0.000000 -0.000000 1.000000 9.000000 11.805984 cm
|
||||
1.000000 1.000000 1.000000 scn
|
||||
0.115074 1.221742 m
|
||||
7.396101 15.783797 l
|
||||
7.573943 16.149940 8.013315 16.296398 8.368998 16.118557 c
|
||||
8.515455 16.045328 8.630528 15.930255 8.703757 15.783797 c
|
||||
12.825488 7.529874 l
|
||||
15.126963 12.132822 l
|
||||
15.304804 12.488504 15.744176 12.634962 16.099859 12.457121 c
|
||||
16.246317 12.383892 16.361389 12.268818 16.434618 12.132822 c
|
||||
21.884928 1.221742 l
|
||||
21.958157 1.106668 22.000000 0.970672 22.000000 0.834675 c
|
||||
22.000000 0.426686 21.665241 0.102388 21.267714 0.102388 c
|
||||
0.732287 0.102388 l
|
||||
0.324299 0.102388 0.000000 0.426686 0.000000 0.834675 c
|
||||
0.000000 0.970672 0.041845 1.106668 0.115074 1.221742 c
|
||||
0.115074 1.221742 l
|
||||
h
|
||||
17.250595 7.226499 m
|
||||
16.403234 6.169912 l
|
||||
15.587257 7.247420 l
|
||||
14.509748 7.644948 l
|
||||
15.775559 10.176570 l
|
||||
17.250595 7.226499 l
|
||||
17.250595 7.226499 l
|
||||
h
|
||||
10.534475 8.868914 m
|
||||
8.965288 8.586460 l
|
||||
7.783167 9.967344 l
|
||||
5.785069 9.308287 l
|
||||
8.044699 13.838006 l
|
||||
10.534475 8.868914 l
|
||||
10.534475 8.868914 l
|
||||
h
|
||||
f*
|
||||
n
|
||||
Q
|
||||
|
||||
endstream
|
||||
endobj
|
||||
|
||||
3 0 obj
|
||||
1401
|
||||
endobj
|
||||
|
||||
4 0 obj
|
||||
<< /Annots []
|
||||
/Type /Page
|
||||
/MediaBox [ 0.000000 0.000000 40.000000 40.000000 ]
|
||||
/Resources 1 0 R
|
||||
/Contents 2 0 R
|
||||
/Parent 5 0 R
|
||||
>>
|
||||
endobj
|
||||
|
||||
5 0 obj
|
||||
<< /Kids [ 4 0 R ]
|
||||
/Count 1
|
||||
/Type /Pages
|
||||
>>
|
||||
endobj
|
||||
|
||||
6 0 obj
|
||||
<< /Type /Catalog
|
||||
/Pages 5 0 R
|
||||
>>
|
||||
endobj
|
||||
|
||||
xref
|
||||
0 7
|
||||
0000000000 65535 f
|
||||
0000000010 00000 n
|
||||
0000000034 00000 n
|
||||
0000001491 00000 n
|
||||
0000001514 00000 n
|
||||
0000001687 00000 n
|
||||
0000001761 00000 n
|
||||
trailer
|
||||
<< /ID [ (some) (id) ]
|
||||
/Root 6 0 R
|
||||
/Size 7
|
||||
>>
|
||||
startxref
|
||||
1820
|
||||
%%EOF
|
|
@ -145,7 +145,7 @@ extension TutorialViewController {
|
|||
private static func subwayTutorialBlur() -> TutorialViewController {
|
||||
let result = TutorialViewController(nibName: "SubwayTutorialBlur", bundle: nil)
|
||||
result.customAction = {
|
||||
MWMTrafficManager.setTransitEnabled(true)
|
||||
MapOverlayManager.setTransitEnabled(true)
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
|
|
@ -96,7 +96,7 @@ void RegisterEventIfPossible(eye::MapObject::Event::Type const type)
|
|||
[MWMRouter stopRouting];
|
||||
}
|
||||
|
||||
if ([MWMTrafficManager transitEnabled]) {
|
||||
if ([MWMMapOverlayManager transitEnabled]) {
|
||||
[MWMRouter setType:MWMRouterTypePublicTransport];
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue