[ios] New logic of sharing.

This commit is contained in:
VladiMihaylenko 2016-07-21 15:24:34 +03:00
parent b36ab27345
commit 83eb7939c2
20 changed files with 193 additions and 550 deletions

View file

@ -5,7 +5,7 @@
@interface MWMAlertViewController : UIViewController
+ (MWMAlertViewController *)activeAlertController;
+ (nonnull MWMAlertViewController *)activeAlertController;
@property (weak, nonatomic, readonly) UIViewController * _Null_unspecified ownerViewController;
@ -31,7 +31,6 @@
- (void)presentDeleteMapProhibitedAlert;
- (void)presentUnsavedEditsAlertWithOkBlock:(nonnull TMWMVoidBlock)okBlock;
- (void)presentNoWiFiAlertWithOkBlock:(nullable TMWMVoidBlock)okBlock;
- (void)presentPedestrianToastAlert:(BOOL)isFirstLaunch;
- (void)presentIncorrectFeauturePositionAlert;
- (void)presentInternalErrorAlert;
- (void)presentNotEnoughSpaceAlert;

View file

@ -15,7 +15,7 @@ static NSString * const kAlertControllerNibIdentifier = @"MWMAlertViewController
@implementation MWMAlertViewController
+ (MWMAlertViewController *)activeAlertController
+ (nonnull MWMAlertViewController *)activeAlertController
{
UIWindow * window = UIApplication.sharedApplication.delegate.window;
UIViewController * rootViewController = window.rootViewController;
@ -78,11 +78,6 @@ static NSString * const kAlertControllerNibIdentifier = @"MWMAlertViewController
[self displayAlert:[MWMAlert noWiFiAlertWithOkBlock:okBlock]];
}
- (void)presentPedestrianToastAlert:(BOOL)isFirstLaunch
{
[self displayAlert:[MWMAlert pedestrianToastShareAlert:isFirstLaunch]];
}
- (void)presentIncorrectFeauturePositionAlert
{
[self displayAlert:[MWMAlert incorrectFeauturePositionAlert]];

View file

@ -28,7 +28,6 @@ using TMWMDownloadBlock = void (^)(storage::TCountriesVec const &, TMWMVoidBlock
+ (MWMAlert *)unsavedEditsAlertWithOkBlock:(TMWMVoidBlock)okBlock;
+ (MWMAlert *)locationServiceNotSupportedAlert;
+ (MWMAlert *)locationNotFoundAlertWithOkBlock:(TMWMVoidBlock)okBlock;
+ (MWMAlert *)pedestrianToastShareAlert:(BOOL)isFirstLaunch;
+ (MWMAlert *)incorrectFeauturePositionAlert;
+ (MWMAlert *)internalErrorAlert;
+ (MWMAlert *)notEnoughSpaceAlert;

View file

@ -7,7 +7,6 @@
#import "MWMFacebookAlert.h"
#import "MWMLocationAlert.h"
#import "MWMOsmAuthAlert.h"
#import "MWMPedestrianShareAlert.h"
#import "MWMPlaceDoesntExistAlert.h"
#import "MWMRateAlert.h"
#import "MWMRoutingDisclaimerAlert.h"
@ -129,11 +128,6 @@
}
}
+ (MWMAlert *)pedestrianToastShareAlert:(BOOL)isFirstLaunch
{
return [MWMPedestrianShareAlert alert:isFirstLaunch];
}
+ (MWMAlert *)incorrectFeauturePositionAlert
{
return [MWMDefaultAlert incorrectFeauturePositionAlert];

View file

@ -1,7 +0,0 @@
#import "MWMAlert.h"
@interface MWMPedestrianShareAlert : MWMAlert
+ (MWMPedestrianShareAlert *)alert:(BOOL)isFirstLaunch;
@end

View file

@ -1,88 +0,0 @@
#import "Common.h"
#import "Macros.h"
#import "MWMActivityViewController.h"
#import "MWMAlertViewController.h"
#import "MWMPedestrianShareAlert.h"
#import "Statistics.h"
#import "UIButton+RuntimeAttributes.h"
#import "UIColor+MapsMeColor.h"
#import "3party/Alohalytics/src/alohalytics_objc.h"
static NSString * const kStatisticsEvent = @"Pedestrian Share Alert";
@interface MWMPedestrianShareAlert ()
@property (weak, nonatomic) IBOutlet UILabel * title;
@property (weak, nonatomic) IBOutlet UIView * videoView;
@property (weak, nonatomic) IBOutlet UIImageView * image;
@property (weak, nonatomic) IBOutlet UILabel * message;
@property (weak, nonatomic) IBOutlet UIButton * shareButton;
@property (nonatomic) BOOL isFirstLaunch;
@end
@implementation MWMPedestrianShareAlert
+ (MWMPedestrianShareAlert *)alert:(BOOL)isFirstLaunch
{
[Statistics logEvent:kStatisticsEvent withParameters:@{kStatAction : kStatOpen}];
MWMPedestrianShareAlert * view = [NSBundle.mainBundle loadNibNamed:NSStringFromClass(self.class) owner:self
options:nil].firstObject;
view.isFirstLaunch = isFirstLaunch;
if (isFirstLaunch)
{
view.title.text = L(@"title_walking_available");
view.message.text = L(@"share_walking_routes_first_launch");
view.image.image = [UIImage imageNamed:@"img_pedestrian"];
}
else
{
view.title.text = L(@"share_walking_routes_congratulations");
view.message.text = L(@"share_walking_routes_mastering");
view.image.image = [UIImage imageNamed:@"img_achive_pedestrian"];
}
return view;
}
#pragma mark - Actions
- (IBAction)shareButtonTap
{
[Statistics logEvent:kStatisticsEvent withParameters:@{kStatAction : kStatApply}];
[Alohalytics logEvent:kStatisticsEvent withValue:@"shareTap"];
MWMActivityViewController * shareVC = [MWMActivityViewController shareControllerForPedestrianRoutesToast];
if (IPAD && !isIOS7)
{
shareVC.completionWithItemsHandler = ^(NSString * activityType, BOOL completed, NSArray * returnedItems,
NSError * activityError)
{
[self close];
};
}
else
{
[self close];
}
[shareVC presentInParentViewController:self.alertController anchorView:self.shareButton];
}
- (IBAction)doneButtonTap
{
[Statistics logEvent:kStatisticsEvent withParameters:@{kStatAction : kStatClose}];
[Alohalytics logEvent:kStatisticsEvent withValue:@"doneTap"];
[self close];
}
- (void)rotate:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
// Overridden implemantation left empty since this view is added to the view controller handling device rotation
}
- (void)addControllerViewToWindow
{
// Overridden implemantation left empty to let sharing view appear above
}
@end

View file

@ -1,203 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="10116" systemVersion="15D21" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
<dependencies>
<deployment version="2048" identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
</dependencies>
<customFonts key="customFonts">
<mutableArray key="HelveticaNeue.ttc">
<string>HelveticaNeue-Medium</string>
</mutableArray>
</customFonts>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
<view contentMode="scaleToFill" id="pWH-NL-pHM" customClass="MWMPedestrianShareAlert">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
<subviews>
<view opaque="NO" contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="pGZ-bY-bgx" userLabel="ContainerView">
<rect key="frame" x="156" y="128" width="288" height="345"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="В MAPS.ME появилась пешеходная навигация!" textAlignment="center" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9PB-XH-zjT">
<rect key="frame" x="36" y="12" width="216" height="43"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="18"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="medium18"/>
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackPrimaryText"/>
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="rating_do_like_maps"/>
</userDefinedRuntimeAttributes>
</label>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="zDQ-dL-OUk">
<rect key="frame" x="64" y="75" width="160" height="160"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="img_achive_pedestrian" translatesAutoresizingMaskIntoConstraints="NO" id="9Ej-7o-iGX" userLabel="Image">
<rect key="frame" x="0.0" y="0.0" width="160" height="160"/>
</imageView>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="9Ej-7o-iGX" secondAttribute="bottom" id="3TZ-db-nlO"/>
<constraint firstAttribute="width" constant="160" id="eE4-yi-dMf">
<variation key="heightClass=compact" constant="100"/>
<variation key="heightClass=regular-widthClass=regular" constant="240"/>
</constraint>
<constraint firstAttribute="height" constant="160" id="egN-3e-TXd">
<variation key="heightClass=compact" constant="100"/>
<variation key="heightClass=regular-widthClass=regular" constant="240"/>
</constraint>
<constraint firstItem="9Ej-7o-iGX" firstAttribute="leading" secondItem="zDQ-dL-OUk" secondAttribute="leading" id="tue-93-Bqw"/>
<constraint firstItem="9Ej-7o-iGX" firstAttribute="top" secondItem="zDQ-dL-OUk" secondAttribute="top" id="vN6-0l-3xD"/>
<constraint firstAttribute="trailing" secondItem="9Ej-7o-iGX" secondAttribute="trailing" id="veK-iv-zJg"/>
</constraints>
</view>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Message" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Jz3-Ch-ekb" userLabel="Message">
<rect key="frame" x="20" y="245" width="248" height="17"/>
<fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="14"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular14"/>
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackSecondaryText"/>
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="rating_do_like_maps"/>
</userDefinedRuntimeAttributes>
</label>
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="WnY-H8-xZB" userLabel="Share">
<rect key="frame" x="20" y="281" width="248" height="44"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="height" constant="44" id="s0x-cV-c3v"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="17"/>
<state key="normal" title="Share">
<color key="titleColor" red="0.01176470588" green="0.47843137250000001" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="share"/>
<userDefinedRuntimeAttribute type="string" keyPath="textColorName" value="linkBlue"/>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="medium17"/>
<userDefinedRuntimeAttribute type="string" keyPath="textColorHighlightedName" value="white"/>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<integer key="value" value="8"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="string" keyPath="layer.borderColorName" value="linkBlue"/>
<userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
<integer key="value" value="1"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="string" keyPath="backgroundColorName" value="clearColor"/>
<userDefinedRuntimeAttribute type="string" keyPath="backgroundHighlightedColorName" value="linkBlue"/>
</userDefinedRuntimeAttributes>
<connections>
<action selector="shareButtonTap" destination="pWH-NL-pHM" eventType="touchUpInside" id="5Kn-q1-1CP"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="IhW-S4-r6g" userLabel="Done" customClass="MWMButton">
<rect key="frame" x="248" y="0.0" width="40" height="40"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="17"/>
<state key="normal" image="ic_cancel">
<color key="titleColor" red="0.011764705882352941" green="0.47843137254901957" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="coloringName" value="MWMBlack"/>
</userDefinedRuntimeAttributes>
<connections>
<action selector="doneButtonTap" destination="pWH-NL-pHM" eventType="touchUpInside" id="LRz-Yf-PM8"/>
</connections>
</button>
</subviews>
<color key="backgroundColor" red="0.84705882349999995" green="0.84705882349999995" blue="0.84705882349999995" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="WnY-H8-xZB" secondAttribute="trailing" constant="20" id="0bP-uH-QOv">
<variation key="heightClass=compact" constant="40"/>
<variation key="heightClass=regular-widthClass=regular" constant="80"/>
</constraint>
<constraint firstItem="9PB-XH-zjT" firstAttribute="top" secondItem="pGZ-bY-bgx" secondAttribute="top" constant="12" id="4p5-bE-MGd">
<variation key="heightClass=compact-widthClass=regular" constant="10"/>
</constraint>
<constraint firstItem="9PB-XH-zjT" firstAttribute="centerY" secondItem="IhW-S4-r6g" secondAttribute="centerY" id="9RQ-Er-8ov"/>
<constraint firstItem="IhW-S4-r6g" firstAttribute="top" secondItem="pGZ-bY-bgx" secondAttribute="top" id="ANX-0c-y3o"/>
<constraint firstItem="WnY-H8-xZB" firstAttribute="top" secondItem="Jz3-Ch-ekb" secondAttribute="bottom" constant="20" id="Awo-l7-UNZ">
<variation key="heightClass=compact" constant="4"/>
<variation key="heightClass=regular-widthClass=regular" constant="40"/>
</constraint>
<constraint firstAttribute="bottom" secondItem="WnY-H8-xZB" secondAttribute="bottom" constant="20" id="Gg8-7b-2dW">
<variation key="heightClass=compact-widthClass=regular" constant="12"/>
<variation key="heightClass=regular-widthClass=regular" constant="40"/>
</constraint>
<constraint firstAttribute="width" constant="288" id="IyT-x4-C7K">
<variation key="heightClass=compact" constant="360"/>
<variation key="heightClass=regular-widthClass=regular" constant="400"/>
</constraint>
<constraint firstItem="Jz3-Ch-ekb" firstAttribute="leading" secondItem="pGZ-bY-bgx" secondAttribute="leading" constant="20" id="Nfu-Za-PNh">
<variation key="heightClass=regular-widthClass=regular" constant="40"/>
</constraint>
<constraint firstAttribute="centerX" secondItem="9PB-XH-zjT" secondAttribute="centerX" id="TNo-Kf-Qi9"/>
<constraint firstAttribute="trailing" secondItem="9PB-XH-zjT" secondAttribute="trailing" constant="36" id="fb4-Si-VVj"/>
<constraint firstAttribute="centerX" secondItem="zDQ-dL-OUk" secondAttribute="centerX" id="g05-5f-7nO"/>
<constraint firstItem="WnY-H8-xZB" firstAttribute="leading" secondItem="pGZ-bY-bgx" secondAttribute="leading" constant="20" id="gSQ-cn-GSd">
<variation key="heightClass=compact" constant="40"/>
<variation key="heightClass=regular-widthClass=regular" constant="80"/>
</constraint>
<constraint firstAttribute="trailing" secondItem="Jz3-Ch-ekb" secondAttribute="trailing" constant="20" id="j9G-MS-Vjh">
<variation key="heightClass=regular-widthClass=regular" constant="40"/>
</constraint>
<constraint firstAttribute="centerX" secondItem="Jz3-Ch-ekb" secondAttribute="centerX" id="lDa-kN-XLb"/>
<constraint firstAttribute="centerX" secondItem="Jz3-Ch-ekb" secondAttribute="centerX" id="mZV-cZ-lbt"/>
<constraint firstItem="Jz3-Ch-ekb" firstAttribute="top" secondItem="zDQ-dL-OUk" secondAttribute="bottom" constant="10" id="pnT-2l-ol1">
<variation key="heightClass=compact-widthClass=regular" constant="0.0"/>
<variation key="heightClass=regular-widthClass=regular" constant="20"/>
</constraint>
<constraint firstItem="9PB-XH-zjT" firstAttribute="leading" secondItem="pGZ-bY-bgx" secondAttribute="leading" constant="36" id="sLu-Jx-pUC"/>
<constraint firstAttribute="trailing" secondItem="IhW-S4-r6g" secondAttribute="trailing" id="svC-Yh-xZj"/>
<constraint firstItem="zDQ-dL-OUk" firstAttribute="top" secondItem="9PB-XH-zjT" secondAttribute="bottom" constant="20" id="yEO-Um-xYq">
<variation key="heightClass=compact" constant="4"/>
<variation key="heightClass=regular-widthClass=regular" constant="12"/>
</constraint>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="size" keyPath="layer.shadowOffset">
<size key="value" width="0.0" height="3"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="layer.shadowRadius">
<integer key="value" value="6"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<integer key="value" value="12"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="string" keyPath="backgroundColorName" value="alertBackground"/>
</userDefinedRuntimeAttributes>
<variation key="default">
<mask key="constraints">
<exclude reference="9RQ-Er-8ov"/>
<exclude reference="TNo-Kf-Qi9"/>
<exclude reference="lDa-kN-XLb"/>
<exclude reference="mZV-cZ-lbt"/>
</mask>
</variation>
</view>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="centerY" secondItem="pGZ-bY-bgx" secondAttribute="centerY" id="8II-Zw-Sfx"/>
<constraint firstAttribute="centerX" secondItem="pGZ-bY-bgx" secondAttribute="centerX" id="Bzb-Vi-8MN"/>
</constraints>
<connections>
<outlet property="image" destination="9Ej-7o-iGX" id="9Vw-ET-NAz"/>
<outlet property="message" destination="Jz3-Ch-ekb" id="tMh-i8-TlF"/>
<outlet property="shareButton" destination="WnY-H8-xZB" id="FMS-ZI-eSo"/>
<outlet property="title" destination="9PB-XH-zjT" id="l2J-TX-8lx"/>
<outlet property="videoView" destination="zDQ-dL-OUk" id="PyY-Rc-3DW"/>
</connections>
<point key="canvasLocation" x="609" y="114"/>
</view>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
</objects>
<resources>
<image name="ic_cancel" width="40" height="40"/>
<image name="img_achive_pedestrian" width="240" height="240"/>
</resources>
</document>

View file

@ -385,7 +385,7 @@ typedef NS_ENUM(NSUInteger, MWMBottomMenuViewCell) {
MWMBottomMenuCollectionViewCell * cell =
(MWMBottomMenuCollectionViewCell *)[self.additionalButtons cellForItemAtIndexPath:cellIndex];
MWMActivityViewController * shareVC =
[MWMActivityViewController shareControllerForLocationTitle:nil location:coord myPosition:YES];
[MWMActivityViewController shareControllerForMyPosition:coord];
[shareVC presentInParentViewController:self.controller anchorView:cell.icon];
}

View file

@ -65,6 +65,7 @@ using MWMPlacePageCellTypeValueMap = map<MWMPlacePageCellType, string>;
- (m2::PointD const &)mercator;
- (NSString *)apiURL;
- (NSURL *)bookingUrl;
- (NSURL *)bookingDescriptionUrl;
- (NSString * )hotelId;
- (string)titleForNewBookmark;

View file

@ -216,7 +216,13 @@ void initFieldsMap()
- (NSURL *)bookingUrl
{
auto const & url = m_info.GetSponsoredBookingUrl();
return [self sponsoredUrl:NO];
}
- (NSURL *)bookingDescriptionUrl { return [self sponsoredUrl:YES]; }
- (NSURL *)sponsoredUrl:(BOOL)isDescription
{
auto const & url =
isDescription ? m_info.GetSponsoredDescriptionUrl() : m_info.GetSponsoredBookingUrl();
return url.empty() ? nil : [NSURL URLWithString:@(url.c_str())];
}

View file

@ -207,13 +207,8 @@ extern NSString * const kBookmarksChangedNotification;
[Statistics logEvent:kStatEventName(kStatPlacePage, kStatShare)];
[Alohalytics logEvent:kAlohalyticsTapEventKey withValue:@"ppShare"];
MWMPlacePageEntity * entity = self.entity;
NSString * title = entity.bookmarkTitle ? entity.bookmarkTitle : entity.title;
CLLocationCoordinate2D const coord =
CLLocationCoordinate2DMake(entity.latlon.lat, entity.latlon.lon);
MWMActivityViewController * shareVC =
[MWMActivityViewController shareControllerForLocationTitle:title
location:coord
myPosition:NO];
[MWMActivityViewController shareControllerForPlacePageObject:entity];
[shareVC presentInParentViewController:self.ownerViewController
anchorView:self.placePage.actionBar.shareAnchor];
}
@ -231,10 +226,7 @@ extern NSString * const kBookmarksChangedNotification;
atLocation:[MWMLocationManager lastLocation]];
UIViewController * vc = static_cast<UIViewController *>([MapViewController controller]);
NSURL * url =
isDescription
? [NSURL URLWithString:[self.entity getCellValue:MWMPlacePageCellTypeBookingMore]]
: self.entity.bookingUrl;
NSURL * url = isDescription ? self.entity.bookingDescriptionUrl : self.entity.bookingUrl;
NSAssert(url, @"Booking url can't be nil!");
[vc openUrl:url];
}

View file

@ -1,11 +1,13 @@
@class MWMPlacePageEntity;
@interface MWMActivityViewController : UIActivityViewController
+ (instancetype)shareControllerForLocationTitle:(NSString *)title location:(CLLocationCoordinate2D)location
myPosition:(BOOL)myPosition;
+ (instancetype)shareControllerForPedestrianRoutesToast;
+ (instancetype)shareControllerForEditorViral;
+ (instancetype)shareControllerForMyPosition:(CLLocationCoordinate2D const &)location;
+ (instancetype)shareControllerForPlacePageObject:(MWMPlacePageEntity *)entity;
- (void)presentInParentViewController:(UIViewController *)parentVC anchorView:(UIView *)anchorView;
@end

View file

@ -1,7 +1,6 @@
#import "MWMActivityViewController.h"
#import "MWMEditorViralActivityItem.h"
#import "MWMShareLocationActivityItem.h"
#import "MWMSharePedestrianRoutesToastActivityItem.h"
#import "MWMShareActivityItem.h"
@interface MWMActivityViewController ()
@ -27,21 +26,17 @@
return self;
}
+ (instancetype)shareControllerForLocationTitle:(NSString *)title location:(CLLocationCoordinate2D)location
myPosition:(BOOL)myPosition
+ (instancetype)shareControllerForMyPosition:(CLLocationCoordinate2D const &)location
{
MWMShareLocationActivityItem * item = [[MWMShareLocationActivityItem alloc] initWithTitle:title location:location
myPosition:myPosition];
MWMShareActivityItem * item = [[MWMShareActivityItem alloc] initForMyPositionAtLocation:location];
return [[self alloc] initWithActivityItem:item];
}
+ (instancetype)shareControllerForPedestrianRoutesToast
+ (instancetype)shareControllerForPlacePageObject:(MWMPlacePageEntity *)entity
{
MWMSharePedestrianRoutesToastActivityItem * item = [[MWMSharePedestrianRoutesToastActivityItem alloc] init];
MWMActivityViewController * vc = [[self alloc] initWithActivityItem:item];
if ([vc respondsToSelector:@selector(popoverPresentationController)])
vc.popoverPresentationController.permittedArrowDirections = UIPopoverArrowDirectionDown;
return vc;
MWMShareActivityItem * item =
[[MWMShareActivityItem alloc] initForPlacePageObjectWithEntity:entity];
return [[self alloc] initWithActivityItem:item];
}
+ (instancetype)shareControllerForEditorViral
@ -66,14 +61,4 @@
[parentVC presentViewController:self animated:YES completion:nil];
}
- (BOOL)shouldAutorotate
{
return YES;
}
- (UIInterfaceOrientationMask)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskAll;
}
@end

View file

@ -0,0 +1,8 @@
@class MWMPlacePageEntity;
@interface MWMShareActivityItem : NSObject<UIActivityItemSource>
- (instancetype)initForMyPositionAtLocation:(CLLocationCoordinate2D const &)location;
- (instancetype)initForPlacePageObjectWithEntity:(MWMPlacePageEntity *)entity;
@end

View file

@ -0,0 +1,151 @@
#import "MWMShareActivityItem.h"
#import "MWMPlacePageEntity.h"
#import "Macros.h"
#import "Statistics.h"
#import "3party/Alohalytics/src/alohalytics_objc.h"
#include "Framework.h"
NSString * httpGe0Url(NSString * shortUrl)
{
return
[shortUrl stringByReplacingCharactersInRange:NSMakeRange(0, 6) withString:@"http://ge0.me/"];
}
@interface MWMShareActivityItem ()
@property(nonatomic) MWMPlacePageEntity * entity;
@property(nonatomic) CLLocationCoordinate2D location;
@property(nonatomic) BOOL isMyPosition;
@end
@implementation MWMShareActivityItem
- (instancetype)initForMyPositionAtLocation:(CLLocationCoordinate2D const &)location
{
self = [super init];
if (self)
{
_location = location;
_isMyPosition = YES;
}
return self;
}
- (instancetype)initForPlacePageObjectWithEntity:(MWMPlacePageEntity *)entity
{
self = [super init];
if (self)
{
NSAssert(entity, @"Entity can't be nil!");
BOOL const isMyPosition = entity.isMyPosition;
_isMyPosition = isMyPosition;
if (!isMyPosition)
_entity = entity;
}
return self;
}
- (NSString *)url:(BOOL)isShort
{
auto & f = GetFramework();
auto const title = ^NSString *(MWMPlacePageEntity * entity)
{
if (!entity || entity.isMyPosition)
return L(@"my_position");
else if (entity.title.length)
return entity.title;
else if (entity.subtitle.length)
return entity.subtitle;
else if (entity.address.length)
return entity.address;
else
return @"";
};
string const s = f.CodeGe0url(self.location.latitude, self.location.longitude, f.GetDrawScale(),
title(self.entity).UTF8String);
NSString * url = @(s.c_str());
if (!isShort)
return url;
NSUInteger const kGe0UrlLength = 16;
return [url substringWithRange:NSMakeRange(0, kGe0UrlLength)];
}
#pragma mark - UIActivityItemSource
- (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController
{
return [self url:YES];
}
- (id)activityViewController:(UIActivityViewController *)activityViewController
itemForActivityType:(NSString *)activityType
{
NSString * event = @"MWMShareLocationActivityItem:activityViewController:itemForActivityType:";
[Statistics logEvent:kStatEventName(kStatShare, kStatLocation)
withParameters:@{kStatAction : activityType}];
[Alohalytics logEvent:event withValue:activityType];
if ([UIActivityTypePostToTwitter isEqualToString:activityType])
return self.itemForTwitter;
return [self itemDefaultWithActivityType:activityType];
}
- (NSString *)activityViewController:(UIActivityViewController *)activityViewController
subjectForActivityType:(NSString *)activityType
{
return [self subjectDefault];
}
#pragma mark - Message
- (NSString *)itemForTwitter
{
NSString * shortUrl = [self url:YES];
return [NSString stringWithFormat:@"%@\n%@", httpGe0Url(shortUrl),
self.isMyPosition ? L(@"my_position_share_email_subject")
: self.entity.title];
}
- (NSString *)itemDefaultWithActivityType:(NSString *)activityType
{
NSString * url = httpGe0Url([self url:NO]);
if (self.isMyPosition)
{
BOOL const hasSubject = [activityType isEqualToString:UIActivityTypeMail];
if (hasSubject)
return url;
return [NSString stringWithFormat:@"%@ %@", L(@"my_position_share_email_subject"), url];
}
NSMutableString * result = [L(@"sharing_call_action_look") mutableCopy];
vector<NSString *> strings{self.entity.title, self.entity.subtitle, self.entity.address,
[self.entity getCellValue:MWMPlacePageCellTypePhoneNumber], url};
if (self.entity.isBooking)
{
strings.push_back(L(@"sharing_booking"));
strings.push_back(self.entity.bookingDescriptionUrl.absoluteString);
}
for (auto const str : strings)
{
if (str.length)
[result appendString:[NSString stringWithFormat:@"\n%@", str]];
}
return result;
}
#pragma mark - Subject
- (NSString *)subjectDefault
{
return self.isMyPosition ? L(@"my_position_share_email_subject")
: L(@"bookmark_share_email_subject");
}
@end

View file

@ -1,5 +0,0 @@
@interface MWMShareLocationActivityItem : NSObject <UIActivityItemSource>
- (instancetype)initWithTitle:(NSString *)title location:(CLLocationCoordinate2D)location myPosition:(BOOL)myPosition;
@end

View file

@ -1,108 +0,0 @@
#import "Macros.h"
#import "MWMShareLocationActivityItem.h"
#import "Statistics.h"
#import "3party/Alohalytics/src/alohalytics_objc.h"
#include "Framework.h"
NSString * httpGe0Url(NSString * shortUrl)
{
return [shortUrl stringByReplacingCharactersInRange:NSMakeRange(0, 6) withString:@"http://ge0.me/"];
}
@interface MWMShareLocationActivityItem ()
@property (copy, nonatomic) NSString * title;
@property (nonatomic) CLLocationCoordinate2D location;
@property (nonatomic) BOOL myPosition;
@end
@implementation MWMShareLocationActivityItem
- (instancetype)initWithTitle:(NSString *)title location:(CLLocationCoordinate2D)location myPosition:(BOOL)myPosition
{
self = [super init];
if (self)
{
self.title = title ? title : @"";
self.location = location;
self.myPosition = myPosition;
}
return self;
}
- (NSString *)url:(BOOL)isShort
{
auto & f = GetFramework();
string const s = f.CodeGe0url(self.location.latitude, self.location.longitude, f.GetDrawScale(),
self.title.UTF8String);
NSString * url = @(s.c_str());
if (!isShort)
return url;
NSUInteger const kGe0UrlLength = 16;
return [url substringWithRange:NSMakeRange(0, kGe0UrlLength)];
}
#pragma mark - UIActivityItemSource
- (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController
{
return [self url:YES];
}
- (id)activityViewController:(UIActivityViewController *)activityViewController
itemForActivityType:(NSString *)activityType
{
NSString * event = @"MWMShareLocationActivityItem:activityViewController:itemForActivityType:";
[Statistics logEvent:kStatEventName(kStatShare, kStatLocation) withParameters:@{kStatAction : activityType}];
[Alohalytics logEvent:event withValue:activityType];
if ([UIActivityTypeMessage isEqualToString:activityType])
return [self itemForMessageApp];
if ([UIActivityTypeMail isEqualToString:activityType])
return [self itemForMailApp];
return [self itemDefault];
}
- (NSString *)activityViewController:(UIActivityViewController *)activityViewController
subjectForActivityType:(NSString *)activityType
{
return [self subjectDefault];
}
#pragma mark - Message
- (NSString *)itemForMessageApp
{
NSString * shortUrl = [self url:YES];
return [NSString stringWithFormat:self.myPosition ? L(@"my_position_share_sms") : L(@"bookmark_share_sms"),
shortUrl, httpGe0Url(shortUrl)];
}
- (NSString *)itemForMailApp
{
NSString * url = [self url:NO];
if (!self.myPosition)
return [NSString stringWithFormat:L(@"bookmark_share_email"), self.title, url, httpGe0Url(url)];
search::AddressInfo const info = GetFramework().GetAddressInfoAtPoint(
MercatorBounds::FromLatLon(self.location.latitude, self.location.longitude));
NSString * nameAndAddress = @(info.FormatNameAndAddress().c_str());
return [NSString stringWithFormat:L(@"my_position_share_email"), nameAndAddress, url, httpGe0Url(url)];
}
- (NSString *)itemDefault
{
return httpGe0Url([self url:NO]);
}
#pragma mark - Subject
- (NSString *)subjectDefault
{
return self.myPosition ? L(@"my_position_share_email_subject") : L(@"bookmark_share_email_subject");
}
@end

View file

@ -1,3 +0,0 @@
@interface MWMSharePedestrianRoutesToastActivityItem : NSObject <UIActivityItemSource>
@end

View file

@ -1,45 +0,0 @@
#import "Macros.h"
#import "MWMSharePedestrianRoutesToastActivityItem.h"
#import "Statistics.h"
#import "3party/Alohalytics/src/alohalytics_objc.h"
#include "platform/preferred_languages.hpp"
@implementation MWMSharePedestrianRoutesToastActivityItem
#pragma mark - UIActivityItemSource
- (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController
{
return NSString.string;
}
- (id)activityViewController:(UIActivityViewController *)activityViewController
itemForActivityType:(NSString *)activityType
{
NSString * event = @"MWMSharePedestrianRoutesToastActivityItem:activityViewController:itemForActivityType:";
[Statistics logEvent:kStatEventName(kStatShare, kStatSocial) withParameters:@{kStatAction : activityType}];
[Alohalytics logEvent:event withValue:activityType];
if ([activityType isEqualToString:UIActivityTypePostToFacebook] ||
[activityType isEqualToString:@"com.facebook.Facebook.ShareExtension"] ||
[activityType.lowercaseString rangeOfString:@"facebook"].length)
{
NSString * url = [NSString stringWithFormat:@"http://maps.me/fb-pedestrian?lang=%@",
@(languages::GetCurrentNorm().c_str())];
return [NSURL URLWithString:url];
}
if ([UIActivityTypeMessage isEqualToString:activityType])
return L(@"share_walking_routes_sms");
if ([UIActivityTypeMail isEqualToString:activityType])
return L(@"share_walking_routes_email_body");
return L(@"share_walking_routes_messenger");
}
- (NSString *)activityViewController:(UIActivityViewController *)activityViewController
subjectForActivityType:(NSString *)activityType
{
return L(@"share_walking_routes_email_subject");
}
@end

View file

@ -35,7 +35,7 @@
3406FA181C6E0D8F00E9FAD2 /* MWMMapDownloadDialog.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3406FA171C6E0D8F00E9FAD2 /* MWMMapDownloadDialog.xib */; };
3406FA191C6E0D8F00E9FAD2 /* MWMMapDownloadDialog.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3406FA171C6E0D8F00E9FAD2 /* MWMMapDownloadDialog.xib */; };
340837131B7243CE00B5C185 /* MWMActivityViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 340837121B7243CE00B5C185 /* MWMActivityViewController.mm */; };
340837161B72451A00B5C185 /* MWMShareLocationActivityItem.mm in Sources */ = {isa = PBXBuildFile; fileRef = 340837151B72451A00B5C185 /* MWMShareLocationActivityItem.mm */; };
340837161B72451A00B5C185 /* MWMShareActivityItem.mm in Sources */ = {isa = PBXBuildFile; fileRef = 340837151B72451A00B5C185 /* MWMShareActivityItem.mm */; };
340C20E31C3E565600111D22 /* MWMCuisineEditorViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 340C20E21C3E565600111D22 /* MWMCuisineEditorViewController.mm */; };
340C20E41C3E565600111D22 /* MWMCuisineEditorViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 340C20E21C3E565600111D22 /* MWMCuisineEditorViewController.mm */; };
340E10601B944DAB00D975D5 /* MWMSearchHistoryManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 340E105F1B944DAB00D975D5 /* MWMSearchHistoryManager.mm */; };
@ -134,8 +134,6 @@
3476B8E01BFDD33A00874594 /* tts-how-to-set-up-voice-img in Resources */ = {isa = PBXBuildFile; fileRef = 3476B8DF1BFDD33A00874594 /* tts-how-to-set-up-voice-img */; };
3476B8E11BFDD33A00874594 /* tts-how-to-set-up-voice-img in Resources */ = {isa = PBXBuildFile; fileRef = 3476B8DF1BFDD33A00874594 /* tts-how-to-set-up-voice-img */; };
347A4C5E1C4E76C9006BA66E /* liboauthcpp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 340DC82B1C4E72C700EAA2CC /* liboauthcpp.a */; };
347BAC691B733D540010FF78 /* MWMPedestrianShareAlert.xib in Resources */ = {isa = PBXBuildFile; fileRef = 347BAC681B733D540010FF78 /* MWMPedestrianShareAlert.xib */; };
347BAC6E1B736BA70010FF78 /* MWMSharePedestrianRoutesToastActivityItem.mm in Sources */ = {isa = PBXBuildFile; fileRef = 347BAC6D1B736BA70010FF78 /* MWMSharePedestrianRoutesToastActivityItem.mm */; };
347D7C691C2C0703006B2D0A /* UITextView+RuntimeAttributes.mm in Sources */ = {isa = PBXBuildFile; fileRef = 347D7C681C2C0703006B2D0A /* UITextView+RuntimeAttributes.mm */; };
347D7C6A1C2C0703006B2D0A /* UITextView+RuntimeAttributes.mm in Sources */ = {isa = PBXBuildFile; fileRef = 347D7C681C2C0703006B2D0A /* UITextView+RuntimeAttributes.mm */; };
347FD8671C60B2CE002FB65E /* MWMOpeningHoursAddClosedTableViewCell.mm in Sources */ = {isa = PBXBuildFile; fileRef = 347FD84B1C60B2CE002FB65E /* MWMOpeningHoursAddClosedTableViewCell.mm */; };
@ -220,7 +218,6 @@
34ABA62C1C2D57D500FE1BEC /* MWMInputPasswordValidator.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34ABA62B1C2D57D500FE1BEC /* MWMInputPasswordValidator.mm */; };
34ABA62D1C2D57D500FE1BEC /* MWMInputPasswordValidator.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34ABA62B1C2D57D500FE1BEC /* MWMInputPasswordValidator.mm */; };
34ABA6301C2D58F300FE1BEC /* MWMInputEmailValidator.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34ABA62F1C2D58F300FE1BEC /* MWMInputEmailValidator.mm */; };
34B16C451B72655D000D3A0D /* MWMPedestrianShareAlert.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34B16C441B72655D000D3A0D /* MWMPedestrianShareAlert.mm */; };
34B646BD1CEB6FC000E0C7A5 /* MWMEditorAdditionalNameTableViewCell.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34B646BC1CEB6FC000E0C7A5 /* MWMEditorAdditionalNameTableViewCell.mm */; };
34B646BE1CEB6FC000E0C7A5 /* MWMEditorAdditionalNameTableViewCell.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34B646BC1CEB6FC000E0C7A5 /* MWMEditorAdditionalNameTableViewCell.mm */; };
34B646C01CEB6FE000E0C7A5 /* MWMEditorAdditionalNameTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34B646BF1CEB6FE000E0C7A5 /* MWMEditorAdditionalNameTableViewCell.xib */; };
@ -436,12 +433,11 @@
6741A9991BF340DE002C974C /* MWMAlertViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = F64F19831AB81A00006EAF7E /* MWMAlertViewController.xib */; };
6741A99A1BF340DE002C974C /* MWMBookmarkColorViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6588E321B15D73100EE1E58 /* MWMBookmarkColorViewController.xib */; };
6741A99B1BF340DE002C974C /* PlacePageInfoCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6CB215B1AEE704D00FB8963 /* PlacePageInfoCell.xib */; };
6741A99D1BF340DE002C974C /* MWMPedestrianShareAlert.xib in Resources */ = {isa = PBXBuildFile; fileRef = 347BAC681B733D540010FF78 /* MWMPedestrianShareAlert.xib */; };
6741A99F1BF340DE002C974C /* 07_roboto_medium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = FAF30A94173AB23900818BF6 /* 07_roboto_medium.ttf */; };
6741A9A21BF340DE002C974C /* CommunityVC.mm in Sources */ = {isa = PBXBuildFile; fileRef = 978D4A241996B0EC00D72CA7 /* CommunityVC.mm */; };
6741A9A31BF340DE002C974C /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.mm */; };
6741A9A41BF340DE002C974C /* MWMSearchTabbedViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34CC4C071B81F3B500E44C1F /* MWMSearchTabbedViewController.mm */; };
6741A9A51BF340DE002C974C /* MWMShareLocationActivityItem.mm in Sources */ = {isa = PBXBuildFile; fileRef = 340837151B72451A00B5C185 /* MWMShareLocationActivityItem.mm */; };
6741A9A51BF340DE002C974C /* MWMShareActivityItem.mm in Sources */ = {isa = PBXBuildFile; fileRef = 340837151B72451A00B5C185 /* MWMShareActivityItem.mm */; };
6741A9A61BF340DE002C974C /* RichTextVC.mm in Sources */ = {isa = PBXBuildFile; fileRef = 978D4A281996C17300D72CA7 /* RichTextVC.mm */; };
6741A9A71BF340DE002C974C /* UIViewController+Navigation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9747278318338F0C006B7CB7 /* UIViewController+Navigation.mm */; };
6741A9A81BF340DE002C974C /* MWMFacebookAlert.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6BC1E511ACBF98600EF0360 /* MWMFacebookAlert.mm */; };
@ -502,8 +498,6 @@
6741A9F41BF340DE002C974C /* CALayer+RuntimeAttributes.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6DBF9B51AA8779300F2EC2C /* CALayer+RuntimeAttributes.mm */; };
6741A9F51BF340DE002C974C /* BookmarksVC.mm in Sources */ = {isa = PBXBuildFile; fileRef = FA36B80615403A4F004560CC /* BookmarksVC.mm */; };
6741A9F61BF340DE002C974C /* MWMExtendedPlacePageView.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6ED135A1B18AA930095C6DE /* MWMExtendedPlacePageView.mm */; };
6741A9F71BF340DE002C974C /* MWMPedestrianShareAlert.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34B16C441B72655D000D3A0D /* MWMPedestrianShareAlert.mm */; };
6741A9F81BF340DE002C974C /* MWMSharePedestrianRoutesToastActivityItem.mm in Sources */ = {isa = PBXBuildFile; fileRef = 347BAC6D1B736BA70010FF78 /* MWMSharePedestrianRoutesToastActivityItem.mm */; };
6741A9F91BF340DE002C974C /* MWMSearchSuggestionCell.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34B82AD41B84746E00180497 /* MWMSearchSuggestionCell.mm */; };
6741A9FA1BF340DE002C974C /* MWMBookmarkColorViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6588E2E1B15D2BC00EE1E58 /* MWMBookmarkColorViewController.mm */; };
6741A9FC1BF340DE002C974C /* iosOGLContextFactory.mm in Sources */ = {isa = PBXBuildFile; fileRef = A32B6D4B1A14980500E54A65 /* iosOGLContextFactory.mm */; };
@ -894,8 +888,8 @@
3406FA171C6E0D8F00E9FAD2 /* MWMMapDownloadDialog.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMMapDownloadDialog.xib; sourceTree = "<group>"; };
340837111B7243CE00B5C185 /* MWMActivityViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMActivityViewController.h; sourceTree = "<group>"; };
340837121B7243CE00B5C185 /* MWMActivityViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMActivityViewController.mm; sourceTree = "<group>"; };
340837141B72451A00B5C185 /* MWMShareLocationActivityItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMShareLocationActivityItem.h; sourceTree = "<group>"; };
340837151B72451A00B5C185 /* MWMShareLocationActivityItem.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMShareLocationActivityItem.mm; sourceTree = "<group>"; };
340837141B72451A00B5C185 /* MWMShareActivityItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMShareActivityItem.h; sourceTree = "<group>"; };
340837151B72451A00B5C185 /* MWMShareActivityItem.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMShareActivityItem.mm; sourceTree = "<group>"; };
340C20E11C3E565600111D22 /* MWMCuisineEditorViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMCuisineEditorViewController.h; sourceTree = "<group>"; };
340C20E21C3E565600111D22 /* MWMCuisineEditorViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMCuisineEditorViewController.mm; sourceTree = "<group>"; };
340C20E51C3E58B000111D22 /* MWMEditorCommon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMEditorCommon.h; sourceTree = "<group>"; };
@ -1023,9 +1017,6 @@
3472EC041B4D44BE0085CB79 /* UIFont+MapsMeFonts.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "UIFont+MapsMeFonts.mm"; sourceTree = "<group>"; };
3476B8D51BFDD30B00874594 /* tts-how-to-set-up-voice.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = "tts-how-to-set-up-voice.html"; path = "../../data/tts-how-to-set-up-voice.html"; sourceTree = "<group>"; };
3476B8DF1BFDD33A00874594 /* tts-how-to-set-up-voice-img */ = {isa = PBXFileReference; lastKnownFileType = folder; name = "tts-how-to-set-up-voice-img"; path = "../../data/tts-how-to-set-up-voice-img"; sourceTree = "<group>"; };
347BAC681B733D540010FF78 /* MWMPedestrianShareAlert.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMPedestrianShareAlert.xib; sourceTree = "<group>"; };
347BAC6C1B736BA70010FF78 /* MWMSharePedestrianRoutesToastActivityItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMSharePedestrianRoutesToastActivityItem.h; sourceTree = "<group>"; };
347BAC6D1B736BA70010FF78 /* MWMSharePedestrianRoutesToastActivityItem.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMSharePedestrianRoutesToastActivityItem.mm; sourceTree = "<group>"; };
347D5CA11D376B9F00FA28DD /* MWMSearchObserver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMSearchObserver.h; sourceTree = "<group>"; };
347D5CA21D376C2C00FA28DD /* MWMLocationObserver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMLocationObserver.h; sourceTree = "<group>"; };
347D7C671C2C0703006B2D0A /* UITextView+RuntimeAttributes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UITextView+RuntimeAttributes.h"; sourceTree = "<group>"; };
@ -1107,8 +1098,6 @@
34ABA62B1C2D57D500FE1BEC /* MWMInputPasswordValidator.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMInputPasswordValidator.mm; sourceTree = "<group>"; };
34ABA62E1C2D58F300FE1BEC /* MWMInputEmailValidator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMInputEmailValidator.h; sourceTree = "<group>"; };
34ABA62F1C2D58F300FE1BEC /* MWMInputEmailValidator.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMInputEmailValidator.mm; sourceTree = "<group>"; };
34B16C431B72655D000D3A0D /* MWMPedestrianShareAlert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMPedestrianShareAlert.h; sourceTree = "<group>"; };
34B16C441B72655D000D3A0D /* MWMPedestrianShareAlert.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMPedestrianShareAlert.mm; sourceTree = "<group>"; };
34B646BB1CEB6FC000E0C7A5 /* MWMEditorAdditionalNameTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMEditorAdditionalNameTableViewCell.h; sourceTree = "<group>"; };
34B646BC1CEB6FC000E0C7A5 /* MWMEditorAdditionalNameTableViewCell.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMEditorAdditionalNameTableViewCell.mm; sourceTree = "<group>"; };
34B646BF1CEB6FE000E0C7A5 /* MWMEditorAdditionalNameTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMEditorAdditionalNameTableViewCell.xib; sourceTree = "<group>"; };
@ -1921,10 +1910,8 @@
children = (
340837111B7243CE00B5C185 /* MWMActivityViewController.h */,
340837121B7243CE00B5C185 /* MWMActivityViewController.mm */,
340837141B72451A00B5C185 /* MWMShareLocationActivityItem.h */,
340837151B72451A00B5C185 /* MWMShareLocationActivityItem.mm */,
347BAC6C1B736BA70010FF78 /* MWMSharePedestrianRoutesToastActivityItem.h */,
347BAC6D1B736BA70010FF78 /* MWMSharePedestrianRoutesToastActivityItem.mm */,
340837141B72451A00B5C185 /* MWMShareActivityItem.h */,
340837151B72451A00B5C185 /* MWMShareActivityItem.mm */,
F6A218471CA3F26800BE2CC6 /* MWMEditorViralActivityItem.h */,
F6A218481CA3F26800BE2CC6 /* MWMEditorViralActivityItem.mm */,
);
@ -2244,16 +2231,6 @@
path = InputValidators;
sourceTree = "<group>";
};
34B16C421B72653B000D3A0D /* PedestrianShareAlert */ = {
isa = PBXGroup;
children = (
34B16C431B72655D000D3A0D /* MWMPedestrianShareAlert.h */,
34B16C441B72655D000D3A0D /* MWMPedestrianShareAlert.mm */,
347BAC681B733D540010FF78 /* MWMPedestrianShareAlert.xib */,
);
path = PedestrianShareAlert;
sourceTree = "<group>";
};
34B82AB31B83616A00180497 /* HistoryTab */ = {
isa = PBXGroup;
children = (
@ -2716,7 +2693,6 @@
F6BBF2C31B4FFB56000CF8E2 /* LocationAlert */,
F64F19801AB81A00006EAF7E /* AlertController */,
F6BC1E4F1ACBF97000EF0360 /* FacebookAlert */,
34B16C421B72653B000D3A0D /* PedestrianShareAlert */,
F64F19841AB81A00006EAF7E /* BaseAlert */,
F61579301AC2CE760032D8E9 /* RateAlert */,
F64F19871AB81A00006EAF7E /* DefaultAlert */,
@ -3437,7 +3413,6 @@
F64F199A1AB81A00006EAF7E /* MWMAlertViewController.xib in Resources */,
F6588E331B15D73100EE1E58 /* MWMBookmarkColorViewController.xib in Resources */,
F6CB215C1AEE704D00FB8963 /* PlacePageInfoCell.xib in Resources */,
347BAC691B733D540010FF78 /* MWMPedestrianShareAlert.xib in Resources */,
FAF30A95173AB23900818BF6 /* 07_roboto_medium.ttf in Resources */,
34E0EED01CC51B1D008E4919 /* MWMMapDownloaderButtonTableViewCell.xib in Resources */,
);
@ -3585,7 +3560,6 @@
6741A9991BF340DE002C974C /* MWMAlertViewController.xib in Resources */,
6741A99A1BF340DE002C974C /* MWMBookmarkColorViewController.xib in Resources */,
6741A99B1BF340DE002C974C /* PlacePageInfoCell.xib in Resources */,
6741A99D1BF340DE002C974C /* MWMPedestrianShareAlert.xib in Resources */,
6741A99F1BF340DE002C974C /* 07_roboto_medium.ttf in Resources */,
34E0EED11CC51B1D008E4919 /* MWMMapDownloaderButtonTableViewCell.xib in Resources */,
);
@ -3631,7 +3605,7 @@
978D4A251996B0EC00D72CA7 /* CommunityVC.mm in Sources */,
1D60589B0D05DD56006BFB54 /* main.mm in Sources */,
34CC4C091B81F3B500E44C1F /* MWMSearchTabbedViewController.mm in Sources */,
340837161B72451A00B5C185 /* MWMShareLocationActivityItem.mm in Sources */,
340837161B72451A00B5C185 /* MWMShareActivityItem.mm in Sources */,
34F9FB901C43AF2400F71201 /* MWMStreetEditorEditTableViewCell.mm in Sources */,
978D4A291996C17300D72CA7 /* RichTextVC.mm in Sources */,
9747278418338F0C006B7CB7 /* UIViewController+Navigation.mm in Sources */,
@ -3752,8 +3726,6 @@
F6ED135B1B18AA930095C6DE /* MWMExtendedPlacePageView.mm in Sources */,
3418CEAE1CBF9E3300641B25 /* MWMNoMapsViewController.mm in Sources */,
3401CD7D1C3CF1BE0028C6F8 /* MWMEditorSwitchTableViewCell.mm in Sources */,
34B16C451B72655D000D3A0D /* MWMPedestrianShareAlert.mm in Sources */,
347BAC6E1B736BA70010FF78 /* MWMSharePedestrianRoutesToastActivityItem.mm in Sources */,
34B82AD61B84746E00180497 /* MWMSearchSuggestionCell.mm in Sources */,
F6C641B01C15BBE6008FCAF3 /* MWMRecentTrackSettingsController.mm in Sources */,
341F99F11C6B4288001C67B8 /* MWMMapDownloaderSearchDataSource.mm in Sources */,
@ -3858,7 +3830,7 @@
34FED5511D21121000183B1B /* CLLocation+Mercator.mm in Sources */,
6741A9A31BF340DE002C974C /* main.mm in Sources */,
6741A9A41BF340DE002C974C /* MWMSearchTabbedViewController.mm in Sources */,
6741A9A51BF340DE002C974C /* MWMShareLocationActivityItem.mm in Sources */,
6741A9A51BF340DE002C974C /* MWMShareActivityItem.mm in Sources */,
34F9FB911C43AF2400F71201 /* MWMStreetEditorEditTableViewCell.mm in Sources */,
6741A9A61BF340DE002C974C /* RichTextVC.mm in Sources */,
6741A9A71BF340DE002C974C /* UIViewController+Navigation.mm in Sources */,
@ -3969,9 +3941,7 @@
56C74C391C74A3BC00B71B9F /* MWMInputEmailValidator.mm in Sources */,
6741A9F51BF340DE002C974C /* BookmarksVC.mm in Sources */,
6741A9F61BF340DE002C974C /* MWMExtendedPlacePageView.mm in Sources */,
6741A9F71BF340DE002C974C /* MWMPedestrianShareAlert.mm in Sources */,
347FD8741C60B2CE002FB65E /* MWMOpeningHoursClosedSpanTableViewCell.mm in Sources */,
6741A9F81BF340DE002C974C /* MWMSharePedestrianRoutesToastActivityItem.mm in Sources */,
3490D2E11CE9DD2500D0B838 /* MWMSideButtonsView.mm in Sources */,
6741A9F91BF340DE002C974C /* MWMSearchSuggestionCell.mm in Sources */,
34ABA61C1C2D4DCC00FE1BEC /* UITextField+RuntimeAttributes.mm in Sources */,