diff --git a/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.mm b/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.mm index 28e967bcac..dd574203f6 100644 --- a/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.mm +++ b/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.mm @@ -62,6 +62,7 @@ - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)orientation { [self.placePageManager willRotateToInterfaceOrientation:orientation]; + [self.navigationManager willRotateToInterfaceOrientation:orientation]; } #pragma mark - MWMPlacePageViewManager @@ -110,7 +111,8 @@ - (void)buildRouteWithType:(enum MWMNavigationRouteType)type { - GetFramework().BuildRoute(self.routeDestination, 0 /* timeoutSec */); + self.navigationManager.state = MWMNavigationDashboardStatePlanning; +// GetFramework().BuildRoute(self.routeDestination, 0 /* timeoutSec */); } #pragma mark - Properties diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Dashboard/MWMNavigationDashboard.mm b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Dashboard/MWMNavigationDashboard.mm deleted file mode 100644 index 261a1e83a6..0000000000 --- a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Dashboard/MWMNavigationDashboard.mm +++ /dev/null @@ -1,60 +0,0 @@ -// -// MWMNavigationDashboard.m -// Maps -// -// Created by v.mikhaylenko on 20.07.15. -// Copyright (c) 2015 MapsWithMe. All rights reserved. -// - -#import "MWMNavigationDashboard.h" - -@interface MWMNavigationDashboard () - -@end - -@implementation MWMNavigationDashboard - -- (void)addToView:(UIView *)superview -{ - [superview addSubview:self]; - self.frame = self.defaultFrame; - [self setInitialPosition]; - [self moveIn]; -} - -- (void)remove -{ - [UIView animateWithDuration:0.2 animations:^ - { - [self setInitialPosition]; - } - completion:^(BOOL finished) - { - [self removeFromSuperview]; - }]; -} - -- (void)setInitialPosition -{ - self.maxY = 0.0; -} - -- (void)moveIn -{ - [UIView animateWithDuration:0.2 animations:^{ self.origin = CGPointZero; }]; -} - -- (void)layoutSubviews -{ - self.frame = self.defaultFrame; - [super layoutSubviews]; -} - -#pragma mark - Properties - -- (CGRect)defaultFrame -{ - return CGRectMake(0.0, self.topOffset, self.superview.width, 92.0); -} - -@end diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.h b/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.h index 6682735e83..2fb013f46f 100644 --- a/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.h +++ b/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.h @@ -32,4 +32,6 @@ typedef NS_ENUM(NSUInteger, MWMNavigationDashboardState) - (instancetype)init __attribute__((unavailable("init is not available"))); - (instancetype)initWithParentView:(UIView *)view delegate:(id)delegate; +- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)orientation; + @end diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.mm b/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.mm index 4bba4c411e..1397d2c3dd 100644 --- a/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.mm +++ b/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.mm @@ -13,8 +13,14 @@ @interface MWMNavigationDashboardManager () -@property (nonatomic) IBOutlet MWMRoutePreview * routePreview; -@property (nonatomic) IBOutlet MWMNavigationDashboard * navigationDashboard; +@property (nonatomic) IBOutlet MWMRoutePreview * routePreviewLandscape; +@property (nonatomic) IBOutlet MWMRoutePreview * routePreviewPortrait; +@property (weak, nonatomic) MWMRoutePreview * routePreview; + + +@property (nonatomic) IBOutlet MWMNavigationDashboard * navigationDashboardLandscape; +@property (nonatomic) IBOutlet MWMNavigationDashboard * navigationDashboardPortrait; +@property (weak, nonatomic) MWMNavigationDashboard * navigationDashboard; @property (weak, nonatomic) UIView * ownerView; @property (weak, nonatomic) id delegate; @@ -30,22 +36,55 @@ { self.ownerView = view; self.delegate = delegate; + BOOL const isPortrait = self.ownerView.width < self.ownerView.height; + + [NSBundle.mainBundle loadNibNamed:@"MWMPortraitRoutePreview" owner:self options:nil]; + [NSBundle.mainBundle loadNibNamed:@"MWMLandscapeRoutePreview" owner:self options:nil]; + self.routePreview = isPortrait ? self.routePreviewPortrait : self.routePreviewLandscape; + + [NSBundle.mainBundle loadNibNamed:@"MWMPortraitNavigationDashboard" owner:self options:nil]; + [NSBundle.mainBundle loadNibNamed:@"MWMLandscapeNavigationDashboard" owner:self options:nil]; + self.navigationDashboard = isPortrait ? self.navigationDashboardPortrait : self.navigationDashboardLandscape; } return self; } +#pragma mark - Layout + +- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)orientation +{ + BOOL const isPortrait = orientation == UIInterfaceOrientationPortrait || orientation == UIInterfaceOrientationPortraitUpsideDown; + MWMRoutePreview * routePreview = isPortrait ? self.routePreviewPortrait : self.routePreviewLandscape; + if (self.routePreview.isVisible && ![routePreview isEqual:self.routePreview]) + { + [self.routePreview remove]; + [routePreview addToView:self.ownerView]; + } + self.routePreview = routePreview; + + MWMNavigationDashboard * navigationDashboard = isPortrait ? self.navigationDashboardPortrait : self.navigationDashboardLandscape; + if (self.navigationDashboard.isVisible && ![navigationDashboard isEqual:self.navigationDashboard]) + { + [self.navigationDashboard remove]; + [navigationDashboard addToView:self.ownerView]; + } + self.navigationDashboard = navigationDashboard; +} + #pragma mark - MWMRoutePreview - (IBAction)routePreviewChange:(UIButton *)sender { - enum MWMNavigationRouteType const type = [sender isEqual:self.routePreview.pedestrian] ? MWMNavigationRouteTypePedestrian : MWMNavigationRouteTypeVehicle; - [self.delegate buildRouteWithType:type]; + self.routePreview.showGoButton = [sender isEqual:self.routePreview.pedestrian]; +// enum MWMNavigationRouteType const type = [sender isEqual:self.routePreview.pedestrian] ? MWMNavigationRouteTypePedestrian : MWMNavigationRouteTypeVehicle; +// [self.delegate buildRouteWithType:type]; } #pragma mark - MWMNavigationDashboard - (IBAction)navigationCancelPressed:(UIButton *)sender { + self.state = MWMNavigationDashboardStateHidden; } #pragma mark - MWMNavigationGo @@ -57,6 +96,12 @@ #pragma mark - State changes +- (void)hideState +{ + [self.routePreview remove]; + [self.navigationDashboard remove]; +} + - (void)showStatePlanning { [self.routePreview addToView:self.ownerView]; @@ -70,20 +115,6 @@ #pragma mark - Properties -- (MWMRoutePreview *)routePreview -{ - if (!_routePreview) - [NSBundle.mainBundle loadNibNamed:MWMRoutePreview.className owner:self options:nil]; - return _routePreview; -} - -- (MWMNavigationDashboard *)navigationDashboard -{ - if (!_navigationDashboard) - [NSBundle.mainBundle loadNibNamed:MWMNavigationDashboard.className owner:self options:nil]; - return _navigationDashboard; -} - - (void)setState:(MWMNavigationDashboardState)state { if (_state == state) @@ -91,6 +122,7 @@ switch (state) { case MWMNavigationDashboardStateHidden: + [self hideState]; break; case MWMNavigationDashboardStatePlanning: NSAssert(_state == MWMNavigationDashboardStateHidden, @"Invalid state change"); diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/Dashboard/MWMLandscapeNavigationDashboard.xib b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/Dashboard/MWMLandscapeNavigationDashboard.xib new file mode 100644 index 0000000000..86a23cba5f --- /dev/null +++ b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/Dashboard/MWMLandscapeNavigationDashboard.xib @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Dashboard/MWMNavigationDashboard.h b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/Dashboard/MWMNavigationDashboard.h similarity index 72% rename from iphone/Maps/Classes/CustomViews/NavigationDashboard/Dashboard/MWMNavigationDashboard.h rename to iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/Dashboard/MWMNavigationDashboard.h index f56c2f35b7..8c38199be8 100644 --- a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Dashboard/MWMNavigationDashboard.h +++ b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/Dashboard/MWMNavigationDashboard.h @@ -6,11 +6,9 @@ // Copyright (c) 2015 MapsWithMe. All rights reserved. // -#import "UIKitCategories.h" +#import "MWMNavigationView.h" -@interface MWMNavigationDashboard : SolidTouchView - -@property (nonatomic) CGFloat topOffset; +@interface MWMNavigationDashboard : MWMNavigationView @property (weak, nonatomic) IBOutlet UIImageView * direction; @property (weak, nonatomic) IBOutlet UILabel * distanceToNextAction; @@ -18,7 +16,4 @@ @property (weak, nonatomic) IBOutlet UILabel * distanceLeft; @property (weak, nonatomic) IBOutlet UILabel * eta; -- (void)addToView:(UIView *)superview; -- (void)remove; - @end diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/Dashboard/MWMNavigationDashboard.mm b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/Dashboard/MWMNavigationDashboard.mm new file mode 100644 index 0000000000..6aa201ef49 --- /dev/null +++ b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/Dashboard/MWMNavigationDashboard.mm @@ -0,0 +1,13 @@ +// +// MWMNavigationDashboard.m +// Maps +// +// Created by v.mikhaylenko on 20.07.15. +// Copyright (c) 2015 MapsWithMe. All rights reserved. +// + +#import "MWMNavigationDashboard.h" + +@implementation MWMNavigationDashboard + +@end diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Dashboard/MWMNavigationDashboard.xib b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/Dashboard/MWMPortraitNavigationDashboard.xib similarity index 99% rename from iphone/Maps/Classes/CustomViews/NavigationDashboard/Dashboard/MWMNavigationDashboard.xib rename to iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/Dashboard/MWMPortraitNavigationDashboard.xib index 92fd8f19f6..6ebf8d19b5 100644 --- a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Dashboard/MWMNavigationDashboard.xib +++ b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/Dashboard/MWMPortraitNavigationDashboard.xib @@ -7,7 +7,7 @@ - + diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/MWMNavigationView.h b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/MWMNavigationView.h new file mode 100644 index 0000000000..c14009d42b --- /dev/null +++ b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/MWMNavigationView.h @@ -0,0 +1,19 @@ +// +// MWMNavigationView.h +// Maps +// +// Created by Ilya Grechuhin on 22.07.15. +// Copyright (c) 2015 MapsWithMe. All rights reserved. +// + +#import "UIKitCategories.h" + +@interface MWMNavigationView : SolidTouchView + +@property (nonatomic) CGFloat topOffset; +@property (nonatomic, readonly) BOOL isVisible; + +- (void)addToView:(UIView *)superview; +- (void)remove; + +@end diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/MWMNavigationView.m b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/MWMNavigationView.m new file mode 100644 index 0000000000..641f954b28 --- /dev/null +++ b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/MWMNavigationView.m @@ -0,0 +1,71 @@ +// +// MWMNavigationView.m +// Maps +// +// Created by Ilya Grechuhin on 22.07.15. +// Copyright (c) 2015 MapsWithMe. All rights reserved. +// + +#import "MWMNavigationView.h" + +@interface MWMNavigationView () + +@property (nonatomic) BOOL isVisible; +@property (nonatomic) CGFloat defaultHeight; + +@end + +@implementation MWMNavigationView + +- (void)awakeFromNib +{ + [super awakeFromNib]; + self.defaultHeight = self.height; +} + +- (void)addToView:(UIView *)superview +{ + [superview addSubview:self]; + self.frame = self.defaultFrame; + self.isVisible = YES; +} + +- (void)remove +{ + self.isVisible = NO; +} + +- (void)layoutSubviews +{ + [UIView animateWithDuration:0.2 animations:^ + { + self.frame = self.defaultFrame; + } + completion:^(BOOL finished) + { + if (!self.isVisible) + [self removeFromSuperview]; + }]; + [super layoutSubviews]; +} + +#pragma mark - Properties + +- (CGRect)defaultFrame +{ + return CGRectMake(0.0, self.topOffset - (self.isVisible ? 0.0 : self.defaultHeight), self.superview.width, self.defaultHeight); +} + +- (void)setTopOffset:(CGFloat)topOffset +{ + _topOffset = topOffset; + [self layoutSubviews]; +} + +- (void)setIsVisible:(BOOL)isVisible +{ + _isVisible = isVisible; + [self layoutSubviews]; +} + +@end diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/MWMLandscapeRoutePreview.xib b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/MWMLandscapeRoutePreview.xib new file mode 100644 index 0000000000..667eec8f80 --- /dev/null +++ b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/MWMLandscapeRoutePreview.xib @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/RoutePreview/MWMRoutePreview.xib b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/MWMPortraitRoutePreview.xib similarity index 96% rename from iphone/Maps/Classes/CustomViews/NavigationDashboard/RoutePreview/MWMRoutePreview.xib rename to iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/MWMPortraitRoutePreview.xib index ddef74763d..827165f343 100644 --- a/iphone/Maps/Classes/CustomViews/NavigationDashboard/RoutePreview/MWMRoutePreview.xib +++ b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/MWMPortraitRoutePreview.xib @@ -7,7 +7,7 @@ - + @@ -50,7 +50,7 @@ -