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:
authoralexzatsepin <az@mapswithme.com>2016-10-21 20:47:18 +0300
committerGitHub <noreply@github.com>2016-10-21 20:47:18 +0300
commit2243590024f661ec22aa14bc88e4098ff41a3865 (patch)
treef1491ec365301eedd8d520413f266a6b117deab1
parentf179d5cd0dd33c5dbe33f178ada3d0bbd111f0b5 (diff)
parent4b48bd3a366885bc36ef8178b94f7dd97f28192c (diff)
Merge pull request #4515 from milchakov/opentable_core
opentable placepage
-rw-r--r--android/jni/Android.mk2
-rw-r--r--android/jni/com/mapswithme/maps/Sponsored.cpp (renamed from android/jni/com/mapswithme/maps/SponsoredHotel.cpp)55
-rw-r--r--android/res/drawable-hdpi/ic_opentable.pngbin0 -> 720 bytes
-rw-r--r--android/res/drawable-mdpi/ic_opentable.pngbin0 -> 477 bytes
-rw-r--r--android/res/drawable-v21/button_opentable.xml9
-rw-r--r--android/res/drawable-xhdpi/ic_opentable.pngbin0 -> 1080 bytes
-rw-r--r--android/res/drawable-xxhdpi/ic_opentable.pngbin0 -> 1832 bytes
-rw-r--r--android/res/drawable-xxxhdpi/ic_opentable.pngbin0 -> 2695 bytes
-rw-r--r--android/res/drawable/button_opentable.xml7
-rw-r--r--android/res/values-ar/strings.xml2
-rw-r--r--android/res/values-cs/strings.xml2
-rw-r--r--android/res/values-da/strings.xml2
-rw-r--r--android/res/values-de/strings.xml2
-rw-r--r--android/res/values-es/strings.xml2
-rw-r--r--android/res/values-fi/strings.xml2
-rw-r--r--android/res/values-fr/strings.xml2
-rw-r--r--android/res/values-hu/strings.xml2
-rw-r--r--android/res/values-in/strings.xml2
-rw-r--r--android/res/values-it/strings.xml2
-rw-r--r--android/res/values-ja/strings.xml2
-rw-r--r--android/res/values-ko/strings.xml2
-rw-r--r--android/res/values-nb/strings.xml2
-rw-r--r--android/res/values-nl/strings.xml2
-rw-r--r--android/res/values-pl/strings.xml2
-rw-r--r--android/res/values-pt/strings.xml2
-rw-r--r--android/res/values-ro/strings.xml2
-rw-r--r--android/res/values-ru/strings.xml2
-rw-r--r--android/res/values-sk/strings.xml2
-rw-r--r--android/res/values-sv/strings.xml2
-rw-r--r--android/res/values-th/strings.xml2
-rw-r--r--android/res/values-tr/strings.xml2
-rw-r--r--android/res/values-uk/strings.xml2
-rw-r--r--android/res/values-vi/strings.xml2
-rw-r--r--android/res/values-zh-rTW/strings.xml2
-rw-r--r--android/res/values-zh/strings.xml2
-rw-r--r--android/res/values/colors.xml2
-rw-r--r--android/res/values/strings.xml2
-rw-r--r--android/src/com/mapswithme/maps/bookmarks/BookmarksListFragment.java8
-rw-r--r--android/src/com/mapswithme/maps/widget/placepage/FacilitiesAdapter.java6
-rw-r--r--android/src/com/mapswithme/maps/widget/placepage/NearbyAdapter.java10
-rw-r--r--android/src/com/mapswithme/maps/widget/placepage/PlacePageButtons.java17
-rw-r--r--android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java190
-rw-r--r--android/src/com/mapswithme/maps/widget/placepage/Sponsored.java (renamed from android/src/com/mapswithme/maps/widget/placepage/SponsoredHotel.java)84
-rw-r--r--android/src/com/mapswithme/util/sharing/MapObjectShareable.java8
-rw-r--r--android/src/com/mapswithme/util/sharing/ShareOption.java8
-rw-r--r--android/src/com/mapswithme/util/statistics/Statistics.java2
-rwxr-xr-xconfigure.sh1
-rw-r--r--generator/opentable_dataset.cpp1
-rw-r--r--indexer/ftypes_matcher.cpp12
-rw-r--r--indexer/ftypes_matcher.hpp8
-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
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/ic_opentable.imageset/Contents.json23
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/ic_opentable.imageset/ic_opentable.pngbin0 -> 535 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/ic_opentable.imageset/ic_opentable@2x.pngbin0 -> 1090 bytes
-rw-r--r--iphone/Maps/Images.xcassets/Place Page/ic_opentable.imageset/ic_opentable@3x.pngbin0 -> 1771 bytes
-rw-r--r--iphone/Maps/Statistics/StatisticsStrings.h5
-rw-r--r--iphone/Maps/UIColor+MapsMeColor.h1
-rw-r--r--iphone/Maps/UIColor+MapsMeColor.mm5
-rw-r--r--map/framework.cpp24
-rw-r--r--map/place_page_info.cpp9
-rw-r--r--map/place_page_info.hpp22
-rw-r--r--partners_api/booking_api.cpp2
-rw-r--r--partners_api/booking_api.hpp2
-rw-r--r--partners_api/opentable_api.cpp21
-rw-r--r--partners_api/opentable_api.hpp12
-rw-r--r--partners_api/partners_api.pro2
-rw-r--r--partners_api/partners_api_tests/booking_tests.cpp2
-rw-r--r--strings.txt2
-rw-r--r--xcode/partners_api/partners_api.xcodeproj/project.pbxproj8
80 files changed, 531 insertions, 244 deletions
diff --git a/android/jni/Android.mk b/android/jni/Android.mk
index 5b5014cf50..4b2c67c893 100644
--- a/android/jni/Android.mk
+++ b/android/jni/Android.mk
@@ -92,7 +92,7 @@ LOCAL_SRC_FILES := \
com/mapswithme/maps/SearchRecents.cpp \
com/mapswithme/maps/settings/UnitLocale.cpp \
com/mapswithme/maps/sound/tts.cpp \
- com/mapswithme/maps/SponsoredHotel.cpp \
+ com/mapswithme/maps/Sponsored.cpp \
com/mapswithme/maps/uber/Uber.cpp \
com/mapswithme/maps/TrackRecorder.cpp \
com/mapswithme/maps/UserMarkHelper.cpp \
diff --git a/android/jni/com/mapswithme/maps/SponsoredHotel.cpp b/android/jni/com/mapswithme/maps/Sponsored.cpp
index 986709c2ec..ac8bb04fc5 100644
--- a/android/jni/com/mapswithme/maps/SponsoredHotel.cpp
+++ b/android/jni/com/mapswithme/maps/Sponsored.cpp
@@ -10,7 +10,7 @@
namespace
{
-jclass g_hotelClass;
+jclass g_sponsoredClass;
jclass g_facilityTypeClass;
jclass g_nearbyObjectClass;
jclass g_imageClass;
@@ -21,22 +21,22 @@ jmethodID g_nearbyConstructor;
jmethodID g_imageConstructor;
jmethodID g_reviewConstructor;
jmethodID g_hotelInfoConstructor;
-jmethodID g_hotelClassConstructor;
+jmethodID g_sponsoredClassConstructor;
jmethodID g_priceCallback;
jmethodID g_infoCallback;
-void PrepareClassRefs(JNIEnv * env, jclass hotelClass)
+void PrepareClassRefs(JNIEnv * env, jclass sponsoredClass)
{
- if (g_hotelClass)
+ if (g_sponsoredClass)
return;
- g_hotelClass = static_cast<jclass>(env->NewGlobalRef(hotelClass));
+ g_sponsoredClass = static_cast<jclass>(env->NewGlobalRef(sponsoredClass));
g_hotelInfoClass =
- jni::GetGlobalClassRef(env, "com/mapswithme/maps/widget/placepage/SponsoredHotel$HotelInfo");
+ jni::GetGlobalClassRef(env, "com/mapswithme/maps/widget/placepage/Sponsored$HotelInfo");
g_facilityTypeClass = jni::GetGlobalClassRef(
- env, "com/mapswithme/maps/widget/placepage/SponsoredHotel$FacilityType");
+ env, "com/mapswithme/maps/widget/placepage/Sponsored$FacilityType");
g_nearbyObjectClass = jni::GetGlobalClassRef(
- env, "com/mapswithme/maps/widget/placepage/SponsoredHotel$NearbyObject");
+ env, "com/mapswithme/maps/widget/placepage/Sponsored$NearbyObject");
g_reviewClass = jni::GetGlobalClassRef(env, "com/mapswithme/maps/review/Review");
g_imageClass = jni::GetGlobalClassRef(env, "com/mapswithme/maps/gallery/Image");
@@ -52,46 +52,47 @@ void PrepareClassRefs(JNIEnv * env, jclass hotelClass)
g_hotelInfoConstructor = jni::GetConstructorID(
env, g_hotelInfoClass,
"(Ljava/lang/String;[Lcom/mapswithme/maps/gallery/Image;[Lcom/mapswithme/maps/widget/"
- "placepage/SponsoredHotel$FacilityType;[Lcom/mapswithme/maps/review/Review;[Lcom/mapswithme/"
- "maps/widget/placepage/SponsoredHotel$NearbyObject;)V");
+ "placepage/Sponsored$FacilityType;[Lcom/mapswithme/maps/review/Review;[Lcom/mapswithme/"
+ "maps/widget/placepage/Sponsored$NearbyObject;)V");
- // SponsoredHotel(String rating, String price, String urlBook, String urlDescription)
- g_hotelClassConstructor = jni::GetConstructorID(
- env, g_hotelClass,
- "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V");
+ // Sponsored(String rating, String price, String urlBook, String urlDescription)
+ g_sponsoredClassConstructor = jni::GetConstructorID(
+ env, g_sponsoredClass,
+ "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V");
// static void onPriceReceived(final String id, final String price, final String currency)
g_priceCallback =
- jni::GetStaticMethodID(env, g_hotelClass, "onPriceReceived",
+ jni::GetStaticMethodID(env, g_sponsoredClass, "onPriceReceived",
"(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V");
// static void onDescriptionReceived(final String id, final String description)
g_infoCallback = jni::GetStaticMethodID(
- env, g_hotelClass, "onInfoReceived",
- "(Ljava/lang/String;Lcom/mapswithme/maps/widget/placepage/SponsoredHotel$HotelInfo;)V");
+ env, g_sponsoredClass, "onHotelInfoReceived",
+ "(Ljava/lang/String;Lcom/mapswithme/maps/widget/placepage/Sponsored$HotelInfo;)V");
}
} // namespace
extern "C" {
-// static SponsoredHotel nativeGetCurrent();
-JNIEXPORT jobject JNICALL Java_com_mapswithme_maps_widget_placepage_SponsoredHotel_nativeGetCurrent(
+// static Sponsored nativeGetCurrent();
+JNIEXPORT jobject JNICALL Java_com_mapswithme_maps_widget_placepage_Sponsored_nativeGetCurrent(
JNIEnv * env, jclass clazz)
{
PrepareClassRefs(env, clazz);
place_page::Info const & ppInfo = g_framework->GetPlacePageInfo();
- if (!ppInfo.m_isSponsoredHotel)
+ if (!ppInfo.IsSponsored())
return nullptr;
- return env->NewObject(g_hotelClass, g_hotelClassConstructor,
+ return env->NewObject(g_sponsoredClass, g_sponsoredClassConstructor,
jni::ToJavaString(env, ppInfo.GetRatingFormatted()),
jni::ToJavaString(env, ppInfo.GetApproximatePricing()),
- jni::ToJavaString(env, ppInfo.GetSponsoredBookingUrl()),
- jni::ToJavaString(env, ppInfo.GetSponsoredDescriptionUrl()));
+ jni::ToJavaString(env, ppInfo.GetSponsoredUrl()),
+ jni::ToJavaString(env, ppInfo.GetSponsoredDescriptionUrl()),
+ (jint)ppInfo.m_sponsoredType);
}
// static void nativeRequestPrice(String id, String currencyCode);
-JNIEXPORT void JNICALL Java_com_mapswithme_maps_widget_placepage_SponsoredHotel_nativeRequestPrice(
+JNIEXPORT void JNICALL Java_com_mapswithme_maps_widget_placepage_Sponsored_nativeRequestPrice(
JNIEnv * env, jclass clazz, jstring id, jstring currencyCode)
{
PrepareClassRefs(env, clazz);
@@ -103,14 +104,14 @@ JNIEXPORT void JNICALL Java_com_mapswithme_maps_widget_placepage_SponsoredHotel_
string const & currency) {
GetPlatform().RunOnGuiThread([=]() {
JNIEnv * env = jni::GetEnv();
- env->CallStaticVoidMethod(g_hotelClass, g_priceCallback, jni::ToJavaString(env, hotelId),
+ env->CallStaticVoidMethod(g_sponsoredClass, g_priceCallback, jni::ToJavaString(env, hotelId),
jni::ToJavaString(env, price), jni::ToJavaString(env, currency));
});
});
}
// static void nativeRequestInfo(String id, String locale);
-JNIEXPORT void JNICALL Java_com_mapswithme_maps_widget_placepage_SponsoredHotel_nativeRequestInfo(
+JNIEXPORT void JNICALL Java_com_mapswithme_maps_widget_placepage_Sponsored_nativeRequestHotelInfo(
JNIEnv * env, jclass clazz, jstring id, jstring locale)
{
PrepareClassRefs(env, clazz);
@@ -151,7 +152,7 @@ JNIEXPORT void JNICALL Java_com_mapswithme_maps_widget_placepage_SponsoredHotel_
});
auto nearby = env->NewObjectArray(0, g_nearbyObjectClass, 0);
- env->CallStaticVoidMethod(g_hotelClass, g_infoCallback, jni::ToJavaString(env, hotelId),
+ env->CallStaticVoidMethod(g_sponsoredClass, g_infoCallback, jni::ToJavaString(env, hotelId),
env->NewObject(g_hotelInfoClass, g_hotelInfoConstructor,
description, photos, facilities, reviews, nearby));
});
diff --git a/android/res/drawable-hdpi/ic_opentable.png b/android/res/drawable-hdpi/ic_opentable.png
new file mode 100644
index 0000000000..fff32a337c
--- /dev/null
+++ b/android/res/drawable-hdpi/ic_opentable.png
Binary files differ
diff --git a/android/res/drawable-mdpi/ic_opentable.png b/android/res/drawable-mdpi/ic_opentable.png
new file mode 100644
index 0000000000..ae53c7be0c
--- /dev/null
+++ b/android/res/drawable-mdpi/ic_opentable.png
Binary files differ
diff --git a/android/res/drawable-v21/button_opentable.xml b/android/res/drawable-v21/button_opentable.xml
new file mode 100644
index 0000000000..e1b31e63e2
--- /dev/null
+++ b/android/res/drawable-v21/button_opentable.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+ android:color="@color/bg_brand_opentable_pressed">
+ <item>
+ <shape android:shape="rectangle">
+ <solid android:color="@color/bg_brand_opentable"/>
+ </shape>
+ </item>
+</ripple>
diff --git a/android/res/drawable-xhdpi/ic_opentable.png b/android/res/drawable-xhdpi/ic_opentable.png
new file mode 100644
index 0000000000..1d7641a1ef
--- /dev/null
+++ b/android/res/drawable-xhdpi/ic_opentable.png
Binary files differ
diff --git a/android/res/drawable-xxhdpi/ic_opentable.png b/android/res/drawable-xxhdpi/ic_opentable.png
new file mode 100644
index 0000000000..2d8fbad633
--- /dev/null
+++ b/android/res/drawable-xxhdpi/ic_opentable.png
Binary files differ
diff --git a/android/res/drawable-xxxhdpi/ic_opentable.png b/android/res/drawable-xxxhdpi/ic_opentable.png
new file mode 100644
index 0000000000..1b1de05206
--- /dev/null
+++ b/android/res/drawable-xxxhdpi/ic_opentable.png
Binary files differ
diff --git a/android/res/drawable/button_opentable.xml b/android/res/drawable/button_opentable.xml
new file mode 100644
index 0000000000..fcbddd3705
--- /dev/null
+++ b/android/res/drawable/button_opentable.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:drawable="@color/bg_brand_opentable_pressed"
+ android:state_pressed="true"/>
+
+ <item android:drawable="@color/bg_brand_opentable"/>
+</selector>
diff --git a/android/res/values-ar/strings.xml b/android/res/values-ar/strings.xml
index e4b4480cc3..a85932d1d3 100644
--- a/android/res/values-ar/strings.xml
+++ b/android/res/values-ar/strings.xml
@@ -868,7 +868,7 @@
<string name="minute">د</string>
<string name="placepage_place_description">الوصف</string>
<string name="placepage_more_button">المزيد</string>
- <string name="bookingcom_book_button">حجز</string>
+ <string name="book_button">حجز</string>
<string name="placepage_call_button">اتصال</string>
<string name="placepage_edit_bookmark_button">تحرير العلامة المرجعية</string>
<string name="placepage_bookmark_name_hint">اسم العلامة المرجعية</string>
diff --git a/android/res/values-cs/strings.xml b/android/res/values-cs/strings.xml
index 2879db6784..1419524638 100644
--- a/android/res/values-cs/strings.xml
+++ b/android/res/values-cs/strings.xml
@@ -869,7 +869,7 @@
<string name="minute">min</string>
<string name="placepage_place_description">Popis</string>
<string name="placepage_more_button">Více</string>
- <string name="bookingcom_book_button">Rezervace</string>
+ <string name="book_button">Rezervace</string>
<string name="placepage_call_button">Volat</string>
<string name="placepage_edit_bookmark_button">Upravit záložku</string>
<string name="placepage_bookmark_name_hint">Název záložky</string>
diff --git a/android/res/values-da/strings.xml b/android/res/values-da/strings.xml
index 397e81f0e7..b02309a96a 100644
--- a/android/res/values-da/strings.xml
+++ b/android/res/values-da/strings.xml
@@ -866,7 +866,7 @@
<string name="minute">min</string>
<string name="placepage_place_description">Beskrivelse</string>
<string name="placepage_more_button">Mere</string>
- <string name="bookingcom_book_button">Bog</string>
+ <string name="book_button">Bog</string>
<string name="placepage_call_button">Ring</string>
<string name="placepage_edit_bookmark_button">Rediger bogmærke</string>
<string name="placepage_bookmark_name_hint">Bogmærke</string>
diff --git a/android/res/values-de/strings.xml b/android/res/values-de/strings.xml
index f01ad0ebd0..e73ab6395a 100644
--- a/android/res/values-de/strings.xml
+++ b/android/res/values-de/strings.xml
@@ -880,7 +880,7 @@
<string name="minute">min</string>
<string name="placepage_place_description">Beschreibung</string>
<string name="placepage_more_button">Mehr</string>
- <string name="bookingcom_book_button">Buchen</string>
+ <string name="book_button">Buchen</string>
<string name="placepage_call_button">Anruf</string>
<string name="placepage_edit_bookmark_button">Lesezeichen bearbeiten</string>
<string name="placepage_bookmark_name_hint">Name des Lesezeichens</string>
diff --git a/android/res/values-es/strings.xml b/android/res/values-es/strings.xml
index 6faa1fee13..7cf5668e64 100644
--- a/android/res/values-es/strings.xml
+++ b/android/res/values-es/strings.xml
@@ -855,7 +855,7 @@
<string name="minute">min</string>
<string name="placepage_place_description">Descripción</string>
<string name="placepage_more_button">Más</string>
- <string name="bookingcom_book_button">Reservar</string>
+ <string name="book_button">Reservar</string>
<string name="placepage_call_button">Llamar</string>
<string name="placepage_edit_bookmark_button">Editar marcador</string>
<string name="placepage_bookmark_name_hint">Nombre del marcador</string>
diff --git a/android/res/values-fi/strings.xml b/android/res/values-fi/strings.xml
index 3bee475c60..095e1f20bd 100644
--- a/android/res/values-fi/strings.xml
+++ b/android/res/values-fi/strings.xml
@@ -862,7 +862,7 @@
<string name="minute">min</string>
<string name="placepage_place_description">Kuvaus</string>
<string name="placepage_more_button">Lisää</string>
- <string name="bookingcom_book_button">Varaa</string>
+ <string name="book_button">Varaa</string>
<string name="placepage_call_button">Soita</string>
<string name="placepage_edit_bookmark_button">Muokkaa kirjanmerkkiä</string>
<string name="placepage_bookmark_name_hint">Kirjanmerkin nimi</string>
diff --git a/android/res/values-fr/strings.xml b/android/res/values-fr/strings.xml
index 6f04a8e04a..183099f785 100644
--- a/android/res/values-fr/strings.xml
+++ b/android/res/values-fr/strings.xml
@@ -879,7 +879,7 @@
<string name="minute">min</string>
<string name="placepage_place_description">Description</string>
<string name="placepage_more_button">Plus</string>
- <string name="bookingcom_book_button">Réserver</string>
+ <string name="book_button">Réserver</string>
<string name="placepage_call_button">Appeler</string>
<string name="placepage_edit_bookmark_button">Éditer les signets</string>
<string name="placepage_bookmark_name_hint">Nom du signet</string>
diff --git a/android/res/values-hu/strings.xml b/android/res/values-hu/strings.xml
index 794139dd87..cd7c7738b7 100644
--- a/android/res/values-hu/strings.xml
+++ b/android/res/values-hu/strings.xml
@@ -862,7 +862,7 @@
<string name="minute">p</string>
<string name="placepage_place_description">Leírás</string>
<string name="placepage_more_button">Még</string>
- <string name="bookingcom_book_button">Foglalás</string>
+ <string name="book_button">Foglalás</string>
<string name="placepage_call_button">Hívás</string>
<string name="placepage_edit_bookmark_button">Könyvjelző szerkesztése</string>
<string name="placepage_bookmark_name_hint">Könyvjelző neve</string>
diff --git a/android/res/values-in/strings.xml b/android/res/values-in/strings.xml
index a40eb6ca59..7829c604a7 100644
--- a/android/res/values-in/strings.xml
+++ b/android/res/values-in/strings.xml
@@ -861,7 +861,7 @@
<string name="minute">mnt</string>
<string name="placepage_place_description">Deskripsi</string>
<string name="placepage_more_button">Lainnya</string>
- <string name="bookingcom_book_button">Pesan</string>
+ <string name="book_button">Pesan</string>
<string name="placepage_call_button">Hubungi</string>
<string name="placepage_edit_bookmark_button">Edit Bookmark</string>
<string name="placepage_bookmark_name_hint">Nama Bookmark</string>
diff --git a/android/res/values-it/strings.xml b/android/res/values-it/strings.xml
index 85092082bb..549b48fb53 100644
--- a/android/res/values-it/strings.xml
+++ b/android/res/values-it/strings.xml
@@ -861,7 +861,7 @@
<string name="minute">min</string>
<string name="placepage_place_description">Descrizione</string>
<string name="placepage_more_button">Altro</string>
- <string name="bookingcom_book_button">Prenota</string>
+ <string name="book_button">Prenota</string>
<string name="placepage_call_button">Chiama</string>
<string name="placepage_edit_bookmark_button">Modifica segnalibro</string>
<string name="placepage_bookmark_name_hint">Nome segnalibro</string>
diff --git a/android/res/values-ja/strings.xml b/android/res/values-ja/strings.xml
index 51688a48bd..bc8a43eed0 100644
--- a/android/res/values-ja/strings.xml
+++ b/android/res/values-ja/strings.xml
@@ -861,7 +861,7 @@
<string name="minute">分</string>
<string name="placepage_place_description">説明</string>
<string name="placepage_more_button">さらに詳しく</string>
- <string name="bookingcom_book_button">予約</string>
+ <string name="book_button">予約</string>
<string name="placepage_call_button">コール</string>
<string name="placepage_edit_bookmark_button">ブックマークを編集</string>
<string name="placepage_bookmark_name_hint">ブックマーク名</string>
diff --git a/android/res/values-ko/strings.xml b/android/res/values-ko/strings.xml
index 01009a0fab..3d85a9fd94 100644
--- a/android/res/values-ko/strings.xml
+++ b/android/res/values-ko/strings.xml
@@ -858,7 +858,7 @@
<string name="minute">min</string>
<string name="placepage_place_description">설명</string>
<string name="placepage_more_button">자세히</string>
- <string name="bookingcom_book_button">예약</string>
+ <string name="book_button">예약</string>
<string name="placepage_call_button">전화</string>
<string name="placepage_edit_bookmark_button">즐겨찾기 편집</string>
<string name="placepage_bookmark_name_hint">즐겨찾기 이름</string>
diff --git a/android/res/values-nb/strings.xml b/android/res/values-nb/strings.xml
index 79a11af2fb..b5431626da 100644
--- a/android/res/values-nb/strings.xml
+++ b/android/res/values-nb/strings.xml
@@ -860,7 +860,7 @@
<string name="minute">min</string>
<string name="placepage_place_description">Beskrivelse</string>
<string name="placepage_more_button">Mer</string>
- <string name="bookingcom_book_button">Bestill</string>
+ <string name="book_button">Bestill</string>
<string name="placepage_call_button">Ring</string>
<string name="placepage_edit_bookmark_button">Rediger bokmerke</string>
<string name="placepage_bookmark_name_hint">Bokmerkenavn</string>
diff --git a/android/res/values-nl/strings.xml b/android/res/values-nl/strings.xml
index 864332fd34..b7ef6b6d5f 100644
--- a/android/res/values-nl/strings.xml
+++ b/android/res/values-nl/strings.xml
@@ -862,7 +862,7 @@
<string name="minute">min</string>
<string name="placepage_place_description">Beschrijving</string>
<string name="placepage_more_button">Meer</string>
- <string name="bookingcom_book_button">Boeken</string>
+ <string name="book_button">Boeken</string>
<string name="placepage_call_button">Bellen</string>
<string name="placepage_edit_bookmark_button">Bladwijzer bewerken</string>
<string name="placepage_bookmark_name_hint">Bladwijzernaam</string>
diff --git a/android/res/values-pl/strings.xml b/android/res/values-pl/strings.xml
index 292a06ffe6..549c09f27b 100644
--- a/android/res/values-pl/strings.xml
+++ b/android/res/values-pl/strings.xml
@@ -869,7 +869,7 @@
<string name="minute">min</string>
<string name="placepage_place_description">Opis</string>
<string name="placepage_more_button">Więcej</string>
- <string name="bookingcom_book_button">Zarezerwuj</string>
+ <string name="book_button">Zarezerwuj</string>
<string name="placepage_call_button">Zadzwoń</string>
<string name="placepage_edit_bookmark_button">Edytuj zakładkę</string>
<string name="placepage_bookmark_name_hint">Nazwa zakładki</string>
diff --git a/android/res/values-pt/strings.xml b/android/res/values-pt/strings.xml
index bbc2e6287b..8ff49efe2f 100644
--- a/android/res/values-pt/strings.xml
+++ b/android/res/values-pt/strings.xml
@@ -861,7 +861,7 @@
<string name="minute">min</string>
<string name="placepage_place_description">Descrição</string>
<string name="placepage_more_button">Mais</string>
- <string name="bookingcom_book_button">Livro</string>
+ <string name="book_button">Livro</string>
<string name="placepage_call_button">Chamada</string>
<string name="placepage_edit_bookmark_button">Editar marcador</string>
<string name="placepage_bookmark_name_hint">Nome do marcador</string>
diff --git a/android/res/values-ro/strings.xml b/android/res/values-ro/strings.xml
index 4613f70567..04479f0063 100644
--- a/android/res/values-ro/strings.xml
+++ b/android/res/values-ro/strings.xml
@@ -858,7 +858,7 @@
<string name="minute">min</string>
<string name="placepage_place_description">Descriere</string>
<string name="placepage_more_button">Mai multe</string>
- <string name="bookingcom_book_button">Rezervare</string>
+ <string name="book_button">Rezervare</string>
<string name="placepage_call_button">Apel</string>
<string name="placepage_edit_bookmark_button">Editare marcaj</string>
<string name="placepage_bookmark_name_hint">Nume marcaj</string>
diff --git a/android/res/values-ru/strings.xml b/android/res/values-ru/strings.xml
index 89f73ee115..1f305964b3 100644
--- a/android/res/values-ru/strings.xml
+++ b/android/res/values-ru/strings.xml
@@ -881,7 +881,7 @@
<string name="placepage_place_description">Описание</string>
<string name="placepage_more_button">Ещё</string>
<string name="placepage_more_reviews_button">Ещё отзывы</string>
- <string name="bookingcom_book_button">Забронировать</string>
+ <string name="book_button">Забронировать</string>
<string name="placepage_call_button">Позвонить</string>
<string name="placepage_edit_bookmark_button">Редактировать метку</string>
<string name="placepage_bookmark_name_hint">Название метки</string>
diff --git a/android/res/values-sk/strings.xml b/android/res/values-sk/strings.xml
index b3b3b9f89e..95585d1add 100644
--- a/android/res/values-sk/strings.xml
+++ b/android/res/values-sk/strings.xml
@@ -865,7 +865,7 @@
<string name="minute">min</string>
<string name="placepage_place_description">Popis</string>
<string name="placepage_more_button">Viac</string>
- <string name="bookingcom_book_button">Rezervovať</string>
+ <string name="book_button">Rezervovať</string>
<string name="placepage_call_button">Zavolať</string>
<string name="placepage_edit_bookmark_button">Upraviť záložku</string>
<string name="placepage_bookmark_name_hint">Názov záložky</string>
diff --git a/android/res/values-sv/strings.xml b/android/res/values-sv/strings.xml
index f1008bddc8..6870ac6d10 100644
--- a/android/res/values-sv/strings.xml
+++ b/android/res/values-sv/strings.xml
@@ -866,7 +866,7 @@
<string name="minute">min</string>
<string name="placepage_place_description">Beskrivning</string>
<string name="placepage_more_button">Mer</string>
- <string name="bookingcom_book_button">Boka</string>
+ <string name="book_button">Boka</string>
<string name="placepage_call_button">Ring</string>
<string name="placepage_edit_bookmark_button">Redigera bokmärke</string>
<string name="placepage_bookmark_name_hint">Namn bokmärke</string>
diff --git a/android/res/values-th/strings.xml b/android/res/values-th/strings.xml
index 66bda98cbe..f13081e555 100644
--- a/android/res/values-th/strings.xml
+++ b/android/res/values-th/strings.xml
@@ -868,7 +868,7 @@
<string name="minute">น.</string>
<string name="placepage_place_description">คำอธิบาย</string>
<string name="placepage_more_button">เพิ่มเติม</string>
- <string name="bookingcom_book_button">จอง</string>
+ <string name="book_button">จอง</string>
<string name="placepage_call_button">โทร</string>
<string name="placepage_edit_bookmark_button">แก้ไข Bookmark</string>
<string name="placepage_bookmark_name_hint">ชื่อของ Bookmark</string>
diff --git a/android/res/values-tr/strings.xml b/android/res/values-tr/strings.xml
index e53d8a0013..532a52903c 100644
--- a/android/res/values-tr/strings.xml
+++ b/android/res/values-tr/strings.xml
@@ -868,7 +868,7 @@
<string name="minute">dk</string>
<string name="placepage_place_description">Açıklama</string>
<string name="placepage_more_button">Diğer</string>
- <string name="bookingcom_book_button">Rezervasyon</string>
+ <string name="book_button">Rezervasyon</string>
<string name="placepage_call_button">Çağrı</string>
<string name="placepage_edit_bookmark_button">Yer İmini Düzenle</string>
<string name="placepage_bookmark_name_hint">Yer İmi Adı</string>
diff --git a/android/res/values-uk/strings.xml b/android/res/values-uk/strings.xml
index 11f03e2996..fc8290357a 100644
--- a/android/res/values-uk/strings.xml
+++ b/android/res/values-uk/strings.xml
@@ -866,7 +866,7 @@
<string name="minute">хв</string>
<string name="placepage_place_description">Опис</string>
<string name="placepage_more_button">Ще</string>
- <string name="bookingcom_book_button">Забронювати</string>
+ <string name="book_button">Забронювати</string>
<string name="placepage_call_button">Подзвонити</string>
<string name="placepage_edit_bookmark_button">Редагувати мiтку</string>
<string name="placepage_bookmark_name_hint">Назва мiтки</string>
diff --git a/android/res/values-vi/strings.xml b/android/res/values-vi/strings.xml
index f7a949615a..64ba555112 100644
--- a/android/res/values-vi/strings.xml
+++ b/android/res/values-vi/strings.xml
@@ -862,7 +862,7 @@
<string name="minute">phút</string>
<string name="placepage_place_description">Mô tả</string>
<string name="placepage_more_button">Bổ sung</string>
- <string name="bookingcom_book_button">Đặt trước</string>
+ <string name="book_button">Đặt trước</string>
<string name="placepage_call_button">Gọi</string>
<string name="placepage_edit_bookmark_button">Sửa Dấu Trang</string>
<string name="placepage_bookmark_name_hint">Tên Dấu Trang</string>
diff --git a/android/res/values-zh-rTW/strings.xml b/android/res/values-zh-rTW/strings.xml
index 79b1938e8a..73e1ac9494 100644
--- a/android/res/values-zh-rTW/strings.xml
+++ b/android/res/values-zh-rTW/strings.xml
@@ -874,7 +874,7 @@
<string name="minute">分鐘</string>
<string name="placepage_place_description">說明</string>
<string name="placepage_more_button">更多</string>
- <string name="bookingcom_book_button">預約</string>
+ <string name="book_button">預約</string>
<string name="placepage_call_button">呼叫</string>
<string name="placepage_edit_bookmark_button">編輯書籤</string>
<string name="placepage_bookmark_name_hint">書籤名稱</string>
diff --git a/android/res/values-zh/strings.xml b/android/res/values-zh/strings.xml
index db7e231f50..0938b6292c 100644
--- a/android/res/values-zh/strings.xml
+++ b/android/res/values-zh/strings.xml
@@ -868,7 +868,7 @@
<string name="minute">分鐘</string>
<string name="placepage_place_description">说明</string>
<string name="placepage_more_button">更多</string>
- <string name="bookingcom_book_button">预約</string>
+ <string name="book_button">预約</string>
<string name="placepage_call_button">呼叫</string>
<string name="placepage_edit_bookmark_button">编辑书签</string>
<string name="placepage_bookmark_name_hint">书签名称</string>
diff --git a/android/res/values/colors.xml b/android/res/values/colors.xml
index 0e9f2bfe07..b383e9f656 100644
--- a/android/res/values/colors.xml
+++ b/android/res/values/colors.xml
@@ -141,5 +141,7 @@
<!-- Brand colors -->
<color name="bg_brand_booking">#FF19457D</color>
<color name="bg_brand_booking_pressed">#FF1B549E</color>
+ <color name="bg_brand_opentable">#FFDA3743</color>
+ <color name="bg_brand_opentable_pressed">#FFFC5965</color>
</resources>
diff --git a/android/res/values/strings.xml b/android/res/values/strings.xml
index b5b3538358..88981bb6da 100644
--- a/android/res/values/strings.xml
+++ b/android/res/values/strings.xml
@@ -885,7 +885,7 @@
<string name="placepage_place_description">Description</string>
<string name="placepage_more_button">More</string>
<string name="placepage_more_reviews_button">More Reviews</string>
- <string name="bookingcom_book_button">Book</string>
+ <string name="book_button">Book</string>
<string name="placepage_call_button">Call</string>
<string name="placepage_edit_bookmark_button">Edit Bookmark</string>
<string name="placepage_bookmark_name_hint">Bookmark Name</string>
diff --git a/android/src/com/mapswithme/maps/bookmarks/BookmarksListFragment.java b/android/src/com/mapswithme/maps/bookmarks/BookmarksListFragment.java
index 3b0500e7f9..9bfcac22b7 100644
--- a/android/src/com/mapswithme/maps/bookmarks/BookmarksListFragment.java
+++ b/android/src/com/mapswithme/maps/bookmarks/BookmarksListFragment.java
@@ -22,7 +22,7 @@ import com.mapswithme.maps.bookmarks.data.BookmarkCategory;
import com.mapswithme.maps.bookmarks.data.BookmarkManager;
import com.mapswithme.maps.bookmarks.data.Track;
import com.mapswithme.maps.widget.placepage.EditBookmarkFragment;
-import com.mapswithme.maps.widget.placepage.SponsoredHotel;
+import com.mapswithme.maps.widget.placepage.Sponsored;
import com.mapswithme.util.BottomSheetHelper;
import com.mapswithme.util.sharing.ShareOption;
import com.mapswithme.util.sharing.SharingHelper;
@@ -162,15 +162,15 @@ public class BookmarksListFragment extends BaseMwmListFragment
switch (menuItem.getItemId())
{
case R.id.share_message:
- ShareOption.SMS.shareMapObject(getActivity(), item, SponsoredHotel.nativeGetCurrent());
+ ShareOption.SMS.shareMapObject(getActivity(), item, Sponsored.nativeGetCurrent());
break;
case R.id.share_email:
- ShareOption.EMAIL.shareMapObject(getActivity(), item, SponsoredHotel.nativeGetCurrent());
+ ShareOption.EMAIL.shareMapObject(getActivity(), item, Sponsored.nativeGetCurrent());
break;
case R.id.share:
- ShareOption.ANY.shareMapObject(getActivity(), item, SponsoredHotel.nativeGetCurrent());
+ ShareOption.ANY.shareMapObject(getActivity(), item, Sponsored.nativeGetCurrent());
break;
case R.id.edit:
diff --git a/android/src/com/mapswithme/maps/widget/placepage/FacilitiesAdapter.java b/android/src/com/mapswithme/maps/widget/placepage/FacilitiesAdapter.java
index 3a5aa72e7e..220cde2007 100644
--- a/android/src/com/mapswithme/maps/widget/placepage/FacilitiesAdapter.java
+++ b/android/src/com/mapswithme/maps/widget/placepage/FacilitiesAdapter.java
@@ -18,7 +18,7 @@ class FacilitiesAdapter extends BaseAdapter
static final int MAX_COUNT = 6;
@NonNull
- private List<SponsoredHotel.FacilityType> mItems = new ArrayList<>();
+ private List<Sponsored.FacilityType> mItems = new ArrayList<>();
private boolean isShowAll = false;
@Override
@@ -64,7 +64,7 @@ class FacilitiesAdapter extends BaseAdapter
return convertView;
}
- public void setItems(@NonNull List<SponsoredHotel.FacilityType> items)
+ public void setItems(@NonNull List<Sponsored.FacilityType> items)
{
this.mItems = items;
notifyDataSetChanged();
@@ -87,7 +87,7 @@ class FacilitiesAdapter extends BaseAdapter
mName = (TextView) view.findViewById(R.id.tv__facility);
}
- public void bind(SponsoredHotel.FacilityType facility)
+ public void bind(Sponsored.FacilityType facility)
{
// TODO map facility key to image resource id
mIcon.setImageResource(R.drawable.ic_entrance);
diff --git a/android/src/com/mapswithme/maps/widget/placepage/NearbyAdapter.java b/android/src/com/mapswithme/maps/widget/placepage/NearbyAdapter.java
index 97bdca8995..7772cd9d32 100644
--- a/android/src/com/mapswithme/maps/widget/placepage/NearbyAdapter.java
+++ b/android/src/com/mapswithme/maps/widget/placepage/NearbyAdapter.java
@@ -19,7 +19,7 @@ import java.util.List;
class NearbyAdapter extends BaseAdapter
{
@NonNull
- private List<SponsoredHotel.NearbyObject> mItems = new ArrayList<>();
+ private List<Sponsored.NearbyObject> mItems = new ArrayList<>();
@Nullable
private final OnItemClickListener mListener;
@@ -30,7 +30,7 @@ class NearbyAdapter extends BaseAdapter
interface OnItemClickListener
{
- void onItemClick(@NonNull SponsoredHotel.NearbyObject item);
+ void onItemClick(@NonNull Sponsored.NearbyObject item);
}
@Override
@@ -71,7 +71,7 @@ class NearbyAdapter extends BaseAdapter
return convertView;
}
- public void setItems(@NonNull List<SponsoredHotel.NearbyObject> items)
+ public void setItems(@NonNull List<Sponsored.NearbyObject> items)
{
this.mItems = items;
notifyDataSetChanged();
@@ -90,7 +90,7 @@ class NearbyAdapter extends BaseAdapter
@NonNull
TextView mDistance;
@Nullable
- SponsoredHotel.NearbyObject mItem;
+ Sponsored.NearbyObject mItem;
public ViewHolder(View view, @Nullable OnItemClickListener listener)
{
@@ -109,7 +109,7 @@ class NearbyAdapter extends BaseAdapter
mListener.onItemClick(mItem);
}
- public void bind(@NonNull SponsoredHotel.NearbyObject item)
+ public void bind(@NonNull Sponsored.NearbyObject item)
{
mItem = item;
String packageName = mType.getContext().getPackageName();
diff --git a/android/src/com/mapswithme/maps/widget/placepage/PlacePageButtons.java b/android/src/com/mapswithme/maps/widget/placepage/PlacePageButtons.java
index bb4160330e..2ad4d585fb 100644
--- a/android/src/com/mapswithme/maps/widget/placepage/PlacePageButtons.java
+++ b/android/src/com/mapswithme/maps/widget/placepage/PlacePageButtons.java
@@ -37,7 +37,7 @@ final class PlacePageButtons
@Override
int getTitle()
{
- return R.string.bookingcom_book_button;
+ return R.string.book_button;
}
@Override
@@ -47,6 +47,21 @@ final class PlacePageButtons
}
},
+ OPENTABLE
+ {
+ @Override
+ int getTitle()
+ {
+ return R.string.book_button;
+ }
+
+ @Override
+ int getIcon()
+ {
+ return R.drawable.ic_opentable;
+ }
+ },
+
BACK
{
@Override
diff --git a/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java b/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java
index 9e00e9897d..6c7b313c7e 100644
--- a/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java
+++ b/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java
@@ -88,8 +88,8 @@ import java.util.Map;
public class PlacePageView extends RelativeLayout
implements View.OnClickListener,
View.OnLongClickListener,
- SponsoredHotel.OnPriceReceivedListener,
- SponsoredHotel.OnInfoReceivedListener,
+ Sponsored.OnPriceReceivedListener,
+ Sponsored.OnHotelInfoReceivedListener,
LineCountTextView.OnLineCountCalculatedListener,
RecyclerClickListener,
NearbyAdapter.OnItemClickListener
@@ -110,9 +110,9 @@ public class PlacePageView extends RelativeLayout
private ArrowView mAvDirection;
private TextView mTvDistance;
private TextView mTvAddress;
- private View mHotelInfo;
- private TextView mTvHotelRating;
- private TextView mTvHotelPrice;
+ private View mSponsoredInfo;
+ private TextView mTvSponsoredRating;
+ private TextView mTvSponsoredPrice;
// Details.
private ScrollView mDetails;
private View mPhone;
@@ -164,8 +164,8 @@ public class PlacePageView extends RelativeLayout
private MwmActivity.LeftAnimationTrackListener mLeftAnimationTrackListener;
// Data
private MapObject mMapObject;
- private SponsoredHotel mSponsoredHotel;
- private String mSponsoredHotelPrice;
+ private Sponsored mSponsored;
+ private String mSponsoredPrice;
private boolean mIsLatLonDms;
@NonNull
private final FacilitiesAdapter mFacilitiesAdapter = new FacilitiesAdapter();
@@ -265,9 +265,9 @@ public class PlacePageView extends RelativeLayout
mTvAddress = (TextView) mPreview.findViewById(R.id.tv__address);
- mHotelInfo = mPreview.findViewById(R.id.hotel_info_frame);
- mTvHotelRating = (TextView) mHotelInfo.findViewById(R.id.tv__hotel_rating);
- mTvHotelPrice = (TextView) mHotelInfo.findViewById(R.id.tv__hotel_price);
+ mSponsoredInfo = mPreview.findViewById(R.id.hotel_info_frame);
+ mTvSponsoredRating = (TextView) mSponsoredInfo.findViewById(R.id.tv__hotel_rating);
+ mTvSponsoredPrice = (TextView) mSponsoredInfo.findViewById(R.id.tv__hotel_price);
mDetails = (ScrollView) findViewById(R.id.pp__details);
RelativeLayout address = (RelativeLayout) mDetails.findViewById(R.id.ll__place_name);
@@ -341,6 +341,11 @@ public class PlacePageView extends RelativeLayout
color = Color.WHITE;
break;
+ case OPENTABLE:
+ frame.setBackgroundResource(R.drawable.button_opentable);
+ color = Color.WHITE;
+ break;
+
case BOOKMARK:
mBookmarkButtonIcon = icon;
updateButtons();
@@ -370,7 +375,7 @@ public class PlacePageView extends RelativeLayout
case SHARE:
Statistics.INSTANCE.trackEvent(Statistics.EventName.PP_SHARE);
AlohaHelper.logClick(AlohaHelper.PP_SHARE);
- ShareOption.ANY.shareMapObject(getActivity(), mMapObject, mSponsoredHotel);
+ ShareOption.ANY.shareMapObject(getActivity(), mMapObject, mSponsored);
break;
case BACK:
@@ -404,7 +409,8 @@ public class PlacePageView extends RelativeLayout
break;
case BOOKING:
- onBookingClick(true /* book */);
+ case OPENTABLE:
+ onSponsoredClick(true /* book */);
break;
}
}
@@ -455,8 +461,8 @@ public class PlacePageView extends RelativeLayout
if (UiUtils.isLandscape(getContext()))
mDetails.setBackgroundResource(0);
- SponsoredHotel.setPriceListener(this);
- SponsoredHotel.setInfoListener(this);
+ Sponsored.setPriceListener(this);
+ Sponsored.setInfoListener(this);
}
private void initHotelRatingView()
@@ -512,7 +518,7 @@ public class PlacePageView extends RelativeLayout
public void onPriceReceived(@NonNull String id, @NonNull String price,
@NonNull String currencyCode)
{
- if (mSponsoredHotel == null || !TextUtils.equals(id, mSponsoredHotel.getId()))
+ if (mSponsored == null || !TextUtils.equals(id, mSponsored.getId()))
return;
String text;
@@ -525,14 +531,14 @@ public class PlacePageView extends RelativeLayout
text = (price + " " + currencyCode);
}
- mSponsoredHotelPrice = getContext().getString(R.string.place_page_starting_from, text);
+ mSponsoredPrice = getContext().getString(R.string.place_page_starting_from, text);
refreshPreview();
}
@Override
- public void onInfoReceived(@NonNull String id, @NonNull SponsoredHotel.HotelInfo info)
+ public void onHotelInfoReceived(@NonNull String id, @NonNull Sponsored.HotelInfo info)
{
- if (mSponsoredHotel == null || !TextUtils.equals(id, mSponsoredHotel.getId()))
+ if (mSponsored == null || !TextUtils.equals(id, mSponsored.getId()))
return;
updateHotelDetails(info);
@@ -542,7 +548,7 @@ public class PlacePageView extends RelativeLayout
updateHotelRating(info);
}
- private void updateHotelRating(@NonNull SponsoredHotel.HotelInfo info)
+ private void updateHotelRating(@NonNull Sponsored.HotelInfo info)
{
if (info.mReviews == null || info.mReviews.length == 0)
{
@@ -552,13 +558,13 @@ public class PlacePageView extends RelativeLayout
{
UiUtils.show(mHotelReview);
mReviewAdapter.setItems(new ArrayList<>(Arrays.asList(info.mReviews)));
- mHotelRating.setText(mSponsoredHotel.mRating);
+ mHotelRating.setText(mSponsored.mRating);
mHotelRatingBase.setText(getResources().getQuantityString(R.plurals.place_page_booking_rating_base,
info.mReviews.length, info.mReviews.length));
}
}
- private void updateHotelNearby(@NonNull SponsoredHotel.HotelInfo info)
+ private void updateHotelNearby(@NonNull Sponsored.HotelInfo info)
{
if (info.mNearby == null || info.mNearby.length == 0)
{
@@ -571,7 +577,7 @@ public class PlacePageView extends RelativeLayout
}
}
- private void updateHotelGallery(@NonNull SponsoredHotel.HotelInfo info)
+ private void updateHotelGallery(@NonNull Sponsored.HotelInfo info)
{
if (info.mPhotos == null || info.mPhotos.length == 0)
{
@@ -585,7 +591,7 @@ public class PlacePageView extends RelativeLayout
}
}
- private void updateHotelFacilities(@NonNull SponsoredHotel.HotelInfo info)
+ private void updateHotelFacilities(@NonNull Sponsored.HotelInfo info)
{
if (info.mFacilities == null || info.mFacilities.length == 0)
{
@@ -601,7 +607,7 @@ public class PlacePageView extends RelativeLayout
}
}
- private void updateHotelDetails(@NonNull SponsoredHotel.HotelInfo info)
+ private void updateHotelDetails(@NonNull Sponsored.HotelInfo info)
{
mTvHotelDescription.setMaxLines(getResources().getInteger(R.integer.pp_hotel_description_lines));
refreshMetadataOrHide(info.mDescription, mHotelDescription, mTvHotelDescription);
@@ -628,47 +634,71 @@ public class PlacePageView extends RelativeLayout
}
@Override
- public void onItemClick(@NonNull SponsoredHotel.NearbyObject item)
+ public void onItemClick(@NonNull Sponsored.NearbyObject item)
{
// TODO go to selected object on map
}
- private void onBookingClick(final boolean book)
+ private void onSponsoredClick(final boolean book)
{
// TODO (trashkalmar): Set correct text
- Utils.checkConnection(getActivity(), R.string.common_check_internet_connection_dialog, new Utils.Proc<Boolean>()
- {
- @Override
- public void invoke(Boolean result)
- {
- if (!result)
- return;
-
- SponsoredHotel info = mSponsoredHotel;
- if (info == null)
- return;
+ Utils.checkConnection(
+ getActivity(), R.string.common_check_internet_connection_dialog, new Utils.Proc<Boolean>() {
+ @Override
+ public void invoke(Boolean result)
+ {
+ if (!result)
+ return;
- Map<String, String> params = new HashMap<>();
- params.put("provider", "Booking.Com");
- params.put("hotel_lat", (mMapObject == null ? "N/A" : String.valueOf(mMapObject.getLat())));
- params.put("hotel_lon", (mMapObject == null ? "N/A" : String.valueOf(mMapObject.getLon())));
- params.put("hotel", info.getId());
+ Sponsored info = mSponsored;
+ if (info == null)
+ return;
- String event = (book ? Statistics.EventName.PP_SPONSORED_BOOK
- : Statistics.EventName.PP_SPONSORED_DETAILS);
+ String event = null;
+ Map<String, String> params = new HashMap<>();
+ switch (info.getType())
+ {
+ case Sponsored.TYPE_BOOKING:
+ params.put("provider", "Booking.Com");
+ params.put("hotel_lat",
+ (mMapObject == null ? "N/A" : String.valueOf(mMapObject.getLat())));
+ params.put("hotel_lon",
+ (mMapObject == null ? "N/A" : String.valueOf(mMapObject.getLon())));
+ params.put("hotel", info.getId());
+ event = (book ? Statistics.EventName.PP_SPONSORED_BOOK
+ : Statistics.EventName.PP_SPONSORED_DETAILS);
+ break;
+ case Sponsored.TYPE_GEOCHAT:
+ break;
+ case Sponsored.TYPE_OPENTABLE:
+ params.put("provider", "OpenTable");
+ params.put("restaurant_lat",
+ (mMapObject == null ? "N/A" : String.valueOf(mMapObject.getLat())));
+ params.put("restaurant_lon",
+ (mMapObject == null ? "N/A" : String.valueOf(mMapObject.getLon())));
+ params.put("restaurant", info.getId());
+ event = Statistics.EventName.PP_SPONSORED_OPENTABLE;
+ break;
+ case Sponsored.TYPE_NONE:
+ break;
+ }
- final Location location = LocationHelper.INSTANCE.getLastKnownLocation();
- Statistics.INSTANCE.trackEvent(event, location, params);
+ if (!TextUtils.isEmpty(event))
+ {
+ Location location = LocationHelper.INSTANCE.getLastKnownLocation();
+ Statistics.INSTANCE.trackEvent(event, location, params);
+ }
- try
- {
- followUrl(book ? info.mUrlBook : info.mUrlDescription);
- } catch (ActivityNotFoundException e)
- {
- AlohaHelper.logException(e);
- }
- }
- });
+ try
+ {
+ followUrl(book ? info.mUrl : info.mUrlDescription);
+ }
+ catch (ActivityNotFoundException e)
+ {
+ AlohaHelper.logException(e);
+ }
+ }
+ });
}
private void init(AttributeSet attrs, int defStyleAttr)
@@ -756,22 +786,23 @@ public class PlacePageView extends RelativeLayout
return;
mMapObject = mapObject;
- mSponsoredHotel = (mMapObject == null ? null : SponsoredHotel.nativeGetCurrent());
+ mSponsored = (mMapObject == null ? null : Sponsored.nativeGetCurrent());
detachCountry();
if (mMapObject != null)
{
- if (mSponsoredHotel != null)
+ if (mSponsored != null)
{
- mSponsoredHotel.updateId(mMapObject);
- mSponsoredHotelPrice = mSponsoredHotel.mPrice;
+ mSponsored.updateId(mMapObject);
+ mSponsoredPrice = mSponsored.mPrice;
Locale locale = Locale.getDefault();
Currency currency = Currency.getInstance(locale);
- SponsoredHotel.requestPrice(mSponsoredHotel.getId(), currency.getCurrencyCode());
+ if (mSponsored.getType() == Sponsored.TYPE_BOOKING)
+ Sponsored.requestPrice(mSponsored.getId(), currency.getCurrencyCode());
// TODO: remove this after booking_api.cpp will be done
if (!USE_OLD_BOOKING)
- SponsoredHotel.requestInfo(mSponsoredHotel.getId(), locale.toString());
+ Sponsored.requestInfo(mSponsored, locale.toString());
}
String country = MapManager.nativeGetSelectedCountry();
@@ -854,12 +885,12 @@ public class PlacePageView extends RelativeLayout
UiUtils.hide(mAvDirection);
UiUtils.setTextAndHideIfEmpty(mTvAddress, mMapObject.getAddress());
- boolean sponsored = (mSponsoredHotel != null);
- UiUtils.showIf(sponsored, mHotelInfo);
+ boolean sponsored = (mSponsored != null && mSponsored.getType() != Sponsored.TYPE_NONE);
+ UiUtils.showIf(sponsored, mSponsoredInfo);
if (sponsored)
{
- mTvHotelRating.setText(mSponsoredHotel.mRating);
- UiUtils.setTextAndHideIfEmpty(mTvHotelPrice, mSponsoredHotelPrice);
+ UiUtils.setTextAndHideIfEmpty(mTvSponsoredRating, mSponsored.mRating);
+ UiUtils.setTextAndHideIfEmpty(mTvSponsoredPrice, mSponsoredPrice);
}
}
@@ -867,7 +898,7 @@ public class PlacePageView extends RelativeLayout
{
refreshLatLon();
- if (mSponsoredHotel == null)
+ if (mSponsored == null)
{
final String website = mMapObject.getMetadata(Metadata.MetadataType.FMD_WEBSITE);
refreshMetadataOrHide(TextUtils.isEmpty(website) ? mMapObject.getMetadata(Metadata.MetadataType.FMD_URL) : website, mWebsite, mTvWebsite);
@@ -885,6 +916,9 @@ public class PlacePageView extends RelativeLayout
// TODO: remove this after booking_api.cpp will be done
if (!USE_OLD_BOOKING)
UiUtils.hide(mHotelMore);
+
+ if (mSponsored.getType() != Sponsored.TYPE_BOOKING)
+ UiUtils.hide(mHotelMore);
}
refreshMetadataOrHide(mMapObject.getMetadata(Metadata.MetadataType.FMD_PHONE_NUMBER), mPhone, mTvPhone);
@@ -989,8 +1023,22 @@ public class PlacePageView extends RelativeLayout
if (showBackButton || ParsedMwmRequest.isPickPointMode())
buttons.add(PlacePageButtons.Item.BACK);
- if (mSponsoredHotel != null)
- buttons.add(PlacePageButtons.Item.BOOKING);
+ if (mSponsored != null)
+ {
+ switch (mSponsored.getType())
+ {
+ case Sponsored.TYPE_BOOKING:
+ buttons.add(PlacePageButtons.Item.BOOKING);
+ break;
+ case Sponsored.TYPE_GEOCHAT:
+ break;
+ case Sponsored.TYPE_OPENTABLE:
+ buttons.add(PlacePageButtons.Item.OPENTABLE);
+ break;
+ case Sponsored.TYPE_NONE:
+ break;
+ }
+ }
buttons.add(PlacePageButtons.Item.BOOKMARK);
@@ -1135,7 +1183,7 @@ public class PlacePageView extends RelativeLayout
addPlace();
break;
case R.id.ll__more:
- onBookingClick(false /* book */);
+ onSponsoredClick(false /* book */);
break;
case R.id.ll__place_latlon:
mIsLatLonDms = !mIsLatLonDms;
@@ -1185,8 +1233,8 @@ public class PlacePageView extends RelativeLayout
break;
case R.id.tv__place_hotel_reviews_more:
ReviewActivity.start(getContext(), mReviewAdapter.getItems(), mMapObject.getTitle(),
- mSponsoredHotel.mRating, mReviewAdapter.getItems()
- .size(), mSponsoredHotel.mUrlBook);
+ mSponsored.mRating, mReviewAdapter.getItems()
+ .size(), mSponsored.mUrl);
break;
}
}
diff --git a/android/src/com/mapswithme/maps/widget/placepage/SponsoredHotel.java b/android/src/com/mapswithme/maps/widget/placepage/Sponsored.java
index 1ef4c46d28..61296a9dce 100644
--- a/android/src/com/mapswithme/maps/widget/placepage/SponsoredHotel.java
+++ b/android/src/com/mapswithme/maps/widget/placepage/Sponsored.java
@@ -1,5 +1,6 @@
package com.mapswithme.maps.widget.placepage;
+import android.support.annotation.IntDef;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.UiThread;
@@ -10,13 +11,24 @@ import com.mapswithme.maps.bookmarks.data.Metadata;
import com.mapswithme.maps.gallery.Image;
import com.mapswithme.maps.review.Review;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
import java.lang.ref.WeakReference;
import java.util.HashMap;
import java.util.Map;
@UiThread
-public final class SponsoredHotel
+public final class Sponsored
{
+ static final int TYPE_NONE = 0;
+ static final int TYPE_BOOKING = 1;
+ static final int TYPE_OPENTABLE = 2;
+ static final int TYPE_GEOCHAT = 3;
+
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef({TYPE_NONE, TYPE_BOOKING, TYPE_OPENTABLE, TYPE_GEOCHAT})
+ @interface SponsoredType {}
+
private static class Price
{
@NonNull
@@ -146,7 +158,7 @@ public final class SponsoredHotel
void onPriceReceived(@NonNull String id, @NonNull String price, @NonNull String currency);
}
- interface OnInfoReceivedListener
+ interface OnHotelInfoReceivedListener
{
/**
* This method is called from the native core on the UI thread
@@ -156,7 +168,7 @@ public final class SponsoredHotel
* @param info A hotel info
*/
@UiThread
- void onInfoReceived(@NonNull String id, @NonNull HotelInfo info);
+ void onHotelInfoReceived(@NonNull String id, @NonNull HotelInfo info);
}
// Hotel ID -> Price
@@ -168,7 +180,7 @@ public final class SponsoredHotel
@NonNull
private static WeakReference<OnPriceReceivedListener> sPriceListener = new WeakReference<>(null);
@NonNull
- private static WeakReference<OnInfoReceivedListener> sInfoListener = new WeakReference<>(null);
+ private static WeakReference<OnHotelInfoReceivedListener> sInfoListener = new WeakReference<>(null);
@Nullable
private String mId;
@@ -178,17 +190,20 @@ public final class SponsoredHotel
@NonNull
final String mPrice;
@NonNull
- final String mUrlBook;
+ final String mUrl;
@NonNull
final String mUrlDescription;
+ @SponsoredType
+ private final int mType;
- public SponsoredHotel(@NonNull String rating, @NonNull String price, @NonNull String urlBook,
- @NonNull String urlDescription)
+ public Sponsored(@NonNull String rating, @NonNull String price, @NonNull String url,
+ @NonNull String urlDescription, @SponsoredType int type)
{
mRating = rating;
mPrice = price;
- mUrlBook = urlBook;
+ mUrl = url;
mUrlDescription = urlDescription;
+ mType = type;
}
void updateId(MapObject point)
@@ -215,9 +230,9 @@ public final class SponsoredHotel
}
@NonNull
- public String getUrlBook()
+ public String getUrl()
{
- return mUrlBook;
+ return mUrl;
}
@NonNull
@@ -226,12 +241,18 @@ public final class SponsoredHotel
return mUrlDescription;
}
+ @SponsoredType
+ public int getType()
+ {
+ return mType;
+ }
+
static void setPriceListener(@NonNull OnPriceReceivedListener listener)
{
sPriceListener = new WeakReference<>(listener);
}
- static void setInfoListener(@NonNull OnInfoReceivedListener listener)
+ static void setInfoListener(@NonNull OnHotelInfoReceivedListener listener)
{
sInfoListener = new WeakReference<>(listener);
}
@@ -253,21 +274,44 @@ public final class SponsoredHotel
nativeRequestPrice(id, currencyCode);
}
+
+ static void requestInfo(Sponsored sponsored, String locale)
+ {
+ String id = sponsored.getId();
+ if (id == null)
+ return;
+
+ switch (sponsored.getType())
+ {
+ case TYPE_BOOKING:
+ requestHotelInfo(id, locale);
+ break;
+ case TYPE_GEOCHAT:
+// TODO: request geochat info
+ break;
+ case TYPE_OPENTABLE:
+// TODO: request opentable info
+ break;
+ case TYPE_NONE:
+ break;
+ }
+ }
+
/**
* Make request to obtain hotel information.
* This method also checks cache for requested hotel id
- * and if cache exists - call {@link #onInfoReceived(String, HotelInfo) onInfoReceived} immediately
+ * and if cache exists - call {@link #onHotelInfoReceived(String, HotelInfo) onHotelInfoReceived} immediately
*
* @param id A Hotel id
* @param locale A user locale
*/
- static void requestInfo(String id, String locale)
+ private static void requestHotelInfo(String id, String locale)
{
HotelInfo info = sInfoCache.get(id);
if (info != null)
- onInfoReceived(id, info);
+ onHotelInfoReceived(id, info);
- nativeRequestInfo(id, locale);
+ nativeRequestHotelInfo(id, locale);
}
private static void onPriceReceived(@NonNull String id, @NonNull String price,
@@ -284,19 +328,19 @@ public final class SponsoredHotel
listener.onPriceReceived(id, price, currency);
}
- private static void onInfoReceived(@NonNull String id, @NonNull HotelInfo info)
+ private static void onHotelInfoReceived(@NonNull String id, @NonNull HotelInfo info)
{
sInfoCache.put(id, info);
- OnInfoReceivedListener listener = sInfoListener.get();
+ OnHotelInfoReceivedListener listener = sInfoListener.get();
if (listener != null)
- listener.onInfoReceived(id, info);
+ listener.onHotelInfoReceived(id, info);
}
@Nullable
- public static native SponsoredHotel nativeGetCurrent();
+ public static native Sponsored nativeGetCurrent();
private static native void nativeRequestPrice(@NonNull String id, @NonNull String currencyCode);
- private static native void nativeRequestInfo(@NonNull String id, @NonNull String locale);
+ private static native void nativeRequestHotelInfo(@NonNull String id, @NonNull String locale);
}
diff --git a/android/src/com/mapswithme/util/sharing/MapObjectShareable.java b/android/src/com/mapswithme/util/sharing/MapObjectShareable.java
index de59c16923..b427e1e2f9 100644
--- a/android/src/com/mapswithme/util/sharing/MapObjectShareable.java
+++ b/android/src/com/mapswithme/util/sharing/MapObjectShareable.java
@@ -8,12 +8,12 @@ import android.text.TextUtils;
import com.mapswithme.maps.Framework;
import com.mapswithme.maps.R;
import com.mapswithme.maps.bookmarks.data.MapObject;
-import com.mapswithme.maps.widget.placepage.SponsoredHotel;
+import com.mapswithme.maps.widget.placepage.Sponsored;
import com.mapswithme.util.statistics.Statistics;
class MapObjectShareable extends BaseShareable
{
- MapObjectShareable(Activity context, @NonNull MapObject mapObject, @Nullable SponsoredHotel sponsoredHotel)
+ MapObjectShareable(Activity context, @NonNull MapObject mapObject, @Nullable Sponsored sponsored)
{
super(context);
@@ -40,10 +40,10 @@ class MapObjectShareable extends BaseShareable
lineWithBreak(mapObject.getAddress()) +
lineWithBreak(ge0Url);
- if (sponsoredHotel != null)
+ if (sponsored != null)
{
text += lineWithBreak(activity.getString(R.string.sharing_booking)) +
- sponsoredHotel.getUrlBook();
+ sponsored.getUrl();
}
}
diff --git a/android/src/com/mapswithme/util/sharing/ShareOption.java b/android/src/com/mapswithme/util/sharing/ShareOption.java
index 7b7ce2497b..ae34b022a2 100644
--- a/android/src/com/mapswithme/util/sharing/ShareOption.java
+++ b/android/src/com/mapswithme/util/sharing/ShareOption.java
@@ -10,7 +10,7 @@ import android.support.annotation.StringRes;
import com.mapswithme.maps.Framework;
import com.mapswithme.maps.R;
import com.mapswithme.maps.bookmarks.data.MapObject;
-import com.mapswithme.maps.widget.placepage.SponsoredHotel;
+import com.mapswithme.maps.widget.placepage.Sponsored;
import com.mapswithme.util.Utils;
import com.mapswithme.util.statistics.Statistics;
@@ -35,9 +35,9 @@ public abstract class ShareOption
return Utils.isIntentSupported(context, mBaseIntent);
}
- public void shareMapObject(Activity activity, @NonNull MapObject mapObject, @Nullable SponsoredHotel sponsoredHotel)
+ public void shareMapObject(Activity activity, @NonNull MapObject mapObject, @Nullable Sponsored sponsored)
{
- SharingHelper.shareOutside(new MapObjectShareable(activity, mapObject, sponsoredHotel)
+ SharingHelper.shareOutside(new MapObjectShareable(activity, mapObject, sponsored)
.setBaseIntent(new Intent(mBaseIntent)), mNameResId);
}
@@ -57,7 +57,7 @@ public abstract class ShareOption
}
@Override
- public void shareMapObject(Activity activity, MapObject mapObject, SponsoredHotel sponsoredHotel)
+ public void shareMapObject(Activity activity, MapObject mapObject, Sponsored sponsored)
{
final String ge0Url = Framework.nativeGetGe0Url(mapObject.getLat(), mapObject.getLon(), mapObject.getScale(), "");
final String httpUrl = Framework.getHttpGe0Url(mapObject.getLat(), mapObject.getLon(), mapObject.getScale(), "");
diff --git a/android/src/com/mapswithme/util/statistics/Statistics.java b/android/src/com/mapswithme/util/statistics/Statistics.java
index 0b77c7be9d..7cd53af5ae 100644
--- a/android/src/com/mapswithme/util/statistics/Statistics.java
+++ b/android/src/com/mapswithme/util/statistics/Statistics.java
@@ -70,6 +70,8 @@ public enum Statistics
public static final String PP_ROUTE = "PP. Route";
public static final String PP_SPONSORED_DETAILS = "Placepage_Hotel_details";
public static final String PP_SPONSORED_BOOK = "Placepage_Hotel_book";
+ public static final String PP_SPONSORED_OPENTABLE = "Placepage_Restaurant_book";
+ public static final String PP_SPONSORED_NONE = "Placepage_Sponsored_none";
public static final String PP_DIRECTION_ARROW = "PP. DirectionArrow";
public static final String PP_DIRECTION_ARROW_CLOSE = "PP. DirectionArrowClose";
public static final String PP_METADATA_COPY = "PP. CopyMetadata";
diff --git a/configure.sh b/configure.sh
index c764b0e5eb..973f91a1dd 100755
--- a/configure.sh
+++ b/configure.sh
@@ -52,6 +52,7 @@ else
#define BOOKING_SECRET ""
#define UBER_SERVER_TOKEN ""
#define UBER_CLIENT_ID ""
+#define OPENTABLE_AFFILATE_ID ""
#define TRACKING_REALTIME_HOST ""
#define TRACKING_REALTIME_PORT 0
#define TRACKING_HISTORICAL_HOST ""
diff --git a/generator/opentable_dataset.cpp b/generator/opentable_dataset.cpp
index 7892444bb0..499a2ef833 100644
--- a/generator/opentable_dataset.cpp
+++ b/generator/opentable_dataset.cpp
@@ -55,7 +55,6 @@ void OpentableDataset::PreprocessMatchedOsmObject(ObjectId const matchedObjId, F
auto restaurant = GetObjectById(matchedObjId);
auto & metadata = params.GetMetadata();
metadata.Set(feature::Metadata::FMD_SPONSORED_ID, strings::to_string(restaurant.m_id.Get()));
- metadata.Set(feature::Metadata::FMD_WEBSITE, restaurant.m_descUrl);
// params.AddAddress(restaurant.address);
// TODO(mgsergio): addr:full ???
diff --git a/indexer/ftypes_matcher.cpp b/indexer/ftypes_matcher.cpp
index dfe0a32004..59bac21c1c 100644
--- a/indexer/ftypes_matcher.cpp
+++ b/indexer/ftypes_matcher.cpp
@@ -476,6 +476,18 @@ IsFoodChecker const & IsFoodChecker::Instance()
return instance;
}
+IsOpentableChecker::IsOpentableChecker()
+{
+ Classificator const & c = classif();
+ m_types.push_back(c.GetTypeByPath({"sponsored", "opentable"}));
+}
+
+IsOpentableChecker const & IsOpentableChecker::Instance()
+{
+ static IsOpentableChecker const inst;
+ return inst;
+}
+
uint32_t GetPopulation(FeatureType const & ft)
{
uint32_t population = ft.GetPopulation();
diff --git a/indexer/ftypes_matcher.hpp b/indexer/ftypes_matcher.hpp
index 17d1e77665..48d1dcfd97 100644
--- a/indexer/ftypes_matcher.hpp
+++ b/indexer/ftypes_matcher.hpp
@@ -184,6 +184,14 @@ public:
static IsFoodChecker const & Instance();
};
+class IsOpentableChecker : public BaseChecker
+{
+ IsOpentableChecker();
+
+public:
+ static IsOpentableChecker const & Instance();
+};
+
/// Type of locality (do not change values and order - they have detalization order)
/// COUNTRY < STATE < CITY < ...
enum Type { NONE = -1, COUNTRY = 0, STATE, CITY, TOWN, VILLAGE, LOCALITY_COUNT };
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)
diff --git a/iphone/Maps/Images.xcassets/Place Page/ic_opentable.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/ic_opentable.imageset/Contents.json
new file mode 100644
index 0000000000..13b56b543c
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/ic_opentable.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "ic_opentable.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "ic_opentable@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "ic_opentable@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/iphone/Maps/Images.xcassets/Place Page/ic_opentable.imageset/ic_opentable.png b/iphone/Maps/Images.xcassets/Place Page/ic_opentable.imageset/ic_opentable.png
new file mode 100644
index 0000000000..dff6aa0a92
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/ic_opentable.imageset/ic_opentable.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/ic_opentable.imageset/ic_opentable@2x.png b/iphone/Maps/Images.xcassets/Place Page/ic_opentable.imageset/ic_opentable@2x.png
new file mode 100644
index 0000000000..41dbe4d427
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/ic_opentable.imageset/ic_opentable@2x.png
Binary files differ
diff --git a/iphone/Maps/Images.xcassets/Place Page/ic_opentable.imageset/ic_opentable@3x.png b/iphone/Maps/Images.xcassets/Place Page/ic_opentable.imageset/ic_opentable@3x.png
new file mode 100644
index 0000000000..b233778da5
--- /dev/null
+++ b/iphone/Maps/Images.xcassets/Place Page/ic_opentable.imageset/ic_opentable@3x.png
Binary files differ
diff --git a/iphone/Maps/Statistics/StatisticsStrings.h b/iphone/Maps/Statistics/StatisticsStrings.h
index f73cc36415..88ad207521 100644
--- a/iphone/Maps/Statistics/StatisticsStrings.h
+++ b/iphone/Maps/Statistics/StatisticsStrings.h
@@ -143,6 +143,7 @@ static NSString * const kStatOff = @"Off";
static NSString * const kStatOn = @"On";
static NSString * const kStatOpen = @"Open";
static NSString * const kStatOpenActionSheet = @"Open action sheet";
+static NSString * const kStatOpentable = @"Opentable.com";
static NSString * const kStatOpenSite = @"Open site";
static NSString * const kStatOrientation = @"Orientation";
static NSString * const kStatOther = @"Other";
@@ -152,6 +153,7 @@ static NSString * const kStatPlacePage = @"Place page";
static NSString * const kPlacePageHotelBook = @"Placepage_Hotel_book";
static NSString * const kPlacePageHotelDetails = @"Placepage_Hotel_details";
static NSString * const kStatPlacePageNonBuilding = @"placepage_nonbuilding";
+static NSString * const kPlacePageRestaurantBook = @"Placepage_Restaurant_book";
static NSString * const kStatPointToPoint = @"Point to point";
static NSString * const kStatPortrait = @"Portrait";
static NSString * const kStatProblem = @"Problem";
@@ -165,6 +167,9 @@ static NSString * const kStatRegular = @"Regular";
static NSString * const kStatRemove = @"Remove";
static NSString * const kStatRename = @"Rename";
static NSString * const kStatReport = @"Report";
+static NSString * const kStatRestaurant = @"restaurant";
+static NSString * const kStatRestaurantLat = @"restaurant_lat";
+static NSString * const kStatRestaurantLon = @"restaurant_lon";
static NSString * const kStatRetry = @"retry";
static NSString * const kStatRouting = @"routing";
static NSString * const kStatSave = @"Save";
diff --git a/iphone/Maps/UIColor+MapsMeColor.h b/iphone/Maps/UIColor+MapsMeColor.h
index 4a097c165d..5c0c4810b7 100644
--- a/iphone/Maps/UIColor+MapsMeColor.h
+++ b/iphone/Maps/UIColor+MapsMeColor.h
@@ -33,6 +33,7 @@
+ (UIColor *)alertBackground;
+ (UIColor *)blackOpaque;
+ (UIColor *)bookingBackground;
++ (UIColor *)opentableBackground;
+ (UIColor *)colorWithName:(NSString *)colorName;
diff --git a/iphone/Maps/UIColor+MapsMeColor.mm b/iphone/Maps/UIColor+MapsMeColor.mm
index 4b7670d31f..71945169c5 100644
--- a/iphone/Maps/UIColor+MapsMeColor.mm
+++ b/iphone/Maps/UIColor+MapsMeColor.mm
@@ -297,6 +297,11 @@ UIColor * color(SEL cmd)
return [UIColor colorWithRed:scaled(25.) green:scaled(69.) blue:scaled(125.) alpha:alpha100];
}
++ (UIColor *)opentableBackground
+{
+ return [UIColor colorWithRed:scaled(218.) green:scaled(55) blue:scaled(67) alpha:alpha100];
+}
+
+ (UIColor *)colorWithName:(NSString *)colorName
{
#pragma clang diagnostic push
diff --git a/map/framework.cpp b/map/framework.cpp
index 110352c18a..42f82a8551 100644
--- a/map/framework.cpp
+++ b/map/framework.cpp
@@ -74,6 +74,8 @@
#include "geometry/rect2d.hpp"
#include "geometry/triangle2d.hpp"
+#include "partners_api/opentable_api.hpp"
+
#include "base/logging.hpp"
#include "base/math.hpp"
#include "base/scope_guard.hpp"
@@ -789,17 +791,25 @@ void Framework::FillInfoFromFeatureType(FeatureType const & ft, place_page::Info
if (ftypes::IsAddressObjectChecker::Instance()(ft))
info.m_address = GetAddressInfoAtPoint(feature::GetCenter(ft)).FormatHouseAndStreet();
- info.m_isHotel = ftypes::IsHotelChecker::Instance()(ft);
if (ftypes::IsBookingChecker::Instance()(ft))
{
- info.m_isSponsoredHotel = true;
- string const & baseUrl = info.GetMetadata().Get(feature::Metadata::FMD_WEBSITE);
- info.m_sponsoredBookingUrl = GetBookingApi().GetBookingUrl(baseUrl);
+ info.m_sponsoredType = SponsoredType::Booking;
+ auto const & baseUrl = info.GetMetadata().Get(feature::Metadata::FMD_WEBSITE);
+ info.m_sponsoredUrl = GetBookingApi().GetBookHotelUrl(baseUrl);
info.m_sponsoredDescriptionUrl = GetBookingApi().GetDescriptionUrl(baseUrl);
}
+ else if (ftypes::IsOpentableChecker::Instance()(ft))
+ {
+ info.m_sponsoredType = SponsoredType::Opentable;
+ auto const & sponsoredId = info.GetMetadata().Get(feature::Metadata::FMD_SPONSORED_ID);
+ auto const & url = opentable::Api::GetBookTableUrl(sponsoredId);
+ info.m_sponsoredUrl = url;
+ info.m_sponsoredDescriptionUrl = url;
+ }
+
info.m_canEditOrAdd = featureStatus != osm::Editor::FeatureStatus::Obsolete && CanEditMap() &&
- !info.IsSponsoredHotel();
+ !info.IsSponsored();
info.m_localizedWifiString = m_stringsBundle.GetString("wifi");
info.m_localizedRatingString = m_stringsBundle.GetString("place_page_booking_rating");
@@ -1979,7 +1989,7 @@ void Framework::ActivateMapSelection(bool needAnimation, df::SelectionShape::ESe
CallDrapeFunction(bind(&df::DrapeEngine::SelectObject, _1, selectionType, info.GetMercator(), info.GetID(),
needAnimation));
- SetDisplacementMode(DisplacementModeManager::SLOT_MAP_SELECTION, info.IsHotel() /* show */);
+ SetDisplacementMode(DisplacementModeManager::SLOT_MAP_SELECTION, ftypes::IsHotelChecker::Instance()(info.GetTypes()) /* show */);
if (m_activateMapSelectionFn)
m_activateMapSelectionFn(info);
@@ -2055,7 +2065,7 @@ void Framework::OnTapEvent(TapEvent const & tapEvent)
// Older version of statistics used "$GetUserMark" event.
alohalytics::Stats::Instance().LogEvent("$SelectMapObject", kv, alohalytics::Location::FromLatLon(ll.lat, ll.lon));
- if (info.IsHotel())
+ if (info.m_sponsoredType == SponsoredType::Booking)
GetPlatform().SendMarketingEvent("Placepage_Hotel_book", {{"provider", "booking.com"}});
}
diff --git a/map/place_page_info.cpp b/map/place_page_info.cpp
index 8e63bc5803..2d5e30b1bf 100644
--- a/map/place_page_info.cpp
+++ b/map/place_page_info.cpp
@@ -16,8 +16,7 @@ char const * const Info::kPricingSymbol = "$";
bool Info::IsFeature() const { return m_featureID.IsValid(); }
bool Info::IsBookmark() const { return m_bac.IsValid(); }
bool Info::IsMyPosition() const { return m_isMyPosition; }
-bool Info::IsSponsoredHotel() const { return m_isSponsoredHotel; }
-bool Info::IsHotel() const { return m_isHotel; }
+bool Info::IsSponsored() const { return m_sponsoredType != SponsoredType::None; }
bool Info::ShouldShowAddPlace() const
{
auto const isPointOrBuilding = IsPointType() || IsBuilding();
@@ -116,12 +115,12 @@ BookmarkAndCategory Info::GetBookmarkAndCategory() const { return m_bac; }
string Info::GetBookmarkCategoryName() const { return m_bookmarkCategoryName; }
string const & Info::GetApiUrl() const { return m_apiUrl; }
-string const & Info::GetSponsoredBookingUrl() const { return m_sponsoredBookingUrl; }
+string const & Info::GetSponsoredUrl() const { return m_sponsoredUrl; }
string const & Info::GetSponsoredDescriptionUrl() const {return m_sponsoredDescriptionUrl; }
string Info::GetRatingFormatted() const
{
- if (!IsSponsoredHotel())
+ if (!IsSponsored())
return string();
auto const r = GetMetadata().Get(feature::Metadata::FMD_RATING);
@@ -140,7 +139,7 @@ string Info::GetRatingFormatted() const
string Info::GetApproximatePricing() const
{
- if (!IsSponsoredHotel())
+ if (!IsSponsored())
return string();
int pricing;
diff --git a/map/place_page_info.hpp b/map/place_page_info.hpp
index 2a150f4b43..29f9bc42be 100644
--- a/map/place_page_info.hpp
+++ b/map/place_page_info.hpp
@@ -14,6 +14,14 @@
#include "std/string.hpp"
+enum class SponsoredType
+{
+ None,
+ Booking,
+ Opentable,
+ Geochat
+};
+
namespace place_page
{
class Info : public osm::MapObject
@@ -28,8 +36,7 @@ public:
bool IsFeature() const;
bool IsBookmark() const;
bool IsMyPosition() const;
- bool IsSponsoredHotel() const;
- bool IsHotel() const;
+ bool IsSponsored() const;
bool ShouldShowAddPlace() const;
bool ShouldShowAddBusiness() const;
@@ -62,7 +69,7 @@ public:
string GetBookmarkCategoryName() const;
string const & GetApiUrl() const;
- string const & GetSponsoredBookingUrl() const;
+ string const & GetSponsoredUrl() const;
string const & GetSponsoredDescriptionUrl() const;
/// @returns formatted rating string for booking object, or empty if it isn't booking object
@@ -90,12 +97,11 @@ public:
string m_apiUrl;
/// Formatted feature address.
string m_address;
- /// Feature is a hotel.
- bool m_isHotel = false;
- /// Feature is a sponsored hotel.
- bool m_isSponsoredHotel = false;
+ /// Sponsored type or None.
+ SponsoredType m_sponsoredType = SponsoredType::None;
+
/// Sponsored feature urls.
- string m_sponsoredBookingUrl;
+ string m_sponsoredUrl;
string m_sponsoredDescriptionUrl;
/// Which country this MapObject is in.
diff --git a/partners_api/booking_api.cpp b/partners_api/booking_api.cpp
index 6bb2dc1a75..201f2cafbd 100644
--- a/partners_api/booking_api.cpp
+++ b/partners_api/booking_api.cpp
@@ -20,7 +20,7 @@ BookingApi::BookingApi() : m_affiliateId(BOOKING_AFFILIATE_ID), m_testingMode(fa
m_apiUrl = "https://" + ss.str() + "@distribution-xml.booking.com/json/bookings.";
}
-string BookingApi::GetBookingUrl(string const & baseUrl, string const & /* lang */) const
+string BookingApi::GetBookHotelUrl(string const & baseUrl, string const & /* lang */) const
{
return GetDescriptionUrl(baseUrl) + "#availability";
}
diff --git a/partners_api/booking_api.hpp b/partners_api/booking_api.hpp
index 4e92a8ca83..4804fefa7d 100644
--- a/partners_api/booking_api.hpp
+++ b/partners_api/booking_api.hpp
@@ -117,7 +117,7 @@ public:
static constexpr const char kDefaultCurrency[1] = {0};
BookingApi();
- string GetBookingUrl(string const & baseUrl, string const & lang = string()) const;
+ string GetBookHotelUrl(string const & baseUrl, string const & lang = string()) const;
string GetDescriptionUrl(string const & baseUrl, string const & lang = string()) const;
inline void SetTestingMode(bool testing) { m_testingMode = testing; }
diff --git a/partners_api/opentable_api.cpp b/partners_api/opentable_api.cpp
new file mode 100644
index 0000000000..9454cef63b
--- /dev/null
+++ b/partners_api/opentable_api.cpp
@@ -0,0 +1,21 @@
+#include "partners_api/opentable_api.hpp"
+
+#include "std/sstream.hpp"
+
+#include "private.h"
+
+namespace
+{
+ auto const kOpentableBaseUrl = "http://www.opentable.com/restaurant/profile/";
+} // namespace
+
+namespace opentable
+{
+// static
+string Api::GetBookTableUrl(string const & restaurantId)
+{
+ stringstream ss;
+ ss << kOpentableBaseUrl << restaurantId << "?ref=" << OPENTABLE_AFFILATE_ID;
+ return ss.str();
+}
+} // namespace opentable
diff --git a/partners_api/opentable_api.hpp b/partners_api/opentable_api.hpp
new file mode 100644
index 0000000000..b298fafdd7
--- /dev/null
+++ b/partners_api/opentable_api.hpp
@@ -0,0 +1,12 @@
+#pragma once
+
+#include "std/string.hpp"
+
+namespace opentable
+{
+class Api
+{
+public:
+ static string GetBookTableUrl(string const & restaurantId);
+};
+} // namespace opentable
diff --git a/partners_api/partners_api.pro b/partners_api/partners_api.pro
index e49f090dae..47cf571ac3 100644
--- a/partners_api/partners_api.pro
+++ b/partners_api/partners_api.pro
@@ -10,8 +10,10 @@ include($$ROOT_DIR/common.pri)
SOURCES += \
booking_api.cpp \
+ opentable_api.cpp \
uber_api.cpp \
HEADERS += \
booking_api.hpp \
+ opentable_api.hpp \
uber_api.hpp \
diff --git a/partners_api/partners_api_tests/booking_tests.cpp b/partners_api/partners_api_tests/booking_tests.cpp
index 05b28b25ae..86f3fcf54c 100644
--- a/partners_api/partners_api_tests/booking_tests.cpp
+++ b/partners_api/partners_api_tests/booking_tests.cpp
@@ -6,7 +6,7 @@ UNIT_TEST(Booking_SmokeTest)
{
BookingApi api;
- string url = api.GetBookingUrl("http://someurl.com");
+ string url = api.GetBookHotelUrl("http://someurl.com");
TEST(!url.empty(), ());
}
diff --git a/strings.txt b/strings.txt
index a61a752738..bde5f10f34 100644
--- a/strings.txt
+++ b/strings.txt
@@ -17875,7 +17875,7 @@
en = More Reviews
ru = Ещё отзывы
- [bookingcom_book_button]
+ [book_button]
en = Book
ru = Забронировать
ar = حجز
diff --git a/xcode/partners_api/partners_api.xcodeproj/project.pbxproj b/xcode/partners_api/partners_api.xcodeproj/project.pbxproj
index f251d085e7..db43d9a290 100644
--- a/xcode/partners_api/partners_api.xcodeproj/project.pbxproj
+++ b/xcode/partners_api/partners_api.xcodeproj/project.pbxproj
@@ -7,6 +7,8 @@
objects = {
/* Begin PBXBuildFile section */
+ F67E75251DB8F06F00D6741F /* opentable_api.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F67E75231DB8F06F00D6741F /* opentable_api.cpp */; };
+ F67E75261DB8F06F00D6741F /* opentable_api.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F67E75241DB8F06F00D6741F /* opentable_api.hpp */; };
F6B536401DA520E40067EEA5 /* booking_api.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F6B5363C1DA520E40067EEA5 /* booking_api.cpp */; };
F6B536411DA520E40067EEA5 /* booking_api.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F6B5363D1DA520E40067EEA5 /* booking_api.hpp */; };
F6B536421DA520E40067EEA5 /* uber_api.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F6B5363E1DA520E40067EEA5 /* uber_api.cpp */; };
@@ -30,6 +32,8 @@
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
+ F67E75231DB8F06F00D6741F /* opentable_api.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opentable_api.cpp; sourceTree = "<group>"; };
+ F67E75241DB8F06F00D6741F /* opentable_api.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = opentable_api.hpp; sourceTree = "<group>"; };
F6B536341DA5209F0067EEA5 /* libpartners_api.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libpartners_api.a; sourceTree = BUILT_PRODUCTS_DIR; };
F6B5363C1DA520E40067EEA5 /* booking_api.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = booking_api.cpp; sourceTree = "<group>"; };
F6B5363D1DA520E40067EEA5 /* booking_api.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = booking_api.hpp; sourceTree = "<group>"; };
@@ -102,6 +106,8 @@
F6B5363B1DA520B20067EEA5 /* partners_api */ = {
isa = PBXGroup;
children = (
+ F67E75231DB8F06F00D6741F /* opentable_api.cpp */,
+ F67E75241DB8F06F00D6741F /* opentable_api.hpp */,
F6B5363C1DA520E40067EEA5 /* booking_api.cpp */,
F6B5363D1DA520E40067EEA5 /* booking_api.hpp */,
F6B5363E1DA520E40067EEA5 /* uber_api.cpp */,
@@ -153,6 +159,7 @@
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
+ F67E75261DB8F06F00D6741F /* opentable_api.hpp in Headers */,
F6B536411DA520E40067EEA5 /* booking_api.hpp in Headers */,
F6B536431DA520E40067EEA5 /* uber_api.hpp in Headers */,
);
@@ -252,6 +259,7 @@
F6B536421DA520E40067EEA5 /* uber_api.cpp in Sources */,
F6B536471DA5213D0067EEA5 /* booking_tests.cpp in Sources */,
F6B5366A1DA523060067EEA5 /* testingmain.cpp in Sources */,
+ F67E75251DB8F06F00D6741F /* opentable_api.cpp in Sources */,
F6B536401DA520E40067EEA5 /* booking_api.cpp in Sources */,
F6B536481DA5213D0067EEA5 /* uber_tests.cpp in Sources */,
);