diff --git a/data/styles/mdpi/watch-my-direction.png b/data/styles/mdpi/watch-my-direction.png new file mode 100644 index 0000000000..ec48e5278b Binary files /dev/null and b/data/styles/mdpi/watch-my-direction.png differ diff --git a/data/styles/mdpi/watch-my-position.png b/data/styles/mdpi/watch-my-position.png new file mode 100644 index 0000000000..7a060d578c Binary files /dev/null and b/data/styles/mdpi/watch-my-position.png differ diff --git a/data/styles/mdpi/watch-search-result.png b/data/styles/mdpi/watch-search-result.png new file mode 100644 index 0000000000..7e7636ec4d Binary files /dev/null and b/data/styles/mdpi/watch-search-result.png differ diff --git a/data/styles/watch/api-result.png b/data/styles/watch/api-result.png new file mode 100644 index 0000000000..8f3f27e7a7 Binary files /dev/null and b/data/styles/watch/api-result.png differ diff --git a/data/styles/watch/arrow-direction.png b/data/styles/watch/arrow-direction.png new file mode 100644 index 0000000000..0991a99dad Binary files /dev/null and b/data/styles/watch/arrow-direction.png differ diff --git a/data/styles/watch/compass-image.png b/data/styles/watch/compass-image.png new file mode 100644 index 0000000000..3cb750cdf4 Binary files /dev/null and b/data/styles/watch/compass-image.png differ diff --git a/data/styles/watch/current-position-compas.png b/data/styles/watch/current-position-compas.png new file mode 100644 index 0000000000..a5a032db69 Binary files /dev/null and b/data/styles/watch/current-position-compas.png differ diff --git a/data/styles/watch/current-position.png b/data/styles/watch/current-position.png new file mode 100644 index 0000000000..d1868a2074 Binary files /dev/null and b/data/styles/watch/current-position.png differ diff --git a/data/styles/watch/current-routing-compas.png b/data/styles/watch/current-routing-compas.png new file mode 100644 index 0000000000..6ee3b649cd Binary files /dev/null and b/data/styles/watch/current-routing-compas.png differ diff --git a/data/styles/watch/placemark-blue.png b/data/styles/watch/placemark-blue.png new file mode 100644 index 0000000000..c2b686de90 Binary files /dev/null and b/data/styles/watch/placemark-blue.png differ diff --git a/data/styles/watch/placemark-brown.png b/data/styles/watch/placemark-brown.png new file mode 100644 index 0000000000..f638920852 Binary files /dev/null and b/data/styles/watch/placemark-brown.png differ diff --git a/data/styles/watch/placemark-green.png b/data/styles/watch/placemark-green.png new file mode 100644 index 0000000000..44b8857ff1 Binary files /dev/null and b/data/styles/watch/placemark-green.png differ diff --git a/data/styles/watch/placemark-orange.png b/data/styles/watch/placemark-orange.png new file mode 100644 index 0000000000..326ab640c4 Binary files /dev/null and b/data/styles/watch/placemark-orange.png differ diff --git a/data/styles/watch/placemark-pink.png b/data/styles/watch/placemark-pink.png new file mode 100644 index 0000000000..8553c98345 Binary files /dev/null and b/data/styles/watch/placemark-pink.png differ diff --git a/data/styles/watch/placemark-purple.png b/data/styles/watch/placemark-purple.png new file mode 100644 index 0000000000..878fbef6ac Binary files /dev/null and b/data/styles/watch/placemark-purple.png differ diff --git a/data/styles/watch/placemark-red.png b/data/styles/watch/placemark-red.png new file mode 100644 index 0000000000..33b159be2c Binary files /dev/null and b/data/styles/watch/placemark-red.png differ diff --git a/data/styles/watch/placemark-yellow.png b/data/styles/watch/placemark-yellow.png new file mode 100644 index 0000000000..55a61176ec Binary files /dev/null and b/data/styles/watch/placemark-yellow.png differ diff --git a/data/styles/watch/route_from.png b/data/styles/watch/route_from.png new file mode 100644 index 0000000000..6469d3a2b1 Binary files /dev/null and b/data/styles/watch/route_from.png differ diff --git a/data/styles/watch/route_to.png b/data/styles/watch/route_to.png new file mode 100644 index 0000000000..b7e2d64f66 Binary files /dev/null and b/data/styles/watch/route_to.png differ diff --git a/data/styles/watch/search-result-active.png b/data/styles/watch/search-result-active.png new file mode 100644 index 0000000000..942dfa2c3a Binary files /dev/null and b/data/styles/watch/search-result-active.png differ diff --git a/data/styles/watch/search-result.png b/data/styles/watch/search-result.png new file mode 100644 index 0000000000..ec3f99e18a Binary files /dev/null and b/data/styles/watch/search-result.png differ diff --git a/data/styles/xhdpi/watch-my-direction.png b/data/styles/xhdpi/watch-my-direction.png new file mode 100644 index 0000000000..a24ad35677 Binary files /dev/null and b/data/styles/xhdpi/watch-my-direction.png differ diff --git a/data/styles/xhdpi/watch-my-position.png b/data/styles/xhdpi/watch-my-position.png new file mode 100644 index 0000000000..258fa395e3 Binary files /dev/null and b/data/styles/xhdpi/watch-my-position.png differ diff --git a/data/styles/xhdpi/watch-search-result.png b/data/styles/xhdpi/watch-search-result.png new file mode 100644 index 0000000000..452e7e6df6 Binary files /dev/null and b/data/styles/xhdpi/watch-search-result.png differ diff --git a/data/styles/xxhdpi/watch-my-direction.png b/data/styles/xxhdpi/watch-my-direction.png new file mode 100644 index 0000000000..d192bc09e2 Binary files /dev/null and b/data/styles/xxhdpi/watch-my-direction.png differ diff --git a/data/styles/xxhdpi/watch-my-position.png b/data/styles/xxhdpi/watch-my-position.png new file mode 100644 index 0000000000..7e39ede702 Binary files /dev/null and b/data/styles/xxhdpi/watch-my-position.png differ diff --git a/data/styles/xxhdpi/watch-search-result.png b/data/styles/xxhdpi/watch-search-result.png new file mode 100644 index 0000000000..870b95fdfe Binary files /dev/null and b/data/styles/xxhdpi/watch-search-result.png differ diff --git a/iphone/Maps/Categories/UIKitCategories.h b/iphone/Maps/Categories/UIKitCategories.h index 6c1a9ad2d3..f585a88609 100644 --- a/iphone/Maps/Categories/UIKitCategories.h +++ b/iphone/Maps/Categories/UIKitCategories.h @@ -1,14 +1,6 @@ #import - -#define IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) - -#define SYSTEM_VERSION_IS_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending) - -#define L(str) NSLocalizedString(str, nil) - -#define INTEGRAL(f) ([UIScreen mainScreen].scale == 1 ? floor(f) : f) -#define PIXEL 1.0 / [UIScreen mainScreen].scale +#import "Macros.h" @interface NSObject (Optimized) diff --git a/iphone/Maps/Classes/MapsAppDelegate.h b/iphone/Maps/Classes/MapsAppDelegate.h index 37930eb2ab..26f72e71f0 100644 --- a/iphone/Maps/Classes/MapsAppDelegate.h +++ b/iphone/Maps/Classes/MapsAppDelegate.h @@ -1,5 +1,6 @@ #import +#import "DownloadIndicatorProtocol.h" #import "NavigationController.h" #import "MapsObservers.h" @@ -10,7 +11,7 @@ extern NSString * const MapsStatusChangedNotification; -@interface MapsAppDelegate : NSObject +@interface MapsAppDelegate : NSObject { NSInteger m_standbyCounter; NSInteger m_activeDownloadsCounter; diff --git a/iphone/Maps/Classes/MapsAppDelegate.mm b/iphone/Maps/Classes/MapsAppDelegate.mm index b2814a6cc5..1c9cdb395a 100644 --- a/iphone/Maps/Classes/MapsAppDelegate.mm +++ b/iphone/Maps/Classes/MapsAppDelegate.mm @@ -8,20 +8,25 @@ #import "LocalNotificationManager.h" #import "MWMAlertViewController.h" #import "Reachability.h" +#import "MWMWatchEventInfo.h" +#import "Common.h" #include -#import +#import "MRMyTracker.h" +#import "MRTrackerParams.h" #import #import -#include "../../../storage/storage_defines.hpp" +#include "storage/storage_defines.hpp" -#include "../../../platform/settings.hpp" -#include "../../../platform/platform.hpp" -#include "../../../platform/preferred_languages.hpp" +#import "platform/http_thread_apple.h" -#import "../../../3party/Alohalytics/src/alohalytics_objc.h" +#include "platform/settings.hpp" +#include "platform/platform_ios.hpp" +#include "platform/preferred_languages.hpp" + +#import "3party/Alohalytics/src/alohalytics_objc.h" NSString * const MapsStatusChangedNotification = @"MapsStatusChangedNotification"; // Alert keys. @@ -32,6 +37,9 @@ static NSString * const kUDFirstVersionKey = @"FirstVersion"; static NSString * const kUDLastRateRequestDate = @"LastRateRequestDate"; extern NSString * const kUDAlreadySharedKey = @"UserAlreadyShared"; static NSString * const kUDLastShareRequstDate = @"LastShareRequestDate"; +static NSString * const kNewWatchUserEventKey = @"NewWatchUser"; +static NSString * const kOldWatchUserEventKey = @"OldWatchUser"; +static NSString * const kUDWatchEventAlreadyTracked = @"WatchEventAlreadyTracked"; /// Adds needed localized strings to C++ code /// @TODO Refactor localization mechanism to make it simpler @@ -82,22 +90,17 @@ void InitLocalizedStrings() return [[NSUserDefaults standardUserDefaults] boolForKey:FIRST_LAUNCH_KEY]; } -- (void)initMRGService +- (void)initMyTrackerService { - NSInteger appId = [[[NSBundle mainBundle] objectForInfoDictionaryKey:@"MRGServiceAppID"] integerValue]; - NSString * secret = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"MRGServiceClientKey"]; + static NSString * const kMyTrackerAppId = @"***REMOVED***"; + [MRMyTracker createTracker:kMyTrackerAppId]; - // MRGService settings - MRGServiceParams * mrgsParams = [[MRGServiceParams alloc] initWithAppId:appId andSecret:secret]; #ifdef DEBUG - mrgsParams.debug = YES; + [MRMyTracker setDebugMode:YES]; #endif - mrgsParams.shouldResetBadge = NO; - mrgsParams.crashReportEnabled = YES; - mrgsParams.allowPushNotificationHooks = YES; - [MRGServiceInit startWithServiceParams:mrgsParams externalSDKParams:@[] delegate:nil]; - [[MRGSApplication currentApplication] markAsUpdatedWithRegistrationDate:NSDate.date]; + MRMyTracker.getTrackerParams.trackAppLaunch = YES; + [MRMyTracker setupTracker]; } - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions @@ -114,10 +117,14 @@ void InitLocalizedStrings() if (url != nil) [self checkLaunchURL:url]; + [HttpThread setDownloadIndicatorProtocol:[MapsAppDelegate theApp]]; + [Alohalytics setup:serverUrl andFirstLaunch:[MapsAppDelegate isFirstAppLaunch] withLaunchOptions:launchOptions]; [[Statistics instance] startSessionWithLaunchOptions:launchOptions]; + [self trackWatchUser]; + [AppInfo sharedInfo]; // we call it to init -firstLaunchDate if ([AppInfo sharedInfo].advertisingId) [[Statistics instance] logEvent:@"Device Info" withParameters:@{@"IFA" : [AppInfo sharedInfo].advertisingId, @"Country" : [AppInfo sharedInfo].countryCode}]; @@ -142,7 +149,7 @@ void InitLocalizedStrings() [self customizeAppearance]; - [self initMRGService]; + [self initMyTrackerService]; if ([application respondsToSelector:@selector(setMinimumBackgroundFetchInterval:)]) [application setMinimumBackgroundFetchInterval:(6 * 60 * 60)]; @@ -220,8 +227,6 @@ void InitLocalizedStrings() - (void)applicationDidBecomeActive:(UIApplication *)application { [Alohalytics logEvent:@"$applicationDidBecomeActive"]; - if (self.isIOS7OrLater) - [FBSDKAppEvents activateApp]; Framework & f = GetFramework(); if (m_geoURL) @@ -270,13 +275,17 @@ void InitLocalizedStrings() m_mwmURL = nil; m_fileURL = nil; - if (!self.isIOS7OrLater) + f.GetLocationState()->InvalidatePosition(); + + if ([[[UIDevice currentDevice] systemVersion] integerValue] >= 8) + { + [FBSDKAppEvents activateApp]; + } + else { [FBSettings setDefaultAppID:[[NSBundle mainBundle] objectForInfoDictionaryKey:@"FacebookAppID"]]; [FBAppEvents activateApp]; } - - f.GetLocationState()->InvalidatePosition(); } - (void)dealloc @@ -360,11 +369,11 @@ void InitLocalizedStrings() - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { m_sourceApplication = sourceApplication; - + if ([self checkLaunchURL:url]) return YES; - if ([[[UIDevice currentDevice] systemVersion] integerValue] < 7) + if (!self.isIOS7OrLater) return NO; return [[FBSDKApplicationDelegate sharedInstance] application:application openURL:url sourceApplication:sourceApplication annotation:annotation]; @@ -456,6 +465,45 @@ void InitLocalizedStrings() return YES; } +- (void)application:(UIApplication *)application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void (^)(NSDictionary *))reply +{ + switch (userInfo.watchEventInfoRequest) + { + case MWMWatchEventInfoRequestMoveWritableDir: + static_cast(GetPlatform()).MigrateWritableDirForAppleWatch(); + reply([NSDictionary dictionary]); + break; + } + NSUserDefaults * settings = [[NSUserDefaults alloc] initWithSuiteName:kApplicationGroupIdentifier()]; + [settings setBool:YES forKey:kHaveAppleWatch]; + [settings synchronize]; +} + +- (void)trackWatchUser +{ + if ([[[UIDevice currentDevice] systemName] integerValue] < 8) + return; + + NSUserDefaults *standartDefaults = [NSUserDefaults standardUserDefaults]; + BOOL const userLaunchAppleWatch = [[[NSUserDefaults alloc] initWithSuiteName:kApplicationGroupIdentifier()] boolForKey:kHaveAppleWatch]; + BOOL const appleWatchLaunchingEventAlreadyTracked = [standartDefaults boolForKey:kUDWatchEventAlreadyTracked]; + if (userLaunchAppleWatch && !appleWatchLaunchingEventAlreadyTracked) + { + if (self.userIsNew) + { + [Alohalytics logEvent:kNewWatchUserEventKey]; + [[Statistics instance] logEvent:kNewWatchUserEventKey]; + } + else + { + [Alohalytics logEvent:kOldWatchUserEventKey]; + [[Statistics instance] logEvent:kOldWatchUserEventKey]; + } + [standartDefaults setBool:YES forKey:kUDWatchEventAlreadyTracked]; + [standartDefaults synchronize]; + } +} + #pragma mark - Alert logic - (void)firstLaunchSetup diff --git a/iphone/Maps/Classes/MapsObservers.h b/iphone/Maps/Classes/MapsObservers.h index 0632d08852..59d4465acc 100644 --- a/iphone/Maps/Classes/MapsObservers.h +++ b/iphone/Maps/Classes/MapsObservers.h @@ -22,11 +22,13 @@ using namespace storage; @end +@class MWMWatchNotification; class ActiveMapsObserver : public ActiveMapsLayout::ActiveMapsListener { public: ActiveMapsObserver(id delegateObject); + virtual ~ActiveMapsObserver(); virtual void CountryGroupChanged(ActiveMapsLayout::TGroup const & oldGroup, int oldPosition, ActiveMapsLayout::TGroup const & newGroup, int newPosition); @@ -38,6 +40,7 @@ public: private: id m_delegateObject; + MWMWatchNotification * m_notificationCenter; }; diff --git a/iphone/Maps/Classes/MapsObservers.mm b/iphone/Maps/Classes/MapsObservers.mm index 4850f88b79..5994e870c6 100644 --- a/iphone/Maps/Classes/MapsObservers.mm +++ b/iphone/Maps/Classes/MapsObservers.mm @@ -1,12 +1,21 @@ #import #import "MapsObservers.h" +#import "MWMWatchNotification.h" +#import "Common.h" ActiveMapsObserver::ActiveMapsObserver(id delegateObject) : m_delegateObject(delegateObject) +, m_notificationCenter([[MWMWatchNotification alloc] init]) { } +ActiveMapsObserver::~ActiveMapsObserver() +{ + m_notificationCenter = nil; + m_delegateObject = nil; +} + void ActiveMapsObserver::CountryGroupChanged(ActiveMapsLayout::TGroup const & oldGroup, int oldPosition, ActiveMapsLayout::TGroup const & newGroup, int newPosition) { @@ -29,6 +38,7 @@ void ActiveMapsObserver::CountryOptionsChanged(ActiveMapsLayout::TGroup const & void ActiveMapsObserver::DownloadingProgressUpdate(ActiveMapsLayout::TGroup const & group, int position, LocalAndRemoteSizeT const & progress) { + [m_notificationCenter passMessageObject:@((double)progress.first / progress.second) identifier:kDownloadingProgressUpdateNotificationId]; if ([m_delegateObject respondsToSelector:@selector(countryDownloadingProgressChanged:atPosition:inGroup:)]) [m_delegateObject countryDownloadingProgressChanged:progress atPosition:position inGroup:group]; } diff --git a/iphone/Maps/Classes/WatchEventHandler/MWMWatchEventInfo.h b/iphone/Maps/Classes/WatchEventHandler/MWMWatchEventInfo.h new file mode 100644 index 0000000000..6438c1ed45 --- /dev/null +++ b/iphone/Maps/Classes/WatchEventHandler/MWMWatchEventInfo.h @@ -0,0 +1,26 @@ +// +// MWMWatchEventInfo.h +// Maps +// +// Created by i.grechuhin on 10.04.15. +// Copyright (c) 2015 MapsWithMe. All rights reserved. +// + +#import + +typedef NS_ENUM(NSUInteger, MWMWatchEventInfoRequest) +{ + MWMWatchEventInfoRequestMoveWritableDir +}; + +@interface NSDictionary (MWMWatchEventInfo) + +@property (nonatomic, readonly) MWMWatchEventInfoRequest watchEventInfoRequest; + +@end + +@interface NSMutableDictionary (MWMWatchEventInfo) + +@property (nonatomic) MWMWatchEventInfoRequest watchEventInfoRequest; + +@end diff --git a/iphone/Maps/Classes/WatchEventHandler/MWMWatchEventInfo.mm b/iphone/Maps/Classes/WatchEventHandler/MWMWatchEventInfo.mm new file mode 100644 index 0000000000..9f118f2e1a --- /dev/null +++ b/iphone/Maps/Classes/WatchEventHandler/MWMWatchEventInfo.mm @@ -0,0 +1,31 @@ +// +// MWMWatchEventInfo.m +// Maps +// +// Created by i.grechuhin on 10.04.15. +// Copyright (c) 2015 MapsWithMe. All rights reserved. +// + +#import "MWMWatchEventInfo.h" + +static NSString * const kRequestKey = @"request"; + +@implementation NSDictionary (MWMWatchEventInfo) + +- (MWMWatchEventInfoRequest)watchEventInfoRequest +{ + NSNumber * requestValue = self[kRequestKey]; + return (MWMWatchEventInfoRequest)requestValue.unsignedIntegerValue; +} + +@end + +@implementation NSMutableDictionary (MWMWatchEventInfo) + +- (void)setWatchEventInfoRequest:(MWMWatchEventInfoRequest)watchEventInfoRequest +{ + NSNumber * requestValue = @(watchEventInfoRequest); + self[kRequestKey] = requestValue; +} + +@end diff --git a/iphone/Maps/Classes/WatchEventHandler/MWMWatchNotification.h b/iphone/Maps/Classes/WatchEventHandler/MWMWatchNotification.h new file mode 100644 index 0000000000..29a1c97d99 --- /dev/null +++ b/iphone/Maps/Classes/WatchEventHandler/MWMWatchNotification.h @@ -0,0 +1,20 @@ +// +// MWMWatchNotification.h +// Maps +// +// Created by i.grechuhin on 10.04.15. +// Copyright (c) 2015 MapsWithMe. All rights reserved. +// + +#import + +@interface MWMWatchNotification : NSObject + +- (void)passMessageObject:(id)messageObject identifier:(NSString *)identifier; +- (id)messageWithIdentifier:(NSString *)identifier; +- (void)clearMessageContentsForIdentifier:(NSString *)identifier; +- (void)clearAllMessageContents; +- (void)listenForMessageWithIdentifier:(NSString *)identifier listener:(void (^)(id messageObject))listener; +- (void)stopListeningForMessageWithIdentifier:(NSString *)identifier; + +@end diff --git a/iphone/Maps/Classes/WatchEventHandler/MWMWatchNotification.m b/iphone/Maps/Classes/WatchEventHandler/MWMWatchNotification.m new file mode 100644 index 0000000000..82a2d0704d --- /dev/null +++ b/iphone/Maps/Classes/WatchEventHandler/MWMWatchNotification.m @@ -0,0 +1,209 @@ +// +// MWMWatchNotification.m +// Maps +// +// Created by i.grechuhin on 10.04.15. +// Copyright (c) 2015 MapsWithMe. All rights reserved. +// + +#import "MWMWatchNotification.h" +#import "Common.h" + +#include + +static NSString * const kMWMWatchNotificationName = @"MWMWatchNotificationName"; +static NSString * const kMWMWatchNotificationPath = @"MWMWatchNotificationPath"; +static NSString * const kMWMWatchNotificationIdentifier = @"MWMWatchNotificationIdentifier"; +static NSString * const kMWMWatchNotificationArchiveNameFormat = @"%@.archive"; + +@interface MWMWatchNotification () + +@property (strong, nonatomic) NSFileManager *fileManager; +@property (strong, nonatomic) NSMutableDictionary *listenerBlocks; + +@end + +@implementation MWMWatchNotification + +- (instancetype)init +{ + if (![[NSFileManager defaultManager] respondsToSelector:@selector(containerURLForSecurityApplicationGroupIdentifier:)]) + return nil; + + self = [super init]; + if (self) + { + self.fileManager = [[NSFileManager alloc] init]; + self.listenerBlocks = [NSMutableDictionary dictionary]; + + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveMessageNotification:) name:kMWMWatchNotificationName object:nil]; + } + return self; +} + +- (void)dealloc +{ + [[NSNotificationCenter defaultCenter] removeObserver:self]; + CFNotificationCenterRef const center = CFNotificationCenterGetDarwinNotifyCenter(); + CFNotificationCenterRemoveEveryObserver(center, (__bridge const void *)(self)); +} + + +#pragma mark - Private File Operation Methods + +- (NSString *)messagePassingDirectoryPath +{ + NSURL *appGroupContainer = [self.fileManager containerURLForSecurityApplicationGroupIdentifier:kApplicationGroupIdentifier()]; + NSString *appGroupContainerPath = [appGroupContainer path]; + NSString *directoryPath = [appGroupContainerPath stringByAppendingPathComponent:kMWMWatchNotificationPath]; + + [self.fileManager createDirectoryAtPath:directoryPath withIntermediateDirectories:YES attributes:nil error:nil]; + + return directoryPath; +} + +- (NSString *)filePathForIdentifier:(NSString *)identifier +{ + if (identifier && identifier.length > 0) + { + NSString *directoryPath = [self messagePassingDirectoryPath]; + NSString *fileName = [NSString stringWithFormat:kMWMWatchNotificationArchiveNameFormat, identifier]; + NSString *filePath = [directoryPath stringByAppendingPathComponent:fileName]; + + return filePath; + } + return nil; +} + +- (void)writeMessageObject:(id)messageObject toFileWithIdentifier:(NSString *)identifier +{ + if (identifier) { + if (messageObject) + { + NSData *data = [NSKeyedArchiver archivedDataWithRootObject:messageObject]; + NSString *filePath = [self filePathForIdentifier:identifier]; + + if (data == nil || filePath == nil || ![data writeToFile:filePath atomically:YES]) + return; + + } + + [self sendNotificationForMessageWithIdentifier:identifier]; + } +} + +- (void)deleteFileForIdentifier:(NSString *)identifier +{ + [self.fileManager removeItemAtPath:[self filePathForIdentifier:identifier] error:nil]; +} + +#pragma mark - Private Notification Methods + +- (void)sendNotificationForMessageWithIdentifier:(NSString *)identifier +{ + CFNotificationCenterRef const center = CFNotificationCenterGetDarwinNotifyCenter(); + CFDictionaryRef const userInfo = NULL; + BOOL const deliverImmediately = YES; + CFStringRef str = (__bridge CFStringRef)identifier; + CFNotificationCenterPostNotification(center, str, NULL, userInfo, deliverImmediately); +} + +- (void)registerForNotificationsWithIdentifier:(NSString *)identifier +{ + CFNotificationCenterRef const center = CFNotificationCenterGetDarwinNotifyCenter(); + CFStringRef str = (__bridge CFStringRef)identifier; + CFNotificationCenterAddObserver(center, (__bridge const void *)(self), MWMWatchNotificationCallback, str, NULL, CFNotificationSuspensionBehaviorDeliverImmediately); +} + +- (void)unregisterForNotificationsWithIdentifier:(NSString *)identifier +{ + CFNotificationCenterRef const center = CFNotificationCenterGetDarwinNotifyCenter(); + CFStringRef str = (__bridge CFStringRef)identifier; + CFNotificationCenterRemoveObserver(center, (__bridge const void *)(self), str, NULL); +} + +void MWMWatchNotificationCallback(CFNotificationCenterRef center, void * observer, CFStringRef name, void const * object, CFDictionaryRef userInfo) +{ + NSString *identifier = (__bridge NSString *)name; + [[NSNotificationCenter defaultCenter] postNotificationName:kMWMWatchNotificationName object:nil userInfo:@{kMWMWatchNotificationIdentifier : identifier}]; +} + +- (void)didReceiveMessageNotification:(NSNotification *)notification +{ + typedef void (^MessageListenerBlock)(id messageObject); + + NSDictionary *userInfo = notification.userInfo; + NSString *identifier = [userInfo valueForKey:kMWMWatchNotificationIdentifier]; + + if (identifier) + { + MessageListenerBlock listenerBlock = [self listenerBlockForIdentifier:identifier]; + + if (listenerBlock) + { + id messageObject = [self messageWithIdentifier:identifier]; + + listenerBlock(messageObject); + } + } +} + +- (id)listenerBlockForIdentifier:(NSString *)identifier +{ + return [self.listenerBlocks valueForKey:identifier]; +} + +#pragma mark - Public Interface Methods + +- (void)passMessageObject:(id )messageObject identifier:(NSString *)identifier +{ + [self writeMessageObject:messageObject toFileWithIdentifier:identifier]; +} + +- (id)messageWithIdentifier:(NSString *)identifier +{ + if (identifier) + { + NSData *data = [NSData dataWithContentsOfFile:[self filePathForIdentifier:identifier]]; + + if (data) + return [NSKeyedUnarchiver unarchiveObjectWithData:data]; + } + return nil; +} + +- (void)clearMessageContentsForIdentifier:(NSString *)identifier +{ + [self deleteFileForIdentifier:identifier]; +} + +- (void)clearAllMessageContents +{ + NSString *directoryPath = [self messagePassingDirectoryPath]; + NSArray *messageFiles = [self.fileManager contentsOfDirectoryAtPath:directoryPath error:nil]; + [messageFiles enumerateObjectsUsingBlock:^(NSString *path, NSUInteger idx, BOOL *stop) + { + NSString *filePath = [directoryPath stringByAppendingPathComponent:path]; + [self.fileManager removeItemAtPath:filePath error:nil]; + }]; +} + +- (void)listenForMessageWithIdentifier:(NSString *)identifier listener:(void (^)(id messageObject))listener +{ + if (identifier) + { + [self.listenerBlocks setValue:listener forKey:identifier]; + [self registerForNotificationsWithIdentifier:identifier]; + } +} + +- (void)stopListeningForMessageWithIdentifier:(NSString *)identifier +{ + if (identifier) + { + [self.listenerBlocks setValue:nil forKey:identifier]; + [self unregisterForNotificationsWithIdentifier:identifier]; + } +} + +@end diff --git a/iphone/Maps/ImagesPro.xcassets/AppIcon.appiconset/29x29@3x.png b/iphone/Maps/ImagesPro.xcassets/AppIcon.appiconset/29x29@3x.png new file mode 100644 index 0000000000..2a67017735 Binary files /dev/null and b/iphone/Maps/ImagesPro.xcassets/AppIcon.appiconset/29x29@3x.png differ diff --git a/iphone/Maps/ImagesPro.xcassets/AppIcon.appiconset/40x40@3x.png b/iphone/Maps/ImagesPro.xcassets/AppIcon.appiconset/40x40@3x.png new file mode 100644 index 0000000000..199e39cee0 Binary files /dev/null and b/iphone/Maps/ImagesPro.xcassets/AppIcon.appiconset/40x40@3x.png differ diff --git a/iphone/Maps/ImagesPro.xcassets/AppIcon.appiconset/60x60@3x.png b/iphone/Maps/ImagesPro.xcassets/AppIcon.appiconset/60x60@3x.png new file mode 100644 index 0000000000..4491987869 Binary files /dev/null and b/iphone/Maps/ImagesPro.xcassets/AppIcon.appiconset/60x60@3x.png differ diff --git a/iphone/Maps/ImagesPro.xcassets/AppIcon.appiconset/Contents.json b/iphone/Maps/ImagesPro.xcassets/AppIcon.appiconset/Contents.json index 502add68a0..11ee921855 100644 --- a/iphone/Maps/ImagesPro.xcassets/AppIcon.appiconset/Contents.json +++ b/iphone/Maps/ImagesPro.xcassets/AppIcon.appiconset/Contents.json @@ -12,12 +12,24 @@ "filename" : "29x29@2x.png", "scale" : "2x" }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "29x29@3x.png", + "scale" : "3x" + }, { "size" : "40x40", "idiom" : "iphone", "filename" : "40x40@2x.png", "scale" : "2x" }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "40x40@3x.png", + "scale" : "3x" + }, { "size" : "57x57", "idiom" : "iphone", @@ -39,7 +51,7 @@ { "size" : "60x60", "idiom" : "iphone", - "filename" : "Pro.png", + "filename" : "60x60@3x.png", "scale" : "3x" }, { diff --git a/iphone/Maps/MAPSME.plist b/iphone/Maps/MAPSME.plist index 631ac122a0..d2bd4cdedf 100644 --- a/iphone/Maps/MAPSME.plist +++ b/iphone/Maps/MAPSME.plist @@ -4,12 +4,6 @@ AdmanTrackerAppID ***REMOVED*** - MRGServiceClientKey - ***REMOVED*** - MRGServiceAppID - 148 - LocalNotificationsFileName - LocalNotifications CFBundleDevelopmentRegion en CFBundleDisplayName @@ -88,10 +82,14 @@ ***REMOVED*** LSRequiresIPhoneOS + LocalNotificationsFileName + LocalNotifications MobileAppTrackerAdvertiserId 14130 MobileAppTrackerConversionKey ***REMOVED*** + NSLocationAlwaysUsageDescription + NSMainNibFile MainWindow NSMainNibFile~ipad @@ -162,7 +160,5 @@ - NSLocationAlwaysUsageDescription - diff --git a/iphone/Maps/Macros.h b/iphone/Maps/Macros.h new file mode 100644 index 0000000000..614bd634f0 --- /dev/null +++ b/iphone/Maps/Macros.h @@ -0,0 +1,16 @@ +// +// Macros.h +// Maps +// +// Created by v.mikhaylenko on 07.04.15. +// Copyright (c) 2015 MapsWithMe. All rights reserved. +// + +#define IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) + +#define SYSTEM_VERSION_IS_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending) + +#define L(str) NSLocalizedString(str, nil) + +#define INTEGRAL(f) ([UIScreen mainScreen].scale == 1 ? floor(f) : f) +#define PIXEL 1.0 / [UIScreen mainScreen].scale diff --git a/iphone/Maps/Maps.xcodeproj/project.pbxproj b/iphone/Maps/Maps.xcodeproj/project.pbxproj index cdff0d3a23..a19a7ebc9d 100644 --- a/iphone/Maps/Maps.xcodeproj/project.pbxproj +++ b/iphone/Maps/Maps.xcodeproj/project.pbxproj @@ -25,12 +25,60 @@ 34BC722A1B0DECAE0012A34B /* MWMZoomButtonsView.m in Sources */ = {isa = PBXBuildFile; fileRef = 34BC721F1B0DECAE0012A34B /* MWMZoomButtonsView.m */; }; 34BC722B1B0DECAE0012A34B /* MWMZoomButtonsView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34BC72201B0DECAE0012A34B /* MWMZoomButtonsView.xib */; }; 45159BF91B0CA2D5009BFA85 /* resources-6plus in Resources */ = {isa = PBXBuildFile; fileRef = 45159BF81B0CA2D5009BFA85 /* resources-6plus */; }; + 343F262E1AEFC4A300388A6D /* MWMFrameworkUtils.mm in Sources */ = {isa = PBXBuildFile; fileRef = 343F262D1AEFC4A300388A6D /* MWMFrameworkUtils.mm */; }; + 343F26301AEFDB1A00388A6D /* Framework.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 343F262F1AEFDB1A00388A6D /* Framework.cpp */; }; + 343F26311AEFDF3E00388A6D /* resources-xhdpi in Resources */ = {isa = PBXBuildFile; fileRef = 97FC99DA19C1A2CD00C1CF98 /* resources-xhdpi */; }; + 345C31711AE798DD00EA0CC2 /* MWMCategoriesInterfaceCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 345C316E1AE798DD00EA0CC2 /* MWMCategoriesInterfaceCell.m */; }; + 345C31721AE798DD00EA0CC2 /* MWMCategoriesInterfaceController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 345C31701AE798DD00EA0CC2 /* MWMCategoriesInterfaceController.mm */; }; + 345C31781AE799B600EA0CC2 /* MWMSearchResultCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 345C31751AE799B600EA0CC2 /* MWMSearchResultCell.m */; }; + 345C31791AE799B600EA0CC2 /* MWMSearchResultController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 345C31771AE799B600EA0CC2 /* MWMSearchResultController.mm */; }; + 34A742FE1AE5461A00CE15EB /* index.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34A742FD1AE5461A00CE15EB /* index.cpp */; }; + 34A743001AE5468200CE15EB /* storage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34A742FF1AE5468200CE15EB /* storage.cpp */; }; + 34DF4D111AE77B9F0012702D /* MWMWKInterfaceController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34DF4D101AE77B9F0012702D /* MWMWKInterfaceController.mm */; }; + 454040621AD2D75E007A9B12 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 46F26C7210F61FD600ECCA39 /* OpenGLES.framework */; }; + 454040631AD2D83A007A9B12 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 97C98655186C734000AF7E9E /* AVFoundation.framework */; }; + 454040641AD2D862007A9B12 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; + 454040661AD2D88A007A9B12 /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B00511031A1101F600A61AA4 /* CoreData.framework */; }; + 454040671AD2D897007A9B12 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765070DF74369002DB57D /* CoreGraphics.framework */; }; + 4540406A1AD2D8FD007A9B12 /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B00511051A1101FC00A61AA4 /* CoreMedia.framework */; }; + 4540406B1AD2D919007A9B12 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 46F26D1E10F626CB00ECCA39 /* QuartzCore.framework */; }; + 4540406C1AD2D92D007A9B12 /* iAd.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 97C98651186C5EF000AF7E9E /* iAd.framework */; }; + 4540406D1AD2D958007A9B12 /* AdSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 97ECD870183620CE00F77A46 /* AdSupport.framework */; }; + 4540406F1AD2D9C5007A9B12 /* WatchKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4540406E1AD2D9C5007A9B12 /* WatchKit.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; + 454040701AD2DB30007A9B12 /* RenderContext.mm in Sources */ = {isa = PBXBuildFile; fileRef = EE7F297E1219ECA300EB67A9 /* RenderContext.mm */; }; + 454040761AD2DD73007A9B12 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; + 4579C8951AD2F98B001D6B90 /* synonyms.txt in Resources */ = {isa = PBXBuildFile; fileRef = FAAEA7D0161BD26600CCD661 /* synonyms.txt */; }; + 4579C8961AD2F9A1001D6B90 /* categories.txt in Resources */ = {isa = PBXBuildFile; fileRef = FAAFD696139D9BE2000AE70C /* categories.txt */; }; + 4579C8971AD2F9A1001D6B90 /* types.txt in Resources */ = {isa = PBXBuildFile; fileRef = FA64D9A813F975AD00350ECF /* types.txt */; }; + 4579C8981AD2F9A2001D6B90 /* fonts_blacklist.txt in Resources */ = {isa = PBXBuildFile; fileRef = EEFE7C1212F8C9E1006AF8C3 /* fonts_blacklist.txt */; }; + 4579C8991AD2F9A2001D6B90 /* fonts_whitelist.txt in Resources */ = {isa = PBXBuildFile; fileRef = EEFE7C1312F8C9E1006AF8C3 /* fonts_whitelist.txt */; }; + 4579C89A1AD2F9A2001D6B90 /* unicode_blocks.txt in Resources */ = {isa = PBXBuildFile; fileRef = EE583CBA12F773F00042CBE3 /* unicode_blocks.txt */; }; + 4579C89B1AD2F9A2001D6B90 /* countries.txt in Resources */ = {isa = PBXBuildFile; fileRef = FA46DA2B12D4166E00968C36 /* countries.txt */; }; + 4579C89C1AD2F9A2001D6B90 /* classificator.txt in Resources */ = {isa = PBXBuildFile; fileRef = EE026F0511D6AC0D00645242 /* classificator.txt */; }; + 4579C89D1AD2F9E6001D6B90 /* drules_proto_dark.bin in Resources */ = {isa = PBXBuildFile; fileRef = 4A00DBDE1AB704C400113624 /* drules_proto_dark.bin */; }; + 4579C89E1AD2F9E6001D6B90 /* drules_proto.bin in Resources */ = {isa = PBXBuildFile; fileRef = F7FDD822147F30CC005900FA /* drules_proto.bin */; }; + 4579C89F1AD2FA36001D6B90 /* packed_polygons.bin in Resources */ = {isa = PBXBuildFile; fileRef = FA85F632145DDDC20090E1A0 /* packed_polygons.bin */; }; + 4579C8A01AD2FAB1001D6B90 /* 00_roboto_regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = FAF30A94173AB23900818BF6 /* 00_roboto_regular.ttf */; }; + 4579C8A11AD2FAB1001D6B90 /* 01_dejavusans.ttf in Resources */ = {isa = PBXBuildFile; fileRef = EEA615E5134C4968003A9827 /* 01_dejavusans.ttf */; }; + 4579C8A21AD2FAB1001D6B90 /* 02_wqy-microhei.ttf in Resources */ = {isa = PBXBuildFile; fileRef = EEA615E6134C4968003A9827 /* 02_wqy-microhei.ttf */; }; + 4579C8A31AD2FAB1001D6B90 /* 03_jomolhari-id-a3d.ttf in Resources */ = {isa = PBXBuildFile; fileRef = EEA615E7134C4968003A9827 /* 03_jomolhari-id-a3d.ttf */; }; + 4579C8A41AD2FAB1001D6B90 /* 04_padauk.ttf in Resources */ = {isa = PBXBuildFile; fileRef = EEA615E8134C4968003A9827 /* 04_padauk.ttf */; }; + 4579C8A51AD2FAB1001D6B90 /* 05_khmeros.ttf in Resources */ = {isa = PBXBuildFile; fileRef = EEA615E9134C4968003A9827 /* 05_khmeros.ttf */; }; + 4579C8A61AD2FAB1001D6B90 /* 06_code2000.ttf in Resources */ = {isa = PBXBuildFile; fileRef = EE164810135CEE49003B8A3E /* 06_code2000.ttf */; }; + 45FE96831AD315EF00CB7560 /* RenderBuffer.mm in Sources */ = {isa = PBXBuildFile; fileRef = EE7F297D1219ECA300EB67A9 /* RenderBuffer.mm */; }; 46F26C7310F61FD600ECCA39 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 46F26C7210F61FD600ECCA39 /* OpenGLES.framework */; }; 46F26CD810F623BA00ECCA39 /* EAGLView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 46F26CD710F623BA00ECCA39 /* EAGLView.mm */; }; 46F26D1F10F626CB00ECCA39 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 46F26D1E10F626CB00ECCA39 /* QuartzCore.framework */; }; 4A00DBDF1AB704C400113624 /* drules_proto_dark.bin in Resources */ = {isa = PBXBuildFile; fileRef = 4A00DBDE1AB704C400113624 /* drules_proto_dark.bin */; }; - 6BBD66B41A695722005FF58D /* MRGService.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6BBD66B21A695722005FF58D /* MRGService.framework */; }; 6BDCBF491AA758FE004DAE48 /* libFlurry_6.0.0.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6BDCBF481AA758FE004DAE48 /* libFlurry_6.0.0.a */; }; + 6C24A3AD1AD7CA1000A47B99 /* MWMNoMapInterfaceController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6C47C8C81AD6C825000C52C1 /* MWMNoMapInterfaceController.mm */; }; + 6C24A3B21AD7D65500A47B99 /* MWMWatchEventInfo.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6C24A3B11AD7D65500A47B99 /* MWMWatchEventInfo.mm */; }; + 6C24A3B31AD7D65500A47B99 /* MWMWatchEventInfo.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6C24A3B11AD7D65500A47B99 /* MWMWatchEventInfo.mm */; }; + 6C47C8BF1AD6C47E000C52C1 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = FA99CB71147089B100689A9A /* Localizable.strings */; }; + 6C47C8C51AD6C78A000C52C1 /* MWMNoLocationInterfaceController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6C47C8C41AD6C78A000C52C1 /* MWMNoLocationInterfaceController.mm */; }; + 6C93FAEC1AD8063900A2C4AE /* MWMWatchNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C93FAEB1AD8063900A2C4AE /* MWMWatchNotification.m */; }; + 6C93FAED1AD8063900A2C4AE /* MWMWatchNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C93FAEB1AD8063900A2C4AE /* MWMWatchNotification.m */; }; + 6CFBB8771AD84E1C009845A3 /* MWMFinishInterfaceController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6CFBB8761AD84E1C009845A3 /* MWMFinishInterfaceController.m */; }; 974386DD19373EA400FD5659 /* ToastView.m in Sources */ = {isa = PBXBuildFile; fileRef = 974386DC19373EA400FD5659 /* ToastView.m */; }; 9747264318323080006B7CB7 /* UIKitCategories.m in Sources */ = {isa = PBXBuildFile; fileRef = 9747264118323080006B7CB7 /* UIKitCategories.m */; }; 9747278418338F0C006B7CB7 /* UIViewController+Navigation.m in Sources */ = {isa = PBXBuildFile; fileRef = 9747278318338F0C006B7CB7 /* UIViewController+Navigation.m */; }; @@ -135,13 +183,23 @@ F64F19A11AB81A00006EAF7E /* MWMDownloadAllMapsAlert.xib in Resources */ = {isa = PBXBuildFile; fileRef = F64F19921AB81A00006EAF7E /* MWMDownloadAllMapsAlert.xib */; }; F64F19A31AB81A00006EAF7E /* MWMDownloadTransitMapAlert.mm in Sources */ = {isa = PBXBuildFile; fileRef = F64F19971AB81A00006EAF7E /* MWMDownloadTransitMapAlert.mm */; }; F64F19A41AB81A00006EAF7E /* MWMDownloadTransitMapAlert.xib in Resources */ = {isa = PBXBuildFile; fileRef = F64F19981AB81A00006EAF7E /* MWMDownloadTransitMapAlert.xib */; }; + F672A6B71AD423A7009060C3 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F672A6B61AD423A7009060C3 /* Images.xcassets */; }; F6775ECE1ACC1B8800A377EC /* FacebookSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F6775ECD1ACC1B8800A377EC /* FacebookSDK.framework */; }; F67BBB571AC54A7800D162C7 /* MWMFeedbackAlert.mm in Sources */ = {isa = PBXBuildFile; fileRef = F67BBB551AC54A7800D162C7 /* MWMFeedbackAlert.mm */; }; F67BBB581AC54A7800D162C7 /* MWMFeedbackAlert.xib in Resources */ = {isa = PBXBuildFile; fileRef = F67BBB561AC54A7800D162C7 /* MWMFeedbackAlert.xib */; }; + F68CEF741AD8852A00563FBA /* MWMMapController.mm in Sources */ = {isa = PBXBuildFile; fileRef = F68CEF731AD8852A00563FBA /* MWMMapController.mm */; }; + F69A16A31AF24A3300EF43F0 /* libMyTracker.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F69A16A21AF24A3300EF43F0 /* libMyTracker.a */; }; + F6BACD021AD946C3004E99B1 /* World.mwm in Resources */ = {isa = PBXBuildFile; fileRef = FAFF42291347F101009BBB14 /* World.mwm */; }; + F6BACD031AD946C3004E99B1 /* WorldCoasts.mwm in Resources */ = {isa = PBXBuildFile; fileRef = FA459EB314327AF700B5BB3C /* WorldCoasts.mwm */; }; F6BC1E4D1ACBE96100EF0360 /* FBSDKCoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F6BC1E4B1ACBE96100EF0360 /* FBSDKCoreKit.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; F6BC1E4E1ACBE96100EF0360 /* FBSDKShareKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F6BC1E4C1ACBE96100EF0360 /* FBSDKShareKit.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; F6BC1E521ACBF98600EF0360 /* MWMFacebookAlert.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6BC1E511ACBF98600EF0360 /* MWMFacebookAlert.mm */; }; F6BC1E541ACBF9AB00EF0360 /* MWMFacebookAlert.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6BC1E531ACBF9AB00EF0360 /* MWMFacebookAlert.xib */; }; + F6C6FE201AD6BEA0009FDED7 /* MWMWatchLocationTracker.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6C6FE1F1AD6BEA0009FDED7 /* MWMWatchLocationTracker.mm */; }; + F6D4344E1AD2AB96007C7728 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F6D4344D1AD2AB96007C7728 /* Images.xcassets */; }; + F6D434521AD2AB96007C7728 /* maps.me WatchKit App.app in Resources */ = {isa = PBXBuildFile; fileRef = F6D434511AD2AB96007C7728 /* maps.me WatchKit App.app */; }; + F6D4345A1AD2AB96007C7728 /* Interface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F6D434581AD2AB96007C7728 /* Interface.storyboard */; }; + F6D4345F1AD2AB96007C7728 /* maps.me WatchKit Extension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = F6D434461AD2AB96007C7728 /* maps.me WatchKit Extension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; F6DBF9B61AA8779300F2EC2C /* CALayer+RuntimeAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = F6DBF9B51AA8779300F2EC2C /* CALayer+RuntimeAttributes.m */; }; F785EB4016386FC4003A38A8 /* BookmarkCell.mm in Sources */ = {isa = PBXBuildFile; fileRef = F785EB3F16386FC4003A38A8 /* BookmarkCell.mm */; }; F7B90CD31521E6D200C054EE /* CustomNavigationView.mm in Sources */ = {isa = PBXBuildFile; fileRef = F7B90CD21521E6D100C054EE /* CustomNavigationView.mm */; }; @@ -202,6 +260,37 @@ FAFF422A1347F101009BBB14 /* World.mwm in Resources */ = {isa = PBXBuildFile; fileRef = FAFF42291347F101009BBB14 /* World.mwm */; }; /* End PBXBuildFile section */ +/* Begin PBXContainerItemProxy section */ + F6D434531AD2AB96007C7728 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; + proxyType = 1; + remoteGlobalIDString = F6D434501AD2AB96007C7728; + remoteInfo = "maps.me beta WatchKit App"; + }; + F6D4345D1AD2AB96007C7728 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; + proxyType = 1; + remoteGlobalIDString = F6D434451AD2AB96007C7728; + remoteInfo = "maps.me beta WatchKit Extension"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + F6D434721AD2AB97007C7728 /* Embed App Extensions */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 13; + files = ( + F6D4345F1AD2AB96007C7728 /* maps.me WatchKit Extension.appex in Embed App Extensions */, + ); + name = "Embed App Extensions"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + /* Begin PBXFileReference section */ 1003EAD917170741005EBDAE /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/Localizable.strings"; sourceTree = ""; }; 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; @@ -213,6 +302,22 @@ 28A0AB4B0D9B1048005BE974 /* Maps_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = Maps_Prefix.pch; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 28AD73870D9D96C1002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = SOURCE_ROOT; }; 29B97316FDCFA39411CA2CEA /* main.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; path = main.mm; sourceTree = ""; }; + 343F262C1AEFC4A300388A6D /* MWMFrameworkUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMFrameworkUtils.h; sourceTree = ""; }; + 343F262D1AEFC4A300388A6D /* MWMFrameworkUtils.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMFrameworkUtils.mm; sourceTree = ""; }; + 343F262F1AEFDB1A00388A6D /* Framework.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Framework.cpp; path = ../../Classes/Framework.cpp; sourceTree = ""; }; + 345C31681AE7860600EA0CC2 /* MWMWatchLocationTrackerDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMWatchLocationTrackerDelegate.h; sourceTree = ""; }; + 345C316D1AE798DD00EA0CC2 /* MWMCategoriesInterfaceCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMCategoriesInterfaceCell.h; sourceTree = ""; }; + 345C316E1AE798DD00EA0CC2 /* MWMCategoriesInterfaceCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWMCategoriesInterfaceCell.m; sourceTree = ""; }; + 345C316F1AE798DD00EA0CC2 /* MWMCategoriesInterfaceController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMCategoriesInterfaceController.h; sourceTree = ""; }; + 345C31701AE798DD00EA0CC2 /* MWMCategoriesInterfaceController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMCategoriesInterfaceController.mm; sourceTree = ""; }; + 345C31741AE799B600EA0CC2 /* MWMSearchResultCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMSearchResultCell.h; sourceTree = ""; }; + 345C31751AE799B600EA0CC2 /* MWMSearchResultCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWMSearchResultCell.m; sourceTree = ""; }; + 345C31761AE799B600EA0CC2 /* MWMSearchResultController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMSearchResultController.h; sourceTree = ""; }; + 345C31771AE799B600EA0CC2 /* MWMSearchResultController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMSearchResultController.mm; sourceTree = ""; }; + 34A742FD1AE5461A00CE15EB /* index.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = index.cpp; path = ../../../storage/index.cpp; sourceTree = ""; }; + 34A742FF1AE5468200CE15EB /* storage.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = storage.cpp; path = ../../../storage/storage.cpp; sourceTree = ""; }; + 34DF4D0F1AE77B9F0012702D /* MWMWKInterfaceController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMWKInterfaceController.h; sourceTree = ""; }; + 34DF4D101AE77B9F0012702D /* MWMWKInterfaceController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMWKInterfaceController.mm; sourceTree = ""; }; 34BC720B1B0DECAE0012A34B /* MWMLocationButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMLocationButton.h; sourceTree = ""; }; 34BC720C1B0DECAE0012A34B /* MWMLocationButton.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMLocationButton.mm; sourceTree = ""; }; 34BC720D1B0DECAE0012A34B /* MWMLocationButtonView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMLocationButtonView.h; sourceTree = ""; }; @@ -235,6 +340,10 @@ 34BC72201B0DECAE0012A34B /* MWMZoomButtonsView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMZoomButtonsView.xib; sourceTree = ""; }; 3D443C9C19E421EE0025C2FC /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/Localizable.strings; sourceTree = ""; }; 45159BF81B0CA2D5009BFA85 /* resources-6plus */ = {isa = PBXFileReference; lastKnownFileType = folder; name = "resources-6plus"; path = "../../data/resources-6plus"; sourceTree = ""; }; + 454040681AD2D8D2007A9B12 /* CoreVideo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreVideo.framework; path = System/Library/Frameworks/CoreVideo.framework; sourceTree = SDKROOT; }; + 4540406E1AD2D9C5007A9B12 /* WatchKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WatchKit.framework; path = System/Library/Frameworks/WatchKit.framework; sourceTree = SDKROOT; }; + 458287C21AD3BE2000BA8940 /* DownloadIndicatorProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DownloadIndicatorProtocol.h; sourceTree = ""; }; + 46F26C7210F61FD600ECCA39 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; 46F26CD610F623BA00ECCA39 /* EAGLView.h */ = {isa = PBXFileReference; fileEncoding = 11; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = EAGLView.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.cpp; }; 46F26CD710F623BA00ECCA39 /* EAGLView.mm */ = {isa = PBXFileReference; fileEncoding = 11; lastKnownFileType = sourcecode.cpp.objcpp; lineEnding = 0; path = EAGLView.mm; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; @@ -242,8 +351,19 @@ 46F8A2EB10EB63040045521A /* MapViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = MapViewController.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.cpp; }; 4A00DBDE1AB704C400113624 /* drules_proto_dark.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; name = drules_proto_dark.bin; path = ../../data/drules_proto_dark.bin; sourceTree = ""; }; 6B948E1B1A25533C00229BD5 /* libAppsFlyerLib.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libAppsFlyerLib.a; path = Statistics/MRGService/ExternalLibs/AppsFlyer/libAppsFlyerLib.a; sourceTree = ""; }; - 6BBD66B21A695722005FF58D /* MRGService.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MRGService.framework; path = Statistics/MRGService/MRGService.framework; sourceTree = ""; }; 6BDCBF481AA758FE004DAE48 /* libFlurry_6.0.0.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libFlurry_6.0.0.a; path = Statistics/libFlurry_6.0.0.a; sourceTree = ""; }; + 6C24A3B01AD7D65500A47B99 /* MWMWatchEventInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMWatchEventInfo.h; sourceTree = ""; }; + 6C24A3B11AD7D65500A47B99 /* MWMWatchEventInfo.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMWatchEventInfo.mm; sourceTree = ""; }; + 6C47C8C31AD6C78A000C52C1 /* MWMNoLocationInterfaceController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMNoLocationInterfaceController.h; sourceTree = ""; }; + 6C47C8C41AD6C78A000C52C1 /* MWMNoLocationInterfaceController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMNoLocationInterfaceController.mm; sourceTree = ""; }; + 6C47C8C71AD6C825000C52C1 /* MWMNoMapInterfaceController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMNoMapInterfaceController.h; sourceTree = ""; }; + 6C47C8C81AD6C825000C52C1 /* MWMNoMapInterfaceController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMNoMapInterfaceController.mm; sourceTree = ""; }; + 6C5BA1B61AD53B99006138AB /* maps.me dbg.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "maps.me dbg.entitlements"; sourceTree = ""; }; + 6C5BA1B71AD53BA3006138AB /* maps.me WatchKit Extension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "maps.me WatchKit Extension.entitlements"; sourceTree = ""; }; + 6C93FAEA1AD8063900A2C4AE /* MWMWatchNotification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMWatchNotification.h; sourceTree = ""; }; + 6C93FAEB1AD8063900A2C4AE /* MWMWatchNotification.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWMWatchNotification.m; sourceTree = ""; }; + 6CFBB8751AD84E1C009845A3 /* MWMFinishInterfaceController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMFinishInterfaceController.h; sourceTree = ""; }; + 6CFBB8761AD84E1C009845A3 /* MWMFinishInterfaceController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWMFinishInterfaceController.m; sourceTree = ""; }; 772923C9184E0440008C1EDC /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/Localizable.strings; sourceTree = ""; }; 7794829519A4E66A005F57B9 /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/Localizable.strings; sourceTree = ""; }; 77DDA9A116D504F900804BDB /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Localizable.strings; sourceTree = ""; }; @@ -423,17 +543,37 @@ F64F19961AB81A00006EAF7E /* MWMDownloadTransitMapAlert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMDownloadTransitMapAlert.h; sourceTree = ""; }; F64F19971AB81A00006EAF7E /* MWMDownloadTransitMapAlert.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMDownloadTransitMapAlert.mm; sourceTree = ""; }; F64F19981AB81A00006EAF7E /* MWMDownloadTransitMapAlert.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMDownloadTransitMapAlert.xib; sourceTree = ""; }; + F672A6B61AD423A7009060C3 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; + F673E9151AD2B65B0064EB7F /* GLKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLKit.framework; path = System/Library/Frameworks/GLKit.framework; sourceTree = SDKROOT; }; F6775ECD1ACC1B8800A377EC /* FacebookSDK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FacebookSDK.framework; path = Statistics/FacebookSDK.framework; sourceTree = ""; }; F67BBB541AC54A7800D162C7 /* MWMFeedbackAlert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMFeedbackAlert.h; sourceTree = ""; }; F67BBB551AC54A7800D162C7 /* MWMFeedbackAlert.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMFeedbackAlert.mm; sourceTree = ""; }; F67BBB561AC54A7800D162C7 /* MWMFeedbackAlert.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMFeedbackAlert.xib; sourceTree = ""; }; + F68CEF721AD8852A00563FBA /* MWMMapController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMMapController.h; sourceTree = ""; }; + F68CEF731AD8852A00563FBA /* MWMMapController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMMapController.mm; sourceTree = ""; }; + F69A16A21AF24A3300EF43F0 /* libMyTracker.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libMyTracker.a; path = MyTracker/libMyTracker.a; sourceTree = ""; }; + F69A16A51AF24A9000EF43F0 /* MRAbstractDataProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MRAbstractDataProvider.h; path = MyTracker/MRAbstractDataProvider.h; sourceTree = ""; }; + F69A16A61AF24A9000EF43F0 /* MRCustomParamsProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MRCustomParamsProvider.h; path = MyTracker/MRCustomParamsProvider.h; sourceTree = ""; }; + F69A16A71AF24A9000EF43F0 /* MRMyTracker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MRMyTracker.h; path = MyTracker/MRMyTracker.h; sourceTree = ""; }; + F69A16A81AF24A9000EF43F0 /* MRTracker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MRTracker.h; path = MyTracker/MRTracker.h; sourceTree = ""; }; + F69A16A91AF24A9000EF43F0 /* MRTrackerParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MRTrackerParams.h; path = MyTracker/MRTrackerParams.h; sourceTree = ""; }; + F69A16AA1AF24A9000EF43F0 /* MRTrackerParams+Corp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "MRTrackerParams+Corp.h"; path = "MyTracker/MRTrackerParams+Corp.h"; sourceTree = ""; }; F6BC1E4B1ACBE96100EF0360 /* FBSDKCoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FBSDKCoreKit.framework; path = Statistics/FBSDKCoreKit.framework; sourceTree = ""; }; F6BC1E4C1ACBE96100EF0360 /* FBSDKShareKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FBSDKShareKit.framework; path = Statistics/FBSDKShareKit.framework; sourceTree = ""; }; F6BC1E501ACBF98600EF0360 /* MWMFacebookAlert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMFacebookAlert.h; sourceTree = ""; }; F6BC1E511ACBF98600EF0360 /* MWMFacebookAlert.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMFacebookAlert.mm; sourceTree = ""; }; F6BC1E531ACBF9AB00EF0360 /* MWMFacebookAlert.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMFacebookAlert.xib; sourceTree = ""; }; + F6C6FE1E1AD6BEA0009FDED7 /* MWMWatchLocationTracker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMWatchLocationTracker.h; sourceTree = ""; }; + F6C6FE1F1AD6BEA0009FDED7 /* MWMWatchLocationTracker.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMWatchLocationTracker.mm; sourceTree = ""; }; + F6D434461AD2AB96007C7728 /* maps.me WatchKit Extension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "maps.me WatchKit Extension.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; + F6D434491AD2AB96007C7728 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + F6D4344D1AD2AB96007C7728 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; + F6D434511AD2AB96007C7728 /* maps.me WatchKit App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "maps.me WatchKit App.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + F6D434571AD2AB96007C7728 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + F6D434591AD2AB96007C7728 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Interface.storyboard; sourceTree = ""; }; F6DBF9B41AA8779300F2EC2C /* CALayer+RuntimeAttributes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CALayer+RuntimeAttributes.h"; sourceTree = ""; }; F6DBF9B51AA8779300F2EC2C /* CALayer+RuntimeAttributes.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "CALayer+RuntimeAttributes.m"; sourceTree = ""; }; + F6F9BD221AD3C3A600308C33 /* Macros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Macros.h; path = ../Macros.h; sourceTree = ""; }; F785EB3E16386FC4003A38A8 /* BookmarkCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BookmarkCell.h; path = Bookmarks/BookmarkCell.h; sourceTree = SOURCE_ROOT; }; F785EB3F16386FC4003A38A8 /* BookmarkCell.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = BookmarkCell.mm; path = Bookmarks/BookmarkCell.mm; sourceTree = SOURCE_ROOT; }; F7B90CD11521E6D100C054EE /* CustomNavigationView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomNavigationView.h; sourceTree = ""; }; @@ -526,12 +666,12 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + F69A16A31AF24A3300EF43F0 /* libMyTracker.a in Frameworks */, 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */, 6BDCBF491AA758FE004DAE48 /* libFlurry_6.0.0.a in Frameworks */, F6775ECE1ACC1B8800A377EC /* FacebookSDK.framework in Frameworks */, F6BC1E4D1ACBE96100EF0360 /* FBSDKCoreKit.framework in Frameworks */, F6BC1E4E1ACBE96100EF0360 /* FBSDKShareKit.framework in Frameworks */, - 6BBD66B41A695722005FF58D /* MRGService.framework in Frameworks */, B08AA8D61A25E58C00810B1C /* Social.framework in Frameworks */, B08AA8D51A25E58500810B1C /* PassKit.framework in Frameworks */, B00511061A1101FC00A61AA4 /* CoreMedia.framework in Frameworks */, @@ -554,12 +694,31 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + F6D434431AD2AB96007C7728 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 454040761AD2DD73007A9B12 /* UIKit.framework in Frameworks */, + 4540406F1AD2D9C5007A9B12 /* WatchKit.framework in Frameworks */, + 4540406D1AD2D958007A9B12 /* AdSupport.framework in Frameworks */, + 4540406C1AD2D92D007A9B12 /* iAd.framework in Frameworks */, + 4540406B1AD2D919007A9B12 /* QuartzCore.framework in Frameworks */, + 454040661AD2D88A007A9B12 /* CoreData.framework in Frameworks */, + 4540406A1AD2D8FD007A9B12 /* CoreMedia.framework in Frameworks */, + 454040671AD2D897007A9B12 /* CoreGraphics.framework in Frameworks */, + 454040641AD2D862007A9B12 /* Foundation.framework in Frameworks */, + 454040631AD2D83A007A9B12 /* AVFoundation.framework in Frameworks */, + 454040621AD2D75E007A9B12 /* OpenGLES.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 080E96DDFE201D6D7F000001 /* Classes */ = { isa = PBXGroup; children = ( + F62A73A71AD8950900175470 /* WatchEventHandler */, F64F195F1AB8125C006EAF7E /* CustomAlert */, 97B4E9271851DAB300BEC5D7 /* Custom Views */, FA4135DF120A25B90062D5B4 /* Settings */, @@ -588,6 +747,8 @@ 97DEA09018D706C300C5F963 /* Common.h */, A3CC2CD21A1C723900B832E1 /* LocationPredictor.mm */, A3CC2CD31A1C723900B832E1 /* LocationPredictor.h */, + 458287C21AD3BE2000BA8940 /* DownloadIndicatorProtocol.h */, + F6F9BD221AD3C3A600308C33 /* Macros.h */, ); path = Classes; sourceTree = ""; @@ -596,6 +757,8 @@ isa = PBXGroup; children = ( 1D6058910D05DD3D006BFB54 /* maps.me dbg.app */, + F6D434461AD2AB96007C7728 /* maps.me WatchKit Extension.appex */, + F6D434511AD2AB96007C7728 /* maps.me WatchKit App.app */, ); name = Products; sourceTree = ""; @@ -603,6 +766,7 @@ 29B97314FDCFA39411CA2CEA /* Maps */ = { isa = PBXGroup; children = ( + 6C5BA1B61AD53B99006138AB /* maps.me dbg.entitlements */, CB252D6816FF82C8001E41E9 /* Statistics */, FA36B8011540388B004560CC /* Bookmarks */, FA34BEC71338D6DB00FFB2A7 /* Common */, @@ -615,6 +779,8 @@ 29B97317FDCFA39411CA2CEA /* Resources */, FA065FEB128614C300FEA989 /* Resources-iPad */, FA065FC61286143F00FEA989 /* External Resources */, + F6D434471AD2AB96007C7728 /* maps.me WatchKit Extension */, + F6D434551AD2AB96007C7728 /* maps.me WatchKit App */, 29B97323FDCFA39411CA2CEA /* Frameworks */, 19C28FACFE9D520D11CA2CBB /* Products */, 8D1107310486CEB800E47090 /* MAPSME.plist */, @@ -627,6 +793,7 @@ 29B97315FDCFA39411CA2CEA /* Other Sources */ = { isa = PBXGroup; children = ( + F69A16AB1AF24A9400EF43F0 /* MyTracker */, 28A0AB4B0D9B1048005BE974 /* Maps_Prefix.pch */, 29B97316FDCFA39411CA2CEA /* main.mm */, ); @@ -649,11 +816,14 @@ 29B97323FDCFA39411CA2CEA /* Frameworks */ = { isa = PBXGroup; children = ( + F69A16A21AF24A3300EF43F0 /* libMyTracker.a */, + 4540406E1AD2D9C5007A9B12 /* WatchKit.framework */, + 454040681AD2D8D2007A9B12 /* CoreVideo.framework */, + F673E9151AD2B65B0064EB7F /* GLKit.framework */, F6775ECD1ACC1B8800A377EC /* FacebookSDK.framework */, F6BC1E4B1ACBE96100EF0360 /* FBSDKCoreKit.framework */, F6BC1E4C1ACBE96100EF0360 /* FBSDKShareKit.framework */, 6BDCBF481AA758FE004DAE48 /* libFlurry_6.0.0.a */, - 6BBD66B21A695722005FF58D /* MRGService.framework */, 6B948E1B1A25533C00229BD5 /* libAppsFlyerLib.a */, B00511051A1101FC00A61AA4 /* CoreMedia.framework */, B00511031A1101F600A61AA4 /* CoreData.framework */, @@ -736,6 +906,79 @@ path = ZoomButtons; sourceTree = ""; }; + 343F262B1AEFC4A300388A6D /* FrameworkUtils */ = { + isa = PBXGroup; + children = ( + 343F262C1AEFC4A300388A6D /* MWMFrameworkUtils.h */, + 343F262D1AEFC4A300388A6D /* MWMFrameworkUtils.mm */, + ); + path = FrameworkUtils; + sourceTree = ""; + }; + 345C316A1AE7939B00EA0CC2 /* Controllers */ = { + isa = PBXGroup; + children = ( + F62A73A41AD8947400175470 /* Finish */, + F62A739E1AD893F300175470 /* Map */, + 6C47C8C61AD6C7E6000C52C1 /* MapDownload */, + 6C47C8C21AD6C76A000C52C1 /* Location */, + 345C316B1AE798A700EA0CC2 /* Search */, + 34DF4D101AE77B9F0012702D /* MWMWKInterfaceController.mm */, + 34DF4D0F1AE77B9F0012702D /* MWMWKInterfaceController.h */, + 343F262F1AEFDB1A00388A6D /* Framework.cpp */, + ); + path = Controllers; + sourceTree = ""; + }; + 345C316B1AE798A700EA0CC2 /* Search */ = { + isa = PBXGroup; + children = ( + 345C31731AE799B600EA0CC2 /* SearchResult */, + 345C316C1AE798DD00EA0CC2 /* Categories */, + ); + path = Search; + sourceTree = ""; + }; + 345C316C1AE798DD00EA0CC2 /* Categories */ = { + isa = PBXGroup; + children = ( + 345C316D1AE798DD00EA0CC2 /* MWMCategoriesInterfaceCell.h */, + 345C316E1AE798DD00EA0CC2 /* MWMCategoriesInterfaceCell.m */, + 345C316F1AE798DD00EA0CC2 /* MWMCategoriesInterfaceController.h */, + 345C31701AE798DD00EA0CC2 /* MWMCategoriesInterfaceController.mm */, + ); + path = Categories; + sourceTree = ""; + }; + 345C31731AE799B600EA0CC2 /* SearchResult */ = { + isa = PBXGroup; + children = ( + 345C31741AE799B600EA0CC2 /* MWMSearchResultCell.h */, + 345C31751AE799B600EA0CC2 /* MWMSearchResultCell.m */, + 345C31761AE799B600EA0CC2 /* MWMSearchResultController.h */, + 345C31771AE799B600EA0CC2 /* MWMSearchResultController.mm */, + ); + path = SearchResult; + sourceTree = ""; + }; + 6C47C8C21AD6C76A000C52C1 /* Location */ = { + isa = PBXGroup; + children = ( + 6C47C8C31AD6C78A000C52C1 /* MWMNoLocationInterfaceController.h */, + 6C47C8C41AD6C78A000C52C1 /* MWMNoLocationInterfaceController.mm */, + ); + path = Location; + sourceTree = ""; + }; + 6C47C8C61AD6C7E6000C52C1 /* MapDownload */ = { + isa = PBXGroup; + children = ( + 6C47C8C71AD6C825000C52C1 /* MWMNoMapInterfaceController.h */, + 6C47C8C81AD6C825000C52C1 /* MWMNoMapInterfaceController.mm */, + ); + path = MapDownload; + sourceTree = ""; + }; 97354B6B196EDCE200352536 /* Login & sharing */ = { isa = PBXGroup; children = ( @@ -923,6 +1166,45 @@ path = RateAlert; sourceTree = ""; }; + F62A739E1AD893F300175470 /* Map */ = { + isa = PBXGroup; + children = ( + F68CEF721AD8852A00563FBA /* MWMMapController.h */, + F68CEF731AD8852A00563FBA /* MWMMapController.mm */, + ); + path = Map; + sourceTree = ""; + }; + F62A73A11AD8945200175470 /* LocationTracker */ = { + isa = PBXGroup; + children = ( + F6C6FE1E1AD6BEA0009FDED7 /* MWMWatchLocationTracker.h */, + F6C6FE1F1AD6BEA0009FDED7 /* MWMWatchLocationTracker.mm */, + 345C31681AE7860600EA0CC2 /* MWMWatchLocationTrackerDelegate.h */, + ); + path = LocationTracker; + sourceTree = ""; + }; + F62A73A41AD8947400175470 /* Finish */ = { + isa = PBXGroup; + children = ( + 6CFBB8751AD84E1C009845A3 /* MWMFinishInterfaceController.h */, + 6CFBB8761AD84E1C009845A3 /* MWMFinishInterfaceController.m */, + ); + path = Finish; + sourceTree = ""; + }; + F62A73A71AD8950900175470 /* WatchEventHandler */ = { + isa = PBXGroup; + children = ( + 6C24A3B01AD7D65500A47B99 /* MWMWatchEventInfo.h */, + 6C24A3B11AD7D65500A47B99 /* MWMWatchEventInfo.mm */, + 6C93FAEA1AD8063900A2C4AE /* MWMWatchNotification.h */, + 6C93FAEB1AD8063900A2C4AE /* MWMWatchNotification.m */, + ); + path = WatchEventHandler; + sourceTree = ""; + }; F64F195F1AB8125C006EAF7E /* CustomAlert */ = { isa = PBXGroup; children = ( @@ -997,6 +1279,19 @@ path = FeedbackAlert; sourceTree = ""; }; + F69A16AB1AF24A9400EF43F0 /* MyTracker */ = { + isa = PBXGroup; + children = ( + F69A16A51AF24A9000EF43F0 /* MRAbstractDataProvider.h */, + F69A16A61AF24A9000EF43F0 /* MRCustomParamsProvider.h */, + F69A16A71AF24A9000EF43F0 /* MRMyTracker.h */, + F69A16A81AF24A9000EF43F0 /* MRTracker.h */, + F69A16A91AF24A9000EF43F0 /* MRTrackerParams.h */, + F69A16AA1AF24A9000EF43F0 /* MRTrackerParams+Corp.h */, + ); + name = MyTracker; + sourceTree = ""; + }; F6BC1E4F1ACBF97000EF0360 /* FacebookAlert */ = { isa = PBXGroup; children = ( @@ -1007,6 +1302,47 @@ path = FacebookAlert; sourceTree = ""; }; + F6D434471AD2AB96007C7728 /* maps.me WatchKit Extension */ = { + isa = PBXGroup; + children = ( + F62A73A11AD8945200175470 /* LocationTracker */, + 343F262B1AEFC4A300388A6D /* FrameworkUtils */, + 345C316A1AE7939B00EA0CC2 /* Controllers */, + 6C5BA1B71AD53BA3006138AB /* maps.me WatchKit Extension.entitlements */, + F6D4344D1AD2AB96007C7728 /* Images.xcassets */, + F6D434481AD2AB96007C7728 /* Supporting Files */, + ); + path = "maps.me WatchKit Extension"; + sourceTree = ""; + }; + F6D434481AD2AB96007C7728 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 34A742FD1AE5461A00CE15EB /* index.cpp */, + 34A742FF1AE5468200CE15EB /* storage.cpp */, + F6D434491AD2AB96007C7728 /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + F6D434551AD2AB96007C7728 /* maps.me WatchKit App */ = { + isa = PBXGroup; + children = ( + F6D434581AD2AB96007C7728 /* Interface.storyboard */, + F672A6B61AD423A7009060C3 /* Images.xcassets */, + F6D434561AD2AB96007C7728 /* Supporting Files */, + ); + path = "maps.me WatchKit App"; + sourceTree = ""; + }; + F6D434561AD2AB96007C7728 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + F6D434571AD2AB96007C7728 /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; FA065FC61286143F00FEA989 /* External Resources */ = { isa = PBXGroup; children = ( @@ -1172,16 +1508,52 @@ 1D60588D0D05DD3D006BFB54 /* Resources */, 1D60588E0D05DD3D006BFB54 /* Sources */, 1D60588F0D05DD3D006BFB54 /* Frameworks */, + F6D434721AD2AB97007C7728 /* Embed App Extensions */, ); buildRules = ( ); dependencies = ( + F6D4345E1AD2AB96007C7728 /* PBXTargetDependency */, ); name = MAPS.ME; productName = Maps; productReference = 1D6058910D05DD3D006BFB54 /* maps.me dbg.app */; productType = "com.apple.product-type.application"; }; + F6D434451AD2AB96007C7728 /* maps.me WatchKit Extension */ = { + isa = PBXNativeTarget; + buildConfigurationList = F6D434711AD2AB97007C7728 /* Build configuration list for PBXNativeTarget "maps.me WatchKit Extension" */; + buildPhases = ( + 45AD93611AD2F2470009C01B /* ShellScript */, + F6D434421AD2AB96007C7728 /* Sources */, + F6D434431AD2AB96007C7728 /* Frameworks */, + F6D434441AD2AB96007C7728 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + F6D434541AD2AB96007C7728 /* PBXTargetDependency */, + ); + name = "maps.me WatchKit Extension"; + productName = "maps.me beta WatchKit Extension"; + productReference = F6D434461AD2AB96007C7728 /* maps.me WatchKit Extension.appex */; + productType = "com.apple.product-type.watchkit-extension"; + }; + F6D434501AD2AB96007C7728 /* maps.me WatchKit App */ = { + isa = PBXNativeTarget; + buildConfigurationList = F6D434701AD2AB97007C7728 /* Build configuration list for PBXNativeTarget "maps.me WatchKit App" */; + buildPhases = ( + F6D4344F1AD2AB96007C7728 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "maps.me WatchKit App"; + productName = "maps.me beta WatchKit App"; + productReference = F6D434511AD2AB96007C7728 /* maps.me WatchKit App.app */; + productType = "com.apple.product-type.application.watchapp"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -1194,11 +1566,27 @@ 1D6058900D05DD3D006BFB54 = { DevelopmentTeam = XMK5825GXK; SystemCapabilities = { + com.apple.ApplicationGroups.iOS = { + enabled = 1; + }; com.apple.BackgroundModes = { enabled = 1; }; }; }; + F6D434451AD2AB96007C7728 = { + CreatedOnToolsVersion = 6.2; + DevelopmentTeam = XMK5825GXK; + SystemCapabilities = { + com.apple.ApplicationGroups.iOS = { + enabled = 1; + }; + }; + }; + F6D434501AD2AB96007C7728 = { + CreatedOnToolsVersion = 6.2; + DevelopmentTeam = XMK5825GXK; + }; }; }; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Maps" */; @@ -1233,12 +1621,15 @@ tr, sk, sv, + Base, ); mainGroup = 29B97314FDCFA39411CA2CEA /* Maps */; projectDirPath = ""; projectRoot = ""; targets = ( 1D6058900D05DD3D006BFB54 /* MAPS.ME */, + F6D434451AD2AB96007C7728 /* maps.me WatchKit Extension */, + F6D434501AD2AB96007C7728 /* maps.me WatchKit App */, ); }; /* End PBXProject section */ @@ -1329,9 +1720,62 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + F6D434441AD2AB96007C7728 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 343F26311AEFDF3E00388A6D /* resources-xhdpi in Resources */, + F6BACD021AD946C3004E99B1 /* World.mwm in Resources */, + F6BACD031AD946C3004E99B1 /* WorldCoasts.mwm in Resources */, + 6C47C8BF1AD6C47E000C52C1 /* Localizable.strings in Resources */, + 4579C8A01AD2FAB1001D6B90 /* 00_roboto_regular.ttf in Resources */, + 4579C8A11AD2FAB1001D6B90 /* 01_dejavusans.ttf in Resources */, + 4579C8A21AD2FAB1001D6B90 /* 02_wqy-microhei.ttf in Resources */, + 4579C8A31AD2FAB1001D6B90 /* 03_jomolhari-id-a3d.ttf in Resources */, + 4579C8A41AD2FAB1001D6B90 /* 04_padauk.ttf in Resources */, + 4579C8A51AD2FAB1001D6B90 /* 05_khmeros.ttf in Resources */, + 4579C8A61AD2FAB1001D6B90 /* 06_code2000.ttf in Resources */, + 4579C89F1AD2FA36001D6B90 /* packed_polygons.bin in Resources */, + 4579C89D1AD2F9E6001D6B90 /* drules_proto_dark.bin in Resources */, + 4579C89E1AD2F9E6001D6B90 /* drules_proto.bin in Resources */, + 4579C8961AD2F9A1001D6B90 /* categories.txt in Resources */, + 4579C8971AD2F9A1001D6B90 /* types.txt in Resources */, + 4579C8981AD2F9A2001D6B90 /* fonts_blacklist.txt in Resources */, + 4579C8991AD2F9A2001D6B90 /* fonts_whitelist.txt in Resources */, + 4579C89A1AD2F9A2001D6B90 /* unicode_blocks.txt in Resources */, + 4579C89B1AD2F9A2001D6B90 /* countries.txt in Resources */, + 4579C89C1AD2F9A2001D6B90 /* classificator.txt in Resources */, + 4579C8951AD2F98B001D6B90 /* synonyms.txt in Resources */, + F6D4344E1AD2AB96007C7728 /* Images.xcassets in Resources */, + F6D434521AD2AB96007C7728 /* maps.me WatchKit App.app in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F6D4344F1AD2AB96007C7728 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F6D4345A1AD2AB96007C7728 /* Interface.storyboard in Resources */, + F672A6B71AD423A7009060C3 /* Images.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 45AD93611AD2F2470009C01B /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/bash; + shellScript = "LOWERED_CONFIG=`echo $CONFIGURATION | tr [A-Z] [a-z]`\nCONF=\"simulator\"\nDRAPE_CONF=\"old_renderer\"\nif [[ \"$LOWERED_CONFIG\" == *production* || \"$LOWERED_CONFIG\" == *adhoc* ]]; then\nCONF=\"production\"\nelif [[ \"$LOWERED_CONFIG\" == *debug* ]]; then\nCONF=\"debug\"\nelif [[ \"$LOWERED_CONFIG\" == *release* ]]; then\nif [[ \"$LOWERED_CONFIG\" == *simulator* ]]; then\nCONF=\"simulator-release\"\nelse\nCONF=\"release\"\nfi\nfi\n\nif [[ \"$LOWERED_CONFIG\" == *drape* ]]; then\necho \"Drape renderer building\"\nDRAPE_CONF=\"drape\"\nfi\n\necho \"Building $CONF configuration\"\nbash \"$SRCROOT/../../tools/autobuild/ios.sh\" $CONF $DRAPE_CONF"; + }; FA3A60E715AD5BBD00F40D20 /* Run Script */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -1372,6 +1816,7 @@ F61579341AC2CE9A0032D8E9 /* MWMRateAlert.mm in Sources */, A3CC2CD41A1C723900B832E1 /* LocationPredictor.mm in Sources */, EE7F29811219ECA300EB67A9 /* RenderBuffer.mm in Sources */, + 6C93FAEC1AD8063900A2C4AE /* MWMWatchNotification.m in Sources */, F62404FB1AAF3DB200B58DB6 /* UILabel+RuntimeAttributes.m in Sources */, 97D092B5190A6E1D00FF645B /* PlacePageEditCell.mm in Sources */, 34BC72291B0DECAE0012A34B /* MWMZoomButtons.mm in Sources */, @@ -1442,12 +1887,51 @@ 9778E9A1191A663700AD850A /* BookmarkNameVC.mm in Sources */, 34BC72261B0DECAE0012A34B /* MWMSideMenuManager.mm in Sources */, ED48BBB517C267F5003E7E92 /* ColorPickerView.mm in Sources */, + 6C24A3B21AD7D65500A47B99 /* MWMWatchEventInfo.mm in Sources */, ED48BBBA17C2B1E2003E7E92 /* CircleView.mm in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; + F6D434421AD2AB96007C7728 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 343F26301AEFDB1A00388A6D /* Framework.cpp in Sources */, + 34A743001AE5468200CE15EB /* storage.cpp in Sources */, + 34A742FE1AE5461A00CE15EB /* index.cpp in Sources */, + 6C93FAED1AD8063900A2C4AE /* MWMWatchNotification.m in Sources */, + 345C31711AE798DD00EA0CC2 /* MWMCategoriesInterfaceCell.m in Sources */, + 6CFBB8771AD84E1C009845A3 /* MWMFinishInterfaceController.m in Sources */, + 6C24A3AD1AD7CA1000A47B99 /* MWMNoMapInterfaceController.mm in Sources */, + F68CEF741AD8852A00563FBA /* MWMMapController.mm in Sources */, + 6C47C8C51AD6C78A000C52C1 /* MWMNoLocationInterfaceController.mm in Sources */, + 6C24A3B31AD7D65500A47B99 /* MWMWatchEventInfo.mm in Sources */, + 345C31781AE799B600EA0CC2 /* MWMSearchResultCell.m in Sources */, + F6C6FE201AD6BEA0009FDED7 /* MWMWatchLocationTracker.mm in Sources */, + 34DF4D111AE77B9F0012702D /* MWMWKInterfaceController.mm in Sources */, + 343F262E1AEFC4A300388A6D /* MWMFrameworkUtils.mm in Sources */, + 45FE96831AD315EF00CB7560 /* RenderBuffer.mm in Sources */, + 454040701AD2DB30007A9B12 /* RenderContext.mm in Sources */, + 345C31791AE799B600EA0CC2 /* MWMSearchResultController.mm in Sources */, + 345C31721AE798DD00EA0CC2 /* MWMCategoriesInterfaceController.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + F6D434541AD2AB96007C7728 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = F6D434501AD2AB96007C7728 /* maps.me WatchKit App */; + targetProxy = F6D434531AD2AB96007C7728 /* PBXContainerItemProxy */; + }; + F6D4345E1AD2AB96007C7728 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = F6D434451AD2AB96007C7728 /* maps.me WatchKit Extension */; + targetProxy = F6D4345D1AD2AB96007C7728 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + /* Begin PBXVariantGroup section */ B0DFE62F1A1B78A200B6C35E /* LocalNotifications.plist */ = { isa = PBXVariantGroup; @@ -1457,6 +1941,14 @@ name = LocalNotifications.plist; sourceTree = ""; }; + F6D434581AD2AB96007C7728 /* Interface.storyboard */ = { + isa = PBXVariantGroup; + children = ( + F6D434591AD2AB96007C7728 /* Base */, + ); + name = Interface.storyboard; + sourceTree = ""; + }; FA99CB71147089B100689A9A /* Localizable.strings */ = { isa = PBXVariantGroup; children = ( @@ -1500,7 +1992,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; COMPRESS_PNG_FILES = NO; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 4.3; + CURRENT_PROJECT_VERSION = 4.4; GCC_ENABLE_PASCAL_STRINGS = NO; GCC_FAST_MATH = YES; GCC_INLINES_ARE_PRIVATE_EXTERN = YES; @@ -1520,7 +2012,7 @@ ../../, ); INFOPLIST_FILE = MAPSME.plist; - IPHONEOS_DEPLOYMENT_TARGET = 5.0; + IPHONEOS_DEPLOYMENT_TARGET = 5.1.1; LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../../../omim-iphone-release-drape-$(CURRENT_ARCH)/out/release\""; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( @@ -1563,7 +2055,6 @@ SDKROOT = iphoneos; STRIP_INSTALLED_PRODUCT = NO; TARGETED_DEVICE_FAMILY = "1,2"; - VALID_ARCHS = armv7; VERSIONING_SYSTEM = "apple-generic"; }; name = "Drape Release"; @@ -1573,6 +2064,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + CODE_SIGN_ENTITLEMENTS = "maps.me dbg.entitlements"; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; FRAMEWORK_SEARCH_PATHS = ( @@ -1587,6 +2079,7 @@ LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Statistics", + "$(PROJECT_DIR)/MyTracker", ); OTHER_LDFLAGS = ( "-lstats_client", @@ -1630,7 +2123,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; COMPRESS_PNG_FILES = NO; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 4.3; + CURRENT_PROJECT_VERSION = 4.4; GCC_ENABLE_PASCAL_STRINGS = NO; GCC_FAST_MATH = YES; GCC_INLINES_ARE_PRIVATE_EXTERN = YES; @@ -1647,7 +2140,7 @@ ../../, ); INFOPLIST_FILE = MAPSME.plist; - IPHONEOS_DEPLOYMENT_TARGET = 5.0; + IPHONEOS_DEPLOYMENT_TARGET = 5.1.1; LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../../../omim-iphone-debug-drape-$(CURRENT_ARCH)/out/debug\""; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( @@ -1690,7 +2183,6 @@ SDKROOT = iphoneos; STRIP_INSTALLED_PRODUCT = NO; TARGETED_DEVICE_FAMILY = "1,2"; - VALID_ARCHS = armv7; VERSIONING_SYSTEM = "apple-generic"; }; name = "Drape Debug"; @@ -1700,6 +2192,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + CODE_SIGN_ENTITLEMENTS = "maps.me dbg.entitlements"; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; FRAMEWORK_SEARCH_PATHS = ( @@ -1714,22 +2207,671 @@ LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Statistics", + "$(PROJECT_DIR)/MyTracker", ); PROVISIONING_PROFILE = ""; }; name = "Drape Debug"; }; + F6D434601AD2AB97007C7728 /* Simulator */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_ENABLE_MODULES = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_ENTITLEMENTS = "maps.me WatchKit Extension/maps.me WatchKit Extension.entitlements"; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Statistics/MRGService", + "$(PROJECT_DIR)/Statistics", + ); + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = "$(SRCROOT)/maps.me WatchKit Extension/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.2; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_NAME = "${TARGET_NAME}"; + PROVISIONING_PROFILE = ""; + SKIP_INSTALL = YES; + }; + name = Simulator; + }; + F6D434611AD2AB97007C7728 /* Simulator Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_ENABLE_MODULES = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_ENTITLEMENTS = "maps.me WatchKit Extension/maps.me WatchKit Extension.entitlements"; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Statistics/MRGService", + "$(PROJECT_DIR)/Statistics", + ); + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = "$(SRCROOT)/maps.me WatchKit Extension/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.2; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = "${TARGET_NAME}"; + PROVISIONING_PROFILE = ""; + SKIP_INSTALL = YES; + VALIDATE_PRODUCT = YES; + }; + name = "Simulator Release"; + }; + F6D434621AD2AB97007C7728 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_ENABLE_MODULES = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_ENTITLEMENTS = "maps.me WatchKit Extension/maps.me WatchKit Extension.entitlements"; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Statistics/MRGService", + "$(PROJECT_DIR)/Statistics", + ); + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = "$(SRCROOT)/maps.me WatchKit Extension/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.2; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_NAME = "${TARGET_NAME}"; + PROVISIONING_PROFILE = ""; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + F6D434631AD2AB97007C7728 /* Drape Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_ENABLE_MODULES = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_ENTITLEMENTS = "maps.me WatchKit Extension/maps.me WatchKit Extension.entitlements"; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Statistics/MRGService", + "$(PROJECT_DIR)/Statistics", + ); + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = "$(SRCROOT)/maps.me WatchKit Extension/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.2; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = "${TARGET_NAME}"; + PROVISIONING_PROFILE = ""; + SKIP_INSTALL = YES; + VALIDATE_PRODUCT = YES; + }; + name = "Drape Debug"; + }; + F6D434641AD2AB97007C7728 /* AdHoc */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_ENABLE_MODULES = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_ENTITLEMENTS = "maps.me WatchKit Extension/maps.me WatchKit Extension.entitlements"; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Statistics/MRGService", + "$(PROJECT_DIR)/Statistics", + ); + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = "$(SRCROOT)/maps.me WatchKit Extension/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.2; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = "${TARGET_NAME}"; + PROVISIONING_PROFILE = ""; + SKIP_INSTALL = YES; + VALIDATE_PRODUCT = YES; + }; + name = AdHoc; + }; + F6D434651AD2AB97007C7728 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_ENABLE_MODULES = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_ENTITLEMENTS = "maps.me WatchKit Extension/maps.me WatchKit Extension.entitlements"; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Statistics/MRGService", + "$(PROJECT_DIR)/Statistics", + ); + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = "$(SRCROOT)/maps.me WatchKit Extension/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.2; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = "${TARGET_NAME}"; + PROVISIONING_PROFILE = ""; + SKIP_INSTALL = YES; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + F6D434661AD2AB97007C7728 /* Drape Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_ENABLE_MODULES = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_ENTITLEMENTS = "maps.me WatchKit Extension/maps.me WatchKit Extension.entitlements"; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Statistics/MRGService", + "$(PROJECT_DIR)/Statistics", + ); + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = "$(SRCROOT)/maps.me WatchKit Extension/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.2; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = "${TARGET_NAME}"; + PROVISIONING_PROFILE = ""; + SKIP_INSTALL = YES; + VALIDATE_PRODUCT = YES; + }; + name = "Drape Release"; + }; + F6D434671AD2AB97007C7728 /* Production Full */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_ENABLE_MODULES = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_ENTITLEMENTS = "maps.me WatchKit Extension/maps.me WatchKit Extension.entitlements"; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Statistics/MRGService", + "$(PROJECT_DIR)/Statistics", + ); + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = "$(SRCROOT)/maps.me WatchKit Extension/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.2; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = "${TARGET_NAME}"; + PROVISIONING_PROFILE = ""; + SKIP_INSTALL = YES; + VALIDATE_PRODUCT = YES; + }; + name = "Production Full"; + }; + F6D434681AD2AB97007C7728 /* Simulator */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_ENABLE_MODULES = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IBSC_MODULE = maps_me_beta_WatchKit_Extension; + INFOPLIST_FILE = "$(SRCROOT)/maps.me WatchKit App/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.2; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = 4; + "TARGETED_DEVICE_FAMILY[sdk=iphonesimulator*]" = "1,4"; + }; + name = Simulator; + }; + F6D434691AD2AB97007C7728 /* Simulator Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_ENABLE_MODULES = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IBSC_MODULE = maps_me_beta_WatchKit_Extension; + INFOPLIST_FILE = "$(SRCROOT)/maps.me WatchKit App/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.2; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = 4; + "TARGETED_DEVICE_FAMILY[sdk=iphonesimulator*]" = "1,4"; + VALIDATE_PRODUCT = YES; + }; + name = "Simulator Release"; + }; + F6D4346A1AD2AB97007C7728 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_ENABLE_MODULES = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IBSC_MODULE = maps_me_beta_WatchKit_Extension; + INFOPLIST_FILE = "$(SRCROOT)/maps.me WatchKit App/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.2; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = 4; + "TARGETED_DEVICE_FAMILY[sdk=iphonesimulator*]" = "1,4"; + }; + name = Debug; + }; + F6D4346B1AD2AB97007C7728 /* Drape Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_ENABLE_MODULES = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IBSC_MODULE = maps_me_beta_WatchKit_Extension; + INFOPLIST_FILE = "$(SRCROOT)/maps.me WatchKit App/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.2; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = 4; + "TARGETED_DEVICE_FAMILY[sdk=iphonesimulator*]" = "1,4"; + VALIDATE_PRODUCT = YES; + }; + name = "Drape Debug"; + }; + F6D4346C1AD2AB97007C7728 /* AdHoc */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_ENABLE_MODULES = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IBSC_MODULE = maps_me_beta_WatchKit_Extension; + INFOPLIST_FILE = "$(SRCROOT)/maps.me WatchKit App/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.2; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = 4; + "TARGETED_DEVICE_FAMILY[sdk=iphonesimulator*]" = "1,4"; + VALIDATE_PRODUCT = YES; + }; + name = AdHoc; + }; + F6D4346D1AD2AB97007C7728 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_ENABLE_MODULES = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IBSC_MODULE = maps_me_beta_WatchKit_Extension; + INFOPLIST_FILE = "$(SRCROOT)/maps.me WatchKit App/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.2; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = 4; + "TARGETED_DEVICE_FAMILY[sdk=iphonesimulator*]" = "1,4"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + F6D4346E1AD2AB97007C7728 /* Drape Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_ENABLE_MODULES = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IBSC_MODULE = maps_me_beta_WatchKit_Extension; + INFOPLIST_FILE = "$(SRCROOT)/maps.me WatchKit App/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.2; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = 4; + "TARGETED_DEVICE_FAMILY[sdk=iphonesimulator*]" = "1,4"; + VALIDATE_PRODUCT = YES; + }; + name = "Drape Release"; + }; + F6D4346F1AD2AB97007C7728 /* Production Full */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_ENABLE_MODULES = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IBSC_MODULE = maps_me_beta_WatchKit_Extension; + INFOPLIST_FILE = "$(SRCROOT)/maps.me WatchKit App/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.2; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = 4; + "TARGETED_DEVICE_FAMILY[sdk=iphonesimulator*]" = "1,4"; + VALIDATE_PRODUCT = YES; + }; + name = "Production Full"; + }; FAAB4119149BA83500C245B1 /* Simulator */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - BUNDLE_IDENTIFIER = com.mapswithme.full.simulator; + BUNDLE_IDENTIFIER = me.maps.simulator; CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_OBJC_ARC = YES; COMPRESS_PNG_FILES = NO; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 4.3; + CURRENT_PROJECT_VERSION = 4.4; GCC_ENABLE_PASCAL_STRINGS = NO; GCC_FAST_MATH = YES; GCC_INLINES_ARE_PRIVATE_EXTERN = YES; @@ -1746,7 +2888,7 @@ ../../, ); INFOPLIST_FILE = MAPSME.plist; - IPHONEOS_DEPLOYMENT_TARGET = 5.0; + IPHONEOS_DEPLOYMENT_TARGET = 5.1.1; LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../../../omim-iphone-debug-i386/out/debug\""; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( @@ -1794,6 +2936,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + CODE_SIGN_ENTITLEMENTS = "maps.me dbg.entitlements"; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; FRAMEWORK_SEARCH_PATHS = ( @@ -1808,6 +2951,7 @@ LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Statistics", + "$(PROJECT_DIR)/MyTracker", ); PROVISIONING_PROFILE = ""; }; @@ -1817,14 +2961,14 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - BUNDLE_IDENTIFIER = com.mapswithme.full.debug; + BUNDLE_IDENTIFIER = me.maps.debug; CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_OBJC_ARC = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; COMPRESS_PNG_FILES = NO; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 4.3; + CURRENT_PROJECT_VERSION = 4.4; GCC_ENABLE_PASCAL_STRINGS = NO; GCC_FAST_MATH = YES; GCC_INLINES_ARE_PRIVATE_EXTERN = YES; @@ -1841,7 +2985,7 @@ ../../, ); INFOPLIST_FILE = MAPSME.plist; - IPHONEOS_DEPLOYMENT_TARGET = 5.0; + IPHONEOS_DEPLOYMENT_TARGET = 5.1.1; LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../../../omim-iphone-debug-$(CURRENT_ARCH)/out/debug\""; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( @@ -1879,7 +3023,6 @@ SDKROOT = iphoneos; STRIP_INSTALLED_PRODUCT = NO; TARGETED_DEVICE_FAMILY = "1,2"; - VALID_ARCHS = armv7; VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; @@ -1889,6 +3032,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + CODE_SIGN_ENTITLEMENTS = "maps.me dbg.entitlements"; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; FRAMEWORK_SEARCH_PATHS = ( @@ -1903,6 +3047,7 @@ LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Statistics", + "$(PROJECT_DIR)/MyTracker", ); OTHER_LDFLAGS = ( "-lstats_client", @@ -1937,14 +3082,14 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - BUNDLE_IDENTIFIER = com.mapswithme.full.beta; + BUNDLE_IDENTIFIER = me.maps.beta; CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_OBJC_ARC = YES; CODE_SIGN_IDENTITY = "iPhone Distribution"; COMPRESS_PNG_FILES = NO; COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 4.3; + CURRENT_PROJECT_VERSION = 4.4; GCC_ENABLE_PASCAL_STRINGS = NO; GCC_FAST_MATH = YES; GCC_INLINES_ARE_PRIVATE_EXTERN = YES; @@ -1965,7 +3110,7 @@ ../../, ); INFOPLIST_FILE = MAPSME.plist; - IPHONEOS_DEPLOYMENT_TARGET = 5.0; + IPHONEOS_DEPLOYMENT_TARGET = 5.1.1; LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../../../omim-iphone-production-$(CURRENT_ARCH)/out/production\""; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( @@ -2003,7 +3148,6 @@ SDKROOT = iphoneos; STRIP_INSTALLED_PRODUCT = YES; TARGETED_DEVICE_FAMILY = "1,2"; - VALID_ARCHS = "armv7s armv7"; VERSIONING_SYSTEM = "apple-generic"; }; name = AdHoc; @@ -2013,6 +3157,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + CODE_SIGN_ENTITLEMENTS = "maps.me dbg.entitlements"; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; FRAMEWORK_SEARCH_PATHS = ( @@ -2027,6 +3172,7 @@ LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Statistics", + "$(PROJECT_DIR)/MyTracker", ); PROVISIONING_PROFILE = ""; }; @@ -2043,7 +3189,7 @@ CODE_SIGN_IDENTITY = "iPhone Distribution"; COMPRESS_PNG_FILES = NO; COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 4.3; + CURRENT_PROJECT_VERSION = 4.4; GCC_ENABLE_PASCAL_STRINGS = NO; GCC_FAST_MATH = YES; GCC_INLINES_ARE_PRIVATE_EXTERN = YES; @@ -2064,7 +3210,7 @@ ../../, ); INFOPLIST_FILE = MAPSME.plist; - IPHONEOS_DEPLOYMENT_TARGET = 5.0; + IPHONEOS_DEPLOYMENT_TARGET = 5.1.1; LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../../../omim-iphone-production-$(CURRENT_ARCH)/out/production\""; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( @@ -2102,7 +3248,6 @@ SDKROOT = iphoneos; STRIP_INSTALLED_PRODUCT = YES; TARGETED_DEVICE_FAMILY = "1,2"; - VALID_ARCHS = "armv7s armv7"; VERSIONING_SYSTEM = "apple-generic"; }; name = "Production Full"; @@ -2112,6 +3257,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + CODE_SIGN_ENTITLEMENTS = "maps.me dbg.entitlements"; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; FRAMEWORK_SEARCH_PATHS = ( @@ -2126,6 +3272,7 @@ LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Statistics", + "$(PROJECT_DIR)/MyTracker", ); PROVISIONING_PROFILE = ""; }; @@ -2135,14 +3282,14 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - BUNDLE_IDENTIFIER = com.mapswithme.full.release; + BUNDLE_IDENTIFIER = me.maps.release; CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_OBJC_ARC = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; COMPRESS_PNG_FILES = NO; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 4.3; + CURRENT_PROJECT_VERSION = 4.4; GCC_ENABLE_PASCAL_STRINGS = NO; GCC_FAST_MATH = YES; GCC_INLINES_ARE_PRIVATE_EXTERN = YES; @@ -2162,7 +3309,7 @@ ../../, ); INFOPLIST_FILE = MAPSME.plist; - IPHONEOS_DEPLOYMENT_TARGET = 5.0; + IPHONEOS_DEPLOYMENT_TARGET = 5.1.1; LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../../../omim-iphone-release-$(CURRENT_ARCH)/out/release\""; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( @@ -2200,7 +3347,6 @@ SDKROOT = iphoneos; STRIP_INSTALLED_PRODUCT = NO; TARGETED_DEVICE_FAMILY = "1,2"; - VALID_ARCHS = armv7; VERSIONING_SYSTEM = "apple-generic"; }; name = Release; @@ -2210,6 +3356,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + CODE_SIGN_ENTITLEMENTS = "maps.me dbg.entitlements"; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; FRAMEWORK_SEARCH_PATHS = ( @@ -2224,6 +3371,7 @@ LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Statistics", + "$(PROJECT_DIR)/MyTracker", ); PROVISIONING_PROFILE = ""; }; @@ -2233,13 +3381,13 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - BUNDLE_IDENTIFIER = com.mapswithme.full.simulator.release; + BUNDLE_IDENTIFIER = me.maps.simulator; CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_OBJC_ARC = YES; COMPRESS_PNG_FILES = NO; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 4.3; + CURRENT_PROJECT_VERSION = 4.4; GCC_ENABLE_PASCAL_STRINGS = NO; GCC_FAST_MATH = YES; GCC_INLINES_ARE_PRIVATE_EXTERN = YES; @@ -2259,7 +3407,7 @@ ../../, ); INFOPLIST_FILE = MAPSME.plist; - IPHONEOS_DEPLOYMENT_TARGET = 5.0; + IPHONEOS_DEPLOYMENT_TARGET = 5.1.1; LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../../../omim-iphone-release-i386/out/release\""; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( @@ -2307,6 +3455,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + CODE_SIGN_ENTITLEMENTS = "maps.me dbg.entitlements"; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; FRAMEWORK_SEARCH_PATHS = ( @@ -2321,6 +3470,7 @@ LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Statistics", + "$(PROJECT_DIR)/MyTracker", ); PROVISIONING_PROFILE = ""; }; @@ -2359,6 +3509,36 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = AdHoc; }; + F6D434701AD2AB97007C7728 /* Build configuration list for PBXNativeTarget "maps.me WatchKit App" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F6D434681AD2AB97007C7728 /* Simulator */, + F6D434691AD2AB97007C7728 /* Simulator Release */, + F6D4346A1AD2AB97007C7728 /* Debug */, + F6D4346B1AD2AB97007C7728 /* Drape Debug */, + F6D4346C1AD2AB97007C7728 /* AdHoc */, + F6D4346D1AD2AB97007C7728 /* Release */, + F6D4346E1AD2AB97007C7728 /* Drape Release */, + F6D4346F1AD2AB97007C7728 /* Production Full */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = AdHoc; + }; + F6D434711AD2AB97007C7728 /* Build configuration list for PBXNativeTarget "maps.me WatchKit Extension" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F6D434601AD2AB97007C7728 /* Simulator */, + F6D434611AD2AB97007C7728 /* Simulator Release */, + F6D434621AD2AB97007C7728 /* Debug */, + F6D434631AD2AB97007C7728 /* Drape Debug */, + F6D434641AD2AB97007C7728 /* AdHoc */, + F6D434651AD2AB97007C7728 /* Release */, + F6D434661AD2AB97007C7728 /* Drape Release */, + F6D434671AD2AB97007C7728 /* Production Full */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = AdHoc; + }; /* End XCConfigurationList section */ }; rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; diff --git a/iphone/Maps/Maps_Prefix.pch b/iphone/Maps/Maps_Prefix.pch index 35ba44da37..687fe98ccb 100644 --- a/iphone/Maps/Maps_Prefix.pch +++ b/iphone/Maps/Maps_Prefix.pch @@ -2,10 +2,9 @@ // Prefix header for all source files of the 'Maps' target in the 'Maps' project // -#import "Common.h" - #ifdef __OBJC__ #import #import #import + #import "Common.h" #endif diff --git a/iphone/Maps/MyTracker/MRAbstractDataProvider.h b/iphone/Maps/MyTracker/MRAbstractDataProvider.h new file mode 100755 index 0000000000..88a181eaa5 --- /dev/null +++ b/iphone/Maps/MyTracker/MRAbstractDataProvider.h @@ -0,0 +1,21 @@ +// +// Created by Igor Glotov on 23/07/14. +// Copyright (c) 2014 Mailru Group. All rights reserved. +// + +#import + + +@interface MRAbstractDataProvider : NSObject + + +- (void)collectData; + +- (NSDictionary *)data; + +- (void)addParam:(NSString *)value forKey:(NSString *)key; + +- (BOOL)hasData; + +- (NSUInteger)dataCount; +@end diff --git a/iphone/Maps/MyTracker/MRCustomParamsProvider.h b/iphone/Maps/MyTracker/MRCustomParamsProvider.h new file mode 100755 index 0000000000..f982202c30 --- /dev/null +++ b/iphone/Maps/MyTracker/MRCustomParamsProvider.h @@ -0,0 +1,35 @@ +// +// Created by Igor Glotov on 22/08/14. +// Copyright (c) 2014 Mail.ru Group. All rights reserved. +// MyTracker, version 1.0.18 + +#import +#import "MRAbstractDataProvider.h" + +@interface MRCustomParamsProvider : MRAbstractDataProvider + +- (void)setLanguage:(NSString *)lang; + + +- (void)setAge:(NSNumber *)age; + +/** +* @param gender Пол пользователя, 0 - пол неизвестен, 1 - мужской, 2 - женский +*/ +- (void)setGender:(NSNumber *)gender; + +- (void)setMRGSAppId:(NSString *)mrgsAppId; + +- (void)setMRGSUserId:(NSString *)mrgsUserId; + +- (void)setMRGSDeviceId:(NSString *)mrgsDeviceId; + +- (void)setPhone:(NSString *)phone; + +- (void)setIcqId:(NSString *)icqId; + +- (void)setOkId:(NSString *)okId; + +- (void)setEmail:(NSString *)email; + +@end diff --git a/iphone/Maps/MyTracker/MRMyTracker.h b/iphone/Maps/MyTracker/MRMyTracker.h new file mode 100755 index 0000000000..9764288d31 --- /dev/null +++ b/iphone/Maps/MyTracker/MRMyTracker.h @@ -0,0 +1,35 @@ +// Created by Igor Glotov on 22/07/14. +// Copyright (c) 2014 Mailru Group. All rights reserved. +// MyTracker, version 1.0.18 + +#import +#import "MRTracker.h" + +extern NSString * const MRMyTrackerVersion; + +@class MRTracker; +@class MRTrackerParams; + +@interface MRMyTracker : NSObject + ++ (BOOL)debugMode; ++ (void)setDebugMode:(BOOL)enable; + ++ (MRTracker *)createTracker:(NSString *)trackerId; ++ (BOOL)isInitialized; ++ (void)setupTracker; + ++ (MRTrackerParams *)getTrackerParams; + ++ (void)trackEvent:(NSString *)name; ++ (void)trackEvent:(NSString *)name eventParams:(NSDictionary *)eventParams; + ++ (void)trackLoginEvent; ++ (void)trackLoginEventWithParams:(NSDictionary *)eventParams; + ++ (void)trackInviteEvent; ++ (void)trackInviteEventWithParams:(NSDictionary *)eventParams; + ++ (void)trackRegistrationEvent; ++ (void)trackRegistrationEventWithParams:(NSDictionary *)eventParams; +@end diff --git a/iphone/Maps/MyTracker/MRTracker.h b/iphone/Maps/MyTracker/MRTracker.h new file mode 100755 index 0000000000..aec536cee9 --- /dev/null +++ b/iphone/Maps/MyTracker/MRTracker.h @@ -0,0 +1,27 @@ +// +// Created by Igor Glotov on 22/07/14. +// Copyright (c) 2014 Mailru Group. All rights reserved. +// MyTracker, version 1.0.18 + +#import + +@interface MRTracker : NSObject + ++ (BOOL)debugMode; ++ (void)setDebugMode:(BOOL)enable; + +- (void)setup; +- (BOOL)isInitialized; + +- (void)trackEvent:(NSString *)name; +- (void)trackEvent:(NSString *)name eventParams:(NSDictionary *)eventParams; + +- (void)trackLoginEvent; +- (void)trackLoginEventWithParams:(NSDictionary *)eventParams; + +- (void)trackInviteEvent; +- (void)trackInviteEventWithParams:(NSDictionary *)eventParams; + +- (void)trackRegistrationEvent; +- (void)trackRegistrationEventWithParams:(NSDictionary *)eventParams; +@end diff --git a/iphone/Maps/MyTracker/MRTrackerParams+Corp.h b/iphone/Maps/MyTracker/MRTrackerParams+Corp.h new file mode 100755 index 0000000000..994fa98e18 --- /dev/null +++ b/iphone/Maps/MyTracker/MRTrackerParams+Corp.h @@ -0,0 +1,19 @@ +// +// Created by Glotov on 24/03/15. +// Copyright (c) 2015 Mail.ru Group. All rights reserved. +// MyTracker, version 1.0.18 + +#import +#import "MRTrackerParams.h" + +@class MRCustomParamsProvider; + +@interface MRTrackerParams (Corp) + +- (MRCustomParamsProvider *)getCustomParams; + +- (NSTimeInterval)launchTimeout; +- (void)setLaunchTimeout:(NSTimeInterval)launchTimeout; + + +@end diff --git a/iphone/Maps/MyTracker/MRTrackerParams.h b/iphone/Maps/MyTracker/MRTrackerParams.h new file mode 100755 index 0000000000..168777d549 --- /dev/null +++ b/iphone/Maps/MyTracker/MRTrackerParams.h @@ -0,0 +1,31 @@ +// +// Created by Glotov on 20/03/15. +// Copyright (c) 2015 Mail.ru Group. All rights reserved. +// MyTracker, version 1.0.18 + + +#import + +@class MRCustomParamsProvider; + + +@interface MRTrackerParams : NSObject + +- (instancetype)initWithTrackerId:(NSString *)trackerId; + + +@property (strong, nonatomic) NSString *trackerId; +@property (nonatomic) BOOL trackAppLaunch; + +- (void)setLanguage:(NSString *)lang; + + +- (void)setAge:(NSNumber *)age; + +/** +* @param gender Пол пользователя, 0 - пол неизвестен, 1 - мужской, 2 - женский +*/ +- (void)setGender:(NSNumber *)gender; + + +@end diff --git a/iphone/Maps/MyTracker/libMyTracker.a b/iphone/Maps/MyTracker/libMyTracker.a new file mode 100755 index 0000000000..3fa3f812fd Binary files /dev/null and b/iphone/Maps/MyTracker/libMyTracker.a differ diff --git a/iphone/Maps/maps.me WatchKit App/Base.lproj/Interface.storyboard b/iphone/Maps/maps.me WatchKit App/Base.lproj/Interface.storyboard new file mode 100644 index 0000000000..2503a03e83 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Base.lproj/Interface.storyboard @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+
+ +
+
+
diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/AppIcon.appiconset/172x172.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/AppIcon.appiconset/172x172.png new file mode 100644 index 0000000000..8339a91d33 Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/AppIcon.appiconset/172x172.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/AppIcon.appiconset/196x196.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/AppIcon.appiconset/196x196.png new file mode 100644 index 0000000000..012abac57f Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/AppIcon.appiconset/196x196.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/AppIcon.appiconset/29x29@2x.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/AppIcon.appiconset/29x29@2x.png new file mode 100644 index 0000000000..6e8bc21ab1 Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/AppIcon.appiconset/29x29@2x.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/AppIcon.appiconset/29x29@3x.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/AppIcon.appiconset/29x29@3x.png new file mode 100644 index 0000000000..24e4bbcf13 Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/AppIcon.appiconset/29x29@3x.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/AppIcon.appiconset/48x48.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/AppIcon.appiconset/48x48.png new file mode 100644 index 0000000000..82feddff08 Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/AppIcon.appiconset/48x48.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/AppIcon.appiconset/55x55.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/AppIcon.appiconset/55x55.png new file mode 100644 index 0000000000..ee77e28fb4 Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/AppIcon.appiconset/55x55.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/AppIcon.appiconset/80x80.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/AppIcon.appiconset/80x80.png new file mode 100644 index 0000000000..98810d9d8d Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/AppIcon.appiconset/80x80.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/AppIcon.appiconset/88x88.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/AppIcon.appiconset/88x88.png new file mode 100644 index 0000000000..41e50e020d Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/AppIcon.appiconset/88x88.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/AppIcon.appiconset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000000..10f6fbc917 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,70 @@ +{ + "images" : [ + { + "size" : "24x24", + "idiom" : "watch", + "scale" : "2x", + "filename" : "48x48.png", + "role" : "notificationCenter", + "subtype" : "38mm" + }, + { + "size" : "27.5x27.5", + "idiom" : "watch", + "scale" : "2x", + "filename" : "55x55.png", + "role" : "notificationCenter", + "subtype" : "42mm" + }, + { + "size" : "29x29", + "idiom" : "watch", + "filename" : "29x29@2x.png", + "role" : "companionSettings", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "watch", + "filename" : "29x29@3x.png", + "role" : "companionSettings", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "watch", + "scale" : "2x", + "filename" : "80x80.png", + "role" : "appLauncher", + "subtype" : "38mm" + }, + { + "size" : "44x44", + "idiom" : "watch", + "scale" : "2x", + "filename" : "88x88.png", + "role" : "longLook", + "subtype" : "42mm" + }, + { + "size" : "86x86", + "idiom" : "watch", + "scale" : "2x", + "filename" : "172x172.png", + "role" : "quickLook", + "subtype" : "38mm" + }, + { + "size" : "98x98", + "idiom" : "watch", + "scale" : "2x", + "filename" : "196x196.png", + "role" : "quickLook", + "subtype" : "42mm" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_00.imageset/0.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_00.imageset/0.png new file mode 100644 index 0000000000..12b00f88a9 Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_00.imageset/0.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_00.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_00.imageset/Contents.json new file mode 100644 index 0000000000..fffbbb2188 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_00.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "0.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_01.imageset/1.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_01.imageset/1.png new file mode 100644 index 0000000000..a07c584340 Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_01.imageset/1.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_01.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_01.imageset/Contents.json new file mode 100644 index 0000000000..d036d402ae --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_01.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "1.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_02.imageset/2.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_02.imageset/2.png new file mode 100644 index 0000000000..3f81918a0e Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_02.imageset/2.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_02.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_02.imageset/Contents.json new file mode 100644 index 0000000000..3a097ea649 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_02.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "2.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_03.imageset/3.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_03.imageset/3.png new file mode 100644 index 0000000000..e5080be8c0 Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_03.imageset/3.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_03.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_03.imageset/Contents.json new file mode 100644 index 0000000000..af9a6e18b7 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_03.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "3.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_04.imageset/4.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_04.imageset/4.png new file mode 100644 index 0000000000..1dc29ee74c Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_04.imageset/4.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_04.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_04.imageset/Contents.json new file mode 100644 index 0000000000..b9cca0e339 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_04.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "4.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_05.imageset/5.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_05.imageset/5.png new file mode 100644 index 0000000000..245ecb237c Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_05.imageset/5.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_05.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_05.imageset/Contents.json new file mode 100644 index 0000000000..fb86100f87 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_05.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "5.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_06.imageset/6.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_06.imageset/6.png new file mode 100644 index 0000000000..8a84f085fc Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_06.imageset/6.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_06.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_06.imageset/Contents.json new file mode 100644 index 0000000000..6024be69f2 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_06.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "6.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_07.imageset/7.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_07.imageset/7.png new file mode 100644 index 0000000000..67a13e4d70 Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_07.imageset/7.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_07.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_07.imageset/Contents.json new file mode 100644 index 0000000000..d1b02105ba --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_07.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "7.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_08.imageset/8.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_08.imageset/8.png new file mode 100644 index 0000000000..aac89d4047 Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_08.imageset/8.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_08.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_08.imageset/Contents.json new file mode 100644 index 0000000000..ee59c79224 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_08.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "8.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_09.imageset/9.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_09.imageset/9.png new file mode 100644 index 0000000000..b09c303121 Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_09.imageset/9.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_09.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_09.imageset/Contents.json new file mode 100644 index 0000000000..1fb45f8ee1 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_09.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "9.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_10.imageset/10.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_10.imageset/10.png new file mode 100644 index 0000000000..f072f0d197 Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_10.imageset/10.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_10.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_10.imageset/Contents.json new file mode 100644 index 0000000000..0402f4ce4f --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_10.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "10.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_11.imageset/11.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_11.imageset/11.png new file mode 100644 index 0000000000..37397b31ef Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_11.imageset/11.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_11.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_11.imageset/Contents.json new file mode 100644 index 0000000000..70561a2623 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_11.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "11.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_12.imageset/12.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_12.imageset/12.png new file mode 100644 index 0000000000..449f12f3fb Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_12.imageset/12.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_12.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_12.imageset/Contents.json new file mode 100644 index 0000000000..1091789103 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_12.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "12.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_13.imageset/13.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_13.imageset/13.png new file mode 100644 index 0000000000..9dac7e8b5a Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_13.imageset/13.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_13.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_13.imageset/Contents.json new file mode 100644 index 0000000000..71ed67871c --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_13.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "13.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_14.imageset/14.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_14.imageset/14.png new file mode 100644 index 0000000000..95ddde103b Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_14.imageset/14.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_14.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_14.imageset/Contents.json new file mode 100644 index 0000000000..4eb4bae3aa --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_14.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "14.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_15.imageset/15.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_15.imageset/15.png new file mode 100644 index 0000000000..ef4fd7556c Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_15.imageset/15.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_15.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_15.imageset/Contents.json new file mode 100644 index 0000000000..fc615d3bb0 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_15.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "15.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_16.imageset/16.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_16.imageset/16.png new file mode 100644 index 0000000000..520a56ab71 Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_16.imageset/16.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_16.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_16.imageset/Contents.json new file mode 100644 index 0000000000..7fc31c3422 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_16.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "16.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_17.imageset/17.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_17.imageset/17.png new file mode 100644 index 0000000000..66a20838e6 Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_17.imageset/17.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_17.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_17.imageset/Contents.json new file mode 100644 index 0000000000..2b9e070f60 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_17.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "17.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_18.imageset/18.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_18.imageset/18.png new file mode 100644 index 0000000000..7d6600802e Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_18.imageset/18.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_18.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_18.imageset/Contents.json new file mode 100644 index 0000000000..3fb7ddbda1 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_18.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "18.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_19.imageset/19.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_19.imageset/19.png new file mode 100644 index 0000000000..4871214184 Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_19.imageset/19.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_19.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_19.imageset/Contents.json new file mode 100644 index 0000000000..494e114881 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_19.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "19.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_20.imageset/20.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_20.imageset/20.png new file mode 100644 index 0000000000..ad5cc2a20d Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_20.imageset/20.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_20.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_20.imageset/Contents.json new file mode 100644 index 0000000000..173704bd1e --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/DownloaderIcons/progress_20.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "20.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_1.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_1.imageset/Contents.json new file mode 100644 index 0000000000..fee20d1ef2 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_1.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "spinner_1.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_1.imageset/spinner_1.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_1.imageset/spinner_1.png new file mode 100644 index 0000000000..118815db5f Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_1.imageset/spinner_1.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_2.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_2.imageset/Contents.json new file mode 100644 index 0000000000..3ef237186d --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_2.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "spinner_2.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_2.imageset/spinner_2.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_2.imageset/spinner_2.png new file mode 100644 index 0000000000..7dd42febc5 Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_2.imageset/spinner_2.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_3.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_3.imageset/Contents.json new file mode 100644 index 0000000000..59e7cb5260 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_3.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "spinner_3.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_3.imageset/spinner_3.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_3.imageset/spinner_3.png new file mode 100644 index 0000000000..897a207c2c Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_3.imageset/spinner_3.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_4.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_4.imageset/Contents.json new file mode 100644 index 0000000000..4f11b67435 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_4.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "spinner_4.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_4.imageset/spinner_4.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_4.imageset/spinner_4.png new file mode 100644 index 0000000000..5c06410425 Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_4.imageset/spinner_4.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_5.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_5.imageset/Contents.json new file mode 100644 index 0000000000..3cf06878ad --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_5.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "spinner_5.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_5.imageset/spinner_5.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_5.imageset/spinner_5.png new file mode 100644 index 0000000000..da9c0a1813 Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_5.imageset/spinner_5.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_6.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_6.imageset/Contents.json new file mode 100644 index 0000000000..70387121c8 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_6.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "spinner_6.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_6.imageset/spinner_6.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_6.imageset/spinner_6.png new file mode 100644 index 0000000000..61bd2020b4 Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/Spinner/spinner_6.imageset/spinner_6.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_atm.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_atm.imageset/Contents.json new file mode 100644 index 0000000000..b36a62278a --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_atm.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "btn_atm@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_atm.imageset/btn_atm@2x.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_atm.imageset/btn_atm@2x.png new file mode 100644 index 0000000000..5b0e697aab Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_atm.imageset/btn_atm@2x.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_bank.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_bank.imageset/Contents.json new file mode 100644 index 0000000000..c3ce82b8ab --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_bank.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "btn_bank@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_bank.imageset/btn_bank@2x.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_bank.imageset/btn_bank@2x.png new file mode 100644 index 0000000000..4d0f956526 Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_bank.imageset/btn_bank@2x.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_entertainment.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_entertainment.imageset/Contents.json new file mode 100644 index 0000000000..1bfa067d0f --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_entertainment.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "btn_entrtaiment@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_entertainment.imageset/btn_entrtaiment@2x.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_entertainment.imageset/btn_entrtaiment@2x.png new file mode 100644 index 0000000000..4a20ee1bbf Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_entertainment.imageset/btn_entrtaiment@2x.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_finish.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_finish.imageset/Contents.json new file mode 100644 index 0000000000..7165cc8f8e --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_finish.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "btn_finish-1.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_finish.imageset/btn_finish-1.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_finish.imageset/btn_finish-1.png new file mode 100644 index 0000000000..cd9863efcd Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_finish.imageset/btn_finish-1.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_food.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_food.imageset/Contents.json new file mode 100644 index 0000000000..73f4e56a2a --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_food.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "btn_food@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_food.imageset/btn_food@2x.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_food.imageset/btn_food@2x.png new file mode 100644 index 0000000000..04b60f42af Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_food.imageset/btn_food@2x.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_fuel.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_fuel.imageset/Contents.json new file mode 100644 index 0000000000..e1ddd3615a --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_fuel.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "btn_fuel@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_fuel.imageset/btn_fuel@2x.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_fuel.imageset/btn_fuel@2x.png new file mode 100644 index 0000000000..fe0439b141 Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_fuel.imageset/btn_fuel@2x.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_hospital.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_hospital.imageset/Contents.json new file mode 100644 index 0000000000..0f2bf07005 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_hospital.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "btn_hospital@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_hospital.imageset/btn_hospital@2x.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_hospital.imageset/btn_hospital@2x.png new file mode 100644 index 0000000000..360526e5a1 Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_hospital.imageset/btn_hospital@2x.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_hotel.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_hotel.imageset/Contents.json new file mode 100644 index 0000000000..b2fc77a3db --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_hotel.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "btn_hotel@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_hotel.imageset/btn_hotel@2x.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_hotel.imageset/btn_hotel@2x.png new file mode 100644 index 0000000000..6b77e4fd54 Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_hotel.imageset/btn_hotel@2x.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_parking.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_parking.imageset/Contents.json new file mode 100644 index 0000000000..29a9f32435 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_parking.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "btn_parking@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_parking.imageset/btn_parking@2x.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_parking.imageset/btn_parking@2x.png new file mode 100644 index 0000000000..78fe992f10 Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_parking.imageset/btn_parking@2x.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_pharmacy.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_pharmacy.imageset/Contents.json new file mode 100644 index 0000000000..b418bef99b --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_pharmacy.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "btn_pharmacy@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_pharmacy.imageset/btn_pharmacy@2x.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_pharmacy.imageset/btn_pharmacy@2x.png new file mode 100644 index 0000000000..a470123153 Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_pharmacy.imageset/btn_pharmacy@2x.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_police.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_police.imageset/Contents.json new file mode 100644 index 0000000000..a30ae4cad8 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_police.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "btn_police@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_police.imageset/btn_police@2x.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_police.imageset/btn_police@2x.png new file mode 100644 index 0000000000..1fdc25e073 Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_police.imageset/btn_police@2x.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_post.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_post.imageset/Contents.json new file mode 100644 index 0000000000..c6941e5572 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_post.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "btn_post@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_post.imageset/btn_post@2x.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_post.imageset/btn_post@2x.png new file mode 100644 index 0000000000..0a79cd2940 Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_post.imageset/btn_post@2x.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_shop.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_shop.imageset/Contents.json new file mode 100644 index 0000000000..d119551e75 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_shop.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "btn_shop@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_shop.imageset/btn_shop@2x.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_shop.imageset/btn_shop@2x.png new file mode 100644 index 0000000000..653d664fc1 Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_shop.imageset/btn_shop@2x.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_toilet.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_toilet.imageset/Contents.json new file mode 100644 index 0000000000..2b285ba2b2 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_toilet.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "btn_toilet@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_toilet.imageset/btn_toilet@2x.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_toilet.imageset/btn_toilet@2x.png new file mode 100644 index 0000000000..a44fccfe9b Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_toilet.imageset/btn_toilet@2x.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_tourism.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_tourism.imageset/Contents.json new file mode 100644 index 0000000000..691a1b7dc1 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_tourism.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "btn_sign@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_tourism.imageset/btn_sign@2x.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_tourism.imageset/btn_sign@2x.png new file mode 100644 index 0000000000..3b26e6a603 Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_tourism.imageset/btn_sign@2x.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_transport.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_transport.imageset/Contents.json new file mode 100644 index 0000000000..e7ccd13052 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_transport.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "btn_transport@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_transport.imageset/btn_transport@2x.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_transport.imageset/btn_transport@2x.png new file mode 100644 index 0000000000..629e6b4e6a Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_transport.imageset/btn_transport@2x.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_wifi.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_wifi.imageset/Contents.json new file mode 100644 index 0000000000..0bd65db55a --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_wifi.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "btn_wifi@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_wifi.imageset/btn_wifi@2x.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_wifi.imageset/btn_wifi@2x.png new file mode 100644 index 0000000000..f9f951268e Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/btn_wifi.imageset/btn_wifi@2x.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_close.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_close.imageset/Contents.json new file mode 100644 index 0000000000..8c760f5bb7 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_close.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "ic_close.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_close.imageset/ic_close.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_close.imageset/ic_close.png new file mode 100644 index 0000000000..c49d4be271 Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_close.imageset/ic_close.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_download.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_download.imageset/Contents.json new file mode 100644 index 0000000000..f0696d6ef2 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_download.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "ic_download.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_download.imageset/ic_download.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_download.imageset/ic_download.png new file mode 100644 index 0000000000..bcf9ae220d Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_download.imageset/ic_download.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_finish.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_finish.imageset/Contents.json new file mode 100644 index 0000000000..8b3d8fdb09 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_finish.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "ic_finish.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_finish.imageset/ic_finish.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_finish.imageset/ic_finish.png new file mode 100644 index 0000000000..1df079e496 Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_finish.imageset/ic_finish.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_not_found_map.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_not_found_map.imageset/Contents.json new file mode 100644 index 0000000000..1702b9cd5b --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_not_found_map.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "ic_not_found_map.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_not_found_map.imageset/ic_not_found_map.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_not_found_map.imageset/ic_not_found_map.png new file mode 100644 index 0000000000..b1bdfa3eca Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_not_found_map.imageset/ic_not_found_map.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_not_found_position.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_not_found_position.imageset/Contents.json new file mode 100644 index 0000000000..a1fe48f92d --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_not_found_position.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "ic_not_found_position.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_not_found_position.imageset/ic_not_found_position.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_not_found_position.imageset/ic_not_found_position.png new file mode 100644 index 0000000000..67fdc4643e Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_not_found_position.imageset/ic_not_found_position.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_search.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_search.imageset/Contents.json new file mode 100644 index 0000000000..95224f8ff2 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_search.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "ic_search.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_search.imageset/ic_search.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_search.imageset/ic_search.png new file mode 100644 index 0000000000..c7fd53c336 Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/ic_search.imageset/ic_search.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/img_error.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/img_error.imageset/Contents.json new file mode 100644 index 0000000000..bf2bda7e70 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/img_error.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "img_error.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/img_error.imageset/img_error.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/img_error.imageset/img_error.png new file mode 100644 index 0000000000..2f2f4e5e46 Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/img_error.imageset/img_error.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/img_finish.imageset/Contents.json b/iphone/Maps/maps.me WatchKit App/Images.xcassets/img_finish.imageset/Contents.json new file mode 100644 index 0000000000..c121aab359 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Images.xcassets/img_finish.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "img_finish.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit App/Images.xcassets/img_finish.imageset/img_finish.png b/iphone/Maps/maps.me WatchKit App/Images.xcassets/img_finish.imageset/img_finish.png new file mode 100644 index 0000000000..39cddc6033 Binary files /dev/null and b/iphone/Maps/maps.me WatchKit App/Images.xcassets/img_finish.imageset/img_finish.png differ diff --git a/iphone/Maps/maps.me WatchKit App/Info.plist b/iphone/Maps/maps.me WatchKit App/Info.plist new file mode 100644 index 0000000000..04874486e6 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit App/Info.plist @@ -0,0 +1,35 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + maps.me + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + ${BUNDLE_IDENTIFIER}.watchkitapp + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + ${CURRENT_PROJECT_VERSION} + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + + WKCompanionAppBundleIdentifier + ${BUNDLE_IDENTIFIER} + WKWatchKitApp + + + diff --git a/iphone/Maps/maps.me WatchKit Extension/Controllers/Finish/MWMFinishInterfaceController.h b/iphone/Maps/maps.me WatchKit Extension/Controllers/Finish/MWMFinishInterfaceController.h new file mode 100644 index 0000000000..4bb4cfbdaf --- /dev/null +++ b/iphone/Maps/maps.me WatchKit Extension/Controllers/Finish/MWMFinishInterfaceController.h @@ -0,0 +1,13 @@ +// +// MWMFinishInterfaceController.h +// Maps +// +// Created by i.grechuhin on 09.04.15. +// Copyright (c) 2015 MapsWithMe. All rights reserved. +// + +#import "MWMWKInterfaceController.h" + +@interface MWMFinishInterfaceController : MWMWKInterfaceController + +@end diff --git a/iphone/Maps/maps.me WatchKit Extension/Controllers/Finish/MWMFinishInterfaceController.m b/iphone/Maps/maps.me WatchKit Extension/Controllers/Finish/MWMFinishInterfaceController.m new file mode 100644 index 0000000000..121e739f67 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit Extension/Controllers/Finish/MWMFinishInterfaceController.m @@ -0,0 +1,18 @@ +// +// MWMFinishInterfaceController.m +// Maps +// +// Created by i.grechuhin on 09.04.15. +// Copyright (c) 2015 MapsWithMe. All rights reserved. +// + +#import "MWMFinishInterfaceController.h" + +@implementation MWMFinishInterfaceController + +- (IBAction)finish +{ + [self popToRootController]; +} + +@end diff --git a/iphone/Maps/maps.me WatchKit Extension/Controllers/Location/MWMNoLocationInterfaceController.h b/iphone/Maps/maps.me WatchKit Extension/Controllers/Location/MWMNoLocationInterfaceController.h new file mode 100644 index 0000000000..c6c21b3af4 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit Extension/Controllers/Location/MWMNoLocationInterfaceController.h @@ -0,0 +1,14 @@ +// +// MWMNoLocationInterfaceController.h +// Maps +// +// Created by i.grechuhin on 09.04.15. +// Copyright (c) 2015 MapsWithMe. All rights reserved. +// + +#import +#import + +@interface MWMNoLocationInterfaceController : WKInterfaceController + +@end diff --git a/iphone/Maps/maps.me WatchKit Extension/Controllers/Location/MWMNoLocationInterfaceController.mm b/iphone/Maps/maps.me WatchKit Extension/Controllers/Location/MWMNoLocationInterfaceController.mm new file mode 100644 index 0000000000..6647bf70eb --- /dev/null +++ b/iphone/Maps/maps.me WatchKit Extension/Controllers/Location/MWMNoLocationInterfaceController.mm @@ -0,0 +1,48 @@ +// +// MWMNoLocationInterfaceController.m +// Maps +// +// Created by i.grechuhin on 09.04.15. +// Copyright (c) 2015 MapsWithMe. All rights reserved. +// + +#import "MWMNoLocationInterfaceController.h" +#import "MWMWatchLocationTrackerDelegate.h" +#import "MWMWatchLocationTracker.h" +#import +#import "Macros.h" + +@interface MWMNoLocationInterfaceController() + +@property (weak, nonatomic) IBOutlet WKInterfaceLabel * descriptionLabel; + +@end + +extern NSString * const kNoLocationControllerIdentifier = @"NoLocationController"; + +@implementation MWMNoLocationInterfaceController + +- (void)awakeWithContext:(id)context +{ + [super awakeWithContext:context]; + [MWMWatchLocationTracker sharedLocationTracker].delegate = self; + if ([context boolValue]) + [self.descriptionLabel setText:L(@"undefined_location")]; + else + [self.descriptionLabel setText:L(@"enable_location_services")]; +} + +#pragma mark - MWMWatchLocationTrackerDelegate + +- (void)onChangeLocation:(CLLocation *)location +{ + [self popController]; +} + +- (void)didChangeAuthorizationStatus:(BOOL)haveAuthorization +{ + if (haveAuthorization) + [self popController]; +} + +@end diff --git a/iphone/Maps/maps.me WatchKit Extension/Controllers/MWMWKInterfaceController.h b/iphone/Maps/maps.me WatchKit Extension/Controllers/MWMWKInterfaceController.h new file mode 100644 index 0000000000..70a352a070 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit Extension/Controllers/MWMWKInterfaceController.h @@ -0,0 +1,20 @@ +// +// MWMWKInterfaceController.h +// Maps +// +// Created by Ilya Grechuhin on 22.04.15. +// Copyright (c) 2015 MapsWithMe. All rights reserved. +// + +#import "MWMWatchLocationTrackerDelegate.h" + +#import +#import + +@interface MWMWKInterfaceController : WKInterfaceController + +@property (nonatomic, readonly) BOOL haveLocation; + +- (void)checkLocationService; + +@end diff --git a/iphone/Maps/maps.me WatchKit Extension/Controllers/MWMWKInterfaceController.mm b/iphone/Maps/maps.me WatchKit Extension/Controllers/MWMWKInterfaceController.mm new file mode 100644 index 0000000000..e11f7341d3 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit Extension/Controllers/MWMWKInterfaceController.mm @@ -0,0 +1,52 @@ +// +// MWMWKInterfaceController.m +// Maps +// +// Created by Ilya Grechuhin on 22.04.15. +// Copyright (c) 2015 MapsWithMe. All rights reserved. +// + +#import "MWMWKInterfaceController.h" +#import "MWMWatchLocationTracker.h" + +extern NSString * const kNoLocationControllerIdentifier; + +@implementation MWMWKInterfaceController + +- (void)willActivate +{ + [super willActivate]; + [self checkLocationService]; +} + +- (void)checkLocationService +{ + MWMWatchLocationTracker *tracker = [MWMWatchLocationTracker sharedLocationTracker]; + _haveLocation = tracker.locationServiceEnabled; + if (self.haveLocation) + tracker.delegate = self; + else + [self pushControllerWithName:kNoLocationControllerIdentifier context:@NO]; +} + +- (void)pushControllerWithName:(NSString *)name context:(id)context +{ + _haveLocation = NO; + [MWMWatchLocationTracker sharedLocationTracker].delegate = nil; + [super pushControllerWithName:name context:context]; +} + +#pragma mark - MWMWatchLocationTrackerDelegate + +- (void)locationTrackingFailedWithError:(NSError *)error +{ + [self pushControllerWithName:kNoLocationControllerIdentifier context:@YES]; +} + +- (void)didChangeAuthorizationStatus:(BOOL)haveAuthorization +{ + if (!haveAuthorization) + [self pushControllerWithName:kNoLocationControllerIdentifier context:@NO]; +} + +@end diff --git a/iphone/Maps/maps.me WatchKit Extension/Controllers/Map/MWMMapController.h b/iphone/Maps/maps.me WatchKit Extension/Controllers/Map/MWMMapController.h new file mode 100644 index 0000000000..71e9d43871 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit Extension/Controllers/Map/MWMMapController.h @@ -0,0 +1,13 @@ +// +// MWMMapController.h +// Maps +// +// Created by v.mikhaylenko on 11.04.15. +// Copyright (c) 2015 MapsWithMe. All rights reserved. +// + +#import "MWMWKInterfaceController.h" + +@interface MWMMapController : MWMWKInterfaceController + +@end diff --git a/iphone/Maps/maps.me WatchKit Extension/Controllers/Map/MWMMapController.mm b/iphone/Maps/maps.me WatchKit Extension/Controllers/Map/MWMMapController.mm new file mode 100644 index 0000000000..3987e97845 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit Extension/Controllers/Map/MWMMapController.mm @@ -0,0 +1,203 @@ +// +// MWMMapController.m +// Maps +// +// Created by v.mikhaylenko on 11.04.15. +// Copyright (c) 2015 MapsWithMe. All rights reserved. +// + +#import "MWMMapController.h" +#import "MWMWatchEventInfo.h" +#import "MWMWatchLocationTracker.h" +#import "MWMFrameworkUtils.h" +#import "Macros.h" +#import "Common.h" + +static NSTimeInterval const kDrawUpdateInterval = 0.2; + +static NSString * const kCategoriesControllerIdentifier = @"CategoriesController"; + +extern NSString * const kNoMapControllerIdentifier; + +static int const kZoomModifierUp = 2; +static int const kZoomModifierDefault = 0; +static int const kZoomModifierDown = -2; + +@interface MWMMapController() + +@property (weak, nonatomic) IBOutlet WKInterfaceGroup * mapGroup; + +@property (weak, nonatomic) NSTimer * drawTimer; +@property (nonatomic) BOOL needUpdateMap; +@property (nonatomic) BOOL initSoftwareRenderer; +@property (nonatomic) int zoomModifier; + +@end + +@implementation MWMMapController + +- (void)awakeWithContext:(id)context +{ + [super awakeWithContext:context]; +} + +- (void)willActivate +{ + [super willActivate]; + if (!self.haveLocation) + return; + [self stubAnimation]; + [self configure]; +} + +- (void)didDeactivate +{ + [super didDeactivate]; + self.drawTimer = nil; + self.initSoftwareRenderer = NO; +} + +- (void)stubAnimation +{ + [self.mapGroup setBackgroundImageNamed:@"spinner_"]; + [self.mapGroup startAnimating]; +} + +- (void)configure +{ + if ([[[NSUserDefaults alloc] initWithSuiteName:kApplicationGroupIdentifier()] boolForKey:kHaveAppleWatch]) + { + [self checkHasMapAndShowUI]; + [self configureMenu]; + } + else + { + NSMutableDictionary * migrationRequest = [NSMutableDictionary dictionary]; + migrationRequest.watchEventInfoRequest = MWMWatchEventInfoRequestMoveWritableDir; + [WKInterfaceController openParentApplication:migrationRequest reply:^(NSDictionary *replyInfo, NSError *error) + { + if (error) + NSLog(@"WatchKit Extension, MWMMapController, MWMWatchEventInfoRequestMoveWritableDir request failed with error: %@", error); + else + [self configure]; + }]; + } +} + +- (void)configureMenu +{ + [self clearAllMenuItems]; + [self addMenuItemWithImageNamed:@"ic_search" title:L(@"nearby") action:@selector(searchTap)]; + if ([MWMWatchLocationTracker sharedLocationTracker].hasDestination) + [self addMenuItemWithImageNamed:@"ic_close" title:L(@"clear_pin") action:@selector(finishRoute)]; +} + +- (void)checkHasMapAndShowUI +{ + if ([MWMFrameworkUtils hasMWM]) + { + self.initSoftwareRenderer = YES; + [self updateMapAtZoomDefault]; + [self forceUpdateMap]; + self.drawTimer = [NSTimer scheduledTimerWithTimeInterval:kDrawUpdateInterval target:self selector:@selector(updateMap) userInfo:nil repeats:YES]; + } + else + [self pushControllerWithName:kNoMapControllerIdentifier context:nil]; +} + +- (void)searchTap +{ + [self pushControllerWithName:kCategoriesControllerIdentifier context:nil]; +} + +- (void)forceUpdateMap +{ + self.needUpdateMap = YES; + [self updateMap]; +} + +- (void)updateMap +{ + if (!self.needUpdateMap) + return; + self.needUpdateMap = NO; + [self updateUIToDestination]; + UIImage * frame = [MWMFrameworkUtils getFrame:self.contentFrame.size withZoomModifier:self.zoomModifier]; + [self.mapGroup setBackgroundImage:frame]; +} + +- (void)updateUIToDestination +{ + MWMWatchLocationTracker *tracker = [MWMWatchLocationTracker sharedLocationTracker]; + if (tracker.hasDestination) + [self setTitle:[tracker distanceToPoint:tracker.destinationPosition]]; + else + [self setTitle:@""]; +} + +- (void)pushControllerWithName:(NSString *)name context:(id)context +{ + self.drawTimer = nil; + [super pushControllerWithName:name context:context]; +} + +#pragma mark - MWMWatchLocationTrackerDelegate + +- (void)onChangeLocation:(CLLocation *)location +{ + self.needUpdateMap = YES; +} + +#pragma mark - Properties + +- (void)setDrawTimer:(NSTimer *)drawTimer +{ + [_drawTimer invalidate]; + _drawTimer = drawTimer; +} + +- (void)setInitSoftwareRenderer:(BOOL)initSoftwareRenderer +{ + if (!initSoftwareRenderer && _initSoftwareRenderer) + [MWMFrameworkUtils releaseSoftwareRenderer]; + else if (initSoftwareRenderer && !_initSoftwareRenderer) + [MWMFrameworkUtils initSoftwareRenderer]; + _initSoftwareRenderer = initSoftwareRenderer; +} + +- (void)setZoomModifier:(int)zoomModifier +{ + if (_zoomModifier != zoomModifier) + { + _zoomModifier = zoomModifier; + [self forceUpdateMap]; + } +} + +#pragma mark - Interface actions + +- (void)finishRoute +{ + [[MWMWatchLocationTracker sharedLocationTracker] clearDestination]; + [self updateUIToDestination]; + [self configureMenu]; + [self stubAnimation]; + [self forceUpdateMap]; +} + +- (IBAction)updateMapAtZoomUp +{ + self.zoomModifier = kZoomModifierUp; +} + +- (IBAction)updateMapAtZoomDefault +{ + self.zoomModifier = kZoomModifierDefault; +} + +- (IBAction)updateMapAtZoomDown +{ + self.zoomModifier = kZoomModifierDown; +} + +@end diff --git a/iphone/Maps/maps.me WatchKit Extension/Controllers/MapDownload/MWMNoMapInterfaceController.h b/iphone/Maps/maps.me WatchKit Extension/Controllers/MapDownload/MWMNoMapInterfaceController.h new file mode 100644 index 0000000000..fb8d04eefa --- /dev/null +++ b/iphone/Maps/maps.me WatchKit Extension/Controllers/MapDownload/MWMNoMapInterfaceController.h @@ -0,0 +1,13 @@ +// +// MWMNoMapInterfaceController.h +// Maps +// +// Created by i.grechuhin on 09.04.15. +// Copyright (c) 2015 MapsWithMe. All rights reserved. +// + +#import "MWMWKInterfaceController.h" + +@interface MWMNoMapInterfaceController : MWMWKInterfaceController + +@end diff --git a/iphone/Maps/maps.me WatchKit Extension/Controllers/MapDownload/MWMNoMapInterfaceController.mm b/iphone/Maps/maps.me WatchKit Extension/Controllers/MapDownload/MWMNoMapInterfaceController.mm new file mode 100644 index 0000000000..e4358bb0e7 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit Extension/Controllers/MapDownload/MWMNoMapInterfaceController.mm @@ -0,0 +1,153 @@ +// +// MWMNoMapInterfaceController.m +// Maps +// +// Created by i.grechuhin on 09.04.15. +// Copyright (c) 2015 MapsWithMe. All rights reserved. +// + +#import "MWMNoMapInterfaceController.h" +#import "MWMWatchLocationTracker.h" +#import "MWMWatchEventInfo.h" +#import "MWMWatchNotification.h" +#import "MWMFrameworkUtils.h" +#import "Macros.h" +#import "Common.h" + +#include "indexer/mercator.hpp" + +extern NSString * const kNoMapControllerIdentifier = @"NoMapController"; +static NSUInteger const kMaxPercent = 100; + +static NSTimeInterval const kUpdateUIInterval = 1.0; + +static NSUInteger const kProgressImagesCount = 20; +static NSUInteger const kProgressImagesStep = kMaxPercent / kProgressImagesCount; + +@interface MWMNoMapInterfaceController () + +@property (weak, nonatomic) IBOutlet WKInterfaceLabel * statePercent; +@property (weak, nonatomic) IBOutlet WKInterfaceGroup * stateImage; +@property (weak, nonatomic) IBOutlet WKInterfaceLabel * stateDescription; + +@property (weak, nonatomic) NSTimer * updateUITimer; +@property (nonatomic) MWMWatchNotification * notificationCenter; +@property (nonatomic) NSUInteger progress; +@property (nonatomic) BOOL needProgressUIUpdate; +@property (nonatomic) NSUInteger progressImageID; +@property (nonatomic) BOOL needProgressImageUIUpdate; + +@end + +@implementation MWMNoMapInterfaceController + +- (void)awakeWithContext:(id)context +{ + [super awakeWithContext:context]; + [self.stateDescription setText:L(@"download_map_iphone")]; +} + +- (void)willActivate +{ + [super willActivate]; + if (self.haveLocation) + [self configInitialUI]; +} + +- (void)didDeactivate +{ + [super didDeactivate]; + [self willLeaveController]; +} + +- (void)configInitialUI +{ + self.progress = NSUIntegerMax; + self.updateUITimer = [NSTimer scheduledTimerWithTimeInterval:kUpdateUIInterval target:self selector:@selector(updateUI) userInfo:nil repeats:YES]; + // Handle retain cycle: self -> notificationCenter -> block -> self + __weak typeof (self) weakSelf = self; + self.notificationCenter = [[MWMWatchNotification alloc] init]; + [self.notificationCenter listenForMessageWithIdentifier:kDownloadingProgressUpdateNotificationId listener:^(NSNumber *progress) + { + __strong typeof (weakSelf) self = weakSelf; + [self configUIForDownload]; + self.progress = MIN(kMaxPercent, MAX(0, kMaxPercent * progress.floatValue)); + }]; +} + +- (void)configUIForDownload +{ + dispatch_async(dispatch_get_main_queue(), + ^{ + [self.statePercent setHidden:NO]; + [self.stateDescription setText:[MWMFrameworkUtils currentCountryName]]; + }); +} + +- (void)updateUI +{ + if (self.progress < kMaxPercent) + { + if (self.needProgressUIUpdate) + { + [self.statePercent setText:[NSString stringWithFormat:@"%@%%", @(self.progress)]]; + self.needProgressUIUpdate = NO; + } + + if (self.needProgressImageUIUpdate) + { + // Workaround for Apple bug. If you try to load @"progress_1" it will load @"progress_10" instead. + // Case @"progress_%@.png" doesn't fix it. + NSString *imageName; + if (self.progressImageID < 10) + imageName = [NSString stringWithFormat:@"progress_0%@", @(self.progressImageID)]; + else + imageName = [NSString stringWithFormat:@"progress_%@", @(self.progressImageID)]; + + [self.stateImage setBackgroundImageNamed:imageName]; + self.needProgressImageUIUpdate = NO; + } + } else if (self.progress == kMaxPercent) + [MWMFrameworkUtils resetFramework]; + if ([MWMFrameworkUtils hasMWM]) + [self popController]; +} + +- (void)willLeaveController +{ + [self.updateUITimer invalidate]; + [self.notificationCenter stopListeningForMessageWithIdentifier:kDownloadingProgressUpdateNotificationId]; + [MWMFrameworkUtils resetFramework]; +} + +- (void)popController +{ + [self willLeaveController]; + [super popController]; +} + +- (void)pushControllerWithName:(NSString *)name context:(id)context +{ + [self willLeaveController]; + [super pushControllerWithName:name context:context]; +} + +#pragma mark - Properties + +- (void)setProgress:(NSUInteger)progress +{ + dispatch_async(dispatch_get_main_queue(), + ^{ + self.needProgressUIUpdate |= (progress != _progress); + _progress = progress; + self.progressImageID = progress / kProgressImagesStep; + }); +} + +- (void)setProgressImageID:(NSUInteger)progressImageID +{ + self.needProgressImageUIUpdate |= (_progressImageID != progressImageID); + _progressImageID = progressImageID; +} + +@end diff --git a/iphone/Maps/maps.me WatchKit Extension/Controllers/Search/Categories/MWMCategoriesInterfaceCell.h b/iphone/Maps/maps.me WatchKit Extension/Controllers/Search/Categories/MWMCategoriesInterfaceCell.h new file mode 100644 index 0000000000..d649a5b024 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit Extension/Controllers/Search/Categories/MWMCategoriesInterfaceCell.h @@ -0,0 +1,18 @@ +// +// MWMCategoriesInterfaceCell.h +// Maps +// +// Created by v.mikhaylenko on 06.04.15. +// Copyright (c) 2015 MapsWithMe. All rights reserved. +// + +#import + +@class WKInterfaceLabel, WKInterfaceImage; + +@interface MWMCategoriesInterfaceCell : NSObject + +@property (weak, nonatomic, readonly) IBOutlet WKInterfaceImage * icon; +@property (weak, nonatomic, readonly) IBOutlet WKInterfaceLabel * label; + +@end diff --git a/iphone/Maps/maps.me WatchKit Extension/Controllers/Search/Categories/MWMCategoriesInterfaceCell.m b/iphone/Maps/maps.me WatchKit Extension/Controllers/Search/Categories/MWMCategoriesInterfaceCell.m new file mode 100644 index 0000000000..35c5a7539a --- /dev/null +++ b/iphone/Maps/maps.me WatchKit Extension/Controllers/Search/Categories/MWMCategoriesInterfaceCell.m @@ -0,0 +1,21 @@ +// +// MWMCategoriesInterfaceCell.m +// Maps +// +// Created by v.mikhaylenko on 06.04.15. +// Copyright (c) 2015 MapsWithMe. All rights reserved. +// + +#import "MWMCategoriesInterfaceCell.h" +#import + +@interface MWMCategoriesInterfaceCell () + +@property (weak, nonatomic, readwrite) IBOutlet WKInterfaceImage * icon; +@property (weak, nonatomic, readwrite) IBOutlet WKInterfaceLabel * label; + +@end + +@implementation MWMCategoriesInterfaceCell + +@end diff --git a/iphone/Maps/maps.me WatchKit Extension/Controllers/Search/Categories/MWMCategoriesInterfaceController.h b/iphone/Maps/maps.me WatchKit Extension/Controllers/Search/Categories/MWMCategoriesInterfaceController.h new file mode 100644 index 0000000000..b28fdad342 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit Extension/Controllers/Search/Categories/MWMCategoriesInterfaceController.h @@ -0,0 +1,13 @@ +// +// MWMCategoriesInterfaceController.h +// Maps +// +// Created by v.mikhaylenko on 06.04.15. +// Copyright (c) 2015 MapsWithMe. All rights reserved. +// + +#import "MWMWKInterfaceController.h" + +@interface MWMCategoriesInterfaceController : MWMWKInterfaceController + +@end diff --git a/iphone/Maps/maps.me WatchKit Extension/Controllers/Search/Categories/MWMCategoriesInterfaceController.mm b/iphone/Maps/maps.me WatchKit Extension/Controllers/Search/Categories/MWMCategoriesInterfaceController.mm new file mode 100644 index 0000000000..90d517f10f --- /dev/null +++ b/iphone/Maps/maps.me WatchKit Extension/Controllers/Search/Categories/MWMCategoriesInterfaceController.mm @@ -0,0 +1,72 @@ +// +// MWMCategoriesInterfaceController.m +// Maps +// +// Created by v.mikhaylenko on 06.04.15. +// Copyright (c) 2015 MapsWithMe. All rights reserved. +// + +#import "MWMCategoriesInterfaceController.h" +#import "MWMWatchLocationTracker.h" +#import "Macros.h" +#import "MWMCategoriesInterfaceCell.h" + +@interface MWMCategoriesInterfaceController() + +@property (weak, nonatomic) IBOutlet WKInterfaceTable * table; +@property (nonatomic, readonly) NSArray * categories; + +@end + +static NSString * const kCategoriesCellIdentifier = @"CategoriesCell"; +static NSString * const kSearchResultControllerIdentifier = @"SearchResultController"; + +@implementation MWMCategoriesInterfaceController + +- (instancetype)init +{ + self = [super init]; + if (self) + _categories = @[@"food", @"hotel", @"tourism", @"transport", @"fuel", @"shop", @"entertainment", @"atm", @"bank", @"wifi", @"parking", @"toilet", @"pharmacy", @"hospital", @"post", @"police"]; + return self; +} + +- (void)awakeWithContext:(id)context +{ + [super awakeWithContext:context]; + [self setTitle:L(@"search")]; +} + +- (void)willActivate +{ + [super willActivate]; + if (self.haveLocation) + [self loadCategories]; +} + +- (void)loadCategories +{ + dispatch_async(dispatch_get_main_queue(), + ^{ + [self.table setNumberOfRows:self.categories.count withRowType:kCategoriesCellIdentifier]; + [self reloadTable]; + }); +} + +- (void)reloadTable +{ + [self.categories enumerateObjectsUsingBlock:^(NSString *str, NSUInteger idx, BOOL *stop) + { + MWMCategoriesInterfaceCell *cell = [self.table rowControllerAtIndex:idx]; + [cell.label setText:L(str)]; + [cell.icon setImageNamed:[NSString stringWithFormat:@"btn_%@", str]]; + }]; +} + +- (void)table:(WKInterfaceTable *)table didSelectRowAtIndex:(NSInteger)rowIndex +{ + NSString *query = self.categories[rowIndex]; + [self pushControllerWithName:kSearchResultControllerIdentifier context:query]; +} + +@end diff --git a/iphone/Maps/maps.me WatchKit Extension/Controllers/Search/SearchResult/MWMSearchResultCell.h b/iphone/Maps/maps.me WatchKit Extension/Controllers/Search/SearchResult/MWMSearchResultCell.h new file mode 100644 index 0000000000..d335723881 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit Extension/Controllers/Search/SearchResult/MWMSearchResultCell.h @@ -0,0 +1,19 @@ +// +// MWMSearchResultCell.h +// Maps +// +// Created by v.mikhaylenko on 08.04.15. +// Copyright (c) 2015 MapsWithMe. All rights reserved. +// + +#import + +@class WKInterfaceLabel; + +@interface MWMSearchResultCell : NSObject + +@property (weak, nonatomic, readonly) IBOutlet WKInterfaceLabel * titleLabel; +@property (weak, nonatomic, readonly) IBOutlet WKInterfaceLabel * categoryLabel; +@property (weak, nonatomic, readonly) IBOutlet WKInterfaceLabel * distanceLabel; + +@end diff --git a/iphone/Maps/maps.me WatchKit Extension/Controllers/Search/SearchResult/MWMSearchResultCell.m b/iphone/Maps/maps.me WatchKit Extension/Controllers/Search/SearchResult/MWMSearchResultCell.m new file mode 100644 index 0000000000..0bfbdcd927 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit Extension/Controllers/Search/SearchResult/MWMSearchResultCell.m @@ -0,0 +1,22 @@ +// +// MWMSearchResultCell.m +// Maps +// +// Created by v.mikhaylenko on 08.04.15. +// Copyright (c) 2015 MapsWithMe. All rights reserved. +// + +#import "MWMSearchResultCell.h" +#import + +@interface MWMSearchResultCell () + +@property (weak, nonatomic, readwrite) IBOutlet WKInterfaceLabel * titleLabel; +@property (weak, nonatomic, readwrite) IBOutlet WKInterfaceLabel * categoryLabel; +@property (weak, nonatomic, readwrite) IBOutlet WKInterfaceLabel * distanceLabel; + +@end + +@implementation MWMSearchResultCell + +@end diff --git a/iphone/Maps/maps.me WatchKit Extension/Controllers/Search/SearchResult/MWMSearchResultController.h b/iphone/Maps/maps.me WatchKit Extension/Controllers/Search/SearchResult/MWMSearchResultController.h new file mode 100644 index 0000000000..6c2c3144ef --- /dev/null +++ b/iphone/Maps/maps.me WatchKit Extension/Controllers/Search/SearchResult/MWMSearchResultController.h @@ -0,0 +1,14 @@ +// +// MWMSearchResultController.h +// Maps +// +// Created by v.mikhaylenko on 08.04.15. +// Copyright (c) 2015 MapsWithMe. All rights reserved. +// + +#import +#import + +@interface MWMSearchResultController : WKInterfaceController + +@end diff --git a/iphone/Maps/maps.me WatchKit Extension/Controllers/Search/SearchResult/MWMSearchResultController.mm b/iphone/Maps/maps.me WatchKit Extension/Controllers/Search/SearchResult/MWMSearchResultController.mm new file mode 100644 index 0000000000..eb1434f4b2 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit Extension/Controllers/Search/SearchResult/MWMSearchResultController.mm @@ -0,0 +1,110 @@ +// +// MWMSearchResultController.m +// Maps +// +// Created by v.mikhaylenko on 08.04.15. +// Copyright (c) 2015 MapsWithMe. All rights reserved. +// + +#import "MWMSearchResultController.h" +#import "MWMSearchResultCell.h" +#import "MWMWatchLocationTracker.h" +#import "MWMWatchEventInfo.h" +#import "MWMWatchNotification.h" +#import "MWMFrameworkUtils.h" +#import "Macros.h" + +static NSString * const kSearchQueryNotificationId = @"SearchQueryNotificationId"; +static NSString * const kSearchResultCellIdentifier = @"SearchResultCell"; +extern NSString * const kNoLocationControllerIdentifier; + +extern NSString * const kSearchResultTitleKey = @"searchResultTitle"; +extern NSString * const kSearchResultCategoryKey = @"searchResultCategory"; +extern NSString * const kSearchResultPointKey = @"searchResultPoint"; + +@interface MWMSearchResultController() + +@property (weak, nonatomic) IBOutlet WKInterfaceTable * table; + +@property (nonatomic) NSMutableArray * searchResult; +@property (copy, nonatomic) NSString * query; + +@end + +@implementation MWMSearchResultController + +- (void)awakeWithContext:(id)context +{ + [super awakeWithContext:context]; + self.query = context; + [self setTitle:L(self.query)]; + [MWMWatchLocationTracker sharedLocationTracker].delegate = self; +} + +- (void)willActivate +{ + [super willActivate]; + self.searchResult = [NSMutableArray array]; + [self searchAroundCurrentLocation]; +} + +- (void)searchAroundCurrentLocation +{ + [MWMFrameworkUtils searchAroundCurrentLocation:self.query.precomposedStringWithCanonicalMapping callback:^(NSMutableArray * result) + { + [self.searchResult addObjectsFromArray:result]; + dispatch_async(dispatch_get_main_queue(), + ^{ + [self.table setNumberOfRows:self.searchResult.count withRowType:kSearchResultCellIdentifier]; + [self reloadTable]; + }); + }]; +} + +- (void)reloadTable +{ + [self.searchResult enumerateObjectsUsingBlock:^(NSDictionary * d, NSUInteger idx, BOOL *stop) + { + MWMSearchResultCell * cell = [self.table rowControllerAtIndex:idx]; + [cell.titleLabel setText:d[kSearchResultTitleKey]]; + [cell.categoryLabel setText:d[kSearchResultCategoryKey]]; + m2::PointD featureCenter; + [d[kSearchResultPointKey] getValue:&featureCenter]; + [self updateDistanceOnCell:cell withPoint:featureCenter]; + }]; +} + +- (void)table:(WKInterfaceTable *)table didSelectRowAtIndex:(NSInteger)rowIndex +{ + NSDictionary * d = self.searchResult[rowIndex]; + m2::PointD featureCenter; + [d[kSearchResultPointKey] getValue:&featureCenter]; + [MWMWatchLocationTracker sharedLocationTracker].destinationPosition = featureCenter; + [self popToRootController]; +} + +- (void)updateDistanceOnCell:(MWMSearchResultCell *)cell withPoint:(m2::PointD)point +{ + NSString * distance = [[MWMWatchLocationTracker sharedLocationTracker] distanceToPoint:point]; + [cell.distanceLabel setText:[NSString stringWithFormat:@"%@", distance]]; +} + +#pragma mark - MWMLocationTrackerDelegate + +- (void)onChangeLocation:(CLLocation *)location +{ + [self.searchResult enumerateObjectsUsingBlock:^(NSDictionary * d, NSUInteger idx, BOOL *stop) + { + MWMSearchResultCell * cell = [self.table rowControllerAtIndex:idx]; + m2::PointD featureCenter; + [d[kSearchResultPointKey] getValue:&featureCenter]; + [self updateDistanceOnCell:cell withPoint:featureCenter]; + }]; +} + +- (void)locationTrackingFailedWithError:(NSError *)error +{ + [self pushControllerWithName:kNoLocationControllerIdentifier context:nil]; +} + +@end diff --git a/iphone/Maps/maps.me WatchKit Extension/FrameworkUtils/MWMFrameworkUtils.h b/iphone/Maps/maps.me WatchKit Extension/FrameworkUtils/MWMFrameworkUtils.h new file mode 100644 index 0000000000..fef97da5d1 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit Extension/FrameworkUtils/MWMFrameworkUtils.h @@ -0,0 +1,26 @@ +// +// MWMFrameworkUtils.h +// Maps +// +// Created by Ilya Grechuhin on 28.04.15. +// Copyright (c) 2015 MapsWithMe. All rights reserved. +// + +#import +#import + +@interface MWMFrameworkUtils : NSObject + ++ (void)prepareFramework; ++ (void)resetFramework; + ++ (BOOL)hasMWM; ++ (NSString *)currentCountryName; + ++ (void)initSoftwareRenderer; ++ (void)releaseSoftwareRenderer; ++ (UIImage *)getFrame:(CGSize)frameSize withZoomModifier:(int)zoomModifier; + ++ (void)searchAroundCurrentLocation:(NSString *)query callback:(void(^)(NSMutableArray *result))reply; + +@end \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit Extension/FrameworkUtils/MWMFrameworkUtils.mm b/iphone/Maps/maps.me WatchKit Extension/FrameworkUtils/MWMFrameworkUtils.mm new file mode 100644 index 0000000000..2d806c55c5 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit Extension/FrameworkUtils/MWMFrameworkUtils.mm @@ -0,0 +1,132 @@ +// +// MWMFrameworkUtils.mm +// Maps +// +// Created by Ilya Grechuhin on 28.04.15. +// Copyright (c) 2015 MapsWithMe. All rights reserved. +// + +#import "MWMFrameworkUtils.h" +#import "MWMWatchLocationTracker.h" + +#include "Framework.h" +#include "indexer/scales.hpp" +#include "platform/location.hpp" +#include "indexer/mercator.hpp" +#include "map/frame_image.hpp" + +extern NSString * const kSearchResultTitleKey; +extern NSString * const kSearchResultCategoryKey; +extern NSString * const kSearchResultPointKey; + +@implementation MWMFrameworkUtils + ++ (void)prepareFramework +{ + Framework & f = GetFramework(); + MWMWatchLocationTracker * tracker = [MWMWatchLocationTracker sharedLocationTracker]; + CLLocationCoordinate2D coordinate = tracker.currentCoordinate; + m2::PointD const current(MercatorBounds::FromLatLon(coordinate.latitude, coordinate.longitude)); + f.SetViewportCenter(current); + location::GpsInfo info = [tracker infoFromCurrentLocation]; + f.OnLocationUpdate(info); +} + ++ (void)resetFramework +{ + //Workaround to reset framework on load new MWM from background app + DeleteFramework(); +} + ++ (BOOL)hasMWM +{ + [MWMFrameworkUtils prepareFramework]; + Framework & f = GetFramework(); + storage::TIndex countryIndex = f.GetCountryIndex(f.GetViewportCenter()); + if (countryIndex == storage::TIndex()) + return f.IsCountryLoaded(f.GetViewportCenter()); + storage::TStatus countryStatus = f.GetCountryTree().GetActiveMapLayout().GetCountryStatus(countryIndex); + return (countryStatus == storage::TStatus::EOnDisk || countryStatus == storage::TStatus::EOnDiskOutOfDate); +} + ++ (NSString *)currentCountryName +{ + [MWMFrameworkUtils prepareFramework]; + Framework & f = GetFramework(); + storage::TIndex countryIndex = f.GetCountryIndex(f.GetViewportCenter()); + if (countryIndex == storage::TIndex()) + return @""; + string countryName = f.GetCountryTree().GetActiveMapLayout().GetFormatedCountryName(countryIndex); + return [NSString stringWithUTF8String:countryName.c_str()]; +} + ++ (void)initSoftwareRenderer +{ + Framework & f = GetFramework(); + if (!f.IsSingleFrameRendererInited()) + f.InitSingleFrameRenderer(graphics::EDensityXHDPI); +} + ++ (void)releaseSoftwareRenderer +{ + GetFramework().ReleaseSingleFrameRenderer(); +} + ++ (UIImage *)getFrame:(CGSize)frameSize withZoomModifier:(int)zoomModifier +{ + [MWMFrameworkUtils prepareFramework]; + Framework & f = GetFramework(); + MWMWatchLocationTracker * tracker = [MWMWatchLocationTracker sharedLocationTracker]; + CLLocationCoordinate2D coordinate = tracker.currentCoordinate; + + m2::PointD const center = MercatorBounds::FromLatLon(coordinate.latitude, coordinate.longitude); + uint32_t const pxWidth = 2 * (uint32_t)frameSize.width; + uint32_t const pxHeight = 2 * (uint32_t)frameSize.height; + Framework::SingleFrameSymbols symbols; + if (tracker.hasDestination) + { + symbols.m_showSearchResult = true; + symbols.m_searchResult = tracker.destinationPosition; + symbols.m_bottomZoom = 12; + } + else + symbols.m_showSearchResult = false; + + FrameImage image; + [MWMFrameworkUtils initSoftwareRenderer]; + f.DrawSingleFrame(center, zoomModifier, pxWidth, pxHeight, image, symbols); + NSData * imadeData = [NSData dataWithBytes:image.m_data.data() length:image.m_data.size()]; + return [UIImage imageWithData:imadeData]; +} + ++ (void)searchAroundCurrentLocation:(NSString *)query callback:(void(^)(NSMutableArray *result))reply +{ + [MWMFrameworkUtils prepareFramework]; + search::SearchParams params; + params.SetSearchMode(search::SearchParams::AROUND_POSITION); + CLLocationCoordinate2D coordinate = [MWMWatchLocationTracker sharedLocationTracker].currentCoordinate; + params.SetPosition(coordinate.latitude, coordinate.longitude); + params.m_query = query.UTF8String; + params.m_callback = ^(search::Results const & results) + { + if (results.IsEndMarker()) + return; + size_t const maxResultsForWatch = MIN(results.GetCount(), 20); + NSMutableArray * res = [NSMutableArray arrayWithCapacity:maxResultsForWatch]; + for (size_t index = 0; index < maxResultsForWatch; ++index) + { + search::Result result = results.GetResult(index); + NSMutableDictionary * d = [NSMutableDictionary dictionary]; + d[kSearchResultTitleKey] = [NSString stringWithUTF8String:result.GetString()]; + d[kSearchResultCategoryKey] = [NSString stringWithUTF8String:result.GetFeatureType()]; + m2::PointD const featureCenter = result.GetFeatureCenter(); + d[kSearchResultPointKey] = [NSValue value:&featureCenter withObjCType:@encode(m2::PointD)]; + res[index] = d; + } + reply(res); + }; + params.SetForceSearch(true); + GetFramework().Search(params); +} + +@end \ No newline at end of file diff --git a/iphone/Maps/maps.me WatchKit Extension/Images.xcassets/README__ignoredByTemplate__ b/iphone/Maps/maps.me WatchKit Extension/Images.xcassets/README__ignoredByTemplate__ new file mode 100644 index 0000000000..b601d38347 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit Extension/Images.xcassets/README__ignoredByTemplate__ @@ -0,0 +1 @@ +Did you know that git does not support storing empty directories? diff --git a/iphone/Maps/maps.me WatchKit Extension/Info.plist b/iphone/Maps/maps.me WatchKit Extension/Info.plist new file mode 100644 index 0000000000..06af283708 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit Extension/Info.plist @@ -0,0 +1,38 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + maps.me WatchKit Extension + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + ${BUNDLE_IDENTIFIER}.watchkitextension + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + XPC! + CFBundleShortVersionString + ${CURRENT_PROJECT_VERSION} + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSExtension + + NSExtensionAttributes + + WKAppBundleIdentifier + ${BUNDLE_IDENTIFIER}.watchkitapp + + NSExtensionPointIdentifier + com.apple.watchkit + + RemoteInterfacePrincipalClass + InterfaceController + + diff --git a/iphone/Maps/maps.me WatchKit Extension/LocationTracker/MWMWatchLocationTracker.h b/iphone/Maps/maps.me WatchKit Extension/LocationTracker/MWMWatchLocationTracker.h new file mode 100644 index 0000000000..d48fb0146c --- /dev/null +++ b/iphone/Maps/maps.me WatchKit Extension/LocationTracker/MWMWatchLocationTracker.h @@ -0,0 +1,39 @@ +// +// MWMWatchLocationTracker.h +// Maps +// +// Created by v.mikhaylenko on 09.04.15. +// Copyright (c) 2015 MapsWithMe. All rights reserved. +// + +#import "MWMWatchLocationTrackerDelegate.h" + +#import +#import + +#include "platform/location.hpp" + +@interface MWMWatchLocationTracker : NSObject + ++ (instancetype)sharedLocationTracker; +- (location::GpsInfo)infoFromCurrentLocation; +- (NSString *)distanceToPoint:(m2::PointD const &)point; + ++ (instancetype)alloc __attribute__((unavailable("alloc not available, call sharedLocationTracker instead"))); +- (instancetype)init __attribute__((unavailable("init not available, call sharedLocation instead"))); ++ (instancetype)new __attribute__((unavailable("new not available, call sharedLocationTracker instead"))); + +@property (nonatomic, readonly) CLLocationManager * locationManager; +@property (weak, nonatomic) id delegate; +@property (nonatomic) m2::PointD destinationPosition; +@property (nonatomic, readonly) BOOL hasLocation; +@property (nonatomic, readonly) BOOL hasDestination; +@property (nonatomic, readonly) BOOL locationServiceEnabled; +@property (nonatomic, readonly) CLLocationCoordinate2D currentCoordinate; + +- (void)clearDestination; + +- (BOOL)arrivedToDestination; +- (BOOL)movementStopped; + +@end diff --git a/iphone/Maps/maps.me WatchKit Extension/LocationTracker/MWMWatchLocationTracker.mm b/iphone/Maps/maps.me WatchKit Extension/LocationTracker/MWMWatchLocationTracker.mm new file mode 100644 index 0000000000..4b919ad485 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit Extension/LocationTracker/MWMWatchLocationTracker.mm @@ -0,0 +1,168 @@ +// +// MWMWatchLocationTracker.m +// Maps +// +// Created by v.mikhaylenko on 09.04.15. +// Copyright (c) 2015 MapsWithMe. All rights reserved. +// + +#import "MWMWatchLocationTracker.h" + +#include "indexer/mercator.hpp" +#include "platform/measurement_utils.hpp" + +static CLLocationDistance const kNoMovementThreshold = 5.0; +static CLLocationDistance const kDistanceFilter = 5.0; + +static CLLocationDistance const kDistanceToDestinationThreshold = 5.0; + +@interface MWMWatchLocationTracker () + +@property (nonatomic, readwrite) CLLocationManager * locationManager; +@property (nonatomic) m2::PointD lastPosition; +@property (nonatomic, readwrite) BOOL hasLocation; +@property (nonatomic, readwrite) BOOL hasDestination; + +@end + +@implementation MWMWatchLocationTracker + ++ (instancetype)sharedLocationTracker +{ + static dispatch_once_t onceToken = 0; + static MWMWatchLocationTracker *tracker = nil; + dispatch_once(&onceToken, + ^{ + tracker = [[super alloc] initUniqueInstance]; + }); + return tracker; +} + +- (instancetype)initUniqueInstance +{ + self = [super init]; + if (self) + { + self.locationManager = [[CLLocationManager alloc] init]; + [self.locationManager requestAlwaysAuthorization]; + self.locationManager.delegate = self; + self.locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation; + self.locationManager.activityType = CLActivityTypeFitness; + self.locationManager.distanceFilter = kDistanceFilter; + [self.locationManager startUpdatingLocation]; + CLLocationCoordinate2D coordinate = self.currentCoordinate; + self.lastPosition = MercatorBounds::FromLatLon(coordinate.latitude, coordinate.longitude); + self.hasLocation = YES; + self.hasDestination = NO; + } + return self; +} + +- (location::GpsInfo)infoFromCurrentLocation +{ + location::GpsInfo info; + info.m_source = location::EAppleNative; + + CLLocation *location = self.locationManager.location; + CLLocationCoordinate2D currentCoordinate = location.coordinate; + info.m_latitude = currentCoordinate.latitude; + info.m_longitude = currentCoordinate.longitude; + info.m_timestamp = [location.timestamp timeIntervalSince1970]; + + if (location.horizontalAccuracy >= 0.0) + info.m_horizontalAccuracy = location.horizontalAccuracy; + + if (location.verticalAccuracy >= 0.0) + { + info.m_verticalAccuracy = location.verticalAccuracy; + info.m_altitude = location.altitude; + } + + if (location.course >= 0.0) + info.m_bearing = location.course; + + if (location.speed >= 0.0) + info.m_speed = location.speed; + + return info; +} + +- (NSString *)distanceToPoint:(m2::PointD const &)point +{ + CLLocationCoordinate2D coordinate = self.currentCoordinate; + double const d = MercatorBounds::DistanceOnEarth(point, MercatorBounds::FromLatLon(coordinate.latitude, coordinate.longitude)); + + string distance; + if (MeasurementUtils::FormatDistance(d, distance)) + return [NSString stringWithUTF8String:distance.c_str()]; + return @""; +} + +- (BOOL)locationServiceEnabled +{ + CLAuthorizationStatus status = [CLLocationManager authorizationStatus]; + BOOL const haveAuthorization = !(status == kCLAuthorizationStatusNotDetermined || status == kCLAuthorizationStatusRestricted || status == kCLAuthorizationStatusDenied); + return haveAuthorization; +} + +- (CLLocationCoordinate2D)currentCoordinate +{ + return self.locationManager.location.coordinate; +} + +- (BOOL)arrivedToDestination +{ + if (self.hasDestination) + { + CLLocationCoordinate2D coordinate = self.currentCoordinate; + m2::PointD currentPosition (MercatorBounds::FromLatLon(coordinate.latitude, coordinate.longitude)); + double const distance = MercatorBounds::DistanceOnEarth(self.destinationPosition, currentPosition); + return distance <= kDistanceToDestinationThreshold; + } + return NO; +} + +- (BOOL)movementStopped +{ + CLLocationCoordinate2D coordinate = self.currentCoordinate; + m2::PointD currentPosition (MercatorBounds::FromLatLon(coordinate.latitude, coordinate.longitude)); + + double const distance = MercatorBounds::DistanceOnEarth(self.lastPosition, currentPosition); + self.lastPosition = currentPosition; + return distance < kNoMovementThreshold; +} + +- (void)setDestinationPosition:(m2::PointD)destinationPosition +{ + _destinationPosition = destinationPosition; + self.hasDestination = YES; +} + +- (void)clearDestination +{ + self.hasDestination = NO; +} + +#pragma mark - CLLocationManagerDelegate + +- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations +{ + self.hasLocation = YES; + if ([self.delegate respondsToSelector:@selector(onChangeLocation:)]) + [self.delegate onChangeLocation:locations.lastObject]; +} + +- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error +{ + self.hasLocation = NO; + if ([self.delegate respondsToSelector:@selector(locationTrackingFailedWithError:)]) + [self.delegate locationTrackingFailedWithError:error]; +} + +- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status +{ + if ([self.delegate respondsToSelector:@selector(didChangeAuthorizationStatus:)]) + [self.delegate didChangeAuthorizationStatus:self.locationServiceEnabled]; +} + +@end diff --git a/iphone/Maps/maps.me WatchKit Extension/LocationTracker/MWMWatchLocationTrackerDelegate.h b/iphone/Maps/maps.me WatchKit Extension/LocationTracker/MWMWatchLocationTrackerDelegate.h new file mode 100644 index 0000000000..c9c9ebb024 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit Extension/LocationTracker/MWMWatchLocationTrackerDelegate.h @@ -0,0 +1,19 @@ +// +// MWMWatchLocationTrackerDelegate.h +// Maps +// +// Created by Ilya Grechuhin on 22.04.15. +// Copyright (c) 2015 MapsWithMe. All rights reserved. +// + +#import +#import + +@protocol MWMWatchLocationTrackerDelegate + +@optional +- (void)onChangeLocation:(CLLocation *)location; +- (void)locationTrackingFailedWithError:(NSError *)error; +- (void)didChangeAuthorizationStatus:(BOOL)haveAuthorization; + +@end diff --git a/iphone/Maps/maps.me WatchKit Extension/MWMFollowController.h b/iphone/Maps/maps.me WatchKit Extension/MWMFollowController.h new file mode 100644 index 0000000000..7b0f6dc627 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit Extension/MWMFollowController.h @@ -0,0 +1,13 @@ +// +// MWMFollowController.h +// Maps +// +// Created by v.mikhaylenko on 10.04.15. +// Copyright (c) 2015 MapsWithMe. All rights reserved. +// + +#import "MWMMapController.h" + +@interface MWMFollowController : MWMMapController + +@end diff --git a/iphone/Maps/maps.me WatchKit Extension/MWMFollowController.mm b/iphone/Maps/maps.me WatchKit Extension/MWMFollowController.mm new file mode 100644 index 0000000000..09fa88069b --- /dev/null +++ b/iphone/Maps/maps.me WatchKit Extension/MWMFollowController.mm @@ -0,0 +1,85 @@ +// +// MWMFollowController.m +// Maps +// +// Created by v.mikhaylenko on 10.04.15. +// Copyright (c) 2015 MapsWithMe. All rights reserved. +// + +#import "MWMFollowController.h" +#import "FrameworkUtils.h" +#import "MWMWatchLocationTracker.h" + +#include "../../../platform/location.hpp" +#include "Framework.h" + +@interface MWMFollowController() + +@property (weak, nonatomic) IBOutlet WKInterfaceGroup *mapGroup; +@property (assign, nonatomic) CGPoint destinationPoint; + +@end + +static NSString * const kFinishControllerIdentifier = @"FinishController"; + +@implementation MWMFollowController + +- (void)awakeWithContext:(id)context +{ + [super awakeWithContext:context]; + NSValue *point = context; + self.destinationPoint = point.CGPointValue; +} + +- (void)didDeactivate +{ + [super didDeactivate]; + Framework & f = GetFramework(); + f.GetBookmarkManager().UserMarksClear(UserMarkContainer::SEARCH_MARK); +} + +- (BOOL)firstPoint:(m2::PointD const &)pt1 isEqualToPoint:(m2::PointD const &)pt2 +{ + static double const accuracy = 0.00001; + + if (fabs(pt2.x - pt1.x) < accuracy && fabs(pt2.y - pt1.y) < accuracy) + return YES; + + return NO; +} + +#pragma mark - Base class virtual methods + +- (void)initializeFramework +{ + Framework & f = GetFramework(); + f.GetBookmarkManager().UserMarksClear(UserMarkContainer::SEARCH_MARK); + m2::PointD pt(self.destinationPoint.x, self.destinationPoint.y); + f.GetBookmarkManager().UserMarksAddMark(UserMarkContainer::SEARCH_MARK, pt); + f.Invalidate(); +} + +- (void)prepareFramework +{ + MWMWatchLocationTracker *tracker = [MWMWatchLocationTracker sharedLocationTracker]; + CLLocation *location = [[tracker locationManager] location]; + CLLocationCoordinate2D coordinate = location.coordinate; + m2::PointD destination (self.destinationPoint.x, self.destinationPoint.y); + m2::PointD current (MercatorBounds::FromLatLon(coordinate.latitude, coordinate.longitude)); + + if ([self firstPoint:current isEqualToPoint:destination]) + { + [self pushControllerWithName:kFinishControllerIdentifier context:nil]; + return; + } + + location::GpsInfo info = [tracker infoFromCurrentLocation]; + + Framework & f = GetFramework(); + [FrameworkUtils setWatchScreenRectWithCenterPoint:current targetPoint:destination]; + f.OnLocationUpdate(info); + + [self setTitle:[tracker distanceToPoint:destination]]; +} + +@end diff --git a/iphone/Maps/maps.me WatchKit Extension/maps.me WatchKit Extension.entitlements b/iphone/Maps/maps.me WatchKit Extension/maps.me WatchKit Extension.entitlements new file mode 100644 index 0000000000..9081537c41 --- /dev/null +++ b/iphone/Maps/maps.me WatchKit Extension/maps.me WatchKit Extension.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.security.application-groups + + group.mapsme.watchkit + + + diff --git a/iphone/Maps/maps.me dbg.entitlements b/iphone/Maps/maps.me dbg.entitlements new file mode 100644 index 0000000000..9081537c41 --- /dev/null +++ b/iphone/Maps/maps.me dbg.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.security.application-groups + + group.mapsme.watchkit + + +