Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladiMihaylenko <vxmihaylenko@gmail.com>2016-10-20 17:15:55 +0300
committerArsentiy Milchakov <milcars@mapswithme.com>2016-10-21 20:34:02 +0300
commit0d5a084579ab2e1d9ad4340799148b6dc2f083bc (patch)
tree4c4fb5b726cadce949ca11d2fc1156271ba3443e
parentac813860e6bcd61cd31b07a328f3603e338ae7cb (diff)
[ios] Opentable.
-rw-r--r--iphone/Maps/Classes/MWMActionBarButton.h1
-rw-r--r--iphone/Maps/Classes/MWMActionBarButton.mm6
-rw-r--r--iphone/Maps/Classes/MWMPlacePageActionBar.h1
-rw-r--r--iphone/Maps/Classes/MWMPlacePageActionBar.mm17
-rw-r--r--iphone/Maps/Classes/MWMPlacePageData.h7
-rw-r--r--iphone/Maps/Classes/MWMPlacePageData.mm29
-rw-r--r--iphone/Maps/Classes/MWMPlacePageEntity.h7
-rw-r--r--iphone/Maps/Classes/MWMPlacePageEntity.mm18
-rw-r--r--iphone/Maps/Classes/MWMPlacePageManager.mm29
-rw-r--r--iphone/Maps/Classes/MWMPlacePageViewManager.mm32
-rw-r--r--iphone/Maps/Classes/Share/MWMShareActivityItem.h2
-rw-r--r--iphone/Maps/Classes/Share/MWMShareActivityItem.mm2
12 files changed, 99 insertions, 52 deletions
diff --git a/iphone/Maps/Classes/MWMActionBarButton.h b/iphone/Maps/Classes/MWMActionBarButton.h
index b03175c775..5b5b56befd 100644
--- a/iphone/Maps/Classes/MWMActionBarButton.h
+++ b/iphone/Maps/Classes/MWMActionBarButton.h
@@ -2,6 +2,7 @@ enum class EButton // Required button's order
{
Api,
Booking,
+ Opentable,
Call,
Bookmark,
RouteFrom,
diff --git a/iphone/Maps/Classes/MWMActionBarButton.mm b/iphone/Maps/Classes/MWMActionBarButton.mm
index 1362d6b1ec..a34b9e242a 100644
--- a/iphone/Maps/Classes/MWMActionBarButton.mm
+++ b/iphone/Maps/Classes/MWMActionBarButton.mm
@@ -10,6 +10,7 @@ NSString * titleForButton(EButton type, BOOL isSelected)
case EButton::Api:
return L(@"back");
case EButton::Booking:
+ case EButton::Opentable:
return L(@"bookingcom_book_button");
case EButton::Call:
return L(@"placepage_call_button");
@@ -60,6 +61,11 @@ NSString * titleForButton(EButton type, BOOL isSelected)
self.label.textColor = [UIColor whiteColor];
self.backgroundColor = [UIColor bookingBackground];
break;
+ case EButton::Opentable:
+ [self.button setImage:[UIImage imageNamed:@"ic_opentable"] forState:UIControlStateNormal];
+ self.label.textColor = [UIColor whiteColor];
+ self.backgroundColor = [UIColor opentableBackground];
+ break;
case EButton::Call:
[self.button setImage:[UIImage imageNamed:@"ic_placepage_phone_number"] forState:UIControlStateNormal];
break;
diff --git a/iphone/Maps/Classes/MWMPlacePageActionBar.h b/iphone/Maps/Classes/MWMPlacePageActionBar.h
index 20c9cf9c11..599099a1d2 100644
--- a/iphone/Maps/Classes/MWMPlacePageActionBar.h
+++ b/iphone/Maps/Classes/MWMPlacePageActionBar.h
@@ -4,6 +4,7 @@
@protocol MWMActionBarSharedData<NSObject>
- (BOOL)isBookmark;
+- (BOOL)isOpentable;
- (BOOL)isBooking;
- (BOOL)isApi;
- (BOOL)isMyPosition;
diff --git a/iphone/Maps/Classes/MWMPlacePageActionBar.mm b/iphone/Maps/Classes/MWMPlacePageActionBar.mm
index f18a1c5a18..992f3c5af6 100644
--- a/iphone/Maps/Classes/MWMPlacePageActionBar.mm
+++ b/iphone/Maps/Classes/MWMPlacePageActionBar.mm
@@ -77,11 +77,15 @@ extern NSString * const kAlohalyticsTapEventKey;
BOOL const isIphone = [[UIDevice currentDevice].model isEqualToString:@"iPhone"];
BOOL const isPhoneNotEmpty = phone.length > 0;
BOOL const isBooking = data.isBooking;
+ BOOL const isOpentable = data.isOpentable;
+ BOOL const isSponsored = isBooking || isOpentable;
BOOL const itHasPhoneNumber = isIphone && isPhoneNotEmpty;
BOOL const isApi = data.isApi;
BOOL const isP2P = self.isPrepareRouteMode;
BOOL const isMyPosition = data.isMyPosition;
+ EButton const sponsoredButton = isBooking ? EButton::Booking : EButton::Opentable;
+
if (isMyPosition)
{
m_visibleButtons.push_back(EButton::Spacer);
@@ -89,10 +93,10 @@ extern NSString * const kAlohalyticsTapEventKey;
m_visibleButtons.push_back(EButton::Share);
m_visibleButtons.push_back(EButton::Spacer);
}
- else if (isApi && isBooking)
+ else if (isApi && isSponsored)
{
m_visibleButtons.push_back(EButton::Api);
- m_visibleButtons.push_back(EButton::Booking);
+ m_visibleButtons.push_back(sponsoredButton);
m_additionalButtons.push_back(EButton::Bookmark);
m_additionalButtons.push_back(EButton::RouteFrom);
m_additionalButtons.push_back(EButton::Share);
@@ -119,11 +123,11 @@ extern NSString * const kAlohalyticsTapEventKey;
m_additionalButtons.push_back(EButton::RouteFrom);
m_additionalButtons.push_back(EButton::Share);
}
- else if (isBooking && isP2P)
+ else if (isSponsored && isP2P)
{
m_visibleButtons.push_back(EButton::Bookmark);
m_visibleButtons.push_back(EButton::RouteFrom);
- m_additionalButtons.push_back(EButton::Booking);
+ m_additionalButtons.push_back(sponsoredButton);
m_additionalButtons.push_back(EButton::Share);
}
else if (itHasPhoneNumber && isP2P)
@@ -133,9 +137,9 @@ extern NSString * const kAlohalyticsTapEventKey;
m_additionalButtons.push_back(EButton::Call);
m_additionalButtons.push_back(EButton::Share);
}
- else if (isBooking)
+ else if (isSponsored)
{
- m_visibleButtons.push_back(EButton::Booking);
+ m_visibleButtons.push_back(sponsoredButton);
m_visibleButtons.push_back(EButton::Bookmark);
m_additionalButtons.push_back(EButton::RouteFrom);
m_additionalButtons.push_back(EButton::Share);
@@ -191,6 +195,7 @@ extern NSString * const kAlohalyticsTapEventKey;
switch (type)
{
case EButton::Api: [delegate apiBack]; break;
+ case EButton::Opentable:
case EButton::Booking: [delegate book:NO]; break;
case EButton::Call: [delegate call]; break;
case EButton::Bookmark:
diff --git a/iphone/Maps/Classes/MWMPlacePageData.h b/iphone/Maps/Classes/MWMPlacePageData.h
index e1a7ee0c9b..de0d5a0837 100644
--- a/iphone/Maps/Classes/MWMPlacePageData.h
+++ b/iphone/Maps/Classes/MWMPlacePageData.h
@@ -64,9 +64,9 @@ enum class OpeningHours
// Booking
- (NSString *)bookingRating;
- (NSString *)bookingApproximatePricing;
-- (NSURL *)bookingURL;
-- (NSURL *)bookingDescriptionURL;
-- (NSString *)hotelId;
+- (NSURL *)sponsoredURL;
+- (NSURL *)sponsoredDescriptionURL;
+- (NSString *)sponsoredId;
- (void)assignOnlinePriceToLabel:(UILabel *)label;
// API
@@ -92,6 +92,7 @@ enum class OpeningHours
- (BOOL)isBookmark;
- (BOOL)isApi;
- (BOOL)isBooking;
+- (BOOL)isOpentable;
- (BOOL)isHTMLDescription;
- (BOOL)isMyPosition;
diff --git a/iphone/Maps/Classes/MWMPlacePageData.mm b/iphone/Maps/Classes/MWMPlacePageData.mm
index 223ee7693d..b323d98c88 100644
--- a/iphone/Maps/Classes/MWMPlacePageData.mm
+++ b/iphone/Maps/Classes/MWMPlacePageData.mm
@@ -53,7 +53,7 @@ using namespace place_page;
// There is at least one of these buttons.
if (m_info.ShouldShowAddPlace() || m_info.ShouldShowEditPlace() ||
- m_info.ShouldShowAddBusiness() || m_info.IsSponsoredHotel())
+ m_info.ShouldShowAddBusiness() || m_info.IsSponsored())
{
m_sections.push_back(Sections::Buttons);
[self fillButtonsSection];
@@ -97,7 +97,7 @@ using namespace place_page;
- (void)fillButtonsSection
{
// We don't have to show edit, add place or business if it's booking object.
- if (m_info.IsSponsoredHotel())
+ if (self.isBooking)
{
m_buttonsRows.push_back(ButtonsRows::HotelDescription);
return;
@@ -177,30 +177,30 @@ using namespace place_page;
- (NSString *)bookingRating
{
- return m_info.IsSponsoredHotel() ? @(m_info.GetRatingFormatted().c_str()) : nil;
+ return self.isBooking ? @(m_info.GetRatingFormatted().c_str()) : nil;
}
- (NSString *)bookingApproximatePricing
{
- return m_info.IsSponsoredHotel() ? @(m_info.GetApproximatePricing().c_str()) : nil;
+ return self.isBooking ? @(m_info.GetApproximatePricing().c_str()) : nil;
}
-- (NSURL *)bookingURL
+- (NSURL *)sponsoredURL
{
- return m_info.IsSponsoredHotel() ? [NSURL URLWithString:@(m_info.m_sponsoredBookingUrl.c_str())]
+ return m_info.IsSponsored() ? [NSURL URLWithString:@(m_info.GetSponsoredUrl().c_str())]
: nil;
}
-- (NSURL *)bookingDescriptionURL
+- (NSURL *)sponsoredDescriptionURL
{
- return m_info.IsSponsoredHotel()
- ? [NSURL URLWithString:@(m_info.m_sponsoredDescriptionUrl.c_str())]
+ return m_info.IsSponsored()
+ ? [NSURL URLWithString:@(m_info.GetSponsoredDescriptionUrl().c_str())]
: nil;
}
-- (NSString *)hotelId
+- (NSString *)sponsoredId
{
- return m_info.IsSponsoredHotel()
+ return m_info.IsSponsored()
? @(m_info.GetMetadata().Get(feature::Metadata::FMD_SPONSORED_ID).c_str())
: nil;
}
@@ -208,7 +208,7 @@ using namespace place_page;
- (void)assignOnlinePriceToLabel:(UILabel *)label
{
// TODO(Vlad): Remove similar code from MWMPlacePageEntity.mm when new iPAD place page will be finished.
- NSAssert(m_info.IsSponsoredHotel(), @"Online price must be assigned to booking object!");
+ NSAssert(self.isBooking, @"Online price must be assigned to booking object!");
if (Platform::ConnectionStatus() == Platform::EConnectionType::CONNECTION_NONE)
return;
@@ -247,7 +247,7 @@ using namespace place_page;
});
};
- api.GetMinPrice(self.hotelId.UTF8String, currency, func);
+ api.GetMinPrice(self.sponsoredId.UTF8String, currency, func);
}
- (NSString *)address { return @(m_info.GetAddress().c_str()); }
@@ -310,7 +310,8 @@ using namespace place_page;
- (NSString *)phoneNumber { return @(m_info.GetPhone().c_str()); }
- (BOOL)isBookmark { return m_info.IsBookmark(); }
- (BOOL)isApi { return m_info.HasApiUrl(); }
-- (BOOL)isBooking { return m_info.IsSponsoredHotel(); }
+- (BOOL)isBooking { return m_info.m_sponsoredType == SponsoredType::Booking; }
+- (BOOL)isOpentable { return m_info.m_sponsoredType == SponsoredType::Opentable; }
- (BOOL)isMyPosition { return m_info.IsMyPosition(); }
- (BOOL)isHTMLDescription { return strings::IsHTML(m_info.m_bookmarkDescription); }
diff --git a/iphone/Maps/Classes/MWMPlacePageEntity.h b/iphone/Maps/Classes/MWMPlacePageEntity.h
index 3f538c04b2..ade028658d 100644
--- a/iphone/Maps/Classes/MWMPlacePageEntity.h
+++ b/iphone/Maps/Classes/MWMPlacePageEntity.h
@@ -61,12 +61,13 @@ using MWMPlacePageCellTypeValueMap = map<MWMPlacePageCellType, string>;
- (BOOL)isBookmark;
- (BOOL)isApi;
- (BOOL)isBooking;
+- (BOOL)isOpentable;
- (ms::LatLon)latLon;
- (m2::PointD const &)mercator;
- (NSString *)apiURL;
-- (NSURL *)bookingURL;
-- (NSURL *)bookingDescriptionURL;
-- (NSString * )hotelId;
+- (NSURL *)sponsoredURL;
+- (NSURL *)sponsoredDescriptionURL;
+- (NSString *)sponsoredId;
- (NSString *)phoneNumber;
- (string)titleForNewBookmark;
diff --git a/iphone/Maps/Classes/MWMPlacePageEntity.mm b/iphone/Maps/Classes/MWMPlacePageEntity.mm
index 16bc21df9c..aadc989775 100644
--- a/iphone/Maps/Classes/MWMPlacePageEntity.mm
+++ b/iphone/Maps/Classes/MWMPlacePageEntity.mm
@@ -200,9 +200,9 @@ void initFieldsMap()
case MWMPlacePageCellTypeAddBusinessButton:
return navigationIsHidden && m_info.ShouldShowAddBusiness() ? @"" : nil;
case MWMPlacePageCellTypeWebsite:
- return m_info.IsSponsoredHotel() ? nil : [self getDefaultField:cellType];
+ return self.isBooking ? nil : [self getDefaultField:cellType];
case MWMPlacePageCellTypeBookingMore:
- return m_info.IsSponsoredHotel() ? @(m_info.GetSponsoredDescriptionUrl().c_str()) : nil;
+ return self.isBooking ? @(m_info.GetSponsoredDescriptionUrl().c_str()) : nil;
default: return [self getDefaultField:cellType];
}
}
@@ -214,12 +214,12 @@ void initFieldsMap()
return haveField ? @(it->second.c_str()) : nil;
}
-- (NSURL *)bookingURL { return [self sponsoredUrl:NO]; }
-- (NSURL *)bookingDescriptionURL { return [self sponsoredUrl:YES]; }
+- (NSURL *)sponsoredURL { return [self sponsoredUrl:NO]; }
+- (NSURL *)sponsoredDescriptionURL { return [self sponsoredUrl:YES]; }
- (NSURL *)sponsoredUrl:(BOOL)isDescription
{
auto const & url =
- isDescription ? m_info.GetSponsoredDescriptionUrl() : m_info.GetSponsoredBookingUrl();
+ isDescription ? m_info.GetSponsoredDescriptionUrl() : m_info.GetSponsoredUrl();
return url.empty() ? nil : [NSURL URLWithString:@(url.c_str())];
}
@@ -229,10 +229,12 @@ void initFieldsMap()
- (BOOL)isMyPosition { return m_info.IsMyPosition(); }
- (BOOL)isBookmark { return m_info.IsBookmark(); }
- (BOOL)isApi { return m_info.HasApiUrl(); }
-- (BOOL)isBooking { return m_info.IsSponsoredHotel(); }
-- (NSString *)hotelId
+- (BOOL)isBooking { return m_info.m_sponsoredType == SponsoredType::Booking; }
+- (BOOL)isOpentable { return m_info.m_sponsoredType == SponsoredType::Opentable; }
+- (BOOL)isSponsored { return m_info.IsSponsored(); }
+- (NSString *)sponsoredId
{
- return self.isBooking ? @(m_info.GetMetadata().Get(Metadata::FMD_SPONSORED_ID).c_str()) : nil;
+ return self.isSponsored ? @(m_info.GetMetadata().Get(Metadata::FMD_SPONSORED_ID).c_str()) : nil;
}
- (NSString *)phoneNumber { return [self getCellValue:MWMPlacePageCellTypePhoneNumber]; }
diff --git a/iphone/Maps/Classes/MWMPlacePageManager.mm b/iphone/Maps/Classes/MWMPlacePageManager.mm
index e57719c9e9..d3f508ce13 100644
--- a/iphone/Maps/Classes/MWMPlacePageManager.mm
+++ b/iphone/Maps/Classes/MWMPlacePageManager.mm
@@ -247,19 +247,34 @@
- (void)editBookmark { [[MapViewController controller] openBookmarkEditorWithData:self.data]; }
- (void)book:(BOOL)isDescription
{
- NSMutableDictionary * stat = [@{ kStatProvider : kStatBooking } mutableCopy];
+ // TODO(Vlad): remove the same code from MWMPlacePageViewManager.mm
MWMPlacePageData * data = self.data;
+ BOOL const isBooking = data.isBooking;
auto const & latLon = data.latLon;
- stat[kStatHotel] = data.hotelId;
- stat[kStatHotelLat] = @(latLon.lat);
- stat[kStatHotelLon] = @(latLon.lon);
- [Statistics logEvent:isDescription ? kPlacePageHotelDetails : kPlacePageHotelBook
+ NSMutableDictionary * stat = [@{} mutableCopy];
+ if (isBooking)
+ {
+ stat[kStatProvider] = kStatBooking;
+ stat[kStatHotel] = data.sponsoredId;
+ stat[kStatHotelLat] = @(latLon.lat);
+ stat[kStatHotelLon] = @(latLon.lon);
+ }
+ else
+ {
+ stat[kStatProvider] = kStatOpentable;
+ stat[kStatRestaurant] = data.sponsoredId;
+ stat[kStatRestaurantLat] = @(latLon.lat);
+ stat[kStatRestaurantLon] = @(latLon.lon);
+ }
+
+ NSString * eventName = isBooking ? kPlacePageHotelBook : kPlacePageRestaurantBook;
+ [Statistics logEvent:isDescription ? kPlacePageHotelDetails : eventName
withParameters:stat
atLocation:[MWMLocationManager lastLocation]];
UIViewController * vc = static_cast<UIViewController *>([MapViewController controller]);
- NSURL * url = isDescription ? self.data.bookingDescriptionURL : self.data.bookingURL;
- NSAssert(url, @"Booking url can't be nil!");
+ NSURL * url = isDescription ? self.data.sponsoredDescriptionURL : self.data.sponsoredURL;
+ NSAssert(url, @"Sponsored url can't be nil!");
[vc openUrl:url];
}
diff --git a/iphone/Maps/Classes/MWMPlacePageViewManager.mm b/iphone/Maps/Classes/MWMPlacePageViewManager.mm
index 556b8c6f09..30777c62eb 100644
--- a/iphone/Maps/Classes/MWMPlacePageViewManager.mm
+++ b/iphone/Maps/Classes/MWMPlacePageViewManager.mm
@@ -210,19 +210,33 @@ extern NSString * const kBookmarksChangedNotification;
- (void)book:(BOOL)isDescription
{
- NSMutableDictionary * stat = [@{ kStatProvider : kStatBooking } mutableCopy];
- MWMPlacePageEntity * en = self.entity;
- auto const & latLon = en.latLon;
- stat[kStatHotel] = en.hotelId;
- stat[kStatHotelLat] = @(latLon.lat);
- stat[kStatHotelLon] = @(latLon.lon);
- [Statistics logEvent:isDescription ? kPlacePageHotelDetails : kPlacePageHotelBook
+ MWMPlacePageEntity * data = self.entity;
+ BOOL const isBooking = data.isBooking;
+ auto const & latLon = data.latLon;
+ NSMutableDictionary * stat = [@{} mutableCopy];
+ if (isBooking)
+ {
+ stat[kStatProvider] = kStatBooking;
+ stat[kStatHotel] = data.sponsoredId;
+ stat[kStatHotelLat] = @(latLon.lat);
+ stat[kStatHotelLon] = @(latLon.lon);
+ }
+ else
+ {
+ stat[kStatProvider] = kStatOpentable;
+ stat[kStatRestaurant] = data.sponsoredId;
+ stat[kStatRestaurantLat] = @(latLon.lat);
+ stat[kStatRestaurantLon] = @(latLon.lon);
+ }
+
+ NSString * eventName = isBooking ? kPlacePageHotelBook : kPlacePageRestaurantBook;
+ [Statistics logEvent:isDescription ? kPlacePageHotelDetails : eventName
withParameters:stat
atLocation:[MWMLocationManager lastLocation]];
UIViewController * vc = static_cast<UIViewController *>([MapViewController controller]);
- NSURL * url = isDescription ? self.entity.bookingDescriptionURL : self.entity.bookingURL;
- NSAssert(url, @"Booking url can't be nil!");
+ NSURL * url = isDescription ? self.entity.sponsoredDescriptionURL : self.entity.sponsoredURL;
+ NSAssert(url, @"Sponsored url can't be nil!");
[vc openUrl:url];
}
diff --git a/iphone/Maps/Classes/Share/MWMShareActivityItem.h b/iphone/Maps/Classes/Share/MWMShareActivityItem.h
index 765b2ccfcb..fd66a31d41 100644
--- a/iphone/Maps/Classes/Share/MWMShareActivityItem.h
+++ b/iphone/Maps/Classes/Share/MWMShareActivityItem.h
@@ -10,7 +10,7 @@ class LatLon;
- (NSString *)title;
- (NSString *)subtitle;
- (NSString *)address;
-- (NSURL *)bookingDescriptionURL;
+- (NSURL *)sponsoredDescriptionURL;
- (NSString *)phoneNumber;
- (ms::LatLon)latLon;
diff --git a/iphone/Maps/Classes/Share/MWMShareActivityItem.mm b/iphone/Maps/Classes/Share/MWMShareActivityItem.mm
index 9eada7509e..a1342349e7 100644
--- a/iphone/Maps/Classes/Share/MWMShareActivityItem.mm
+++ b/iphone/Maps/Classes/Share/MWMShareActivityItem.mm
@@ -130,7 +130,7 @@ NSString * httpGe0Url(NSString * shortUrl)
if (self.object.isBooking)
{
strings.push_back(L(@"sharing_booking"));
- strings.push_back(self.object.bookingDescriptionURL.absoluteString);
+ strings.push_back(self.object.sponsoredDescriptionURL.absoluteString);
}
for (auto const str : strings)