[ios] Added real data to navigation dashboard.

This commit is contained in:
v.mikhaylenko 2015-07-23 11:17:24 +03:00 committed by Alex Zolotarev
parent d15c967af6
commit edb49ef550
90 changed files with 857 additions and 489 deletions

View file

@ -9,6 +9,7 @@
#import "MWMSideMenuManager.h"
#include "map/user_mark.hpp"
#include "platform/location.hpp"
@class MapViewController;
@ -39,7 +40,11 @@
@property (nonatomic, readonly) BOOL isDirectionViewShown;
- (void)dismissPlacePage;
- (void)stopBuildingRoute;
- (void)showPlacePageWithUserMark:(unique_ptr<UserMarkCopy>)userMark;
#pragma mark - MWMNavigationDashboardManager
- (void)setupRoutingDashboard:(location::FollowingInfo const &)info;
- (void)routingReady;
@end

View file

@ -7,6 +7,7 @@
//
#import "Framework.h"
#import "MapsAppDelegate.h"
#import "MapViewController.h"
#import "MWMLocationButton.h"
#import "MWMMapViewControlsManager.h"
@ -16,6 +17,7 @@
#import "MWMSideMenuManager.h"
#import "MWMSideMenuManagerDelegate.h"
#import "MWMZoomButtons.h"
#import "RouteState.h"
@interface MWMMapViewControlsManager () <MWMPlacePageViewManagerProtocol, MWMNavigationDashboardManagerDelegate, MWMSideMenuManagerProtocol>
@ -27,6 +29,7 @@
@property (weak, nonatomic) MapViewController * ownerController;
@property (nonatomic) BOOL disableStandbyOnRouteFollowing;
@property (nonatomic) m2::PointD routeDestination;
@end
@ -72,11 +75,6 @@
[self.placePageManager showPlacePageWithUserMark:std::move(userMark)];
}
- (void)stopBuildingRoute
{
[self.placePageManager stopBuildingRoute];
}
#pragma mark - MWMSideMenuManagerProtocol
- (void)sideMenuDidUpdateLayout
@ -106,16 +104,20 @@
{
self.routeDestination = destination;
// Determine route type
enum MWMNavigationRouteType type = MWMNavigationRouteTypeVehicle;
[self buildRouteWithType:type];
[self buildRouteWithType:GetFramework().GetRouter()];
}
#pragma mark - MWMNavigationDashboardManager
- (void)buildRouteWithType:(enum MWMNavigationRouteType)type
- (void)setupRoutingDashboard:(location::FollowingInfo const &)info
{
[self.navigationManager setupDashboard:info];
}
- (void)buildRouteWithType:(enum routing::RouterType)type
{
GetFramework().BuildRoute(self.routeDestination, 0 /* timeoutSec */);
self.navigationManager.state = MWMNavigationDashboardStatePlanning;
// GetFramework().BuildRoute(self.routeDestination, 0 /* timeoutSec */);
}
- (void)navigationDashBoardDidUpdate
@ -128,6 +130,37 @@
}];
}
- (void)didStartFollowing
{
self.zoomHidden = NO;
GetFramework().FollowRoute();
self.disableStandbyOnRouteFollowing = YES;
// [RouteState save];
}
- (void)didCancelRouting
{
GetFramework().CloseRouting();
self.disableStandbyOnRouteFollowing = NO;
// [RouteState remove];
}
- (void)routingReady
{
self.navigationManager.state = MWMNavigationDashboardStateReady;
}
- (void)setDisableStandbyOnRouteFollowing:(BOOL)disableStandbyOnRouteFollowing
{
if (_disableStandbyOnRouteFollowing == disableStandbyOnRouteFollowing)
return;
_disableStandbyOnRouteFollowing = disableStandbyOnRouteFollowing;
if (disableStandbyOnRouteFollowing)
[[MapsAppDelegate theApp] disableStandby];
else
[[MapsAppDelegate theApp] enableStandby];
}
#pragma mark - Properties
@synthesize menuState = _menuState;

View file

@ -0,0 +1,29 @@
//
// MWMNavigationDashboardEntity.h
// Maps
//
// Created by v.mikhaylenko on 22.07.15.
// Copyright (c) 2015 MapsWithMe. All rights reserved.
//
#import <Foundation/Foundation.h>
#include "platform/location.hpp"
@interface MWMNavigationDashboardEntity : NSObject
@property (nonatomic, readonly) NSString * targetDistance;
@property (nonatomic, readonly) NSString * targetUnits;
@property (nonatomic, readonly) NSString * distanceToTurn;
@property (nonatomic, readonly) NSString * turnUnits;
@property (nonatomic, readonly) UIImage * turnImage;
@property (nonatomic, readonly) NSUInteger roundExitNumber;
@property (nonatomic, readonly) NSUInteger timeToTarget;
- (instancetype)initWithFollowingInfo:(location::FollowingInfo const &)info;
- (void)updateWithFollowingInfo:(location::FollowingInfo const &)info;
- (instancetype)init __attribute__((unavailable("init is not available")));
+ (instancetype)new __attribute__((unavailable("init is not available")));
@end

View file

@ -0,0 +1,75 @@
//
// MWMNavigationDashboardEntity.m
// Maps
//
// Created by v.mikhaylenko on 22.07.15.
// Copyright (c) 2015 MapsWithMe. All rights reserved.
//
#import "MWMNavigationDashboardEntity.h"
#import "Framework.h"
@implementation MWMNavigationDashboardEntity
- (instancetype)initWithFollowingInfo:(location::FollowingInfo const &)info
{
self = [super init];
if (self)
[self configure:info];
return self;
}
- (void)updateWithFollowingInfo:(location::FollowingInfo const &)info
{
[self configure:info];
}
- (void)configure:(location::FollowingInfo const &)info
{
_timeToTarget = info.m_time;
_targetDistance = [NSString stringWithUTF8String:info.m_distToTarget.c_str()];
_targetUnits = [NSString stringWithUTF8String:info.m_targetUnitsSuffix.c_str()];
_distanceToTurn = [NSString stringWithUTF8String:info.m_distToTurn.c_str()];
_turnUnits = [NSString stringWithUTF8String:info.m_turnUnitsSuffix.c_str()];
_turnImage = image(info.m_turn);
if (info.m_turn == routing::turns::TurnDirection::EnterRoundAbout)
_roundExitNumber = info.m_exitNum;
}
UIImage * image(routing::turns::TurnDirection t)
{
if (GetFramework().GetRouter() == routing::RouterType::Pedestrian)
return [UIImage imageNamed:@"ic_direction"];
using namespace routing::turns;
switch (t)
{
case TurnDirection::TurnSlightRight:
return [UIImage imageNamed:@"slight_right"];
case TurnDirection::TurnRight:
return [UIImage imageNamed:@"simple_right"];
case TurnDirection::TurnSharpRight:
return [UIImage imageNamed:@"sharp_right"];
case TurnDirection::TurnSlightLeft:
return [UIImage imageNamed:@"slight_left"];
case TurnDirection::TurnLeft:
return [UIImage imageNamed:@"simple_left"];
case TurnDirection::TurnSharpLeft:
return [UIImage imageNamed:@"sharp_left"];
case TurnDirection::UTurn:
return [UIImage imageNamed:@"uturn"];
case TurnDirection::ReachedYourDestination:
return [UIImage imageNamed:@"finish_point"];
case TurnDirection::EnterRoundAbout:
return [UIImage imageNamed:@"round"];
case TurnDirection::StartAtEndOfStreet:
case TurnDirection::LeaveRoundAbout:
case TurnDirection::StayOnRoundAbout:
case TurnDirection::TakeTheExit:
case TurnDirection::Count:
case TurnDirection::GoStraight:
case TurnDirection::NoTurn:
return [UIImage imageNamed:@"straight"];
}}
@end

View file

@ -6,29 +6,31 @@
// Copyright (c) 2015 MapsWithMe. All rights reserved.
//
typedef NS_ENUM(NSUInteger, MWMNavigationRouteType)
{
MWMNavigationRouteTypePedestrian,
MWMNavigationRouteTypeVehicle
};
#include "Framework.h"
#include "platform/location.hpp"
typedef NS_ENUM(NSUInteger, MWMNavigationDashboardState)
{
MWMNavigationDashboardStateHidden,
MWMNavigationDashboardStatePlanning,
MWMNavigationDashboardStateReady,
MWMNavigationDashboardStateNavigation
};
@protocol MWMNavigationDashboardManagerDelegate <NSObject>
- (void)buildRouteWithType:(enum MWMNavigationRouteType)type;
- (void)buildRouteWithType:(enum routing::RouterType)type;
- (void)navigationDashBoardDidUpdate;
- (void)didStartFollowing;
- (void)didCancelRouting;
@end
@class MWMNavigationDashboardEntity;
@interface MWMNavigationDashboardManager : NSObject
@property (nonatomic, readonly) MWMNavigationDashboardEntity * entity;
@property (nonatomic) MWMNavigationDashboardState state;
@property (nonatomic) CGFloat topBound;
@property (nonatomic, readonly) CGFloat height;
@ -36,7 +38,7 @@ typedef NS_ENUM(NSUInteger, MWMNavigationDashboardState)
- (instancetype)init __attribute__((unavailable("init is not available")));
- (instancetype)initWithParentView:(UIView *)view delegate:(id<MWMNavigationDashboardManagerDelegate>)delegate;
- (void)setupDashboard:(location::FollowingInfo const &)info;
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)orientation;
@end

View file

@ -8,6 +8,7 @@
#import "Macros.h"
#import "MWMNavigationDashboard.h"
#import "MWMNavigationDashboardEntity.h"
#import "MWMNavigationDashboardManager.h"
#import "MWMRoutePreview.h"
@ -25,6 +26,7 @@
@property (weak, nonatomic) UIView * ownerView;
@property (weak, nonatomic) id<MWMNavigationDashboardManagerDelegate> delegate;
@property (nonatomic, readwrite) MWMNavigationDashboardEntity * entity;
@end
@implementation MWMNavigationDashboardManager
@ -71,13 +73,43 @@
self.navigationDashboard = navigationDashboard;
}
- (void)setupDashboard:(location::FollowingInfo const &)info
{
if (!self.entity)
self.entity = [[MWMNavigationDashboardEntity alloc] initWithFollowingInfo:info];
else
[self.entity updateWithFollowingInfo:info];
[self updateDashboard];
}
- (void)updateDashboard
{
[self.routePreviewLandscape configureWithEntity:self.entity];
[self.routePreviewPortrait configureWithEntity:self.entity];
[self.navigationDashboardLandscape configureWithEntity:self.entity];
[self.navigationDashboardPortrait configureWithEntity:self.entity];
}
#pragma mark - MWMRoutePreview
- (IBAction)routePreviewChange:(UIButton *)sender
{
[self showGoButton:[sender isEqual:self.routePreview.pedestrian]];
// enum MWMNavigationRouteType const type = [sender isEqual:self.routePreview.pedestrian] ? MWMNavigationRouteTypePedestrian : MWMNavigationRouteTypeVehicle;
// [self.delegate buildRouteWithType:type];
if (sender.selected)
return;
sender.selected = YES;
auto & f = GetFramework();
if ([sender isEqual:self.routePreview.pedestrian])
{
self.routePreview.vehicle.selected = NO;
f.SetRouter(routing::RouterType::Pedestrian);
}
else
{
self.routePreview.pedestrian.selected = NO;
f.SetRouter(routing::RouterType::Vehicle);
}
f.CloseRouting();
[self.delegate buildRouteWithType:f.GetRouter()];
}
#pragma mark - MWMNavigationDashboard
@ -85,6 +117,7 @@
- (IBAction)navigationCancelPressed:(UIButton *)sender
{
self.state = MWMNavigationDashboardStateHidden;
[self.delegate didCancelRouting];
}
#pragma mark - MWMNavigationGo
@ -92,6 +125,7 @@
- (IBAction)navigationGoPressed:(UIButton *)sender
{
self.state = MWMNavigationDashboardStateNavigation;
[self.delegate didStartFollowing];
}
#pragma mark - State changes
@ -105,6 +139,29 @@
- (void)showStatePlanning
{
[self.routePreview addToView:self.ownerView];
[self.routePreviewLandscape statePlaning];
[self.routePreviewPortrait statePlaning];
auto const state = GetFramework().GetRouter();
switch (state)
{
case routing::RouterType::Pedestrian :
self.routePreviewLandscape.pedestrian.selected = YES;
self.routePreviewPortrait.pedestrian.selected = YES;
self.routePreviewPortrait.vehicle.selected = NO;
self.routePreviewLandscape.vehicle.selected = NO;
break;
case routing::RouterType::Vehicle:
self.routePreviewLandscape.vehicle.selected = YES;
self.routePreviewPortrait.vehicle.selected = YES;
self.routePreviewLandscape.pedestrian.selected = NO;
self.routePreviewPortrait.pedestrian.selected = NO;
break;
}
}
- (void)showStateReady
{
[self showGoButton:YES];
}
- (void)showStateNavigation
@ -115,7 +172,8 @@
- (void)showGoButton:(BOOL)show
{
self.routePreviewPortrait.showGoButton = self.routePreviewLandscape.showGoButton = show;
[self.routePreviewPortrait showGoButtonAnimated:show];
[self.routePreviewLandscape showGoButtonAnimated:show];
[self.delegate navigationDashBoardDidUpdate];
}
@ -131,11 +189,15 @@
[self hideState];
break;
case MWMNavigationDashboardStatePlanning:
NSAssert(_state == MWMNavigationDashboardStateHidden, @"Invalid state change");
NSAssert(_state == MWMNavigationDashboardStateHidden || _state == MWMNavigationDashboardStateReady, @"Invalid state change");
[self showStatePlanning];
break;
case MWMNavigationDashboardStateNavigation:
case MWMNavigationDashboardStateReady:
NSAssert(_state == MWMNavigationDashboardStatePlanning, @"Invalid state change");
[self showStateReady];
break;
case MWMNavigationDashboardStateNavigation:
NSAssert(_state == MWMNavigationDashboardStateReady, @"Invalid state change");
[self showStateNavigation];
break;
}
@ -155,13 +217,11 @@
{
case MWMNavigationDashboardStateHidden:
return 0.0;
break;
case MWMNavigationDashboardStatePlanning:
case MWMNavigationDashboardStateReady:
return self.routePreview.visibleHeight;
break;
case MWMNavigationDashboardStateNavigation:
return self.navigationDashboard.height;
break;
return self.navigationDashboard.visibleHeight;
}
}

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="7706" systemVersion="14D131" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="7706" systemVersion="14E46" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7703"/>
@ -12,148 +12,164 @@
</placeholder>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<view contentMode="scaleToFill" id="e3c-EN-9M6" customClass="MWMNavigationDashboard">
<rect key="frame" x="0.0" y="0.0" width="736" height="96"/>
<rect key="frame" x="0.0" y="0.0" width="736" height="76"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="qvD-ft-rlE" userLabel="Cancel">
<rect key="frame" x="0.0" y="36" width="40" height="40"/>
<constraints>
<constraint firstAttribute="width" constant="40" id="Yuk-DZ-Oty"/>
<constraint firstAttribute="height" constant="40" id="wD3-8H-mzJ"/>
</constraints>
<state key="normal" image="ic_cancel">
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
</button>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ZzU-jx-uYa" userLabel="Azimut Box">
<rect key="frame" x="56" y="33" width="190" height="52"/>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="iZT-dR-FZ0">
<rect key="frame" x="0.0" y="0.0" width="736" height="76"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="ic_direction" translatesAutoresizingMaskIntoConstraints="NO" id="1r7-WJ-4zD">
<rect key="frame" x="0.0" y="0.0" width="52" height="52"/>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="qvD-ft-rlE" userLabel="Cancel">
<rect key="frame" x="0.0" y="16" width="40" height="40"/>
<constraints>
<constraint firstAttribute="width" constant="52" id="vnM-Ps-EOE"/>
<constraint firstAttribute="width" constant="40" id="Yuk-DZ-Oty"/>
<constraint firstAttribute="height" constant="40" id="wD3-8H-mzJ"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="sMk-g9-2oJ">
<rect key="frame" x="60" y="5" width="20.5" height="42"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="36"/>
<color key="textColor" red="0.12549019610000001" green="0.58823529409999997" blue="0.95294117649999999" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="km" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Vo5-Yp-xWN">
<rect key="frame" x="81" y="21" width="26" height="22"/>
<state key="normal" image="ic_cancel">
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<connections>
<action selector="navigationCancelPressed:" destination="-1" eventType="touchUpInside" id="cDi-Qi-vvq"/>
</connections>
</button>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ZzU-jx-uYa" userLabel="Azimut Box">
<rect key="frame" x="56" y="9" width="190" height="54"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="ic_direction" translatesAutoresizingMaskIntoConstraints="NO" id="1r7-WJ-4zD">
<rect key="frame" x="0.0" y="0.0" width="54" height="54"/>
<constraints>
<constraint firstAttribute="width" constant="54" id="vnM-Ps-EOE"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="sMk-g9-2oJ">
<rect key="frame" x="62" y="5" width="20.5" height="42"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="36"/>
<color key="textColor" red="0.12549019610000001" green="0.58823529409999997" blue="0.95294117649999999" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="km" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Vo5-Yp-xWN">
<rect key="frame" x="83" y="21" width="26" height="22"/>
<constraints>
<constraint firstAttribute="height" constant="21.5" id="2Xd-X9-QxK"/>
<constraint firstAttribute="height" constant="21.5" id="BJ0-k8-PFK"/>
<constraint firstAttribute="width" constant="25.5" id="OEQ-uY-Tnf"/>
<constraint firstAttribute="width" constant="26" id="rCL-RY-GbF"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="18"/>
<color key="textColor" red="0.12549019610000001" green="0.58823529409999997" blue="0.95294117649999999" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
<variation key="default">
<mask key="constraints">
<exclude reference="2Xd-X9-QxK"/>
<exclude reference="rCL-RY-GbF"/>
</mask>
</variation>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="height" constant="21.5" id="2Xd-X9-QxK"/>
<constraint firstAttribute="height" constant="21.5" id="BJ0-k8-PFK"/>
<constraint firstAttribute="width" constant="25.5" id="OEQ-uY-Tnf"/>
<constraint firstAttribute="width" constant="26" id="rCL-RY-GbF"/>
<constraint firstItem="sMk-g9-2oJ" firstAttribute="baseline" secondItem="Vo5-Yp-xWN" secondAttribute="baseline" id="3IZ-7s-BUO"/>
<constraint firstAttribute="bottom" secondItem="sMk-g9-2oJ" secondAttribute="bottom" constant="7" id="4c5-vj-n8i"/>
<constraint firstItem="Vo5-Yp-xWN" firstAttribute="leading" secondItem="sMk-g9-2oJ" secondAttribute="trailing" constant="1" id="DHi-Oq-8ah"/>
<constraint firstItem="1r7-WJ-4zD" firstAttribute="top" secondItem="ZzU-jx-uYa" secondAttribute="top" id="DLs-tP-313"/>
<constraint firstItem="1r7-WJ-4zD" firstAttribute="leading" secondItem="ZzU-jx-uYa" secondAttribute="leading" id="HK7-8o-2bx"/>
<constraint firstItem="sMk-g9-2oJ" firstAttribute="top" secondItem="ZzU-jx-uYa" secondAttribute="top" constant="5" id="Ixf-kz-eFi"/>
<constraint firstItem="Vo5-Yp-xWN" firstAttribute="leading" secondItem="sMk-g9-2oJ" secondAttribute="trailing" constant="4" id="JKZ-WH-QTe"/>
<constraint firstAttribute="bottom" secondItem="1r7-WJ-4zD" secondAttribute="bottom" id="JsW-d1-58r"/>
<constraint firstItem="Vo5-Yp-xWN" firstAttribute="leading" secondItem="sMk-g9-2oJ" secondAttribute="trailing" constant="3.5" id="RsH-2c-74p"/>
<constraint firstItem="sMk-g9-2oJ" firstAttribute="leading" secondItem="1r7-WJ-4zD" secondAttribute="trailing" constant="8" id="XLA-lU-avx"/>
<constraint firstItem="Vo5-Yp-xWN" firstAttribute="leading" secondItem="sMk-g9-2oJ" secondAttribute="trailing" constant="4" id="chw-Mu-gak"/>
<constraint firstAttribute="width" constant="190" id="pfA-s3-hU5"/>
<constraint firstAttribute="trailing" secondItem="Vo5-Yp-xWN" secondAttribute="trailing" id="sCi-Lc-G8B"/>
<constraint firstItem="sMk-g9-2oJ" firstAttribute="baseline" secondItem="Vo5-Yp-xWN" secondAttribute="baseline" id="t80-eN-Ymv"/>
<constraint firstAttribute="height" constant="54" id="y3P-ga-yXV"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="18"/>
<color key="textColor" red="0.12549019610000001" green="0.58823529409999997" blue="0.95294117649999999" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
<variation key="default">
<mask key="constraints">
<exclude reference="2Xd-X9-QxK"/>
<exclude reference="rCL-RY-GbF"/>
<exclude reference="3IZ-7s-BUO"/>
<exclude reference="JKZ-WH-QTe"/>
<exclude reference="RsH-2c-74p"/>
<exclude reference="chw-Mu-gak"/>
<exclude reference="sCi-Lc-G8B"/>
</mask>
</variation>
</label>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="r2o-8G-3Cv" userLabel="Distance Box">
<rect key="frame" x="548" y="14" width="180" height="42"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="12 min" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yzZ-6b-Jou">
<rect key="frame" x="0.0" y="0.0" width="180" height="21"/>
<constraints>
<constraint firstAttribute="height" constant="21" id="Z2S-i8-Ntf"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="18"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.87" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="20 km" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="heX-Mf-T11">
<rect key="frame" x="0.0" y="27" width="112" height="16"/>
<constraints>
<constraint firstAttribute="width" constant="112" id="APr-Ng-kVm"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.54000000000000004" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="00:00" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="F95-AG-2uX">
<rect key="frame" x="132" y="27" width="48" height="16"/>
<constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="44" id="lBX-qz-7jM"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.54000000000000004" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="F95-AG-2uX" firstAttribute="leading" secondItem="heX-Mf-T11" secondAttribute="trailing" constant="20" id="6ja-Bb-h9C"/>
<constraint firstItem="yzZ-6b-Jou" firstAttribute="leading" secondItem="r2o-8G-3Cv" secondAttribute="leading" id="8Ys-z7-0ic"/>
<constraint firstAttribute="trailing" secondItem="heX-Mf-T11" secondAttribute="trailing" constant="84" id="LwO-bA-IkU"/>
<constraint firstAttribute="trailing" secondItem="yzZ-6b-Jou" secondAttribute="trailing" id="NnS-Nz-XvI"/>
<constraint firstAttribute="bottom" secondItem="heX-Mf-T11" secondAttribute="bottom" constant="-1" id="SI8-Pr-fmE"/>
<constraint firstItem="heX-Mf-T11" firstAttribute="leading" secondItem="r2o-8G-3Cv" secondAttribute="leading" id="Xii-Px-eo7"/>
<constraint firstAttribute="height" constant="42" id="Y1G-Es-QFk"/>
<constraint firstAttribute="width" constant="180" id="Y2M-zQ-72a"/>
<constraint firstAttribute="trailing" secondItem="F95-AG-2uX" secondAttribute="trailing" id="ZSo-ff-YeK"/>
<constraint firstItem="heX-Mf-T11" firstAttribute="top" secondItem="yzZ-6b-Jou" secondAttribute="bottom" constant="6" id="nke-Cf-wrp"/>
<constraint firstItem="yzZ-6b-Jou" firstAttribute="top" secondItem="r2o-8G-3Cv" secondAttribute="top" id="nqg-k8-6Zp"/>
<constraint firstItem="F95-AG-2uX" firstAttribute="top" secondItem="yzZ-6b-Jou" secondAttribute="bottom" constant="6" id="pYP-hY-4tg"/>
<constraint firstAttribute="bottom" secondItem="F95-AG-2uX" secondAttribute="bottom" constant="-1" id="wrw-dm-07W"/>
</constraints>
<variation key="default">
<mask key="constraints">
<exclude reference="LwO-bA-IkU"/>
</mask>
</variation>
</view>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="sMk-g9-2oJ" firstAttribute="baseline" secondItem="Vo5-Yp-xWN" secondAttribute="baseline" id="3IZ-7s-BUO"/>
<constraint firstAttribute="bottom" secondItem="sMk-g9-2oJ" secondAttribute="bottom" constant="5" id="4c5-vj-n8i"/>
<constraint firstItem="Vo5-Yp-xWN" firstAttribute="leading" secondItem="sMk-g9-2oJ" secondAttribute="trailing" constant="1" id="DHi-Oq-8ah"/>
<constraint firstItem="1r7-WJ-4zD" firstAttribute="top" secondItem="ZzU-jx-uYa" secondAttribute="top" id="DLs-tP-313"/>
<constraint firstItem="1r7-WJ-4zD" firstAttribute="leading" secondItem="ZzU-jx-uYa" secondAttribute="leading" id="HK7-8o-2bx"/>
<constraint firstItem="sMk-g9-2oJ" firstAttribute="top" secondItem="ZzU-jx-uYa" secondAttribute="top" constant="5" id="Ixf-kz-eFi"/>
<constraint firstItem="Vo5-Yp-xWN" firstAttribute="leading" secondItem="sMk-g9-2oJ" secondAttribute="trailing" constant="4" id="JKZ-WH-QTe"/>
<constraint firstAttribute="bottom" secondItem="1r7-WJ-4zD" secondAttribute="bottom" id="JsW-d1-58r"/>
<constraint firstItem="Vo5-Yp-xWN" firstAttribute="leading" secondItem="sMk-g9-2oJ" secondAttribute="trailing" constant="3.5" id="RsH-2c-74p"/>
<constraint firstItem="sMk-g9-2oJ" firstAttribute="leading" secondItem="1r7-WJ-4zD" secondAttribute="trailing" constant="8" id="XLA-lU-avx"/>
<constraint firstItem="Vo5-Yp-xWN" firstAttribute="leading" secondItem="sMk-g9-2oJ" secondAttribute="trailing" constant="4" id="chw-Mu-gak"/>
<constraint firstAttribute="width" constant="190" id="pfA-s3-hU5"/>
<constraint firstAttribute="trailing" secondItem="Vo5-Yp-xWN" secondAttribute="trailing" id="sCi-Lc-G8B"/>
<constraint firstItem="sMk-g9-2oJ" firstAttribute="baseline" secondItem="Vo5-Yp-xWN" secondAttribute="baseline" id="t80-eN-Ymv"/>
<constraint firstAttribute="height" constant="52" id="y3P-ga-yXV"/>
<constraint firstItem="qvD-ft-rlE" firstAttribute="top" secondItem="iZT-dR-FZ0" secondAttribute="top" constant="16" id="28E-XK-pCB"/>
<constraint firstItem="ZzU-jx-uYa" firstAttribute="top" secondItem="iZT-dR-FZ0" secondAttribute="top" constant="9" id="3D9-7j-5DD"/>
<constraint firstAttribute="trailing" secondItem="r2o-8G-3Cv" secondAttribute="trailing" constant="8" id="5Y8-Px-WTu"/>
<constraint firstItem="qvD-ft-rlE" firstAttribute="leading" secondItem="iZT-dR-FZ0" secondAttribute="leading" id="CzO-hM-Nk8"/>
<constraint firstItem="r2o-8G-3Cv" firstAttribute="top" secondItem="iZT-dR-FZ0" secondAttribute="top" constant="14" id="gIL-MW-lns"/>
<constraint firstItem="ZzU-jx-uYa" firstAttribute="leading" secondItem="qvD-ft-rlE" secondAttribute="trailing" constant="16" id="wns-Dj-jhG"/>
</constraints>
<variation key="default">
<mask key="constraints">
<exclude reference="3IZ-7s-BUO"/>
<exclude reference="JKZ-WH-QTe"/>
<exclude reference="chw-Mu-gak"/>
<exclude reference="sCi-Lc-G8B"/>
<exclude reference="RsH-2c-74p"/>
</mask>
</variation>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="r2o-8G-3Cv" userLabel="Distance Box">
<rect key="frame" x="548" y="39" width="180" height="42"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="12 min" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yzZ-6b-Jou">
<rect key="frame" x="0.0" y="0.0" width="180" height="21"/>
<constraints>
<constraint firstAttribute="height" constant="21" id="Z2S-i8-Ntf"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="18"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.87" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="20 km" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="heX-Mf-T11">
<rect key="frame" x="0.0" y="27" width="112" height="16"/>
<constraints>
<constraint firstAttribute="width" constant="112" id="APr-Ng-kVm"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.54000000000000004" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="16:40 " textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="F95-AG-2uX">
<rect key="frame" x="132.5" y="27" width="47.5" height="16"/>
<constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="44" id="lBX-qz-7jM"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.54000000000000004" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="F95-AG-2uX" firstAttribute="leading" secondItem="heX-Mf-T11" secondAttribute="trailing" constant="20" id="6ja-Bb-h9C"/>
<constraint firstItem="yzZ-6b-Jou" firstAttribute="leading" secondItem="r2o-8G-3Cv" secondAttribute="leading" id="8Ys-z7-0ic"/>
<constraint firstAttribute="trailing" secondItem="heX-Mf-T11" secondAttribute="trailing" constant="84" id="LwO-bA-IkU"/>
<constraint firstAttribute="trailing" secondItem="yzZ-6b-Jou" secondAttribute="trailing" id="NnS-Nz-XvI"/>
<constraint firstAttribute="bottom" secondItem="heX-Mf-T11" secondAttribute="bottom" constant="-1" id="SI8-Pr-fmE"/>
<constraint firstItem="heX-Mf-T11" firstAttribute="leading" secondItem="r2o-8G-3Cv" secondAttribute="leading" id="Xii-Px-eo7"/>
<constraint firstAttribute="height" constant="42" id="Y1G-Es-QFk"/>
<constraint firstAttribute="width" constant="180" id="Y2M-zQ-72a"/>
<constraint firstAttribute="trailing" secondItem="F95-AG-2uX" secondAttribute="trailing" id="ZSo-ff-YeK"/>
<constraint firstItem="heX-Mf-T11" firstAttribute="top" secondItem="yzZ-6b-Jou" secondAttribute="bottom" constant="6" id="nke-Cf-wrp"/>
<constraint firstItem="yzZ-6b-Jou" firstAttribute="top" secondItem="r2o-8G-3Cv" secondAttribute="top" id="nqg-k8-6Zp"/>
<constraint firstItem="F95-AG-2uX" firstAttribute="top" secondItem="yzZ-6b-Jou" secondAttribute="bottom" constant="6" id="pYP-hY-4tg"/>
<constraint firstAttribute="bottom" secondItem="F95-AG-2uX" secondAttribute="bottom" constant="-1" id="wrw-dm-07W"/>
</constraints>
<variation key="default">
<mask key="constraints">
<exclude reference="LwO-bA-IkU"/>
</mask>
</variation>
</view>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="qvD-ft-rlE" firstAttribute="leading" secondItem="e3c-EN-9M6" secondAttribute="leading" id="2nT-pL-sI6"/>
<constraint firstAttribute="bottom" secondItem="r2o-8G-3Cv" secondAttribute="bottom" constant="15" id="3iw-Km-DHQ"/>
<constraint firstAttribute="bottom" secondItem="qvD-ft-rlE" secondAttribute="bottom" constant="20" id="W5C-GA-XjL"/>
<constraint firstItem="ZzU-jx-uYa" firstAttribute="leading" secondItem="qvD-ft-rlE" secondAttribute="trailing" constant="16" id="ZBX-Dk-LoL"/>
<constraint firstAttribute="bottom" secondItem="ZzU-jx-uYa" secondAttribute="bottom" constant="11" id="bF3-ME-vgx"/>
<constraint firstAttribute="trailing" secondItem="r2o-8G-3Cv" secondAttribute="trailing" constant="8" id="ghP-27-V4x"/>
<constraint firstItem="iZT-dR-FZ0" firstAttribute="top" secondItem="e3c-EN-9M6" secondAttribute="top" id="Mcn-mM-FeF"/>
<constraint firstAttribute="bottom" secondItem="iZT-dR-FZ0" secondAttribute="bottom" id="Zq6-7K-JvM"/>
<constraint firstItem="iZT-dR-FZ0" firstAttribute="leading" secondItem="e3c-EN-9M6" secondAttribute="leading" id="qo8-T3-g6X"/>
<constraint firstAttribute="trailing" secondItem="iZT-dR-FZ0" secondAttribute="trailing" id="xtH-16-KfW"/>
</constraints>
<nil key="simulatedStatusBarMetrics"/>
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
<connections>
<outlet property="arrivalsTimeLabel" destination="F95-AG-2uX" id="UbS-vM-cGU"/>
<outlet property="contentView" destination="iZT-dR-FZ0" id="OSM-Ma-60a"/>
<outlet property="direction" destination="1r7-WJ-4zD" id="aHj-Mn-s8d"/>
<outlet property="distanceLeft" destination="heX-Mf-T11" id="KPh-ym-dPt"/>
<outlet property="distanceToNextAction" destination="sMk-g9-2oJ" id="bjw-PH-BYo"/>

View file

@ -8,6 +8,8 @@
#import "MWMNavigationView.h"
@class MWMNavigationDashboardEntity;
@interface MWMNavigationDashboard : MWMNavigationView
@property (weak, nonatomic) IBOutlet UIImageView * direction;
@ -17,4 +19,6 @@
@property (weak, nonatomic) IBOutlet UILabel * eta;
@property (weak, nonatomic) IBOutlet UILabel * arrivalsTimeLabel;
- (void)configureWithEntity:(MWMNavigationDashboardEntity *)entity;
@end

View file

@ -7,7 +7,18 @@
//
#import "MWMNavigationDashboard.h"
#import "MWMNavigationDashboardEntity.h"
#import "TimeUtils.h"
@implementation MWMNavigationDashboard
- (void)configureWithEntity:(MWMNavigationDashboardEntity *)entity
{
self.direction.image = entity.turnImage;
self.distanceToNextAction.text = entity.distanceToTurn;
self.distanceToNextActionUnits.text = entity.turnUnits;
self.distanceLeft.text = [NSString stringWithFormat:@"%@ %@", entity.targetDistance, entity.targetUnits];
self.eta.text = [NSDateFormatter estimatedArrivalTimeWithSeconds:@(entity.timeToTarget)];
}
@end

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="7706" systemVersion="14D131" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="7706" systemVersion="14E46" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7703"/>
@ -12,126 +12,142 @@
</placeholder>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<view contentMode="scaleToFill" id="wul-fx-3xk" customClass="MWMNavigationDashboard">
<rect key="frame" x="0.0" y="0.0" width="320" height="96"/>
<rect key="frame" x="0.0" y="0.0" width="320" height="76"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="CJi-qt-H0B" userLabel="Cancel">
<rect key="frame" x="0.0" y="36" width="40" height="40"/>
<constraints>
<constraint firstAttribute="width" constant="40" id="EKP-Ms-brE"/>
<constraint firstAttribute="height" constant="40" id="bc0-vd-6M6"/>
</constraints>
<state key="normal" image="ic_cancel">
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
</button>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="8Zr-ul-QD4" userLabel="Azimut Box">
<rect key="frame" x="56" y="33" width="190" height="52"/>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="9t0-Kj-KTa">
<rect key="frame" x="0.0" y="0.0" width="320" height="76"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="ic_direction" translatesAutoresizingMaskIntoConstraints="NO" id="vcg-Bu-8CX">
<rect key="frame" x="0.0" y="0.0" width="52" height="52"/>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="CJi-qt-H0B" userLabel="Cancel">
<rect key="frame" x="0.0" y="16" width="40" height="40"/>
<constraints>
<constraint firstAttribute="width" constant="52" id="xGv-2r-BQ7"/>
<constraint firstAttribute="width" constant="40" id="EKP-Ms-brE"/>
<constraint firstAttribute="height" constant="40" id="bc0-vd-6M6"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="w7a-mi-GxC">
<rect key="frame" x="60" y="5" width="20.5" height="42"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="36"/>
<color key="textColor" red="0.12549019610000001" green="0.58823529409999997" blue="0.95294117649999999" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="km" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vQs-gj-DUL">
<rect key="frame" x="81" y="21" width="26" height="22"/>
<state key="normal" image="ic_cancel">
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<connections>
<action selector="navigationCancelPressed:" destination="-1" eventType="touchUpInside" id="FHv-ny-D7o"/>
</connections>
</button>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="8Zr-ul-QD4" userLabel="Azimut Box">
<rect key="frame" x="56" y="9" width="190" height="52"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="ic_direction" translatesAutoresizingMaskIntoConstraints="NO" id="vcg-Bu-8CX">
<rect key="frame" x="0.0" y="0.0" width="52" height="52"/>
<constraints>
<constraint firstAttribute="width" constant="52" id="xGv-2r-BQ7"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="w7a-mi-GxC">
<rect key="frame" x="60" y="5" width="21" height="42"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="36"/>
<color key="textColor" red="0.12549019610000001" green="0.58823529409999997" blue="0.95294117649999999" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="km" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vQs-gj-DUL">
<rect key="frame" x="81" y="21" width="26" height="22"/>
<constraints>
<constraint firstAttribute="height" constant="21.5" id="8Id-se-VcH"/>
<constraint firstAttribute="height" constant="21.5" id="Hag-8H-qLV"/>
<constraint firstAttribute="width" constant="25.5" id="gWD-Y6-p24"/>
<constraint firstAttribute="width" constant="26" id="zwS-5O-QVa"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="18"/>
<color key="textColor" red="0.12549019610000001" green="0.58823529409999997" blue="0.95294117649999999" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
<variation key="default">
<mask key="constraints">
<exclude reference="8Id-se-VcH"/>
<exclude reference="zwS-5O-QVa"/>
</mask>
</variation>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="height" constant="21.5" id="8Id-se-VcH"/>
<constraint firstAttribute="height" constant="21.5" id="Hag-8H-qLV"/>
<constraint firstAttribute="width" constant="25.5" id="gWD-Y6-p24"/>
<constraint firstAttribute="width" constant="26" id="zwS-5O-QVa"/>
<constraint firstAttribute="height" constant="52" id="0A6-z9-DaT"/>
<constraint firstItem="vcg-Bu-8CX" firstAttribute="top" secondItem="8Zr-ul-QD4" secondAttribute="top" id="B2K-uh-ENJ"/>
<constraint firstItem="vcg-Bu-8CX" firstAttribute="leading" secondItem="8Zr-ul-QD4" secondAttribute="leading" id="DNa-pK-w4t"/>
<constraint firstAttribute="bottom" secondItem="w7a-mi-GxC" secondAttribute="bottom" constant="5" id="Gqm-CL-ck0"/>
<constraint firstAttribute="trailing" secondItem="vQs-gj-DUL" secondAttribute="trailing" id="PeX-D3-WSc"/>
<constraint firstItem="vQs-gj-DUL" firstAttribute="leading" secondItem="w7a-mi-GxC" secondAttribute="trailing" constant="1" id="S4k-of-Pfg"/>
<constraint firstAttribute="width" constant="190" id="aes-L3-OVF"/>
<constraint firstItem="w7a-mi-GxC" firstAttribute="baseline" secondItem="vQs-gj-DUL" secondAttribute="baseline" id="fEx-bU-M8d"/>
<constraint firstItem="vQs-gj-DUL" firstAttribute="leading" secondItem="w7a-mi-GxC" secondAttribute="trailing" constant="3.5" id="jOo-j5-LYo"/>
<constraint firstAttribute="bottom" secondItem="vcg-Bu-8CX" secondAttribute="bottom" id="kjG-Xr-g7l"/>
<constraint firstItem="w7a-mi-GxC" firstAttribute="top" secondItem="8Zr-ul-QD4" secondAttribute="top" constant="5" id="lon-V9-cUc"/>
<constraint firstItem="vQs-gj-DUL" firstAttribute="leading" secondItem="w7a-mi-GxC" secondAttribute="trailing" constant="4" id="mvA-aH-9kW"/>
<constraint firstItem="w7a-mi-GxC" firstAttribute="baseline" secondItem="vQs-gj-DUL" secondAttribute="baseline" id="ukP-6L-edS"/>
<constraint firstItem="vQs-gj-DUL" firstAttribute="leading" secondItem="w7a-mi-GxC" secondAttribute="trailing" constant="4" id="vx0-h4-VxL"/>
<constraint firstItem="w7a-mi-GxC" firstAttribute="leading" secondItem="vcg-Bu-8CX" secondAttribute="trailing" constant="8" id="zgG-1s-uba"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="18"/>
<color key="textColor" red="0.12549019610000001" green="0.58823529409999997" blue="0.95294117649999999" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
<variation key="default">
<mask key="constraints">
<exclude reference="zwS-5O-QVa"/>
<exclude reference="8Id-se-VcH"/>
<exclude reference="ukP-6L-edS"/>
<exclude reference="PeX-D3-WSc"/>
<exclude reference="jOo-j5-LYo"/>
<exclude reference="mvA-aH-9kW"/>
<exclude reference="vx0-h4-VxL"/>
</mask>
</variation>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="height" constant="52" id="0A6-z9-DaT"/>
<constraint firstItem="vcg-Bu-8CX" firstAttribute="top" secondItem="8Zr-ul-QD4" secondAttribute="top" id="B2K-uh-ENJ"/>
<constraint firstItem="vcg-Bu-8CX" firstAttribute="leading" secondItem="8Zr-ul-QD4" secondAttribute="leading" id="DNa-pK-w4t"/>
<constraint firstAttribute="bottom" secondItem="w7a-mi-GxC" secondAttribute="bottom" constant="5" id="Gqm-CL-ck0"/>
<constraint firstAttribute="trailing" secondItem="vQs-gj-DUL" secondAttribute="trailing" id="PeX-D3-WSc"/>
<constraint firstItem="vQs-gj-DUL" firstAttribute="leading" secondItem="w7a-mi-GxC" secondAttribute="trailing" constant="1" id="S4k-of-Pfg"/>
<constraint firstAttribute="width" constant="190" id="aes-L3-OVF"/>
<constraint firstItem="w7a-mi-GxC" firstAttribute="baseline" secondItem="vQs-gj-DUL" secondAttribute="baseline" id="fEx-bU-M8d"/>
<constraint firstItem="vQs-gj-DUL" firstAttribute="leading" secondItem="w7a-mi-GxC" secondAttribute="trailing" constant="3.5" id="jOo-j5-LYo"/>
<constraint firstAttribute="bottom" secondItem="vcg-Bu-8CX" secondAttribute="bottom" id="kjG-Xr-g7l"/>
<constraint firstItem="w7a-mi-GxC" firstAttribute="top" secondItem="8Zr-ul-QD4" secondAttribute="top" constant="5" id="lon-V9-cUc"/>
<constraint firstItem="vQs-gj-DUL" firstAttribute="leading" secondItem="w7a-mi-GxC" secondAttribute="trailing" constant="4" id="mvA-aH-9kW"/>
<constraint firstItem="w7a-mi-GxC" firstAttribute="baseline" secondItem="vQs-gj-DUL" secondAttribute="baseline" id="ukP-6L-edS"/>
<constraint firstItem="vQs-gj-DUL" firstAttribute="leading" secondItem="w7a-mi-GxC" secondAttribute="trailing" constant="4" id="vx0-h4-VxL"/>
<constraint firstItem="w7a-mi-GxC" firstAttribute="leading" secondItem="vcg-Bu-8CX" secondAttribute="trailing" constant="8" id="zgG-1s-uba"/>
</constraints>
<variation key="default">
<mask key="constraints">
<exclude reference="ukP-6L-edS"/>
<exclude reference="jOo-j5-LYo"/>
<exclude reference="PeX-D3-WSc"/>
<exclude reference="mvA-aH-9kW"/>
<exclude reference="vx0-h4-VxL"/>
</mask>
</variation>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="BLc-UX-Tny" userLabel="Distance Box">
<rect key="frame" x="216" y="39" width="96" height="42"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="10 min" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fLt-4z-zaW">
<rect key="frame" x="0.0" y="0.0" width="96" height="21"/>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="BLc-UX-Tny" userLabel="Distance Box">
<rect key="frame" x="216" y="14" width="96" height="42"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="10 min" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fLt-4z-zaW">
<rect key="frame" x="0.0" y="0.0" width="96" height="21"/>
<constraints>
<constraint firstAttribute="height" constant="21" id="z8a-i9-xiC"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="18"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.87" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="10 km" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="w2P-mo-JWt">
<rect key="frame" x="0.0" y="26" width="96" height="16"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.54000000000000004" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="height" constant="21" id="z8a-i9-xiC"/>
<constraint firstAttribute="width" constant="96" id="5wb-Gu-vSJ"/>
<constraint firstItem="fLt-4z-zaW" firstAttribute="leading" secondItem="BLc-UX-Tny" secondAttribute="leading" id="FqW-7I-zNI"/>
<constraint firstAttribute="trailing" secondItem="fLt-4z-zaW" secondAttribute="trailing" id="I9I-bJ-q2D"/>
<constraint firstItem="fLt-4z-zaW" firstAttribute="top" secondItem="BLc-UX-Tny" secondAttribute="top" id="PRM-Vl-j7Y"/>
<constraint firstAttribute="height" constant="42" id="UaJ-Vf-Spf"/>
<constraint firstAttribute="bottom" secondItem="w2P-mo-JWt" secondAttribute="bottom" id="WGX-9a-DHA"/>
<constraint firstItem="w2P-mo-JWt" firstAttribute="leading" secondItem="BLc-UX-Tny" secondAttribute="leading" id="hXv-eP-iwC"/>
<constraint firstItem="w2P-mo-JWt" firstAttribute="top" secondItem="fLt-4z-zaW" secondAttribute="bottom" constant="5" id="rb4-VI-06q"/>
<constraint firstAttribute="trailing" secondItem="w2P-mo-JWt" secondAttribute="trailing" id="xuB-k5-AJe"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="18"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.87" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="10 km" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="w2P-mo-JWt">
<rect key="frame" x="0.0" y="26" width="96" height="16"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.54000000000000004" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</view>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="width" constant="96" id="5wb-Gu-vSJ"/>
<constraint firstItem="fLt-4z-zaW" firstAttribute="leading" secondItem="BLc-UX-Tny" secondAttribute="leading" id="FqW-7I-zNI"/>
<constraint firstAttribute="trailing" secondItem="fLt-4z-zaW" secondAttribute="trailing" id="I9I-bJ-q2D"/>
<constraint firstItem="fLt-4z-zaW" firstAttribute="top" secondItem="BLc-UX-Tny" secondAttribute="top" id="PRM-Vl-j7Y"/>
<constraint firstAttribute="height" constant="42" id="UaJ-Vf-Spf"/>
<constraint firstAttribute="bottom" secondItem="w2P-mo-JWt" secondAttribute="bottom" id="WGX-9a-DHA"/>
<constraint firstItem="w2P-mo-JWt" firstAttribute="leading" secondItem="BLc-UX-Tny" secondAttribute="leading" id="hXv-eP-iwC"/>
<constraint firstItem="w2P-mo-JWt" firstAttribute="top" secondItem="fLt-4z-zaW" secondAttribute="bottom" constant="5" id="rb4-VI-06q"/>
<constraint firstAttribute="trailing" secondItem="w2P-mo-JWt" secondAttribute="trailing" id="xuB-k5-AJe"/>
<constraint firstItem="8Zr-ul-QD4" firstAttribute="leading" secondItem="CJi-qt-H0B" secondAttribute="trailing" constant="16" id="9Na-tq-Q8a"/>
<constraint firstItem="CJi-qt-H0B" firstAttribute="leading" secondItem="9t0-Kj-KTa" secondAttribute="leading" id="KWV-js-hmR"/>
<constraint firstItem="BLc-UX-Tny" firstAttribute="top" secondItem="9t0-Kj-KTa" secondAttribute="top" constant="14" id="Tp6-iR-eSY"/>
<constraint firstItem="CJi-qt-H0B" firstAttribute="top" secondItem="9t0-Kj-KTa" secondAttribute="top" constant="16" id="X51-ti-88P"/>
<constraint firstAttribute="trailing" secondItem="BLc-UX-Tny" secondAttribute="trailing" constant="8" id="uOC-Km-Ny3"/>
<constraint firstItem="8Zr-ul-QD4" firstAttribute="top" secondItem="9t0-Kj-KTa" secondAttribute="top" constant="9" id="vHg-jJ-TAh"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="8Zr-ul-QD4" firstAttribute="leading" secondItem="CJi-qt-H0B" secondAttribute="trailing" constant="16" id="3Uk-I4-PZe"/>
<constraint firstAttribute="bottom" secondItem="8Zr-ul-QD4" secondAttribute="bottom" constant="11" id="4Nk-Im-af8"/>
<constraint firstAttribute="bottom" secondItem="CJi-qt-H0B" secondAttribute="bottom" constant="20" id="HWG-Yb-dlT"/>
<constraint firstAttribute="trailing" secondItem="BLc-UX-Tny" secondAttribute="trailing" constant="8" id="nsz-T8-UYO"/>
<constraint firstItem="CJi-qt-H0B" firstAttribute="leading" secondItem="wul-fx-3xk" secondAttribute="leading" id="oNj-FL-aak"/>
<constraint firstAttribute="bottom" secondItem="BLc-UX-Tny" secondAttribute="bottom" constant="15" id="r9D-W4-zj0"/>
<constraint firstAttribute="bottom" secondItem="9t0-Kj-KTa" secondAttribute="bottom" id="04x-Fo-gLu"/>
<constraint firstAttribute="trailing" secondItem="9t0-Kj-KTa" secondAttribute="trailing" id="3sR-KR-V9K"/>
<constraint firstItem="9t0-Kj-KTa" firstAttribute="leading" secondItem="wul-fx-3xk" secondAttribute="leading" id="vA8-Fm-yW5"/>
<constraint firstItem="9t0-Kj-KTa" firstAttribute="top" secondItem="wul-fx-3xk" secondAttribute="top" id="wLA-oR-Fxv"/>
</constraints>
<nil key="simulatedStatusBarMetrics"/>
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
<connections>
<outlet property="contentView" destination="9t0-Kj-KTa" id="Bt6-0c-vYM"/>
<outlet property="direction" destination="vcg-Bu-8CX" id="LC4-mS-2iW"/>
<outlet property="distanceLeft" destination="w2P-mo-JWt" id="auU-tj-zhI"/>
<outlet property="distanceToNextAction" destination="w7a-mi-GxC" id="8SR-Qv-Udp"/>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="7706" systemVersion="14E46" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="7706" systemVersion="14D131" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7703"/>
@ -49,11 +49,27 @@
<state key="normal" image="ic_spinner_close_1">
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<connections>
<action selector="navigationCancelPressed:" destination="-1" eventType="touchUpInside" id="Gb7-lI-Oqh"/>
</connections>
</button>
<button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="eGS-Xr-GDV" userLabel="Cancel Button">
<rect key="frame" x="0.0" y="2" width="40" height="40"/>
<constraints>
<constraint firstAttribute="width" constant="40" id="1oI-UW-T3s"/>
<constraint firstAttribute="height" constant="40" id="M2D-g6-ioS"/>
</constraints>
<state key="normal" image="ic_cancel">
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<connections>
<action selector="navigationCancelPressed:" destination="-1" eventType="touchUpInside" id="pyU-Pc-KC2"/>
</connections>
</button>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ECz-mP-xyb" userLabel="Planning Route Box">
<rect key="frame" x="56" y="12" width="588" height="20"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Landscape" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wzR-lf-hDI">
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Creating route..." lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wzR-lf-hDI">
<rect key="frame" x="0.0" y="0.0" width="588" height="20"/>
<constraints>
<constraint firstAttribute="height" constant="20" id="a91-oh-DfU"/>
@ -77,7 +93,6 @@
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="time" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Tw5-0C-086">
<rect key="frame" x="0.0" y="0.0" width="35" height="20"/>
<constraints>
<constraint firstAttribute="width" constant="35" id="s7o-ci-WM6"/>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="35" id="uCf-6K-3Iw"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="17"/>
@ -87,15 +102,17 @@
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="dist" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ziN-lg-ual">
<rect key="frame" x="66" y="0.0" width="31" height="20"/>
<constraints>
<constraint firstAttribute="width" constant="31" id="dXn-mA-2ax"/>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="31" id="lgu-YA-uXa"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.87" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Arrivals" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0NR-QB-wCJ">
<rect key="frame" x="135" y="0.0" width="453" height="20"/>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Arrivals time in progress" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0NR-QB-wCJ">
<rect key="frame" x="135" y="0.0" width="183" height="20"/>
<constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="50" id="Wa6-9K-MFp"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.87" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
@ -103,14 +120,14 @@
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="0NR-QB-wCJ" secondAttribute="trailing" priority="250" constant="396.5" id="0e9-nG-KCA"/>
<constraint firstAttribute="bottom" secondItem="0NR-QB-wCJ" secondAttribute="bottom" id="0q6-9b-n76"/>
<constraint firstAttribute="bottom" secondItem="ziN-lg-ual" secondAttribute="bottom" id="1H4-wg-PYA"/>
<constraint firstItem="ziN-lg-ual" firstAttribute="top" secondItem="EfU-nE-6L9" secondAttribute="top" id="876-18-bwv"/>
<constraint firstItem="Tw5-0C-086" firstAttribute="leading" secondItem="EfU-nE-6L9" secondAttribute="leading" id="Cdb-pB-9Ob"/>
<constraint firstAttribute="trailing" secondItem="0NR-QB-wCJ" secondAttribute="trailing" id="PEY-6C-JB9"/>
<constraint firstItem="0NR-QB-wCJ" firstAttribute="leading" secondItem="ziN-lg-ual" secondAttribute="trailing" constant="38" id="RFy-07-ZSJ"/>
<constraint firstItem="Tw5-0C-086" firstAttribute="top" secondItem="EfU-nE-6L9" secondAttribute="top" id="TjF-vm-SC1"/>
<constraint firstAttribute="height" constant="20" id="YPp-YJ-xeQ"/>
<constraint firstItem="0NR-QB-wCJ" firstAttribute="leading" secondItem="ziN-lg-ual" secondAttribute="trailing" constant="38" id="fjf-MI-w5n"/>
<constraint firstAttribute="bottom" secondItem="Tw5-0C-086" secondAttribute="bottom" id="hwx-Vd-9Qo"/>
<constraint firstItem="ziN-lg-ual" firstAttribute="leading" secondItem="Tw5-0C-086" secondAttribute="trailing" constant="31" id="wUi-tY-faO"/>
<constraint firstItem="0NR-QB-wCJ" firstAttribute="top" secondItem="EfU-nE-6L9" secondAttribute="top" id="x2A-oT-PLO"/>
@ -128,7 +145,6 @@
<state key="selected" image="ic_walk_on"/>
<connections>
<action selector="routePreviewChange:" destination="-1" eventType="touchUpInside" id="bf4-fQ-DLf"/>
<action selector="routeTypePressed:" destination="EvQ-CH-5qC" eventType="touchUpInside" id="qWU-C0-8CT"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="yNr-DG-8Hu" userLabel="Drive Button">
@ -140,7 +156,6 @@
<state key="selected" image="ic_drive_on"/>
<connections>
<action selector="routePreviewChange:" destination="-1" eventType="touchUpInside" id="XHs-7h-PYO"/>
<action selector="routeTypePressed:" destination="EvQ-CH-5qC" eventType="touchUpInside" id="pI7-Yh-QDE"/>
</connections>
</button>
</subviews>
@ -167,7 +182,9 @@
<constraint firstAttribute="bottom" secondItem="Oe3-Op-uEp" secondAttribute="bottom" constant="2" id="Res-ht-qAb"/>
<constraint firstItem="Oe3-Op-uEp" firstAttribute="leading" secondItem="EfU-nE-6L9" secondAttribute="trailing" constant="4" id="W3N-0v-ZMF"/>
<constraint firstItem="ECz-mP-xyb" firstAttribute="leading" secondItem="xcU-SM-tN8" secondAttribute="trailing" constant="16" id="aSe-p0-XQb"/>
<constraint firstItem="eGS-Xr-GDV" firstAttribute="top" secondItem="bfG-c5-fMl" secondAttribute="top" constant="2" id="deE-9T-acf"/>
<constraint firstItem="ECz-mP-xyb" firstAttribute="top" secondItem="bfG-c5-fMl" secondAttribute="top" constant="12" id="g9u-yA-Bzr"/>
<constraint firstItem="eGS-Xr-GDV" firstAttribute="leading" secondItem="bfG-c5-fMl" secondAttribute="leading" id="nym-lw-48E"/>
<constraint firstAttribute="height" constant="44" id="qFf-mT-U9d"/>
<constraint firstAttribute="trailing" secondItem="Oe3-Op-uEp" secondAttribute="trailing" constant="8" id="rTj-VC-TKj"/>
<constraint firstAttribute="bottom" secondItem="xcU-SM-tN8" secondAttribute="bottom" constant="2" id="rZp-0H-JZc"/>
@ -188,12 +205,14 @@
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
<connections>
<outlet property="arrivalsLabel" destination="0NR-QB-wCJ" id="E3B-xd-DiO"/>
<outlet property="cancelButton" destination="eGS-Xr-GDV" id="9gQ-5b-oIX"/>
<outlet property="completeBox" destination="EfU-nE-6L9" id="0eS-Nq-1OX"/>
<outlet property="contentView" destination="bfG-c5-fMl" id="kaA-Q0-THS"/>
<outlet property="distanceLabel" destination="ziN-lg-ual" id="tVN-kZ-kgK"/>
<outlet property="goButtonHeight" destination="O48-rs-xGy" id="IGX-3J-58V"/>
<outlet property="goButtonVerticalOffset" destination="C4v-nE-10G" id="YCG-GD-szj"/>
<outlet property="pedestrian" destination="0dd-I8-xaK" id="0p2-T2-1MD"/>
<outlet property="spinner" destination="xcU-SM-tN8" id="RXH-Hb-oi8"/>
<outlet property="status" destination="wzR-lf-hDI" id="FXn-1Y-15m"/>
<outlet property="statusBox" destination="ECz-mP-xyb" id="iuO-KL-p0U"/>
<outlet property="timeLabel" destination="Tw5-0C-086" id="KJL-hQ-Tcp"/>
@ -203,6 +222,7 @@
</view>
</objects>
<resources>
<image name="ic_cancel" width="40" height="40"/>
<image name="ic_drive_disable" width="40" height="40"/>
<image name="ic_drive_off" width="40" height="40"/>
<image name="ic_drive_on" width="40" height="40"/>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="7706" systemVersion="14E46" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="7706" systemVersion="14D131" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7703"/>
@ -49,6 +49,22 @@
<state key="normal" image="ic_spinner_close_1">
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<connections>
<action selector="navigationCancelPressed:" destination="-1" eventType="touchUpInside" id="Nnn-dW-Uc9"/>
</connections>
</button>
<button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="d2m-Mj-kxw" userLabel="Cancel Button">
<rect key="frame" x="0.0" y="2" width="40" height="40"/>
<constraints>
<constraint firstAttribute="height" constant="40" id="ULq-q0-KBT"/>
<constraint firstAttribute="width" constant="40" id="qew-DV-5Og"/>
</constraints>
<state key="normal" image="ic_cancel">
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<connections>
<action selector="navigationCancelPressed:" destination="-1" eventType="touchUpInside" id="Rnw-Di-BNW"/>
</connections>
</button>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="sxx-mC-hOX" userLabel="Buttons Box">
<rect key="frame" x="232" y="2" width="80" height="40"/>
@ -62,7 +78,6 @@
<state key="selected" image="ic_walk_on"/>
<connections>
<action selector="routePreviewChange:" destination="-1" eventType="touchUpInside" id="p1B-We-5Eo"/>
<action selector="routeTypePressed:" destination="88L-VX-bE9" eventType="touchUpInside" id="qOv-nu-Col"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="q46-6u-Dnz" userLabel="Drive Button">
@ -74,7 +89,6 @@
<state key="selected" image="ic_drive_on"/>
<connections>
<action selector="routePreviewChange:" destination="-1" eventType="touchUpInside" id="PmK-Z7-ySd"/>
<action selector="routeTypePressed:" destination="88L-VX-bE9" eventType="touchUpInside" id="p0y-tA-r6k"/>
</connections>
</button>
</subviews>
@ -95,7 +109,7 @@
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="FjK-vt-keq" userLabel="Planning Route Box">
<rect key="frame" x="56" y="12" width="172" height="20"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Portrait" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="e6W-cv-xtL">
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Creating route..." lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="e6W-cv-xtL">
<rect key="frame" x="0.0" y="0.0" width="172" height="20"/>
<constraints>
<constraint firstAttribute="height" constant="20" id="JUk-KJ-2Ic"/>
@ -170,7 +184,9 @@
<constraint firstItem="FjK-vt-keq" firstAttribute="top" secondItem="q2t-0L-2K9" secondAttribute="top" constant="12" id="Ybi-xR-Cb9"/>
<constraint firstItem="FjK-vt-keq" firstAttribute="leading" secondItem="HOJ-SC-XHE" secondAttribute="trailing" constant="16" id="YjO-tt-mNf"/>
<constraint firstAttribute="bottom" secondItem="HOJ-SC-XHE" secondAttribute="bottom" constant="2" id="aHI-ON-PIb"/>
<constraint firstItem="d2m-Mj-kxw" firstAttribute="leading" secondItem="q2t-0L-2K9" secondAttribute="leading" id="dNR-t0-0MG"/>
<constraint firstItem="TAN-st-OOM" firstAttribute="top" secondItem="q2t-0L-2K9" secondAttribute="top" constant="12" id="gFK-VL-5cQ"/>
<constraint firstItem="d2m-Mj-kxw" firstAttribute="top" secondItem="q2t-0L-2K9" secondAttribute="top" constant="2" id="gsp-3g-pwS"/>
<constraint firstAttribute="bottom" secondItem="sxx-mC-hOX" secondAttribute="bottom" constant="2" id="jaO-c5-e6f"/>
<constraint firstItem="TAN-st-OOM" firstAttribute="top" secondItem="q2t-0L-2K9" secondAttribute="top" constant="32" id="vfI-Sk-fAH"/>
</constraints>
@ -193,12 +209,14 @@
<nil key="simulatedStatusBarMetrics"/>
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
<connections>
<outlet property="cancelButton" destination="d2m-Mj-kxw" id="tOI-vU-NUz"/>
<outlet property="completeBox" destination="TAN-st-OOM" id="KIc-tq-lnF"/>
<outlet property="contentView" destination="q2t-0L-2K9" id="QBv-uC-WJC"/>
<outlet property="distanceLabel" destination="Z2M-yN-YAq" id="055-qJ-WAJ"/>
<outlet property="goButtonHeight" destination="1mg-dZ-WyP" id="Ql3-hB-aTD"/>
<outlet property="goButtonVerticalOffset" destination="2ei-gn-88c" id="jT5-CH-aMT"/>
<outlet property="pedestrian" destination="p2P-UP-rWT" id="okx-QZ-c9c"/>
<outlet property="spinner" destination="HOJ-SC-XHE" id="dyz-fj-h1I"/>
<outlet property="status" destination="e6W-cv-xtL" id="APO-1K-MH5"/>
<outlet property="statusBox" destination="FjK-vt-keq" id="WgW-e1-R1d"/>
<outlet property="timeLabel" destination="yfW-D7-qCl" id="f6d-96-ej3"/>
@ -208,6 +226,7 @@
</view>
</objects>
<resources>
<image name="ic_cancel" width="40" height="40"/>
<image name="ic_drive_disable" width="40" height="40"/>
<image name="ic_drive_off" width="40" height="40"/>
<image name="ic_drive_on" width="40" height="40"/>

View file

@ -8,9 +8,9 @@
#import "MWMNavigationView.h"
@interface MWMRoutePreview : MWMNavigationView
@class MWMNavigationDashboardEntity;
@property (nonatomic) BOOL showGoButton;
@interface MWMRoutePreview : MWMNavigationView
@property (weak, nonatomic) IBOutlet UILabel * status;
@property (weak, nonatomic) IBOutlet UIButton * pedestrian;
@ -18,5 +18,12 @@
@property (weak, nonatomic) IBOutlet UILabel * timeLabel;
@property (weak, nonatomic) IBOutlet UILabel * distanceLabel;
@property (weak, nonatomic) IBOutlet UILabel * arrivalsLabel;
@property (weak, nonatomic) IBOutlet UIButton * spinner;
@property (weak, nonatomic) IBOutlet UIButton * cancelButton;
- (void)configureWithEntity:(MWMNavigationDashboardEntity *)entity;
- (void)statePlaning;
- (void)showGoButtonAnimated:(BOOL)show;
@end

View file

@ -6,7 +6,9 @@
// Copyright (c) 2015 MapsWithMe. All rights reserved.
//
#import "MWMNavigationDashboardEntity.h"
#import "MWMRoutePreview.h"
#import "TimeUtils.h"
#import "UIKitCategories.h"
@interface MWMRoutePreview ()
@ -18,6 +20,8 @@
@property (weak, nonatomic) IBOutlet NSLayoutConstraint * goButtonHeight;
@property (nonatomic) BOOL showGoButton;
@end
@implementation MWMRoutePreview
@ -26,13 +30,38 @@
{
[super awakeFromNib];
self.goButtonHiddenOffset = self.goButtonVerticalOffset.constant;
self.completeBox.hidden = YES;
[self statePlaning];
}
- (IBAction)routeTypePressed:(UIButton *)sender
- (void)configureWithEntity:(MWMNavigationDashboardEntity *)entity
{
self.pedestrian.selected = self.vehicle.selected = NO;
sender.selected = YES;
self.timeLabel.text = [NSDateFormatter estimatedArrivalTimeWithSeconds:@(entity.timeToTarget)];
self.distanceLabel.text = [NSString stringWithFormat:@"%@ %@", entity.targetDistance, entity.targetUnits];
}
- (void)statePlaning
{
self.showGoButton = NO;
self.statusBox.hidden = NO;
self.completeBox.hidden = YES;
self.spinner.hidden = NO;
self.cancelButton.hidden = YES;
NSUInteger const capacity = 12;
NSMutableArray * images = [NSMutableArray arrayWithCapacity:capacity];
for (int i = 1; i != capacity; ++i)
[images addObject:[UIImage imageNamed:[NSString stringWithFormat:@"ic_spinner_close_%@", @(i)]]];
self.spinner.imageView.animationImages = images.copy;
self.spinner.imageView.animationDuration = .5;
[self.spinner.imageView startAnimating];
}
- (void)showGoButtonAnimated:(BOOL)show
{
[self layoutIfNeeded];
self.showGoButton = show;
[UIView animateWithDuration:0.2 animations:^{ [self layoutIfNeeded]; }];
}
#pragma mark - Properties
@ -40,11 +69,11 @@
- (void)setShowGoButton:(BOOL)showGoButton
{
_showGoButton = showGoButton;
[self layoutIfNeeded];
self.goButtonVerticalOffset.constant = showGoButton ? 0.0 : self.goButtonHiddenOffset;
self.statusBox.hidden = YES;
self.completeBox.hidden = NO;
[UIView animateWithDuration:0.2 animations:^{ [self layoutIfNeeded]; }];
self.spinner.hidden = YES;
self.cancelButton.hidden = NO;
}
- (CGFloat)visibleHeight

View file

@ -35,7 +35,6 @@
- (void)changeBookmarkDescription;
- (void)share;
- (void)route;
- (void)stopBuildingRoute;
- (void)reloadBookmark;
- (void)willStartEditingBookmarkTitle:(CGFloat)keyboardHeight;
- (void)willFinishEditingBookmarkTitle:(NSString *)title;

View file

@ -93,11 +93,6 @@ extern NSString * const kAlohalyticsTapEventKey;
[self.manager buildRoute];
}
- (void)stopBuildingRoute
{
[self.actionBar dismissActivityIndicatior];
}
- (void)addPlacePageShadowToView:(UIView *)view offset:(CGSize)offset
{
CALayer * layer = view.layer;

View file

@ -17,7 +17,6 @@
+ (MWMPlacePageActionBar *)actionBarForPlacePage:(MWMPlacePage *)placePage;
- (void)configureForMyPosition:(BOOL)isMyPosition;
- (void)dismissActivityIndicatior;
- (instancetype)init __attribute__((unavailable("init is unavailable, call actionBarForPlacePage: instead")));
- (instancetype)initWithCoder:(NSCoder *)aDecoder __attribute__((unavailable("initWithCoder: is unavailable, call actionBarForPlacePage: instead")));

View file

@ -29,7 +29,6 @@ static NSString * const kPlacePageActionBarNibName = @"PlacePageActionBar";
@property (weak, nonatomic) IBOutlet UILabel * routeLabel;
@property (weak, nonatomic) IBOutlet UILabel * bookmarkLabel;
@property (weak, nonatomic) IBOutlet UILabel * shareLabel;
@property (nonatomic) UIActivityIndicatorView * indicatior;
@end
@ -42,10 +41,7 @@ static NSString * const kPlacePageActionBarNibName = @"PlacePageActionBar";
BOOL const isMyPosition = placePage.manager.entity.type == MWMPlacePageEntityTypeMyPosition;
bar.routeButton.hidden = isMyPosition;
bar.autoresizingMask = UIViewAutoresizingNone;
BOOL const isPedestrian = GetFramework().GetRouter() == routing::RouterType::Pedestrian;
NSString * routeImageName = isPedestrian ? @"ic_route_walk" : @"ic_route";
[bar.routeButton setImage:[UIImage imageNamed:routeImageName] forState:UIControlStateNormal];
[self setupBookmarkButton:(MWMPlacePageActionBar *)bar];
[self setupBookmarkButton:bar];
return bar;
}
@ -96,9 +92,6 @@ static NSString * const kPlacePageActionBarNibName = @"PlacePageActionBar";
- (void)layoutSubviews
{
BOOL const isMyPosition = self.placePage.manager.entity.type == MWMPlacePageEntityTypeMyPosition;
if (GetFramework().IsRouteBuilding() && !isMyPosition)
[self startActivityIndicator];
CGPoint const center = self.center;
CGFloat const leftOffset = 18.;
if (isMyPosition)
@ -108,7 +101,6 @@ static NSString * const kPlacePageActionBarNibName = @"PlacePageActionBar";
CGFloat const actualWidth = MIN(MIN(size.height, size.width), maximumWidth);
self.bookmarkButton.center = CGPointMake(3. * actualWidth / 4., self.bookmarkButton.center.y);
self.shareButton.center = CGPointMake(actualWidth / 4., self.bookmarkButton.center.y);
[self.indicatior removeFromSuperview];
}
else
{
@ -127,25 +119,7 @@ static NSString * const kPlacePageActionBarNibName = @"PlacePageActionBar";
- (IBAction)routeTap
{
[self startActivityIndicator];
[self.placePage route];
}
- (void)startActivityIndicator
{
[self.indicatior removeFromSuperview];
self.indicatior = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
self.indicatior.center = self.routeButton.center;
self.routeButton.hidden = YES;
[self.indicatior startAnimating];
[self addSubview:self.indicatior];
}
- (void)dismissActivityIndicatior
{
[self.indicatior removeFromSuperview];
self.indicatior = nil;
self.routeButton.hidden = NO;
}
@end

View file

@ -26,7 +26,6 @@
- (void)refreshPlacePage;
- (void)dismissPlacePage;
- (void)buildRoute;
- (void)stopBuildingRoute;
- (void)share;
- (void)addBookmark;
- (void)removeBookmark;

View file

@ -170,12 +170,13 @@ typedef NS_ENUM(NSUInteger, MWMPlacePageManagerState)
- (void)buildRoute
{
[self.delegate buildRoute:m_userMark->GetUserMark()->GetOrg()];
}
- (void)stopBuildingRoute
{
[self.placePage stopBuildingRoute];
auto & f = GetFramework();
m2::PointD const & destination = m_userMark->GetUserMark()->GetOrg();
CLLocationCoordinate2D const & myCoordinate = [MapsAppDelegate theApp].m_locationManager.lastLocation.coordinate;
m2::PointD const myPosition {MercatorBounds::LonToX(myCoordinate.longitude), MercatorBounds::LatToY(myCoordinate.latitude)};
routing::RouterType const actualyRoterType = f.GetBestRouter(myPosition, destination);
f.SetRouter(actualyRoterType);
[self.delegate buildRoute:destination];
}
- (void)share

View file

@ -165,56 +165,57 @@ typedef NS_OPTIONS(NSUInteger, MapInfoView)
if (res.IsValid())
{
NSMutableDictionary *routeInfo = [NSMutableDictionary dictionaryWithCapacity:7];
routeInfo[@"timeToTarget"] = @(res.m_time);
routeInfo[@"targetDistance"] = [NSString stringWithUTF8String:res.m_distToTarget.c_str()];
routeInfo[@"targetMetrics"] = [NSString stringWithUTF8String:res.m_targetUnitsSuffix.c_str()];
routeInfo[@"turnDistance"] = [NSString stringWithUTF8String:res.m_distToTurn.c_str()];
routeInfo[@"turnMetrics"] = [NSString stringWithUTF8String:res.m_turnUnitsSuffix.c_str()];
routeInfo[@"turnType"] = [self turnTypeToImage:res.m_turn];
static NSNumber * turnTypeValue;
if (res.m_turn == routing::turns::TurnDirection::EnterRoundAbout)
turnTypeValue = @(res.m_exitNum);
else if (res.m_turn != routing::turns::TurnDirection::StayOnRoundAbout)
turnTypeValue = nil;
if (turnTypeValue)
[routeInfo setObject:turnTypeValue forKey:@"turnTypeValue"];
[self.routeView updateWithInfo:routeInfo];
[self.controlsManager setupRoutingDashboard:res];
// NSMutableDictionary *routeInfo = [NSMutableDictionary dictionaryWithCapacity:7];
// routeInfo[@"timeToTarget"] = @(res.m_time);
// routeInfo[@"targetDistance"] = [NSString stringWithUTF8String:res.m_distToTarget.c_str()];
// routeInfo[@"targetMetrics"] = [NSString stringWithUTF8String:res.m_targetUnitsSuffix.c_str()];
// routeInfo[@"turnDistance"] = [NSString stringWithUTF8String:res.m_distToTurn.c_str()];
// routeInfo[@"turnMetrics"] = [NSString stringWithUTF8String:res.m_turnUnitsSuffix.c_str()];
// routeInfo[@"turnType"] = [self turnTypeToImage:res.m_turn];
// static NSNumber * turnTypeValue;
// if (res.m_turn == routing::turns::TurnDirection::EnterRoundAbout)
// turnTypeValue = @(res.m_exitNum);
// else if (res.m_turn != routing::turns::TurnDirection::StayOnRoundAbout)
// turnTypeValue = nil;
// if (turnTypeValue)
// [routeInfo setObject:turnTypeValue forKey:@"turnTypeValue"];
//
// [self.routeView updateWithInfo:routeInfo];
}
}
}
- (NSString *)turnTypeToImage:(routing::turns::TurnDirection)type
{
using namespace routing::turns;
switch (type)
{
case TurnDirection::TurnSlightRight:
return @"right-1";
case TurnDirection::TurnRight:
return @"right-2";
case TurnDirection::TurnSharpRight:
return @"right-3";
case TurnDirection::TurnSlightLeft:
return @"left-1";
case TurnDirection::TurnLeft:
return @"left-2";
case TurnDirection::TurnSharpLeft:
return @"left-3";
case TurnDirection::UTurn:
return @"turn-around";
case TurnDirection::LeaveRoundAbout:
case TurnDirection::StayOnRoundAbout:
case TurnDirection::EnterRoundAbout:
return @"circle";
default: return @"straight";
}
}
//
//- (NSString *)turnTypeToImage:(routing::turns::TurnDirection)type
//{
// using namespace routing::turns;
// switch (type)
// {
// case TurnDirection::TurnSlightRight:
// return @"right-1";
// case TurnDirection::TurnRight:
// return @"right-2";
// case TurnDirection::TurnSharpRight:
// return @"right-3";
//
// case TurnDirection::TurnSlightLeft:
// return @"left-1";
// case TurnDirection::TurnLeft:
// return @"left-2";
// case TurnDirection::TurnSharpLeft:
// return @"left-3";
//
// case TurnDirection::UTurn:
// return @"turn-around";
//
// case TurnDirection::LeaveRoundAbout:
// case TurnDirection::StayOnRoundAbout:
// case TurnDirection::EnterRoundAbout:
// return @"circle";
//
// default: return @"straight";
// }
//}
- (void)onCompassUpdate:(location::CompassInfo const &)info
{
@ -710,7 +711,6 @@ typedef NS_OPTIONS(NSUInteger, MapInfoView)
f.SetRouteBuildingListener([self, &f](routing::IRouter::ResultCode code, vector<storage::TIndex> const & absentCountries, vector<storage::TIndex> const & absentRoutes)
{
[self.controlsManager stopBuildingRoute];
switch (code)
{
case routing::IRouter::ResultCode::NoError:
@ -720,10 +720,12 @@ typedef NS_OPTIONS(NSUInteger, MapInfoView)
[self.searchView setState:SearchViewStateHidden animated:YES];
[self performAfterDelay:0.3 block:^
{
if (self.forceRoutingStateChange == ForceRoutingStateChangeStartFollowing)
[self routeViewDidStartFollowing:self.routeView];
else
[self.routeView setState:RouteViewStateInfo animated:YES];
// if (self.forceRoutingStateChange == ForceRoutingStateChangeStartFollowing)
// [self routeViewDidStartFollowing:self.routeView];
// else
// [self.routeView setState:RouteViewStateInfo animated:YES];
//TODO(Vlad): Implement logic for restore route.
[self.controlsManager routingReady];
[self updateRoutingInfo];
}];
@ -736,6 +738,7 @@ typedef NS_OPTIONS(NSUInteger, MapInfoView)
}
break;
}
//TODO(Vlad): Implement routing error handler in new navigation UI.
case routing::IRouter::RouteFileNotExist:
case routing::IRouter::InconsistentMWMandRoute:
case routing::IRouter::NeedMoreMaps:

View file

@ -394,6 +394,7 @@ static BOOL keyboardLoaded = NO;
return YES;
}
//TODO(Vlad): Remove this code after new routing UI will be implement.
- (BOOL)tryToChangeRoutingModeCmd:(NSString *)cmd
{
BOOL const isPedestrian = [cmd isEqualToString:@"?pedestrian"];
@ -417,10 +418,6 @@ static BOOL keyboardLoaded = NO;
if ([self tryChangeMapStyleCmd:currentText])
return;
// TODO(Vlad): This code only for demonstration purposes and will be removed soon
if ([self tryToChangeRoutingModeCmd:currentText])
return;
if ([currentText length])
{
[self hideDownloadMapRequest];

Binary file not shown.

Before

Width:  |  Height:  |  Size: 445 B

After

Width:  |  Height:  |  Size: 728 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 630 B

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 548 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1,015 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

View file

@ -1,23 +0,0 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x",
"filename" : "slight_compact_mdpi.png"
},
{
"idiom" : "universal",
"scale" : "2x",
"filename" : "slight_compact_xhdpi.png"
},
{
"idiom" : "universal",
"scale" : "3x",
"filename" : "slight_compact_xxhdpi.png"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1,018 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

View file

@ -1,23 +0,0 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x",
"filename" : "simple_compact_mdpi.png"
},
{
"idiom" : "universal",
"scale" : "2x",
"filename" : "simple_compact_xhdpi.png"
},
{
"idiom" : "universal",
"scale" : "3x",
"filename" : "simple_compact_xxhdpi.png"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 739 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 863 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

View file

@ -1,23 +0,0 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x",
"filename" : "straight_compact_mdpi.png"
},
{
"idiom" : "universal",
"scale" : "2x",
"filename" : "straight_compact_xhdpi.png"
},
{
"idiom" : "universal",
"scale" : "3x",
"filename" : "straight_compact_xxhdpi.png"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 518 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 812 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 933 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

View file

@ -3,17 +3,17 @@
{
"idiom" : "universal",
"scale" : "1x",
"filename" : "ic_route_walk.png"
"filename" : "finish_point.png"
},
{
"idiom" : "universal",
"scale" : "2x",
"filename" : "ic_route_walk@2x.png"
"filename" : "finish_point@2x.png"
},
{
"idiom" : "universal",
"scale" : "3x",
"filename" : "ic_route_walk@3x.png"
"filename" : "finish_point@3x.png"
}
],
"info" : {

Binary file not shown.

After

Width:  |  Height:  |  Size: 774 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View file

@ -3,17 +3,17 @@
{
"idiom" : "universal",
"scale" : "1x",
"filename" : "round_compact_mdpi.png"
"filename" : "round.png"
},
{
"idiom" : "universal",
"scale" : "2x",
"filename" : "round_compact_xhdpi.png"
"filename" : "round@2x.png"
},
{
"idiom" : "universal",
"scale" : "3x",
"filename" : "round_compact_xxhdpi.png"
"filename" : "round@3x.png"
}
],
"info" : {

Binary file not shown.

After

Width:  |  Height:  |  Size: 881 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View file

@ -3,17 +3,17 @@
{
"idiom" : "universal",
"scale" : "1x",
"filename" : "sharp_compact_mdpi.png"
"filename" : "sharp_left.png"
},
{
"idiom" : "universal",
"scale" : "2x",
"filename" : "sharp_compact_xhdpi.png"
"filename" : "sharp_left@2x.png"
},
{
"idiom" : "universal",
"scale" : "3x",
"filename" : "sharp_compact_xxhdpi.png"
"filename" : "sharp_left@3x.png"
}
],
"info" : {

Binary file not shown.

After

Width:  |  Height:  |  Size: 659 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View file

@ -3,17 +3,17 @@
{
"idiom" : "universal",
"scale" : "1x",
"filename" : "uturn_compact_mdpi.png"
"filename" : "sharp_right.png"
},
{
"idiom" : "universal",
"scale" : "2x",
"filename" : "uturn_compact_xhdpi.png"
"filename" : "sharp_right@2x.png"
},
{
"idiom" : "universal",
"scale" : "3x",
"filename" : "uturn_compact_xxhdpi.png"
"filename" : "sharp_right@3x.png"
}
],
"info" : {

Binary file not shown.

After

Width:  |  Height:  |  Size: 655 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View file

@ -0,0 +1,23 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x",
"filename" : "simple_left.png"
},
{
"idiom" : "universal",
"scale" : "2x",
"filename" : "simple_left@2x.png"
},
{
"idiom" : "universal",
"scale" : "3x",
"filename" : "simple_left@3x.png"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 484 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 803 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -0,0 +1,23 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x",
"filename" : "simple_right.png"
},
{
"idiom" : "universal",
"scale" : "2x",
"filename" : "simple_right@2x.png"
},
{
"idiom" : "universal",
"scale" : "3x",
"filename" : "simple_right@3x.png"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 483 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 813 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -0,0 +1,23 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x",
"filename" : "slight_left.png"
},
{
"idiom" : "universal",
"scale" : "2x",
"filename" : "slight_left@2x.png"
},
{
"idiom" : "universal",
"scale" : "3x",
"filename" : "slight_left@3x.png"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 539 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 970 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -0,0 +1,23 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x",
"filename" : "slight_right.png"
},
{
"idiom" : "universal",
"scale" : "2x",
"filename" : "slight_right@2x.png"
},
{
"idiom" : "universal",
"scale" : "3x",
"filename" : "slight_right@3x.png"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 545 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 983 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -0,0 +1,23 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x",
"filename" : "straight.png"
},
{
"idiom" : "universal",
"scale" : "2x",
"filename" : "straight@2x.png"
},
{
"idiom" : "universal",
"scale" : "3x",
"filename" : "straight@3x.png"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 353 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 466 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 612 B

View file

@ -0,0 +1,23 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x",
"filename" : "uturn.png"
},
{
"idiom" : "universal",
"scale" : "2x",
"filename" : "uturn@2x.png"
},
{
"idiom" : "universal",
"scale" : "3x",
"filename" : "uturn@3x.png"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 747 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View file

@ -62,13 +62,6 @@
34BC72291B0DECAE0012A34B /* MWMZoomButtons.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34BC721D1B0DECAE0012A34B /* MWMZoomButtons.mm */; };
34BC722A1B0DECAE0012A34B /* MWMZoomButtonsView.m in Sources */ = {isa = PBXBuildFile; fileRef = 34BC721F1B0DECAE0012A34B /* MWMZoomButtonsView.m */; };
34BC722B1B0DECAE0012A34B /* MWMZoomButtonsView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34BC72201B0DECAE0012A34B /* MWMZoomButtonsView.xib */; };
34D783D21B5F9D7800E0C0EE /* MWMLandscapeNavigationDashboard.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34D783C91B5F9D7800E0C0EE /* MWMLandscapeNavigationDashboard.xib */; };
34D783D31B5F9D7800E0C0EE /* MWMNavigationDashboard.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34D783CB1B5F9D7800E0C0EE /* MWMNavigationDashboard.mm */; };
34D783D41B5F9D7800E0C0EE /* MWMPortraitNavigationDashboard.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34D783CC1B5F9D7800E0C0EE /* MWMPortraitNavigationDashboard.xib */; };
34D783D51B5F9D7800E0C0EE /* MWMLandscapeRoutePreview.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34D783CE1B5F9D7800E0C0EE /* MWMLandscapeRoutePreview.xib */; };
34D783D61B5F9D7800E0C0EE /* MWMPortraitRoutePreview.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34D783CF1B5F9D7800E0C0EE /* MWMPortraitRoutePreview.xib */; };
34D783D71B5F9D7800E0C0EE /* MWMRoutePreview.m in Sources */ = {isa = PBXBuildFile; fileRef = 34D783D11B5F9D7800E0C0EE /* MWMRoutePreview.m */; };
34D783DA1B5F9DB100E0C0EE /* MWMNavigationView.m in Sources */ = {isa = PBXBuildFile; fileRef = 34D783D91B5F9DB100E0C0EE /* MWMNavigationView.m */; };
34DF4D111AE77B9F0012702D /* MWMWKInterfaceController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34DF4D101AE77B9F0012702D /* MWMWKInterfaceController.mm */; };
45159BF91B0CA2D5009BFA85 /* resources-6plus in Resources */ = {isa = PBXBuildFile; fileRef = 45159BF81B0CA2D5009BFA85 /* resources-6plus */; };
454040621AD2D75E007A9B12 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 46F26C7210F61FD600ECCA39 /* OpenGLES.framework */; };
@ -238,6 +231,14 @@
F6BC1E4E1ACBE96100EF0360 /* FBSDKShareKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F6BC1E4C1ACBE96100EF0360 /* FBSDKShareKit.framework */; settings = {ATTRIBUTES = (Required, ); }; };
F6BC1E521ACBF98600EF0360 /* MWMFacebookAlert.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6BC1E511ACBF98600EF0360 /* MWMFacebookAlert.mm */; };
F6BC1E541ACBF9AB00EF0360 /* MWMFacebookAlert.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6BC1E531ACBF9AB00EF0360 /* MWMFacebookAlert.xib */; };
F6BD33781B62400E00F2CE18 /* MWMLandscapeNavigationDashboard.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6BD33741B62400E00F2CE18 /* MWMLandscapeNavigationDashboard.xib */; };
F6BD33791B62400E00F2CE18 /* MWMNavigationDashboard.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6BD33761B62400E00F2CE18 /* MWMNavigationDashboard.mm */; };
F6BD337A1B62400E00F2CE18 /* MWMPortraitNavigationDashboard.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6BD33771B62400E00F2CE18 /* MWMPortraitNavigationDashboard.xib */; };
F6BD337F1B62403B00F2CE18 /* MWMLandscapeRoutePreview.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6BD337B1B62403B00F2CE18 /* MWMLandscapeRoutePreview.xib */; };
F6BD33801B62403B00F2CE18 /* MWMPortraitRoutePreview.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6BD337C1B62403B00F2CE18 /* MWMPortraitRoutePreview.xib */; };
F6BD33811B62403B00F2CE18 /* MWMRoutePreview.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6BD337E1B62403B00F2CE18 /* MWMRoutePreview.mm */; };
F6BD33841B6240F200F2CE18 /* MWMNavigationView.m in Sources */ = {isa = PBXBuildFile; fileRef = F6BD33831B6240F200F2CE18 /* MWMNavigationView.m */; };
F6BD33871B62412E00F2CE18 /* MWMNavigationDashboardEntity.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6BD33861B62412E00F2CE18 /* MWMNavigationDashboardEntity.mm */; };
F6C6FE201AD6BEA0009FDED7 /* MWMWatchLocationTracker.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6C6FE1F1AD6BEA0009FDED7 /* MWMWatchLocationTracker.mm */; };
F6C9343C1AE4F94A00DDC624 /* MWMAnimator.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6C9343B1AE4F94A00DDC624 /* MWMAnimator.mm */; };
F6C934401AE64E4200DDC624 /* MWMSpringAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6C9343F1AE64E4200DDC624 /* MWMSpringAnimation.mm */; };
@ -362,7 +363,6 @@
28A0AB4B0D9B1048005BE974 /* Maps_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = Maps_Prefix.pch; sourceTree = "<group>"; 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 = "<group>"; };
340944A71B60EDF4008E7AF7 /* MWMSideMenuManagerDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMSideMenuManagerDelegate.h; sourceTree = "<group>"; };
340F24611B14910500F874CD /* RouteState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RouteState.h; sourceTree = "<group>"; };
340F24621B14910500F874CD /* RouteState.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = RouteState.mm; sourceTree = "<group>"; };
340F24641B15F01D00F874CD /* MWMSideMenuDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMSideMenuDelegate.h; sourceTree = "<group>"; };
@ -442,16 +442,6 @@
34BC721F1B0DECAE0012A34B /* MWMZoomButtonsView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWMZoomButtonsView.m; sourceTree = "<group>"; };
34BC72201B0DECAE0012A34B /* MWMZoomButtonsView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMZoomButtonsView.xib; sourceTree = "<group>"; };
34D56DDE1B3C310A00DFF4CC /* MWMSideMenuButtonDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMSideMenuButtonDelegate.h; sourceTree = "<group>"; };
34D783C91B5F9D7800E0C0EE /* MWMLandscapeNavigationDashboard.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMLandscapeNavigationDashboard.xib; sourceTree = "<group>"; };
34D783CA1B5F9D7800E0C0EE /* MWMNavigationDashboard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMNavigationDashboard.h; sourceTree = "<group>"; };
34D783CB1B5F9D7800E0C0EE /* MWMNavigationDashboard.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMNavigationDashboard.mm; sourceTree = "<group>"; };
34D783CC1B5F9D7800E0C0EE /* MWMPortraitNavigationDashboard.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMPortraitNavigationDashboard.xib; sourceTree = "<group>"; };
34D783CE1B5F9D7800E0C0EE /* MWMLandscapeRoutePreview.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMLandscapeRoutePreview.xib; sourceTree = "<group>"; };
34D783CF1B5F9D7800E0C0EE /* MWMPortraitRoutePreview.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMPortraitRoutePreview.xib; sourceTree = "<group>"; };
34D783D01B5F9D7800E0C0EE /* MWMRoutePreview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMRoutePreview.h; sourceTree = "<group>"; };
34D783D11B5F9D7800E0C0EE /* MWMRoutePreview.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWMRoutePreview.m; sourceTree = "<group>"; };
34D783D81B5F9DB100E0C0EE /* MWMNavigationView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMNavigationView.h; sourceTree = "<group>"; };
34D783D91B5F9DB100E0C0EE /* MWMNavigationView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWMNavigationView.m; sourceTree = "<group>"; };
34DF4D0F1AE77B9F0012702D /* MWMWKInterfaceController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMWKInterfaceController.h; sourceTree = "<group>"; };
34DF4D101AE77B9F0012702D /* MWMWKInterfaceController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMWKInterfaceController.mm; sourceTree = "<group>"; };
3D443C9C19E421EE0025C2FC /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/Localizable.strings; sourceTree = "<group>"; };
@ -687,6 +677,19 @@
F6BC1E501ACBF98600EF0360 /* MWMFacebookAlert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMFacebookAlert.h; sourceTree = "<group>"; };
F6BC1E511ACBF98600EF0360 /* MWMFacebookAlert.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMFacebookAlert.mm; sourceTree = "<group>"; };
F6BC1E531ACBF9AB00EF0360 /* MWMFacebookAlert.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMFacebookAlert.xib; sourceTree = "<group>"; };
F6BD33741B62400E00F2CE18 /* MWMLandscapeNavigationDashboard.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMLandscapeNavigationDashboard.xib; sourceTree = "<group>"; };
F6BD33751B62400E00F2CE18 /* MWMNavigationDashboard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMNavigationDashboard.h; sourceTree = "<group>"; };
F6BD33761B62400E00F2CE18 /* MWMNavigationDashboard.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMNavigationDashboard.mm; sourceTree = "<group>"; };
F6BD33771B62400E00F2CE18 /* MWMPortraitNavigationDashboard.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMPortraitNavigationDashboard.xib; sourceTree = "<group>"; };
F6BD337B1B62403B00F2CE18 /* MWMLandscapeRoutePreview.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMLandscapeRoutePreview.xib; sourceTree = "<group>"; };
F6BD337C1B62403B00F2CE18 /* MWMPortraitRoutePreview.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMPortraitRoutePreview.xib; sourceTree = "<group>"; };
F6BD337D1B62403B00F2CE18 /* MWMRoutePreview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMRoutePreview.h; sourceTree = "<group>"; };
F6BD337E1B62403B00F2CE18 /* MWMRoutePreview.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMRoutePreview.mm; sourceTree = "<group>"; };
F6BD33821B6240F200F2CE18 /* MWMNavigationView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMNavigationView.h; sourceTree = "<group>"; };
F6BD33831B6240F200F2CE18 /* MWMNavigationView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWMNavigationView.m; sourceTree = "<group>"; };
F6BD33851B62412E00F2CE18 /* MWMNavigationDashboardEntity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMNavigationDashboardEntity.h; sourceTree = "<group>"; };
F6BD33861B62412E00F2CE18 /* MWMNavigationDashboardEntity.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMNavigationDashboardEntity.mm; sourceTree = "<group>"; };
F6BD33881B62423900F2CE18 /* MWMSideMenuManagerDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMSideMenuManagerDelegate.h; sourceTree = "<group>"; };
F6C6FE1E1AD6BEA0009FDED7 /* MWMWatchLocationTracker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMWatchLocationTracker.h; sourceTree = "<group>"; };
F6C6FE1F1AD6BEA0009FDED7 /* MWMWatchLocationTracker.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMWatchLocationTracker.mm; sourceTree = "<group>"; };
F6C9343A1AE4F94A00DDC624 /* MWMAnimator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMAnimator.h; sourceTree = "<group>"; };
@ -1115,6 +1118,8 @@
3497A9321B5CF8A900F51E55 /* NavigationDashboard */ = {
isa = PBXGroup;
children = (
F6BD33851B62412E00F2CE18 /* MWMNavigationDashboardEntity.h */,
F6BD33861B62412E00F2CE18 /* MWMNavigationDashboardEntity.mm */,
3497A9361B5CF8A900F51E55 /* MWMNavigationDashboardManager.h */,
3497A9371B5CF8A900F51E55 /* MWMNavigationDashboardManager.mm */,
34D783C71B5F9D7800E0C0EE /* Views */,
@ -1196,9 +1201,9 @@
34BC72141B0DECAE0012A34B /* MWMSideMenuButton.h */,
34BC72151B0DECAE0012A34B /* MWMSideMenuButton.mm */,
34D56DDE1B3C310A00DFF4CC /* MWMSideMenuButtonDelegate.h */,
F6BD33881B62423900F2CE18 /* MWMSideMenuManagerDelegate.h */,
34BC72161B0DECAE0012A34B /* MWMSideMenuManager.h */,
34BC72171B0DECAE0012A34B /* MWMSideMenuManager.mm */,
340944A71B60EDF4008E7AF7 /* MWMSideMenuManagerDelegate.h */,
34BC72181B0DECAE0012A34B /* MWMSideMenuView.h */,
34BC72191B0DECAE0012A34B /* MWMSideMenuView.mm */,
34BC721A1B0DECAE0012A34B /* MWMSideMenuViews.xib */,
@ -1224,32 +1229,21 @@
34D783C71B5F9D7800E0C0EE /* Views */ = {
isa = PBXGroup;
children = (
34D783D81B5F9DB100E0C0EE /* MWMNavigationView.h */,
34D783D91B5F9DB100E0C0EE /* MWMNavigationView.m */,
34D783C81B5F9D7800E0C0EE /* Dashboard */,
F6BD33821B6240F200F2CE18 /* MWMNavigationView.h */,
F6BD33831B6240F200F2CE18 /* MWMNavigationView.m */,
F6BD33731B62400E00F2CE18 /* Dashboard */,
34D783CD1B5F9D7800E0C0EE /* RoutePreview */,
);
path = Views;
sourceTree = "<group>";
};
34D783C81B5F9D7800E0C0EE /* Dashboard */ = {
isa = PBXGroup;
children = (
34D783CA1B5F9D7800E0C0EE /* MWMNavigationDashboard.h */,
34D783CB1B5F9D7800E0C0EE /* MWMNavigationDashboard.mm */,
34D783C91B5F9D7800E0C0EE /* MWMLandscapeNavigationDashboard.xib */,
34D783CC1B5F9D7800E0C0EE /* MWMPortraitNavigationDashboard.xib */,
);
path = Dashboard;
sourceTree = "<group>";
};
34D783CD1B5F9D7800E0C0EE /* RoutePreview */ = {
isa = PBXGroup;
children = (
34D783D01B5F9D7800E0C0EE /* MWMRoutePreview.h */,
34D783D11B5F9D7800E0C0EE /* MWMRoutePreview.m */,
34D783CE1B5F9D7800E0C0EE /* MWMLandscapeRoutePreview.xib */,
34D783CF1B5F9D7800E0C0EE /* MWMPortraitRoutePreview.xib */,
F6BD337B1B62403B00F2CE18 /* MWMLandscapeRoutePreview.xib */,
F6BD337C1B62403B00F2CE18 /* MWMPortraitRoutePreview.xib */,
F6BD337D1B62403B00F2CE18 /* MWMRoutePreview.h */,
F6BD337E1B62403B00F2CE18 /* MWMRoutePreview.mm */,
);
path = RoutePreview;
sourceTree = "<group>";
@ -1657,6 +1651,17 @@
path = FacebookAlert;
sourceTree = "<group>";
};
F6BD33731B62400E00F2CE18 /* Dashboard */ = {
isa = PBXGroup;
children = (
F6BD33771B62400E00F2CE18 /* MWMPortraitNavigationDashboard.xib */,
F6BD33741B62400E00F2CE18 /* MWMLandscapeNavigationDashboard.xib */,
F6BD33751B62400E00F2CE18 /* MWMNavigationDashboard.h */,
F6BD33761B62400E00F2CE18 /* MWMNavigationDashboard.mm */,
);
path = Dashboard;
sourceTree = "<group>";
};
F6C9343D1AE6473F00DDC624 /* Animation */ = {
isa = PBXGroup;
children = (
@ -2095,7 +2100,7 @@
FA46DA2C12D4166E00968C36 /* countries.txt in Resources */,
EE583CBB12F773F00042CBE3 /* unicode_blocks.txt in Resources */,
EEFE7C1412F8C9E1006AF8C3 /* fonts_blacklist.txt in Resources */,
34D783D51B5F9D7800E0C0EE /* MWMLandscapeRoutePreview.xib in Resources */,
F6BD33781B62400E00F2CE18 /* MWMLandscapeNavigationDashboard.xib in Resources */,
F64F199E1AB81A00006EAF7E /* MWMDefaultAlert.xib in Resources */,
EEFE7C1512F8C9E1006AF8C3 /* fonts_whitelist.txt in Resources */,
F64F4B711B4A41D40081A24A /* MWMDownloaderDialogHeader.xib in Resources */,
@ -2118,13 +2123,13 @@
34BC72281B0DECAE0012A34B /* MWMSideMenuViews.xib in Resources */,
97FC99DE19C1A2CD00C1CF98 /* resources-xhdpi in Resources */,
97D40C0A184D031900A1D572 /* Images.xcassets in Resources */,
F6BD337F1B62403B00F2CE18 /* MWMLandscapeRoutePreview.xib in Resources */,
B0DFE6311A1B78A200B6C35E /* LocalNotifications.plist in Resources */,
978D4A31199A11E600D72CA7 /* faq.html in Resources */,
F66A8FB21B0A0954001B9C97 /* PlacePageView.xib in Resources */,
97FC99E019C1A2CD00C1CF98 /* resources-xxhdpi in Resources */,
97719D4B1843B86700BDD815 /* Main_iPad.storyboard in Resources */,
F64F19A41AB81A00006EAF7E /* MWMDownloadTransitMapAlert.xib in Resources */,
34D783D41B5F9D7800E0C0EE /* MWMPortraitNavigationDashboard.xib in Resources */,
F6BBF2C81B4FFB8C000CF8E2 /* MWMLocationAlert.xib in Resources */,
97A5967F19B9CD47007A963F /* copyright.html in Resources */,
978F9247183B6671000D6C7C /* Main_iPhone.storyboard in Resources */,
@ -2143,10 +2148,8 @@
F67BBB581AC54A7800D162C7 /* MWMFeedbackAlert.xib in Resources */,
FA140653162A6288002BC1ED /* empty.png in Resources */,
FA140655162A6288002BC1ED /* eye.png in Resources */,
34D783D61B5F9D7800E0C0EE /* MWMPortraitRoutePreview.xib in Resources */,
FA140657162A6288002BC1ED /* eye@2x.png in Resources */,
F7E7BA221672328F00B4492E /* atm.png in Resources */,
34D783D21B5F9D7800E0C0EE /* MWMLandscapeNavigationDashboard.xib in Resources */,
F7E7BA231672328F00B4492E /* atm@2x.png in Resources */,
F7E7BA241672328F00B4492E /* bank.png in Resources */,
34BC72231B0DECAE0012A34B /* MWMLocationButton.xib in Resources */,
@ -2156,6 +2159,7 @@
F7E7BA261672328F00B4492E /* entertainment.png in Resources */,
F6CB21621AEE902B00FB8963 /* PlacePageLinkCell.xib in Resources */,
349A35841B53E967009677EE /* MWMDownloadMapRequest.xib in Resources */,
F6BD33801B62403B00F2CE18 /* MWMPortraitRoutePreview.xib in Resources */,
F7E7BA271672328F00B4492E /* entertainment@2x.png in Resources */,
F7E7BA281672328F00B4492E /* food.png in Resources */,
F7E7BA291672328F00B4492E /* food@2x.png in Resources */,
@ -2166,6 +2170,7 @@
F7E7BA2C1672328F00B4492E /* hospital.png in Resources */,
F6CB21641AEFC42800FB8963 /* PlacePageActionBar.xib in Resources */,
F6CB216A1AF1303900FB8963 /* PlacePageBookmarkCell.xib in Resources */,
F6BD337A1B62400E00F2CE18 /* MWMPortraitNavigationDashboard.xib in Resources */,
F7E7BA2D1672328F00B4492E /* hospital@2x.png in Resources */,
F7E7BA2E1672328F00B4492E /* parking.png in Resources */,
F7E7BA2F1672328F00B4492E /* parking@2x.png in Resources */,
@ -2286,7 +2291,6 @@
B08AA8CE1A24C7BC00810B1C /* LocalNotificationInfoProvider.m in Sources */,
1D3623260D0F684500981E51 /* MapsAppDelegate.mm in Sources */,
F67BBB571AC54A7800D162C7 /* MWMFeedbackAlert.mm in Sources */,
34D783D71B5F9D7800E0C0EE /* MWMRoutePreview.m in Sources */,
349A35831B53E967009677EE /* MWMDownloadMapRequest.mm in Sources */,
A32B6D4C1A14980500E54A65 /* iosOGLContext.mm in Sources */,
B0E1FCDF1A2343BC00A8E08B /* NextTurnPhoneView.m in Sources */,
@ -2318,6 +2322,7 @@
34BC72221B0DECAE0012A34B /* MWMLocationButtonView.mm in Sources */,
340F24631B14910500F874CD /* RouteState.mm in Sources */,
9747264318323080006B7CB7 /* UIKitCategories.m in Sources */,
F6BD33811B62403B00F2CE18 /* MWMRoutePreview.mm in Sources */,
977E26BE19E31BBE00BA2219 /* CountryTreeVC.mm in Sources */,
97A8001418B2140A000C07A2 /* SearchResultCell.m in Sources */,
97F0817E19AF72590098FB0B /* BadgeView.m in Sources */,
@ -2327,7 +2332,6 @@
F67BC2751B254F5500FE1D7B /* MWMPlacePageTypeDescription.mm in Sources */,
B08AA8DA1A26299A00810B1C /* TimeUtils.m in Sources */,
F6CB216D1AF13EBD00FB8963 /* MWMPlacePageBookmarkCell.mm in Sources */,
34D783DA1B5F9DB100E0C0EE /* MWMNavigationView.m in Sources */,
F653D4231AE9398700282659 /* MWMPlacePageViewManager.mm in Sources */,
F65243351B0B634F00BFA9D4 /* MWMPlacePage+Animation.mm in Sources */,
976D86F519CB21BD00C920EF /* RouteView.mm in Sources */,
@ -2341,6 +2345,7 @@
FAA5C2A2144F135F005337F6 /* LocationManager.mm in Sources */,
F66A8FAC1B09F137001B9C97 /* MWMiPadPlacePage.mm in Sources */,
978F9240183B660F000D6C7C /* SettingsViewController.mm in Sources */,
F6BD33871B62412E00F2CE18 /* MWMNavigationDashboardEntity.mm in Sources */,
F6CB21601AEE7A5B00FB8963 /* MWMPlacePageInfoCell.mm in Sources */,
B0E1FCDC1A23399E00A8E08B /* RouteOverallInfoView.m in Sources */,
F6DBF9B61AA8779300F2EC2C /* CALayer+RuntimeAttributes.mm in Sources */,
@ -2359,6 +2364,7 @@
B0FBFA2B1A515B4C0086819E /* TableViewController.m in Sources */,
F785EB4016386FC4003A38A8 /* BookmarkCell.mm in Sources */,
34BC72241B0DECAE0012A34B /* MWMMapViewControlsManager.mm in Sources */,
F6BD33791B62400E00F2CE18 /* MWMNavigationDashboard.mm in Sources */,
974D041D1977DE430081D0A7 /* LocalNotificationManager.mm in Sources */,
97C98522186AE3CF00AF7E9E /* AppInfo.mm in Sources */,
978F9242183B660F000D6C7C /* SelectableCell.m in Sources */,
@ -2367,7 +2373,6 @@
CB252D6F16FF82C9001E41E9 /* Statistics.mm in Sources */,
978F9244183B660F000D6C7C /* SwitchCell.m in Sources */,
342AD7721B53D32F00E0B997 /* UIView+RuntimeAttributes.m in Sources */,
34D783D31B5F9D7800E0C0EE /* MWMNavigationDashboard.mm in Sources */,
F64F4B6D1B46A51F0081A24A /* MWMDownloaderDialogCell.mm in Sources */,
97508423199522D300A7457D /* SettingsAndMoreVC.mm in Sources */,
F6ED13541B1643900095C6DE /* MWMDirectionView.mm in Sources */,
@ -2378,6 +2383,7 @@
97F61794183E7445009919E2 /* LinkCell.m in Sources */,
976D86EC19C8697700C920EF /* ProgressView.m in Sources */,
B0FBFA271A515AFD0086819E /* ViewController.m in Sources */,
F6BD33841B6240F200F2CE18 /* MWMNavigationView.m in Sources */,
3472EC051B4D44BE0085CB79 /* UIFont+MapsMeFonts.mm in Sources */,
342AD76F1B53D30C00E0B997 /* UIButton+RuntimeAttributes.m in Sources */,
349A358C1B53EABC009677EE /* MWMSearchDownloadMapRequest.m in Sources */,