diff --git a/android/build.gradle b/android/build.gradle index a2f7d1ef02..62370bff55 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -43,8 +43,10 @@ android { sourceSets.main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] - res.srcDirs = ['res', 'res-flurry'] - assets.srcDirs = ['assets'] + // Flurry key is separated because res/values/strings.xml is auto-generated by tools/unix/update_localizations.sh + res.srcDirs = ['res', 'flavors/res-flurry'] + // assets folder is auto-generated by tools/android/update_assets.sh, so we keep all static resources in separate folders. + assets.srcDirs = ['assets', 'flavors/assets-mrgs'] jniLibs.srcDirs = ['libs'] } @@ -54,7 +56,6 @@ android { buildConfigField 'String', 'REVIEW_URL', '"market://details?id=com.mapswithme.maps.pro"' buildConfigField 'String', 'SUPPORT_MAIL', '"googleplay@maps.me"' buildConfigField 'boolean', 'IS_PREINSTALLED', 'false' - android.sourceSets.google.assets.srcDirs = ['flavors/guides-assets'] } samsung { @@ -62,7 +63,7 @@ android { buildConfigField 'String', 'REVIEW_URL', '"samsungapps://ProductDetail/com.mapswithme.maps.pro"' buildConfigField 'String', 'SUPPORT_MAIL', '"samsung@maps.me"' buildConfigField 'boolean', 'IS_PREINSTALLED', 'false' - android.sourceSets.samsung.assets.srcDirs = ['flavors/guides-assets', 'flavors/mwm-ttf-assets'] + android.sourceSets.samsung.assets.srcDirs = ['flavors/mwm-ttf-assets'] } amazon { @@ -70,7 +71,6 @@ android { buildConfigField 'String', 'REVIEW_URL', '"amzn://apps/android?p=com.mapswithme.maps.pro"' buildConfigField 'String', 'SUPPORT_MAIL', '"amazon@maps.me"' buildConfigField 'boolean', 'IS_PREINSTALLED', 'false' - // Do not include guides assets for Amazon, they don't like GP apps ads android.sourceSets.amazon.assets.srcDirs = ['flavors/mwm-ttf-assets'] } @@ -79,7 +79,7 @@ android { buildConfigField 'String', 'REVIEW_URL', '"appcenter://package/com.mapswithme.maps.pro"' buildConfigField 'String', 'SUPPORT_MAIL', '"android@maps.me"' buildConfigField 'boolean', 'IS_PREINSTALLED', 'false' - android.sourceSets.androidpit.assets.srcDirs = ['flavors/guides-assets', 'flavors/mwm-ttf-assets'] + android.sourceSets.androidpit.assets.srcDirs = ['flavors/mwm-ttf-assets'] } slideme { @@ -87,7 +87,7 @@ android { buildConfigField 'String', 'REVIEW_URL', '"sam://details?bundleId=5eed1b74-8c8b-11e2-8af8-1670ef61174f"' buildConfigField 'String', 'SUPPORT_MAIL', '"android@maps.me"' buildConfigField 'boolean', 'IS_PREINSTALLED', 'false' - android.sourceSets.slideme.assets.srcDirs = ['flavors/guides-assets', 'flavors/mwm-ttf-assets'] + android.sourceSets.slideme.assets.srcDirs = ['flavors/mwm-ttf-assets'] } yandex { @@ -95,7 +95,7 @@ android { buildConfigField 'String', 'REVIEW_URL', '"yastore://details?id=com.mapswithme.maps.pro"' buildConfigField 'String', 'SUPPORT_MAIL', '"android@maps.me"' buildConfigField 'boolean', 'IS_PREINSTALLED', 'false' - android.sourceSets.yandex.assets.srcDirs = ['flavors/guides-assets', 'flavors/mwm-ttf-assets'] + android.sourceSets.yandex.assets.srcDirs = ['flavors/mwm-ttf-assets'] } prestigio { @@ -103,7 +103,7 @@ android { buildConfigField 'String', 'REVIEW_URL', '"market://details?id=com.mapswithme.maps.pro"' buildConfigField 'String', 'SUPPORT_MAIL', '"googleplay@maps.me"' buildConfigField 'boolean', 'IS_PREINSTALLED', 'true' - android.sourceSets.prestigio.assets.srcDirs = ['flavors/guides-assets', 'flavors/mwm-ttf-assets'] + android.sourceSets.prestigio.assets.srcDirs = ['flavors/mwm-ttf-assets'] } CipherLab { diff --git a/android/flavors/guides-assets/android-guides.json b/android/flavors/guides-assets/android-guides.json deleted file mode 120000 index f44ba23119..0000000000 --- a/android/flavors/guides-assets/android-guides.json +++ /dev/null @@ -1 +0,0 @@ -../../../data/android-guides.json \ No newline at end of file diff --git a/android/res-flurry/values/strings.xml b/android/flavors/res-flurry/values/strings.xml similarity index 100% rename from android/res-flurry/values/strings.xml rename to android/flavors/res-flurry/values/strings.xml diff --git a/android/jni/com/mapswithme/country/ActiveCountryTree.cpp b/android/jni/com/mapswithme/country/ActiveCountryTree.cpp index 7d69f96d2c..68947d5347 100644 --- a/android/jni/com/mapswithme/country/ActiveCountryTree.cpp +++ b/android/jni/com/mapswithme/country/ActiveCountryTree.cpp @@ -107,16 +107,6 @@ extern "C" g_framework->DontLoadState(); } - JNIEXPORT jobject JNICALL - Java_com_mapswithme_country_ActiveCountryTree_getGuideInfo(JNIEnv * env, jclass clazz, jint group, jint position) - { - guides::GuideInfo info; - if (GetMapLayout().GetGuideInfo(ToGroup(group), position, info)) - return guides::GuideNativeToJava(env, info); - - return NULL; - } - JNIEXPORT void JNICALL Java_com_mapswithme_country_ActiveCountryTree_updateAll(JNIEnv * env, jclass clazz) { diff --git a/android/jni/com/mapswithme/country/CountryTree.cpp b/android/jni/com/mapswithme/country/CountryTree.cpp index 4c23e397fc..8e06211390 100644 --- a/android/jni/com/mapswithme/country/CountryTree.cpp +++ b/android/jni/com/mapswithme/country/CountryTree.cpp @@ -96,16 +96,6 @@ extern "C" g_framework->DontLoadState(); } - JNIEXPORT jobject JNICALL - Java_com_mapswithme_country_CountryTree_getLeafGuideInfo(JNIEnv * env, jclass clazz, jint position) - { - guides::GuideInfo info; - if (GetTree().GetLeafGuideInfo(position, info)) - return guides::GuideNativeToJava(env, info); - - return NULL; - } - JNIEXPORT jlong JNICALL Java_com_mapswithme_country_CountryTree_getLeafSize(JNIEnv * env, jclass clazz, jint position, jint options, jboolean isLocal) { diff --git a/android/jni/com/mapswithme/maps/Framework.cpp b/android/jni/com/mapswithme/maps/Framework.cpp index 350020bf6f..1bd52a43bf 100644 --- a/android/jni/com/mapswithme/maps/Framework.cpp +++ b/android/jni/com/mapswithme/maps/Framework.cpp @@ -1042,94 +1042,6 @@ extern "C" frm()->UpdateSavedDataVersion(); } - namespace - { - - class GuideNative2Java - { - JNIEnv * m_env; - jclass m_giClass; - jmethodID m_methodID; - string m_lang; - - public: - GuideNative2Java(JNIEnv * env) : m_env(env) - { - m_giClass = m_env->FindClass("com/mapswithme/maps/guides/GuideInfo"); - m_methodID = m_env->GetMethodID(m_giClass, - "", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"); - m_lang = languages::GetCurrentNorm(); - } - - jclass GetClass() const { return m_giClass; } - - jobject GetGuide(guides::GuideInfo const & info) const - { - return m_env->NewObject(m_giClass, m_methodID, - jni::ToJavaString(m_env, info.GetAppID()), - jni::ToJavaString(m_env, info.GetURL()), - jni::ToJavaString(m_env, info.GetAdTitle(m_lang)), - jni::ToJavaString(m_env, info.GetAdMessage(m_lang)), - jni::ToJavaString(m_env, info.GetName())); - } - }; - - } - - JNIEXPORT jobject JNICALL - Java_com_mapswithme_maps_Framework_getGuideInfoForIndex(JNIEnv * env, jclass clazz, jobject index) - { - guides::GuideInfo info; - if (frm()->GetGuideInfo(ToNative(index), info)) - return GuideNative2Java(env).GetGuide(info); - - return NULL; - } - - JNIEXPORT void JNICALL - Java_com_mapswithme_maps_Framework_setWasAdvertised(JNIEnv * env, jclass clazz, jstring appId) - { - frm()->GetGuidesManager().SetWasAdvertised(jni::ToNativeString(env, appId)); - } - - JNIEXPORT jboolean JNICALL - Java_com_mapswithme_maps_Framework_wasAdvertised(JNIEnv * env, jclass clazz, jstring appId) - { - return frm()->GetGuidesManager().WasAdvertised(jni::ToNativeString(env, appId)); - } - - JNIEXPORT jobjectArray JNICALL - Java_com_mapswithme_maps_Framework_getGuideIds(JNIEnv * env, jclass clazz) - { - std::set guides; - frm()->GetGuidesManager().GetGuidesIds(guides); - - jclass klass = env->FindClass("java/lang/String"); - ASSERT ( klass, () ); - - jobjectArray arr = env->NewObjectArray(guides.size(), klass, 0); - - set::iterator it; - int i = 0; - for (it = guides.begin(); it != guides.end(); ++it) - { - string guideId = *it; - env->SetObjectArrayElement(arr, i++, jni::ToJavaString(env, guideId)); - } - - return arr; - } - - JNIEXPORT jobject JNICALL - Java_com_mapswithme_maps_Framework_getGuideById(JNIEnv * env, jclass clazz, jstring guideId) - { - guides::GuideInfo info; - if (frm()->GetGuidesManager().GetGuideInfoByAppId(jni::ToNativeString(env, guideId), info)) - return GuideNative2Java(env).GetGuide(info); - - return NULL; - } - JNIEXPORT jint JNICALL Java_com_mapswithme_maps_Framework_getDrawScale(JNIEnv * env, jclass clazz) { @@ -1389,12 +1301,4 @@ extern "C" return jLatLon; } -} - -namespace guides -{ - jobject GuideNativeToJava(JNIEnv * env, GuideInfo const & info) - { - return GuideNative2Java(env).GetGuide(info); - } -} +} // extern "C" diff --git a/android/jni/com/mapswithme/maps/Framework.hpp b/android/jni/com/mapswithme/maps/Framework.hpp index 71b2f25634..622ed5ca9b 100644 --- a/android/jni/com/mapswithme/maps/Framework.hpp +++ b/android/jni/com/mapswithme/maps/Framework.hpp @@ -169,8 +169,3 @@ namespace android } extern android::Framework * g_framework; - -namespace guides -{ - jobject GuideNativeToJava(JNIEnv *, GuideInfo const &); -} diff --git a/android/res/drawable-hdpi/ic_guide_mark.png b/android/res/drawable-hdpi/ic_guide_mark.png deleted file mode 100644 index 084eb49d41..0000000000 Binary files a/android/res/drawable-hdpi/ic_guide_mark.png and /dev/null differ diff --git a/android/res/drawable-hdpi/ic_guides.png b/android/res/drawable-hdpi/ic_guides.png deleted file mode 100644 index f26066d7a2..0000000000 Binary files a/android/res/drawable-hdpi/ic_guides.png and /dev/null differ diff --git a/android/res/drawable-hdpi/ic_it_guides_icon.png b/android/res/drawable-hdpi/ic_it_guides_icon.png deleted file mode 100644 index d229678150..0000000000 Binary files a/android/res/drawable-hdpi/ic_it_guides_icon.png and /dev/null differ diff --git a/android/res/drawable-ldpi/ic_guides.png b/android/res/drawable-ldpi/ic_guides.png deleted file mode 100644 index 04021bb3d2..0000000000 Binary files a/android/res/drawable-ldpi/ic_guides.png and /dev/null differ diff --git a/android/res/drawable-ldpi/ic_it_guides_icon.png b/android/res/drawable-ldpi/ic_it_guides_icon.png deleted file mode 100644 index bb363ea1da..0000000000 Binary files a/android/res/drawable-ldpi/ic_it_guides_icon.png and /dev/null differ diff --git a/android/res/drawable-mdpi/ic_guide_mark.png b/android/res/drawable-mdpi/ic_guide_mark.png deleted file mode 100644 index 49b45bf79c..0000000000 Binary files a/android/res/drawable-mdpi/ic_guide_mark.png and /dev/null differ diff --git a/android/res/drawable-mdpi/ic_guides.png b/android/res/drawable-mdpi/ic_guides.png deleted file mode 100644 index e2090b2792..0000000000 Binary files a/android/res/drawable-mdpi/ic_guides.png and /dev/null differ diff --git a/android/res/drawable-mdpi/ic_it_guides_icon.png b/android/res/drawable-mdpi/ic_it_guides_icon.png deleted file mode 100644 index b0305d4632..0000000000 Binary files a/android/res/drawable-mdpi/ic_it_guides_icon.png and /dev/null differ diff --git a/android/res/drawable-xhdpi/ic_guide_mark.png b/android/res/drawable-xhdpi/ic_guide_mark.png deleted file mode 100644 index 9692d5f02c..0000000000 Binary files a/android/res/drawable-xhdpi/ic_guide_mark.png and /dev/null differ diff --git a/android/res/drawable-xhdpi/ic_guides.png b/android/res/drawable-xhdpi/ic_guides.png deleted file mode 100644 index fa80d93189..0000000000 Binary files a/android/res/drawable-xhdpi/ic_guides.png and /dev/null differ diff --git a/android/res/drawable-xhdpi/ic_it_guides_icon.png b/android/res/drawable-xhdpi/ic_it_guides_icon.png deleted file mode 100644 index 1f57c5bf64..0000000000 Binary files a/android/res/drawable-xhdpi/ic_it_guides_icon.png and /dev/null differ diff --git a/android/res/drawable-xxhdpi/ic_guide_mark.png b/android/res/drawable-xxhdpi/ic_guide_mark.png deleted file mode 100644 index c94db2977e..0000000000 Binary files a/android/res/drawable-xxhdpi/ic_guide_mark.png and /dev/null differ diff --git a/android/res/drawable-xxhdpi/ic_guides.png b/android/res/drawable-xxhdpi/ic_guides.png deleted file mode 100644 index ad1cf679ec..0000000000 Binary files a/android/res/drawable-xxhdpi/ic_guides.png and /dev/null differ diff --git a/android/res/drawable-xxhdpi/ic_it_guides_icon.png b/android/res/drawable-xxhdpi/ic_it_guides_icon.png deleted file mode 100644 index 2e3103f424..0000000000 Binary files a/android/res/drawable-xxhdpi/ic_it_guides_icon.png and /dev/null differ diff --git a/android/res/layout/list_item_more_apps.xml b/android/res/layout/list_item_more_apps.xml deleted file mode 100644 index d80eb72ca6..0000000000 --- a/android/res/layout/list_item_more_apps.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/android/res/values-ar/strings.xml b/android/res/values-ar/strings.xml index 631295779a..5726631089 100644 --- a/android/res/values-ar/strings.xml +++ b/android/res/values-ar/strings.xml @@ -312,9 +312,6 @@ بحث أزرار التكبير عرض على الشاشة - المزيد من التطبيقات - دليل السفر الارشادي - المزيد من التطبيقات المسافة الإحداثيات لم يتم فرزها diff --git a/android/res/values-cs/strings.xml b/android/res/values-cs/strings.xml index c070cc8f5a..1f41d6460a 100644 --- a/android/res/values-cs/strings.xml +++ b/android/res/values-cs/strings.xml @@ -309,9 +309,6 @@ Vyhledávání Tlačítka přiblížení/oddálení Zobrazit na obrazovce - Další aplikace - Cestovní průvodce - Další aplikace Vzdálenost Souřadnice Nezařazené diff --git a/android/res/values-da/strings.xml b/android/res/values-da/strings.xml index 9a97dfc6d2..bce844ce93 100644 --- a/android/res/values-da/strings.xml +++ b/android/res/values-da/strings.xml @@ -310,9 +310,6 @@ Søg Zoom knapper Vis på skærmen - Flere apps - Rejseguider - Flere apps Afstand Koordinater Usorteret diff --git a/android/res/values-de/strings.xml b/android/res/values-de/strings.xml index 637830c285..92d5eb9b96 100644 --- a/android/res/values-de/strings.xml +++ b/android/res/values-de/strings.xml @@ -303,9 +303,6 @@ Suche Zoom-Tasten Auf dem Bildschirm anzeigen - Mehr Apps - Reiseführer - Mehr Apps Distanz Koordinaten Unsortiert diff --git a/android/res/values-es/strings.xml b/android/res/values-es/strings.xml index 535dabab7b..09bb45838d 100644 --- a/android/res/values-es/strings.xml +++ b/android/res/values-es/strings.xml @@ -299,9 +299,6 @@ Buscar Botones de zoom Visualización en la pantalla - Más aplicaciones - Guías de viaje - Más aplicaciones Distancia Coordenadas Sin clasificar diff --git a/android/res/values-fr/strings.xml b/android/res/values-fr/strings.xml index b1a5abc15d..ada09605ee 100644 --- a/android/res/values-fr/strings.xml +++ b/android/res/values-fr/strings.xml @@ -313,9 +313,6 @@ Rechercher Boutons de zoom Afficher à l\'écran - Plus d\'applis - Guides de voyage - Plus d\'applis Distance Coordonnées Non trié diff --git a/android/res/values-hu/strings.xml b/android/res/values-hu/strings.xml index 1e7c31417e..600c33a37f 100644 --- a/android/res/values-hu/strings.xml +++ b/android/res/values-hu/strings.xml @@ -309,9 +309,6 @@ Keresés Nagyítás/kicsinyítés gombok Mutassa a kijelzőn - Több alkalmazás - Útikönyvek - Több alkalmazás Távolság Koordináták Osztályozatlan diff --git a/android/res/values-it/strings.xml b/android/res/values-it/strings.xml index 99205bbfe5..6764aaf77a 100644 --- a/android/res/values-it/strings.xml +++ b/android/res/values-it/strings.xml @@ -305,9 +305,6 @@ Cerca Pulsanti per lo zoom Condividi la mia location - Altre app - Guide turistiche - Altre app Distanza Coordinate Non classificato diff --git a/android/res/values-ja/strings.xml b/android/res/values-ja/strings.xml index 1bb58510cf..bbb3ae6d1f 100644 --- a/android/res/values-ja/strings.xml +++ b/android/res/values-ja/strings.xml @@ -299,9 +299,6 @@ 検索 ズームボタン 画面上に表示 - その他のアプリ - トラベルガイド - その他のアプリ 距離 コーディネート 未分類 diff --git a/android/res/values-ko/strings.xml b/android/res/values-ko/strings.xml index 134b5e6592..e78e3fc550 100644 --- a/android/res/values-ko/strings.xml +++ b/android/res/values-ko/strings.xml @@ -296,9 +296,6 @@ 검색 확대/축소 버튼 화면에 표시 - 기타 앱 - 여행 가이드 - 기타 앱 거리 좌표 분류되지 않음 diff --git a/android/res/values-nl/strings.xml b/android/res/values-nl/strings.xml index c200ae8e8c..cc91284fb7 100644 --- a/android/res/values-nl/strings.xml +++ b/android/res/values-nl/strings.xml @@ -300,9 +300,6 @@ Zoek Zoomknoppen Weergave op het scherm - Meer apps - Reisgidsen - Meer apps Afstand Coördinaten Ongeclassificeerd diff --git a/android/res/values-pl/strings.xml b/android/res/values-pl/strings.xml index fc025fe665..8064d8f540 100644 --- a/android/res/values-pl/strings.xml +++ b/android/res/values-pl/strings.xml @@ -309,9 +309,6 @@ Szukaj Przyciski powiększania Wyświetl na ekranie - Więcej aplikacji - Przewodniki podróżne - Więcej aplikacji Dystans Współrzędne Niesklasyfikowane diff --git a/android/res/values-pt/strings.xml b/android/res/values-pt/strings.xml index 45a32a25d9..a3162f2578 100644 --- a/android/res/values-pt/strings.xml +++ b/android/res/values-pt/strings.xml @@ -305,9 +305,6 @@ Pesquisar Botões de zoom Mostrar no ecrã - Mais aplicativos - Guias de Viagem - Mais aplicativos Distância Coordenadas Não classificado diff --git a/android/res/values-ru/strings.xml b/android/res/values-ru/strings.xml index 3e5df9ef90..80654c4976 100644 --- a/android/res/values-ru/strings.xml +++ b/android/res/values-ru/strings.xml @@ -313,9 +313,6 @@ Поиск Кнопки масштаба Показать на карте - Другие приложения - Путеводители - Другие приложения Расстояние Координаты Без категории diff --git a/android/res/values-sk/strings.xml b/android/res/values-sk/strings.xml index b62b75766f..3d0f739314 100644 --- a/android/res/values-sk/strings.xml +++ b/android/res/values-sk/strings.xml @@ -307,8 +307,6 @@ Vyhľadávanie Tlačítka priblíženia/oddialenia Zobraziť na obrazovke - Viacej aplikácií - Viacej aplikácií Vzdialenosť Súradnice Nezaradené diff --git a/android/res/values-sv/strings.xml b/android/res/values-sv/strings.xml index 8f0c118bdc..b17c460198 100644 --- a/android/res/values-sv/strings.xml +++ b/android/res/values-sv/strings.xml @@ -308,9 +308,6 @@ Sök Zoom-knappar Visa på skärmen - Fler Appar - Reseguider - Fler Appar Avstånd Koordinater Osorterade diff --git a/android/res/values-th/strings.xml b/android/res/values-th/strings.xml index a9d156db31..87820d214b 100644 --- a/android/res/values-th/strings.xml +++ b/android/res/values-th/strings.xml @@ -310,9 +310,6 @@ ค้นหา ปุ่มซูม แสดงบนหน้าจอ - แอปเพิ่มเติม - คู่มือการเดินทาง - แอปเพิ่มเติม ระยะห่าง พิกัด ไม่เรียงลำดับ diff --git a/android/res/values-tr/strings.xml b/android/res/values-tr/strings.xml index 8ca0dbc964..2be70fe32e 100644 --- a/android/res/values-tr/strings.xml +++ b/android/res/values-tr/strings.xml @@ -312,9 +312,6 @@ Ara Yakınlaştırma butonları Ekranda göster - Daha fazla uygulama - Seyahat rehberleri - Daha fazla uygulama Mesafe Koordinatlar Sıralanmamış diff --git a/android/res/values-uk/strings.xml b/android/res/values-uk/strings.xml index 6ad7099649..524d8d3931 100644 --- a/android/res/values-uk/strings.xml +++ b/android/res/values-uk/strings.xml @@ -313,9 +313,6 @@ Пошук Кнопки трансфокації Відображення на екрані - Більше програм - Довідники туриста - Більше програм Відстань Координати Без категорії diff --git a/android/res/values-zh-rTW/strings.xml b/android/res/values-zh-rTW/strings.xml index 9247d4c926..73d5557ea6 100644 --- a/android/res/values-zh-rTW/strings.xml +++ b/android/res/values-zh-rTW/strings.xml @@ -292,9 +292,6 @@ 搜尋 縮放按鈕 在螢幕上顯示 - 更多應用 - 旅行指南 - 更多應用 距离 坐标 未分类的 diff --git a/android/res/values-zh/strings.xml b/android/res/values-zh/strings.xml index 5ecd4efa54..a67bbb86ad 100644 --- a/android/res/values-zh/strings.xml +++ b/android/res/values-zh/strings.xml @@ -308,9 +308,6 @@ 搜索 缩放按钮 在屏幕上显示 - 更多应用 - 旅游指南 - 更多应用 距离 坐标 未分类 diff --git a/android/res/values/strings.xml b/android/res/values/strings.xml index 5c7e52399d..f54541738c 100644 --- a/android/res/values/strings.xml +++ b/android/res/values/strings.xml @@ -317,9 +317,6 @@ Search Zoom buttons Display on the screen - More Apps - Travel Guides - More Apps Distance Coordinates Unsorted diff --git a/android/src/com/mapswithme/country/ActiveCountryTree.java b/android/src/com/mapswithme/country/ActiveCountryTree.java index a0525f60fd..e3591b2171 100644 --- a/android/src/com/mapswithme/country/ActiveCountryTree.java +++ b/android/src/com/mapswithme/country/ActiveCountryTree.java @@ -1,7 +1,6 @@ package com.mapswithme.country; import com.mapswithme.maps.MapStorage; -import com.mapswithme.maps.guides.GuideInfo; import com.mapswithme.maps.MapStorage.Index; public class ActiveCountryTree @@ -52,8 +51,6 @@ public class ActiveCountryTree public static native void showOnMap(int group, int position); - public static native GuideInfo getGuideInfo(int group, int position); - public static native void updateAll(); public static native void cancelAll(); diff --git a/android/src/com/mapswithme/country/BaseDownloadAdapter.java b/android/src/com/mapswithme/country/BaseDownloadAdapter.java index 5d1ee9c0cb..f645e0415d 100644 --- a/android/src/com/mapswithme/country/BaseDownloadAdapter.java +++ b/android/src/com/mapswithme/country/BaseDownloadAdapter.java @@ -24,7 +24,6 @@ import com.mapswithme.maps.BuildConfig; import com.mapswithme.maps.MWMApplication; import com.mapswithme.maps.MapStorage; import com.mapswithme.maps.R; -import com.mapswithme.maps.guides.GuideInfo; import com.mapswithme.maps.widget.WheelProgressView; import com.mapswithme.util.Constants; import com.mapswithme.util.UiUtils; @@ -123,8 +122,6 @@ abstract class BaseDownloadAdapter extends BaseAdapter // returns local and remote size for downloading items(DO NOT call that method for NOT_DOWNLOADED items). protected abstract long[] getDownloadableItemSizes(int position); - protected abstract GuideInfo getGuideInfo(int position); - protected abstract void cancelDownload(int position); protected abstract void retryDownload(int position); diff --git a/android/src/com/mapswithme/country/CountryTree.java b/android/src/com/mapswithme/country/CountryTree.java index 94becc98fd..ac561af0d5 100644 --- a/android/src/com/mapswithme/country/CountryTree.java +++ b/android/src/com/mapswithme/country/CountryTree.java @@ -1,7 +1,5 @@ package com.mapswithme.country; -import com.mapswithme.maps.guides.GuideInfo; - public class CountryTree { // interface for listening callbacks from native @@ -40,8 +38,6 @@ public class CountryTree public static native void showLeafOnMap(int position); - public static native GuideInfo getLeafGuideInfo(int position); - public static native long getLeafSize(int position, int options, boolean isLocal); public static native void setListener(CountryTreeListener listener); diff --git a/android/src/com/mapswithme/country/DownloadAdapter.java b/android/src/com/mapswithme/country/DownloadAdapter.java index 49de258cc0..4a4ad3c09d 100644 --- a/android/src/com/mapswithme/country/DownloadAdapter.java +++ b/android/src/com/mapswithme/country/DownloadAdapter.java @@ -2,8 +2,6 @@ package com.mapswithme.country; import android.view.View; -import com.mapswithme.maps.guides.GuideInfo; - class DownloadAdapter extends BaseDownloadAdapter implements CountryTree.CountryTreeListener { public DownloadAdapter(DownloadFragment fragment) @@ -86,12 +84,6 @@ class DownloadAdapter extends BaseDownloadAdapter implements CountryTree.Country CountryTree.getLeafSize(position, -1, false) }; } - @Override - protected GuideInfo getGuideInfo(int position) - { - return CountryTree.getLeafGuideInfo(position); - } - @Override protected void cancelDownload(int position) { diff --git a/android/src/com/mapswithme/country/DownloadedAdapter.java b/android/src/com/mapswithme/country/DownloadedAdapter.java index 84168d6510..8bb619266f 100644 --- a/android/src/com/mapswithme/country/DownloadedAdapter.java +++ b/android/src/com/mapswithme/country/DownloadedAdapter.java @@ -4,7 +4,6 @@ import android.view.View; import android.view.ViewGroup; import com.mapswithme.maps.R; -import com.mapswithme.maps.guides.GuideInfo; public class DownloadedAdapter extends BaseDownloadAdapter implements ActiveCountryTree.ActiveCountryListener { @@ -204,12 +203,6 @@ public class DownloadedAdapter extends BaseDownloadAdapter implements ActiveCoun return false; } - @Override - protected GuideInfo getGuideInfo(int position) - { - return ActiveCountryTree.getGuideInfo(getGroupByAbsPosition(position), getPositionInGroup(position)); - } - @Override protected void cancelDownload(int position) { diff --git a/android/src/com/mapswithme/maps/Framework.java b/android/src/com/mapswithme/maps/Framework.java index bf631e322d..5fff2bae0a 100644 --- a/android/src/com/mapswithme/maps/Framework.java +++ b/android/src/com/mapswithme/maps/Framework.java @@ -1,14 +1,10 @@ package com.mapswithme.maps; -import android.os.Build; - import com.mapswithme.maps.MapStorage.Index; import com.mapswithme.maps.bookmarks.data.DistanceAndAzimut; import com.mapswithme.maps.bookmarks.data.MapObject; import com.mapswithme.maps.bookmarks.data.MapObject.SearchResult; -import com.mapswithme.maps.guides.GuideInfo; import com.mapswithme.util.Constants; -import com.mapswithme.util.Utils; /** * This class wraps android::Framework.cpp class @@ -47,33 +43,6 @@ public class Framework public static native void nativeShowTrackRect(int category, int track); - // guides - public native static GuideInfo getGuideInfoForIndex(Index idx); - - public static GuideInfo getGuideInfoForIndexWithApiCheck(Index idx) - { - if (Utils.apiLowerThan(Build.VERSION_CODES.HONEYCOMB)) - return null; - else - return getGuideInfoForIndex(idx); - } - - public static GuideInfo getGuideInfoForIdWithApiCheck(String id) - { - if (Utils.apiLowerThan(Build.VERSION_CODES.HONEYCOMB)) - return null; - else - return getGuideById(id); - } - - public native static void setWasAdvertised(String appId); - - public native static boolean wasAdvertised(String appId); - - public native static String[] getGuideIds(); - - public native static GuideInfo getGuideById(String id); - public native static int getDrawScale(); public native static double[] getScreenRectCenter(); diff --git a/android/src/com/mapswithme/maps/guides/GuideInfo.java b/android/src/com/mapswithme/maps/guides/GuideInfo.java deleted file mode 100644 index 10625bf24a..0000000000 --- a/android/src/com/mapswithme/maps/guides/GuideInfo.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.mapswithme.maps.guides; - -public class GuideInfo -{ - public final String mAppId; - public final String mAppUrl; - public final String mTitle; - public final String mMessage; - public final String mName; - - public GuideInfo(String appId, String appUrl, String title, String message, String name) - { - this.mAppId = appId; - this.mAppUrl = appUrl; - this.mTitle = title; - this.mMessage = message; - this.mName = name; - } -} diff --git a/android/src/com/mapswithme/maps/guides/GuidesUtils.java b/android/src/com/mapswithme/maps/guides/GuidesUtils.java deleted file mode 100644 index 8fca80d500..0000000000 --- a/android/src/com/mapswithme/maps/guides/GuidesUtils.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.mapswithme.maps.guides; - -import android.content.Context; -import android.content.Intent; -import android.content.pm.PackageManager; -import android.content.pm.PackageManager.NameNotFoundException; -import android.net.Uri; - -import com.mapswithme.util.Constants; - -public class GuidesUtils -{ - public static boolean isGuideInstalled(String appId, Context context) - { - final PackageManager pm = context.getPackageManager(); - try - { - // throws if has no package - pm.getPackageInfo(appId, PackageManager.GET_META_DATA); - return true; - } catch (final NameNotFoundException e) - { - return false; - } - } - - public static Intent getGoogleStoreIntentForPackage(String packageName) - { - final Intent intent = new Intent(Intent.ACTION_VIEW); - intent.setData(Uri.parse(Constants.Url.PLAY_MARKET_APP_PREFIX + packageName)); - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET | Intent.FLAG_ACTIVITY_NO_HISTORY); - return intent; - } - - public static void openOrDownloadGuide(GuideInfo info, Context context) - { - final String packName = info.mAppId; - if (GuidesUtils.isGuideInstalled(packName, context)) - { - final Intent i = context.getPackageManager().getLaunchIntentForPackage(packName); - context.startActivity(i); - } - else - context.startActivity(GuidesUtils.getGoogleStoreIntentForPackage(info.mAppId)); - } -} diff --git a/android/src/com/mapswithme/maps/promo/request/PromoActivationRequest.java b/android/src/com/mapswithme/maps/promo/request/PromoActivationRequest.java deleted file mode 100644 index 52d0d66185..0000000000 --- a/android/src/com/mapswithme/maps/promo/request/PromoActivationRequest.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.mapswithme.maps.promo.request; - -import com.mapswithme.util.Utils; - -import java.io.BufferedInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.net.HttpURLConnection; -import java.net.MalformedURLException; -import java.net.URL; - -public abstract class PromoActivationRequest -{ - protected RequestListener mRequestListener; - - /** - * Reads and interprets response from server. - * - * @param is {@link InputStream} from server. - * @return true if activation successful, false otherwise - */ - public abstract boolean parseResponse(InputStream is); - - /** - * Creates {@link URL} for specific server using passed promocode. - * - * @param promoCode promocode to activate - * @return {@link URL} using promocode - * @throws MalformedURLException - */ - public abstract URL createUrl(String promoCode) throws MalformedURLException; - - /** - * Template method for client's code. - * Uses {@link PromoActivationRequest#createUrl(String)} - * and {@link PromoActivationRequest#doRequest(URL)} - * methods. - * - * @param promoCode - * @throws Exception - */ - public void doRequst(String promoCode) throws Exception - { - doRequest(createUrl(promoCode)); - } - - public void setRequestListener(RequestListener listener) - { - mRequestListener = listener; - } - - protected void doRequest(URL url) - { - HttpURLConnection urlConnection = null; - InputStream in = null; - try - { - urlConnection = (HttpURLConnection) url.openConnection(); - in = new BufferedInputStream(urlConnection.getInputStream()); - - boolean success = parseResponse(in); - if (success) - mRequestListener.onSuccess(); - else - mRequestListener.onFailure(); - - } catch (IOException e) - { - e.printStackTrace(); - mRequestListener.onError(e); - } finally - { - Utils.closeStream(in); - urlConnection.disconnect(); - } - - } - - public interface RequestListener - { - public void onSuccess(); - - public void onFailure(); - - public void onError(Exception ex); - } -} diff --git a/data/android-guides.json b/data/android-guides.json deleted file mode 100644 index 095a9cca60..0000000000 --- a/data/android-guides.json +++ /dev/null @@ -1,1076 +0,0 @@ -{ - "version":5, - -"Montenegro":{ - "url":"https://play.google.com/store/apps/details?id=com.guidewithme.montenegro", - "appId":"com.guidewithme.montenegro", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Montenegro: free offline travel guide", - "nl":"Montenegro: gratis offline reisgids", - "uk":"Чорногорія: безкоштовні путівники оф-лайн.", - "zh":"黑山:免費離線旅行指南", - "cs":"Černá Hora: bezplatný off-line turistický průvodce", - "fr":"Monténégro: guide de voyage gratuit hors ligne", - "it":"Montenegro: guida turistica gratuita offline", - "ja":"モンテネグロ:無料オフライン旅行ガイド", - "ko":"몬테네그로: 무료 오프라인 여행 가이드", - "pt":"Montenegro: guia de viagem grátis offline", - "es":"Montenegro: guía de viaje offline gratis", - "pl":"Czarnogóra: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Montenegro: kostenloser Offline-Reiseführer", - "ru":"Черногория: бесплатный оффлайновый гид" - }, - "keys":[ - "Montenegro" - ] -}, - -"Lithuania":{ - "url":"https://play.google.com/store/apps/details?id=com.guidewithme.lithuania", - "appId":"com.guidewithme.lithuania", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Lithuania: free offline travel guide", - "nl":"Litouwen: gratis offline reisgids", - "uk":"Литва: безкоштовні путівники оф-лайн.", - "zh":"立陶宛:免費離線旅行指南", - "cs":"Litva: bezplatný off-line turistický průvodce", - "fr":"Lituanie: guide de voyage gratuit hors ligne", - "it":"Lituania: guida turistica gratuita offline", - "ja":"リトアニア:無料オフライン旅行ガイド", - "ko":"리투아니아: 무료 오프라인 여행 가이드", - "pt":"Lituânia: guia de viagem grátis offline", - "es":"Lituania: guía de viaje offline gratis", - "pl":"Litwa: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Litauen: kostenloser Offline-Reiseführer", - "ru":"Литва: бесплатный оффлайновый гид" - }, - "keys":[ - "Lithuania" - ] -}, - -"Estonia":{ - "url":"https://play.google.com/store/apps/details?id=com.guidewithme.estonia", - "appId":"com.guidewithme.estonia", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Estonia: free offline travel guide", - "nl":"Estland: gratis offline reisgids", - "uk":"Естонія: безкоштовні путівники оф-лайн.", - "zh":"愛沙尼亞:免費離線旅行指南", - "cs":"Estonsko: bezplatný off-line turistický průvodce", - "fr":"Estonie: guide de voyage gratuit hors ligne", - "it":"Estonia: guida turistica gratuita offline", - "ja":"エストニア:無料オフライン旅行ガイド", - "ko":"에스토니아: 무료 오프라인 여행 가이드", - "pt":"Estônia: guia de viagem grátis offline", - "es":"Estonia: guía de viaje offline gratis", - "pl":"Estonia: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Estland: kostenloser Offline-Reiseführer", - "ru":"Эстония: бесплатный оффлайновый гид" - }, - "keys":[ - "Estonia" - ] -}, - -"Sri Lanka":{ - "url":"https://play.google.com/store/apps/details?id=com.guidewithme.sri.lanka", - "appId":"com.guidewithme.sri.lanka", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Sri Lanka: free offline travel guide", - "nl":"Sri Lanka: gratis offline reisgids", - "uk":"Шрі Ланка: безкоштовні путівники оф-лайн.", - "zh":"斯里蘭卡:免費離線旅行指南", - "cs":"Sri Lanka: bezplatný off-line turistický průvodce", - "fr":"Sri Lanka: guide de voyage gratuit hors ligne", - "it":"Sri Lanka: guida turistica gratuita offline", - "ja":"スリ·ランカ:無料オフライン旅行ガイド", - "ko":"스리랑카: 무료 오프라인 여행 가이드", - "pt":"Sri Lanka: guia de viagem grátis offline", - "es":"Sri Lanka: guía de viaje offline gratis", - "pl":"Sri Lanka: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Sri Lanka: kostenloser Offline-Reiseführer", - "ru":"Шри Ланка: бесплатный оффлайновый гид" - }, - "keys":[ - "Sri Lanka" - ] -}, - -"Hong Kong":{ - "url":"https://play.google.com/store/apps/details?id=com.guidewithme.hong.kong", - "appId":"com.guidewithme.hong.kong", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Hong Kong: free offline travel guide", - "nl":"Hong Kong: gratis offline reisgids", - "uk":"Гонконг: безкоштовні путівники оф-лайн.", - "zh":"香港:免費離線旅行指南", - "cs":"Hongkong: bezplatný off-line turistický průvodce", - "fr":"Hong-Kong: guide de voyage gratuit hors ligne", - "it":"Hong Kong: guida turistica gratuita offline", - "ja":"香港:無料オフライン旅行ガイド", - "ko":"홍콩: 무료 오프라인 여행 가이드", - "pt":"Hong Kong: guia de viagem grátis offline", - "es":"Hong Kong: guía de viaje offline gratis", - "pl":"Hongkong: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Hongkong: kostenloser Offline-Reiseführer", - "ru":"Гонконг: бесплатный оффлайновый гид" - }, - "keys":[ - "China" - ] -}, - -"Thailand":{ - "url":"https://play.google.com/store/apps/details?id=com.guidewithme.thailand", - "appId":"com.guidewithme.thailand", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Thailand: free offline travel guide", - "nl":"Thailand: gratis offline reisgids", - "uk":"Таїланд: безкоштовні путівники оф-лайн.", - "zh":"泰國:免費離線旅行指南", - "cs":"Thajsko: bezplatný off-line turistický průvodce", - "fr":"Thaïlande: guide de voyage gratuit hors ligne", - "it":"Thailandia: guida turistica gratuita offline", - "ja":"タイ:無料オフライン旅行ガイド", - "ko":"태국: 무료 오프라인 여행 가이드", - "pt":"Tailândia: guia de viagem grátis offline", - "es":"Tailandia: guía de viaje offline gratis", - "pl":"Tajlandia: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Thailand: kostenloser Offline-Reiseführer", - "ru":"Таиланд: бесплатный оффлайновый гид" - }, - "keys":[ - "Thailand" - ] -}, - -"Taiwan":{ - "url":"https://play.google.com/store/apps/details?id=com.guidewithme.taiwan", - "appId":"com.guidewithme.taiwan", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Taiwan: free offline travel guide", - "nl":"Taiwan: gratis offline reisgids", - "uk":"Тайвань: безкоштовні путівники оф-лайн.", - "zh":"台灣:免費離線旅行指南", - "cs":"Tchaj-wan: bezplatný off-line turistický průvodce", - "fr":"Taiwan: guide de voyage gratuit hors ligne", - "it":"Taiwan: guida turistica gratuita offline", - "ja":"台湾:無料オフライン旅行ガイド", - "ko":"대만: 무료 오프라인 여행 가이드", - "pt":"Taiwan: guia de viagem grátis offline", - "es":"Taiwan: guía de viaje offline gratis", - "pl":"Tajwan: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Taiwan: kostenloser Offline-Reiseführer", - "ru":"Тайвань: бесплатный оффлайновый гид" - }, - "keys":[ - "Taiwan" - ] -}, - -"Latvia":{ - "url":"https://play.google.com/store/apps/details?id=com.guidewithme.latvia", - "appId":"com.guidewithme.latvia", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Latvia: free offline travel guide", - "nl":"Letland: gratis offline reisgids", - "uk":"Латвія: безкоштовні путівники оф-лайн.", - "zh":"拉脫維亞:免費離線旅行指南", - "cs":"Lotyšsko: bezplatný off-line turistický průvodce", - "fr":"Lettonie: guide de voyage gratuit hors ligne", - "it":"Lettonia: guida turistica gratuita offline", - "ja":"ラトビア:無料オフライン旅行ガイド", - "ko":"라트비아: 무료 오프라인 여행 가이드", - "pt":"Látvia: guia de viagem grátis offline", - "es":"Letonia: guía de viaje offline gratis", - "pl":"Łotwa: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Lettland: kostenloser Offline-Reiseführer", - "ru":"Латвия: бесплатный оффлайновый гид" - }, - "keys":[ - "Latvia" - ] -}, - - -"Czech Republic":{ - "url":"https://play.google.com/store/apps/details?id=com.guidewithme.czech.republic", - "appId":"com.guidewithme.czech.republic", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Czech Republic: free offline travel guide", - "nl":"Tsjechië: gratis offline reisgids", - "uk":"Чехiя: безкоштовні путівники оф-лайн.", - "zh":"捷克:免費離線旅行指南", - "cs":"Česko: bezplatný off-line turistický průvodce", - "fr":"République tchèque: guide de voyage gratuit hors ligne", - "it":"Repubblica Ceca: guida turistica gratuita offline", - "ja":"チェコ:無料オフライン旅行ガイド", - "ko":"체코: 무료 오프라인 여행 가이드", - "pt":"República Checa: guia de viagem grátis offline", - "es":"República Checa: guía de viaje offline gratis", - "pl":"Czechy: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Tschechien: kostenloser Offline-Reiseführer", - "ru":"Чехия: бесплатный оффлайновый гид" - }, - "keys":[ - "Czech Republic" - ] -}, - -"Poland":{ - "url":"https://play.google.com/store/apps/details?id=com.guidewithme.poland", - "appId":"com.guidewithme.poland", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Poland: free offline travel guide", - "nl":"Polen: gratis offline reisgids", - "uk":"Польща: безкоштовні путівники оф-лайн.", - "zh":"波蘭:免費離線旅行指南", - "cs":"Polsko: bezplatný off-line turistický průvodce", - "fr":"Pologne: guide de voyage gratuit hors ligne", - "it":"Polonia: guida turistica gratuita offline", - "ja":"ポーランド:無料オフライン旅行ガイド", - "ko":"폴란드: 무료 오프라인 여행 가이드", - "pt":"Polônia: guia de viagem grátis offline", - "es":"Polonia: guía de viaje offline gratis", - "pl":"Polska: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Polen: kostenloser Offline-Reiseführer", - "ru":"Польша: бесплатный оффлайновый гид" - }, - "keys":[ - "Poland" - ] -}, - -"Malaysia":{ - "url":"https://play.google.com/store/apps/details?id=com.guidewithme.malaysia", - "appId":"com.guidewithme.malaysia", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Malaysia: free offline travel guide", - "nl":"Maleisië: gratis offline reisgids", - "uk":"Малайзія: безкоштовні путівники оф-лайн.", - "zh":"馬來西亞:免費離線旅行指南", - "cs":"Malajsie: bezplatný off-line turistický průvodce", - "fr":"Malaisie: guide de voyage gratuit hors ligne", - "it":"Malaysia: guida turistica gratuita offline", - "ja":"マレーシア:無料オフライン旅行ガイド", - "ko":"말레이시아: 무료 오프라인 여행 가이드", - "pt":"Malásia: guia de viagem grátis offline", - "es":"Malasia: guía de viaje offline gratis", - "pl":"Malezja: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Malaysia: kostenloser Offline-Reiseführer", - "ru":"Малайзия: бесплатный оффлайновый гид" - }, - "keys":[ - "Malaysia" - ] -}, - -"Singapore":{ - "url":"https://play.google.com/store/apps/details?id=com.guidewithme.singapore", - "appId":"com.guidewithme.singapore", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Singapore: free offline travel guide", - "nl":"Singapore: gratis offline reisgids", - "uk":"Сінгапур: безкоштовні путівники оф-лайн.", - "zh":"新加坡:免費離線旅行指南", - "cs":"Singapur: bezplatný off-line turistický průvodce", - "fr":"Singapour: guide de voyage gratuit hors ligne", - "it":"Singapore: guida turistica gratuita offline", - "ja":"シンガポール:無料オフライン旅行ガイド", - "ko":"싱가포르: 무료 오프라인 여행 가이드", - "pt":"Cingapura: guia de viagem grátis offline", - "es":"Singapur: guía de viaje offline gratis", - "pl":"Singapur: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Singapur: kostenloser Offline-Reiseführer", - "ru":"Сингапур: бесплатный оффлайновый гид" - }, - "keys":[ - "Singapore" - ] -}, - -"Nepal":{ - "url":"https://play.google.com/store/apps/details?id=com.guidewithme.nepal", - "appId":"com.guidewithme.nepal", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Nepal: free offline travel guide", - "nl":"Nepal: gratis offline reisgids", - "uk":"Непал: безкоштовні путівники оф-лайн.", - "zh":"尼泊爾:免費離線旅行指南", - "cs":"Nepál: bezplatný off-line turistický průvodce", - "fr":"Népal: guide de voyage gratuit hors ligne", - "it":"Nepal: guida turistica gratuita offline", - "ja":"ネパール:無料オフライン旅行ガイド", - "ko":"네팔: 무료 오프라인 여행 가이드", - "pt":"Nepal: guia de viagem grátis offline", - "es":"Nepal: guía de viaje offline gratis", - "pl":"Nepal: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Nepal: kostenloser Offline-Reiseführer", - "ru":"Непал: бесплатный оффлайновый гид" - }, - "keys":[ - "Nepal" - ] -}, - - "New Zealand":{ - "url":"https://play.google.com/store/apps/details?id=com.guidewithme.new.zealand", - "appId":"com.guidewithme.new.zealand", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"NZ: free offline travel guide", - "nl":"Nieuw Zeeland: gratis offline reisgids", - "uk":"Нова Зеландія: безкоштовні путівники оф-лайн.", - "zh":"新西蘭:免費離線旅行指南", - "cs":"Nový Zéland: bezplatný off-line turistický průvodce", - "fr":"Nouvelle Zélande: guide de voyage gratuit hors ligne", - "it":"Nuova Zelanda: guida turistica gratuita offline", - "ja":"ニュージーランド:無料オフライン旅行ガイド", - "ko":"뉴질랜드: 무료 오프라인 여행 가이드", - "pt":"Nova Zelândia: guia de viagem grátis offline", - "es":"Nueva Zelanda: guía de viaje offline gratis", - "pl":"Nowa Zelandia: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Neuseeland: kostenloser Offline-Reiseführer", - "ru":"Новая Зеландия: бесплатный оффлайновый гид" - }, - "keys":[ - "New Zealand" - ] - }, - "UK":{ - "url":"https://play.google.com/store/apps/details?id=com.guidewithme.uk", - "appId":"com.guidewithme.uk", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"UK: free offline travel guide", - "nl":"VK: gratis offline reisgids", - "uk":"Великобританія: безкоштовні путівники оф-лайн.", - "zh":"英國:免費離線旅行指南", - "cs":"Spojené království: bezplatný off-line turistický průvodce", - "fr":"RU: guide de voyage gratuit hors ligne", - "it":"Regno Unito: guida turistica gratuita offline", - "ja":"イギリス:無料オフライン旅行ガイド", - "ko":"영국: 무료 오프라인 여행 가이드", - "pt":"UK: guia de viagem grátis offline", - "es":"Reino Unido: guía de viaje offline gratis", - "pl":"Wielka Brytania: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Großbritannien: kostenloser Offline-Reiseführer", - "ru":"Великобритания: бесплатный оффлайновый гид" - }, - "keys":[ - "UK_England", - "UK_Northern Ireland", - "UK_Scotland", - "UK_Wales" - ] - }, -"California":{ - "url":"https://play.google.com/store/apps/details?id=com.guidewithme.california", - "appId":"com.guidewithme.california", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"California: free offline travel guide", - "nl":"Californië: gratis offline reisgids", - "uk":"Каліфорнія: безкоштовні путівники оф-лайн.", - "zh":"加州:免費離線旅行指南", - "cs":"Kalifornie: bezplatný off-line turistický průvodce", - "fr":"Californie: guide de voyage gratuit hors ligne", - "it":"California: guida turistica gratuita offline", - "ja":"カリフォルニア:無料オフライン旅行ガイド", - "ko":"캘리포니아: 무료 오프라인 여행 가이드", - "pt":"Califórnia: guia de viagem grátis offline", - "es":"California: guía de viaje offline gratis", - "pl":"Kalifornia: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Kalifornien: kostenloser Offline-Reiseführer", - "ru":"Калифорния: бесплатный оффлайновый гид" - }, - "keys":[ - "USA_California" - ] -}, -"Hawaii":{ - "url":"https://play.google.com/store/apps/details?id=com.guidewithme.hawaii", - "appId":"com.guidewithme.hawaii", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Hawaii: free offline travel guide", - "nl":"Hawaii: gratis offline reisgids", - "uk":"Гаваї: безкоштовні путівники оф-лайн.", - "zh":"夏威夷:免費離線旅行指南", - "cs":"Havaj: bezplatný off-line turistický průvodce", - "fr":"Hawaï: guide de voyage gratuit hors ligne", - "it":"Hawaii: guida turistica gratuita offline", - "ja":"ハワイ:無料オフライン旅行ガイド", - "ko":"하와이: 무료 오프라인 여행 가이드", - "pt":"Havai: guia de viagem grátis offline", - "es":"Hawái: guía de viaje offline gratis", - "pl":"Hawaje: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Hawaii: kostenloser Offline-Reiseführer", - "ru":"Гаваи: бесплатный оффлайновый гид" - }, - "keys":[ - "USA_Hawaii" - ] -}, -"Germany":{ - "url":"https://play.google.com/store/apps/details?id=com.guidewithme.germany", - "appId":"com.guidewithme.germany", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Germany: free offline travel guide", - "nl":"Duitsland: gratis offline reisgids", - "uk":"Німеччина: безкоштовні путівники оф-лайн.", - "zh":"德國:免費離線旅行指南", - "cs":"Německo: bezplatný off-line turistický průvodce", - "fr":"Allemagne: guide de voyage gratuit hors ligne", - "it":"Germania: guida turistica gratuita offline", - "ja":"ドイツ:無料オフライン旅行ガイド", - "ko":"독일: 무료 오프라인 여행 가이드", - "pt":"Alemanha: guia de viagem grátis offline", - "es":"Alemania: guía de viaje offline gratis", - "pl":"Niemcy: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Deutschland: kostenloser Offline-Reiseführer", - "ru":"Германия: бесплатный оффлайновый гид" - }, - "keys":[ - "Germany_Baden-Wurttemberg", - "Germany_Bavaria", - "Germany_Berlin & Brandenburg", - "Germany_Bremen & Lower Saxony", - "Germany_Hamburg", - "Germany_Hesse", - "Germany_Mecklenburg-Vorpommern", - "Germany_North Rhine-Westphalia", - "Germany_Rhineland-Palatinate", - "Germany_Saarland", - "Germany_Saxony-Anhalt", - "Germany_Saxony", - "Germany_Schleswig-Holstein", - "Germany_Thuringia" - ] -}, -"Spain":{ - "url":"https://play.google.com/store/apps/details?id=com.guidewithme.spain", - "appId":"com.guidewithme.spain", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Spain: free offline travel guide", - "nl":"Spanje: gratis offline reisgids", - "uk":"Іспанія: безкоштовні путівники оф-лайн.", - "zh":"西班牙:免費離線旅行指南", - "cs":"Španělsko: bezplatný off-line turistický průvodce", - "fr":"Espagne: guide de voyage gratuit hors ligne", - "it":"Spagna: guida turistica gratuita offline", - "ja":"スペイン:無料オフライン旅行ガイド", - "ko":"스페인: 무료 오프라인 여행 가이드", - "pt":"Espanha: guia de viagem grátis offline", - "es":"España: guía de viaje offline gratis", - "pl":"Hiszpania: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Spanien: kostenloser Offline-Reiseführer", - "ru":"Испания: бесплатный оффлайновый гид" - }, - "keys":[ - "Spain" - ] -}, -"France":{ - "url":"https://play.google.com/store/apps/details?id=com.guidewithme.france", - "appId":"com.guidewithme.france", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"France: free offline travel guide", - "nl":"Frankrijk: gratis offline reisgids", - "uk":"Франція: безкоштовні путівники оф-лайн.", - "zh":"法國:免費離線旅行指南", - "cs":"Francie: bezplatný off-line turistický průvodce", - "fr":"France: guide de voyage gratuit hors ligne", - "it":"Francia: guida turistica gratuita offline", - "ja":"フランス:無料オフライン旅行ガイド", - "ko":"프랑스: 무료 오프라인 여행 가이드", - "pt":"França: guia de viagem grátis offline", - "es":"Francia: guía de viaje offline gratis", - "pl":"Francja: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Frankreich: kostenloser Offline-Reiseführer", - "ru":"Франция: бесплатный оффлайновый гид" - }, - "keys":[ - "France_Alsace", - "France_Aquitaine", - "France_Auvergne", - "France_Basse-Normandie", - "France_Bourgogne", - "France_Bretagne", - "France_Centre", - "France_Champagne-Ardenne", - "France_Corsica", - "France_Franche-Comte", - "France_Haute-Normandie", - "France_Languedoc-Roussillon", - "France_Limousin", - "France_Lorraine", - "France_Midi-Pyrenees", - "France_Nord-Pas-de-Calais", - "France_Paris & Ile-de-France", - "France_Pays de la Loire", - "France_Picardie", - "France_Poitou-Charentes", - "France_Provence-Alpes-Cote d'Azur", - "France_Rhone-Alpes" - ] -}, -"Italy":{ - "url":"https://play.google.com/store/apps/details?id=com.guidewithme.italy", - "appId":"com.guidewithme.italy", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Italy: free offline travel guide", - "nl":"Italië: gratis offline reisgids", - "uk":"Італія: безкоштовні путівники оф-лайн.", - "zh":"義大利:免費離線旅行指南", - "cs":"Itálie: bezplatný off-line turistický průvodce", - "fr":"Italie: guide de voyage gratuit hors ligne", - "it":"Italia: guida turistica gratuita offline", - "ja":"イタリア:無料オフライン旅行ガイド", - "ko":"이탈리아: 무료 오프라인 여행 가이드", - "pt":"Itália: guia de viagem grátis offline", - "es":"Italia: guía de viaje offline gratis", - "pl":"Włochy: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Italien: kostenloser Offline-Reiseführer", - "ru":"Италия: бесплатный оффлайновый гид" - }, - "keys":[ - "Italy" - ] -}, -"Japan":{ - "url":"https://play.google.com/store/apps/details?id=com.guidewithme.japan", - "appId":"com.guidewithme.japan", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Japan: free offline travel guide", - "nl":"Japan: gratis offline reisgids", - "uk":"Японія: безкоштовні путівники оф-лайн.", - "zh":"日本:免費離線旅行指南", - "cs":"Japonsko: bezplatný off-line turistický průvodce", - "fr":"Japon: guide de voyage gratuit hors ligne", - "it":"Giappone: guida turistica gratuita offline", - "ja":"日本:無料オフライン旅行ガイド", - "ko":"일본: 무료 오프라인 여행 가이드", - "pt":"Japão: guia de viagem grátis offline", - "es":"Japón: guía de viaje offline gratis", - "pl":"Japonia: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Japan: kostenloser Offline-Reiseführer", - "ru":"Япония: бесплатный оффлайновый гид" - }, - "keys":[ - "Japan" - ] -}, -"Greece":{ - "url":"https://play.google.com/store/apps/details?id=com.guidewithme.greece", - "appId":"com.guidewithme.greece", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Greece: free offline travel guide", - "nl":"Griekenland: gratis offline reisgids", - "uk":"Греція: безкоштовні путівники оф-лайн.", - "zh":"希臘:免費離線旅行指南", - "cs":"Řecko: bezplatný off-line turistický průvodce", - "fr":"Grèce: guide de voyage gratuit hors ligne", - "it":"Grecia: guida turistica gratuita offline", - "ja":"ギリシャ:無料オフライン旅行ガイド", - "ko":"그리스: 무료 오프라인 여행 가이드", - "pt":"Grécia: guia de viagem grátis offline", - "es":"Grecia: guía de viaje offline gratis", - "pl":"Grecja: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Griechenland: kostenloser Offline-Reiseführer", - "ru":"Греция: бесплатный оффлайновый гид" - }, - "keys":[ - "Greece" - ] -}, -"Turkey":{ - "url":"https://play.google.com/store/apps/details?id=com.guidewithme.turkey", - "appId":"com.guidewithme.turkey", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Turkey: free offline travel guide", - "nl":"Turkije: gratis offline reisgids", - "uk":"Турція: безкоштовні путівники оф-лайн.", - "zh":"土耳其:免費離線旅行指南", - "cs":"Turecko: bezplatný off-line turistický průvodce", - "fr":"Turquie: guide de voyage gratuit hors ligne", - "it":"Turchia: guida turistica gratuita offline", - "ja":"トルコ:無料オフライン旅行ガイド", - "ko":"터키: 무료 오프라인 여행 가이드", - "pt":"Turquia: guia de viagem grátis offline", - "es":"Turquía: guía de viaje offline gratis", - "pl":"Turcja: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Türkei: kostenloser Offline-Reiseführer", - "ru":"Турция: бесплатный оффлайновый гид" - }, - "keys":[ - "Turkey" - ] -}, -"Russia":{ - "url":"https://play.google.com/store/apps/details?id=com.guidewithme.russia", - "appId":"com.guidewithme.russia", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Russia: free offline travel guide", - "nl":"Rusland: gratis offline reisgids", - "uk":"Росія: безкоштовні путівники оф-лайн.", - "zh":"俄羅斯:免費離線旅行指南", - "cs":"Rusko: bezplatný off-line turistický průvodce", - "fr":"Russie: guide de voyage gratuit hors ligne", - "it":"Russia: guida turistica gratuita offline", - "ja":"ロシア:無料オフライン旅行ガイド", - "ko":"러시아: 무료 오프라인 여행 가이드", - "pt":"Rússia: guia de viagem grátis offline", - "es":"Rusia: guía de viaje offline gratis", - "pl":"Rosja: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Russland: kostenloser Offline-Reiseführer", - "ru":"Россия: бесплатный оффлайновый гид" - }, - "keys":[ - "Russia_Central", - "Russia_Far Eastern", - "Russia_North Caucasian", - "Russia_Northwestern", - "Russia_Siberian", - "Russia_Southern", - "Russia_Urals", - "Russia_Volga" - ] -}, -"Switzerland":{ - "url":"https://play.google.com/store/apps/details?id=com.guidewithme.switzerland", - "appId":"com.guidewithme.switzerland", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Switzerland: free offline travel guide", - "nl":"Zwitserland: gratis offline reisgids", - "uk":"Швейцарія: безкоштовні путівники оф-лайн.", - "zh":"瑞士:免費離線旅行指南", - "cs":"Švýcarsko: bezplatný off-line turistický průvodce", - "fr":"Suisse: guide de voyage gratuit hors ligne", - "it":"Svizzera: guida turistica gratuita offline", - "ja":"スイス:無料オフライン旅行ガイド", - "ko":"스위스: 무료 오프라인 여행 가이드", - "pt":"Suíça: guia de viagem grátis offline", - "es":"Suiza: guía de viaje offline gratis", - "pl":"Szwajcaria: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Schweiz: kostenloser Offline-Reiseführer", - "ru":"Щвейцария: бесплатный оффлайновый гид" - }, - "keys":[ - "Switzerland" - ] -} -} \ No newline at end of file diff --git a/data/ios-guides.json b/data/ios-guides.json deleted file mode 100644 index 33e33edbfb..0000000000 --- a/data/ios-guides.json +++ /dev/null @@ -1,1076 +0,0 @@ -{ - "version":5, - -"Montenegro":{ - "url":"itms-apps://itunes.apple.com/app/id892012843", - "appId":"guidewithme-montenegro://", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Montenegro: free offline travel guide", - "nl":"Montenegro: gratis offline reisgids", - "uk":"Чорногорія: безкоштовні путівники оф-лайн.", - "zh":"黑山:免費離線旅行指南", - "cs":"Černá Hora: bezplatný off-line turistický průvodce", - "fr":"Monténégro: guide de voyage gratuit hors ligne", - "it":"Montenegro: guida turistica gratuita offline", - "ja":"モンテネグロ:無料オフライン旅行ガイド", - "ko":"몬테네그로: 무료 오프라인 여행 가이드", - "pt":"Montenegro: guia de viagem grátis offline", - "es":"Montenegro: guía de viaje offline gratis", - "pl":"Czarnogóra: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Montenegro: kostenloser Offline-Reiseführer", - "ru":"Черногория: бесплатный оффлайновый гид" - }, - "keys":[ - "Montenegro" - ] -}, - -"Lithuania":{ - "url":"itms-apps://itunes.apple.com/app/id887290323", - "appId":"guidewithme-lithuania://", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Lithuania: free offline travel guide", - "nl":"Litouwen: gratis offline reisgids", - "uk":"Литва: безкоштовні путівники оф-лайн.", - "zh":"立陶宛:免費離線旅行指南", - "cs":"Litva: bezplatný off-line turistický průvodce", - "fr":"Lituanie: guide de voyage gratuit hors ligne", - "it":"Lituania: guida turistica gratuita offline", - "ja":"リトアニア:無料オフライン旅行ガイド", - "ko":"리투아니아: 무료 오프라인 여행 가이드", - "pt":"Lituânia: guia de viagem grátis offline", - "es":"Lituania: guía de viaje offline gratis", - "pl":"Litwa: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Litauen: kostenloser Offline-Reiseführer", - "ru":"Литва: бесплатный оффлайновый гид" - }, - "keys":[ - "Lithuania" - ] -}, - -"Estonia":{ - "url":"itms-apps://itunes.apple.com/app/id887285508", - "appId":"guidewithme-estonia://", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Estonia: free offline travel guide", - "nl":"Estland: gratis offline reisgids", - "uk":"Естонія: безкоштовні путівники оф-лайн.", - "zh":"愛沙尼亞:免費離線旅行指南", - "cs":"Estonsko: bezplatný off-line turistický průvodce", - "fr":"Estonie: guide de voyage gratuit hors ligne", - "it":"Estonia: guida turistica gratuita offline", - "ja":"エストニア:無料オフライン旅行ガイド", - "ko":"에스토니아: 무료 오프라인 여행 가이드", - "pt":"Estônia: guia de viagem grátis offline", - "es":"Estonia: guía de viaje offline gratis", - "pl":"Estonia: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Estland: kostenloser Offline-Reiseführer", - "ru":"Эстония: бесплатный оффлайновый гид" - }, - "keys":[ - "Estonia" - ] -}, - -"Sri Lanka":{ - "url":"itms-apps://itunes.apple.com/app/id887293220", - "appId":"guidewithme-srilanka://", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Sri Lanka: free offline travel guide", - "nl":"Sri Lanka: gratis offline reisgids", - "uk":"Шрі Ланка: безкоштовні путівники оф-лайн.", - "zh":"斯里蘭卡:免費離線旅行指南", - "cs":"Sri Lanka: bezplatný off-line turistický průvodce", - "fr":"Sri Lanka: guide de voyage gratuit hors ligne", - "it":"Sri Lanka: guida turistica gratuita offline", - "ja":"スリ·ランカ:無料オフライン旅行ガイド", - "ko":"스리랑카: 무료 오프라인 여행 가이드", - "pt":"Sri Lanka: guia de viagem grátis offline", - "es":"Sri Lanka: guía de viaje offline gratis", - "pl":"Sri Lanka: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Sri Lanka: kostenloser Offline-Reiseführer", - "ru":"Шри Ланка: бесплатный оффлайновый гид" - }, - "keys":[ - "Sri Lanka" - ] -}, - -"Hong Kong":{ - "url":"itms-apps://itunes.apple.com/app/id887297387", - "appId":"guidewithme-hongkong://", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Hong Kong: free offline travel guide", - "nl":"Hong Kong: gratis offline reisgids", - "uk":"Гонконг: безкоштовні путівники оф-лайн.", - "zh":"香港:免費離線旅行指南", - "cs":"Hongkong: bezplatný off-line turistický průvodce", - "fr":"Hong-Kong: guide de voyage gratuit hors ligne", - "it":"Hong Kong: guida turistica gratuita offline", - "ja":"香港:無料オフライン旅行ガイド", - "ko":"홍콩: 무료 오프라인 여행 가이드", - "pt":"Hong Kong: guia de viagem grátis offline", - "es":"Hong Kong: guía de viaje offline gratis", - "pl":"Hongkong: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Hongkong: kostenloser Offline-Reiseführer", - "ru":"Гонконг: бесплатный оффлайновый гид" - }, - "keys":[ - "China" - ] -}, - -"Thailand":{ - "url":"itms-apps://itunes.apple.com/app/id887297091", - "appId":"guidewithme-thailand://", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Thailand: free offline travel guide", - "nl":"Thailand: gratis offline reisgids", - "uk":"Таїланд: безкоштовні путівники оф-лайн.", - "zh":"泰國:免費離線旅行指南", - "cs":"Thajsko: bezplatný off-line turistický průvodce", - "fr":"Thaïlande: guide de voyage gratuit hors ligne", - "it":"Thailandia: guida turistica gratuita offline", - "ja":"タイ:無料オフライン旅行ガイド", - "ko":"태국: 무료 오프라인 여행 가이드", - "pt":"Tailândia: guia de viagem grátis offline", - "es":"Tailandia: guía de viaje offline gratis", - "pl":"Tajlandia: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Thailand: kostenloser Offline-Reiseführer", - "ru":"Таиланд: бесплатный оффлайновый гид" - }, - "keys":[ - "Thailand" - ] -}, - -"Taiwan":{ - "url":"itms-apps://itunes.apple.com/app/id887293876", - "appId":"guidewithme-taiwan://", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Taiwan: free offline travel guide", - "nl":"Taiwan: gratis offline reisgids", - "uk":"Тайвань: безкоштовні путівники оф-лайн.", - "zh":"台灣:免費離線旅行指南", - "cs":"Tchaj-wan: bezplatný off-line turistický průvodce", - "fr":"Taiwan: guide de voyage gratuit hors ligne", - "it":"Taiwan: guida turistica gratuita offline", - "ja":"台湾:無料オフライン旅行ガイド", - "ko":"대만: 무료 오프라인 여행 가이드", - "pt":"Taiwan: guia de viagem grátis offline", - "es":"Taiwan: guía de viaje offline gratis", - "pl":"Tajwan: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Taiwan: kostenloser Offline-Reiseführer", - "ru":"Тайвань: бесплатный оффлайновый гид" - }, - "keys":[ - "Taiwan" - ] -}, - -"Latvia":{ - "url":"itms-apps://itunes.apple.com/app/id887288685", - "appId":"guidewithme-latvia://", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Latvia: free offline travel guide", - "nl":"Letland: gratis offline reisgids", - "uk":"Латвія: безкоштовні путівники оф-лайн.", - "zh":"拉脫維亞:免費離線旅行指南", - "cs":"Lotyšsko: bezplatný off-line turistický průvodce", - "fr":"Lettonie: guide de voyage gratuit hors ligne", - "it":"Lettonia: guida turistica gratuita offline", - "ja":"ラトビア:無料オフライン旅行ガイド", - "ko":"라트비아: 무료 오프라인 여행 가이드", - "pt":"Látvia: guia de viagem grátis offline", - "es":"Letonia: guía de viaje offline gratis", - "pl":"Łotwa: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Lettland: kostenloser Offline-Reiseführer", - "ru":"Латвия: бесплатный оффлайновый гид" - }, - "keys":[ - "Latvia" - ] -}, - - -"Czech Republic":{ - "url":"itms-apps://itunes.apple.com/app/id887284914", - "appId":"guidewithme-czechrepublic://", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Czech Republic: free offline travel guide", - "nl":"Tsjechië: gratis offline reisgids", - "uk":"Чехiя: безкоштовні путівники оф-лайн.", - "zh":"捷克:免費離線旅行指南", - "cs":"Česko: bezplatný off-line turistický průvodce", - "fr":"République tchèque: guide de voyage gratuit hors ligne", - "it":"Repubblica Ceca: guida turistica gratuita offline", - "ja":"チェコ:無料オフライン旅行ガイド", - "ko":"체코: 무료 오프라인 여행 가이드", - "pt":"República Checa: guia de viagem grátis offline", - "es":"República Checa: guía de viaje offline gratis", - "pl":"Czechy: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Tschechien: kostenloser Offline-Reiseführer", - "ru":"Чехия: бесплатный оффлайновый гид" - }, - "keys":[ - "Czech Republic" - ] -}, - -"Poland":{ - "url":"itms-apps://itunes.apple.com/app/id883171693", - "appId":"guidewithme-poland://", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Poland: free offline travel guide", - "nl":"Polen: gratis offline reisgids", - "uk":"Польща: безкоштовні путівники оф-лайн.", - "zh":"波蘭:免費離線旅行指南", - "cs":"Polsko: bezplatný off-line turistický průvodce", - "fr":"Pologne: guide de voyage gratuit hors ligne", - "it":"Polonia: guida turistica gratuita offline", - "ja":"ポーランド:無料オフライン旅行ガイド", - "ko":"폴란드: 무료 오프라인 여행 가이드", - "pt":"Polônia: guia de viagem grátis offline", - "es":"Polonia: guía de viaje offline gratis", - "pl":"Polska: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Polen: kostenloser Offline-Reiseführer", - "ru":"Польша: бесплатный оффлайновый гид" - }, - "keys":[ - "Poland" - ] -}, - -"Malaysia":{ - "url":"itms-apps://itunes.apple.com/app/id887271649", - "appId":"guidewithme-malaysia://", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Malaysia: free offline travel guide", - "nl":"Maleisië: gratis offline reisgids", - "uk":"Малайзія: безкоштовні путівники оф-лайн.", - "zh":"馬來西亞:免費離線旅行指南", - "cs":"Malajsie: bezplatný off-line turistický průvodce", - "fr":"Malaisie: guide de voyage gratuit hors ligne", - "it":"Malaysia: guida turistica gratuita offline", - "ja":"マレーシア:無料オフライン旅行ガイド", - "ko":"말레이시아: 무료 오프라인 여행 가이드", - "pt":"Malásia: guia de viagem grátis offline", - "es":"Malasia: guía de viaje offline gratis", - "pl":"Malezja: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Malaysia: kostenloser Offline-Reiseführer", - "ru":"Малайзия: бесплатный оффлайновый гид" - }, - "keys":[ - "Malaysia" - ] -}, - -"Singapore":{ - "url":"itms-apps://itunes.apple.com/app/id887297283", - "appId":"guidewithme-singapore://", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Singapore: free offline travel guide", - "nl":"Singapore: gratis offline reisgids", - "uk":"Сінгапур: безкоштовні путівники оф-лайн.", - "zh":"新加坡:免費離線旅行指南", - "cs":"Singapur: bezplatný off-line turistický průvodce", - "fr":"Singapour: guide de voyage gratuit hors ligne", - "it":"Singapore: guida turistica gratuita offline", - "ja":"シンガポール:無料オフライン旅行ガイド", - "ko":"싱가포르: 무료 오프라인 여행 가이드", - "pt":"Cingapura: guia de viagem grátis offline", - "es":"Singapur: guía de viaje offline gratis", - "pl":"Singapur: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Singapur: kostenloser Offline-Reiseführer", - "ru":"Сингапур: бесплатный оффлайновый гид" - }, - "keys":[ - "Singapore" - ] -}, - -"Nepal":{ - "url":"itms-apps://itunes.apple.com/app/id885036651", - "appId":"guidewithme-nepal://", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Nepal: free offline travel guide", - "nl":"Nepal: gratis offline reisgids", - "uk":"Непал: безкоштовні путівники оф-лайн.", - "zh":"尼泊爾:免費離線旅行指南", - "cs":"Nepál: bezplatný off-line turistický průvodce", - "fr":"Népal: guide de voyage gratuit hors ligne", - "it":"Nepal: guida turistica gratuita offline", - "ja":"ネパール:無料オフライン旅行ガイド", - "ko":"네팔: 무료 오프라인 여행 가이드", - "pt":"Nepal: guia de viagem grátis offline", - "es":"Nepal: guía de viaje offline gratis", - "pl":"Nepal: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Nepal: kostenloser Offline-Reiseführer", - "ru":"Непал: бесплатный оффлайновый гид" - }, - "keys":[ - "Nepal" - ] -}, - - "New Zealand":{ - "url":"itms-apps://itunes.apple.com/app/id779605195", - "appId":"guidewithme-newzealand://", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"New Zealand: free offline travel guide", - "nl":"Nieuw Zeeland: gratis offline reisgids", - "uk":"Нова Зеландія: безкоштовні путівники оф-лайн.", - "zh":"新西蘭:免費離線旅行指南", - "cs":"Nový Zéland: bezplatný off-line turistický průvodce", - "fr":"Nouvelle Zélande: guide de voyage gratuit hors ligne", - "it":"Nuova Zelanda: guida turistica gratuita offline", - "ja":"ニュージーランド:無料オフライン旅行ガイド", - "ko":"뉴질랜드: 무료 오프라인 여행 가이드", - "pt":"Nova Zelândia: guia de viagem grátis offline", - "es":"Nueva Zelanda: guía de viaje offline gratis", - "pl":"Nowa Zelandia: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Neuseeland: kostenloser Offline-Reiseführer", - "ru":"Новая Зеландия: бесплатный оффлайновый гид" - }, - "keys":[ - "New Zealand" - ] - }, - "UK":{ - "url":"itms-apps://itunes.apple.com/app/id687855665", - "appId":"guidewithme-uk://", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"United Kingdom: free offline travel guide", - "nl":"VK: gratis offline reisgids", - "uk":"Великобританія: безкоштовні путівники оф-лайн.", - "zh":"英國:免費離線旅行指南", - "cs":"Spojené království: bezplatný off-line turistický průvodce", - "fr":"RU: guide de voyage gratuit hors ligne", - "it":"Regno Unito: guida turistica gratuita offline", - "ja":"イギリス:無料オフライン旅行ガイド", - "ko":"영국: 무료 오프라인 여행 가이드", - "pt":"UK: guia de viagem grátis offline", - "es":"Reino Unido: guía de viaje offline gratis", - "pl":"Wielka Brytania: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Großbritannien: kostenloser Offline-Reiseführer", - "ru":"Великобритания: бесплатный оффлайновый гид" - }, - "keys":[ - "UK_England", - "UK_Northern Ireland", - "UK_Scotland", - "UK_Wales" - ] - }, - "California":{ - "url":"itms-apps://itunes.apple.com/app/id724594863", - "appId":"guidewithme-california://", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"California: free offline travel guide", - "nl":"Californië: gratis offline reisgids", - "uk":"Каліфорнія: безкоштовні путівники оф-лайн.", - "zh":"加州:免費離線旅行指南", - "cs":"Kalifornie: bezplatný off-line turistický průvodce", - "fr":"Californie: guide de voyage gratuit hors ligne", - "it":"California: guida turistica gratuita offline", - "ja":"カリフォルニア:無料オフライン旅行ガイド", - "ko":"캘리포니아: 무료 오프라인 여행 가이드", - "pt":"Califórnia: guia de viagem grátis offline", - "es":"California: guía de viaje offline gratis", - "pl":"Kalifornia: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Kalifornien: kostenloser Offline-Reiseführer", - "ru":"Калифорния: бесплатный оффлайновый гид" - }, - "keys":[ - "USA_California" - ] - }, - "Hawaii":{ - "url":"itms-apps://itunes.apple.com/app/id724472992", - "appId":"guidewithme-hawaii://", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Hawaii: free offline travel guide", - "nl":"Hawaii: gratis offline reisgids", - "uk":"Гаваї: безкоштовні путівники оф-лайн.", - "zh":"夏威夷:免費離線旅行指南", - "cs":"Havaj: bezplatný off-line turistický průvodce", - "fr":"Hawaï: guide de voyage gratuit hors ligne", - "it":"Hawaii: guida turistica gratuita offline", - "ja":"ハワイ:無料オフライン旅行ガイド", - "ko":"하와이: 무료 오프라인 여행 가이드", - "pt":"Havai: guia de viagem grátis offline", - "es":"Hawái: guía de viaje offline gratis", - "pl":"Hawaje: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Hawaii: kostenloser Offline-Reiseführer", - "ru":"Гаваи: бесплатный оффлайновый гид" - }, - "keys":[ - "USA_Hawaii" - ] - }, - "Germany":{ - "url":"itms-apps://itunes.apple.com/app/id724593901", - "appId":"guidewithme-germany://", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Germany: free offline travel guide", - "nl":"Duitsland: gratis offline reisgids", - "uk":"Німеччина: безкоштовні путівники оф-лайн.", - "zh":"德國:免費離線旅行指南", - "cs":"Německo: bezplatný off-line turistický průvodce", - "fr":"Allemagne: guide de voyage gratuit hors ligne", - "it":"Germania: guida turistica gratuita offline", - "ja":"ドイツ:無料オフライン旅行ガイド", - "ko":"독일: 무료 오프라인 여행 가이드", - "pt":"Alemanha: guia de viagem grátis offline", - "es":"Alemania: guía de viaje offline gratis", - "pl":"Niemcy: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Deutschland: kostenloser Offline-Reiseführer", - "ru":"Германия: бесплатный оффлайновый гид" - }, - "keys":[ - "Germany_Baden-Wurttemberg", - "Germany_Bavaria", - "Germany_Berlin & Brandenburg", - "Germany_Bremen & Lower Saxony", - "Germany_Hamburg", - "Germany_Hesse", - "Germany_Mecklenburg-Vorpommern", - "Germany_North Rhine-Westphalia", - "Germany_Rhineland-Palatinate", - "Germany_Saarland", - "Germany_Saxony-Anhalt", - "Germany_Saxony", - "Germany_Schleswig-Holstein", - "Germany_Thuringia" - ] - }, - "Spain":{ - "url":"itms-apps://itunes.apple.com/app/id724594061", - "appId":"guidewithme-spain://", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Spain: free offline travel guide", - "nl":"Spanje: gratis offline reisgids", - "uk":"Іспанія: безкоштовні путівники оф-лайн.", - "zh":"西班牙:免費離線旅行指南", - "cs":"Španělsko: bezplatný off-line turistický průvodce", - "fr":"Espagne: guide de voyage gratuit hors ligne", - "it":"Spagna: guida turistica gratuita offline", - "ja":"スペイン:無料オフライン旅行ガイド", - "ko":"스페인: 무료 오프라인 여행 가이드", - "pt":"Espanha: guia de viagem grátis offline", - "es":"España: guía de viaje offline gratis", - "pl":"Hiszpania: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Spanien: kostenloser Offline-Reiseführer", - "ru":"Испания: бесплатный оффлайновый гид" - }, - "keys":[ - "Spain" - ] - }, - "France":{ - "url":"itms-apps://itunes.apple.com/app/id724594006", - "appId":"guidewithme-france://", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"France: free offline travel guide", - "nl":"Frankrijk: gratis offline reisgids", - "uk":"Франція: безкоштовні путівники оф-лайн.", - "zh":"法國:免費離線旅行指南", - "cs":"Francie: bezplatný off-line turistický průvodce", - "fr":"France: guide de voyage gratuit hors ligne", - "it":"Francia: guida turistica gratuita offline", - "ja":"フランス:無料オフライン旅行ガイド", - "ko":"프랑스: 무료 오프라인 여행 가이드", - "pt":"França: guia de viagem grátis offline", - "es":"Francia: guía de viaje offline gratis", - "pl":"Francja: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Frankreich: kostenloser Offline-Reiseführer", - "ru":"Франция: бесплатный оффлайновый гид" - }, - "keys":[ - "France_Alsace", - "France_Aquitaine", - "France_Auvergne", - "France_Basse-Normandie", - "France_Bourgogne", - "France_Bretagne", - "France_Centre", - "France_Champagne-Ardenne", - "France_Corsica", - "France_Franche-Comte", - "France_Haute-Normandie", - "France_Languedoc-Roussillon", - "France_Limousin", - "France_Lorraine", - "France_Midi-Pyrenees", - "France_Nord-Pas-de-Calais", - "France_Paris & Ile-de-France", - "France_Pays de la Loire", - "France_Picardie", - "France_Poitou-Charentes", - "France_Provence-Alpes-Cote d'Azur", - "France_Rhone-Alpes" - ] - }, - "Italy":{ - "url":"itms-apps://itunes.apple.com/app/id724594098", - "appId":"guidewithme-italy://", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Italy: free offline travel guide", - "nl":"Italië: gratis offline reisgids", - "uk":"Італія: безкоштовні путівники оф-лайн.", - "zh":"義大利:免費離線旅行指南", - "cs":"Itálie: bezplatný off-line turistický průvodce", - "fr":"Italie: guide de voyage gratuit hors ligne", - "it":"Italia: guida turistica gratuita offline", - "ja":"イタリア:無料オフライン旅行ガイド", - "ko":"이탈리아: 무료 오프라인 여행 가이드", - "pt":"Itália: guia de viagem grátis offline", - "es":"Italia: guía de viaje offline gratis", - "pl":"Włochy: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Italien: kostenloser Offline-Reiseführer", - "ru":"Италия: бесплатный оффлайновый гид" - }, - "keys":[ - "Italy" - ] - }, - "Japan":{ - "url":"itms-apps://itunes.apple.com/app/id724594705", - "appId":"guidewithme-japan://", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Japan: free offline travel guide", - "nl":"Japan: gratis offline reisgids", - "uk":"Японія: безкоштовні путівники оф-лайн.", - "zh":"日本:免費離線旅行指南", - "cs":"Japonsko: bezplatný off-line turistický průvodce", - "fr":"Japon: guide de voyage gratuit hors ligne", - "it":"Giappone: guida turistica gratuita offline", - "ja":"日本:無料オフライン旅行ガイド", - "ko":"일본: 무료 오프라인 여행 가이드", - "pt":"Japão: guia de viagem grátis offline", - "es":"Japón: guía de viaje offline gratis", - "pl":"Japonia: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Japan: kostenloser Offline-Reiseführer", - "ru":"Япония: бесплатный оффлайновый гид" - }, - "keys":[ - "Japan" - ] - }, - "Greece":{ - "url":"itms-apps://itunes.apple.com/app/id724594136", - "appId":"guidewithme-greece://", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Greece: free offline travel guide", - "nl":"Griekenland: gratis offline reisgids", - "uk":"Греція: безкоштовні путівники оф-лайн.", - "zh":"希臘:免費離線旅行指南", - "cs":"Řecko: bezplatný off-line turistický průvodce", - "fr":"Grèce: guide de voyage gratuit hors ligne", - "it":"Grecia: guida turistica gratuita offline", - "ja":"ギリシャ:無料オフライン旅行ガイド", - "ko":"그리스: 무료 오프라인 여행 가이드", - "pt":"Grécia: guia de viagem grátis offline", - "es":"Grecia: guía de viaje offline gratis", - "pl":"Grecja: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Griechenland: kostenloser Offline-Reiseführer", - "ru":"Греция: бесплатный оффлайновый гид" - }, - "keys":[ - "Greece" - ] - }, - "Turkey":{ - "url":"itms-apps://itunes.apple.com/app/id724594189", - "appId":"guidewithme-turkey://", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Turkey: free offline travel guide", - "nl":"Turkije: gratis offline reisgids", - "uk":"Турція: безкоштовні путівники оф-лайн.", - "zh":"土耳其:免費離線旅行指南", - "cs":"Turecko: bezplatný off-line turistický průvodce", - "fr":"Turquie: guide de voyage gratuit hors ligne", - "it":"Turchia: guida turistica gratuita offline", - "ja":"トルコ:無料オフライン旅行ガイド", - "ko":"터키: 무료 오프라인 여행 가이드", - "pt":"Turquia: guia de viagem grátis offline", - "es":"Turquía: guía de viaje offline gratis", - "pl":"Turcja: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Türkei: kostenloser Offline-Reiseführer", - "ru":"Турция: бесплатный оффлайновый гид" - }, - "keys":[ - "Turkey" - ] - }, - "Russia":{ - "url":"itms-apps://itunes.apple.com/app/id724594774", - "appId":"guidewithme-russia://", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Russia: free offline travel guide", - "nl":"Rusland: gratis offline reisgids", - "uk":"Росія: безкоштовні путівники оф-лайн.", - "zh":"俄羅斯:免費離線旅行指南", - "cs":"Rusko: bezplatný off-line turistický průvodce", - "fr":"Russie: guide de voyage gratuit hors ligne", - "it":"Russia: guida turistica gratuita offline", - "ja":"ロシア:無料オフライン旅行ガイド", - "ko":"러시아: 무료 오프라인 여행 가이드", - "pt":"Rússia: guia de viagem grátis offline", - "es":"Rusia: guía de viaje offline gratis", - "pl":"Rosja: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Russland: kostenloser Offline-Reiseführer", - "ru":"Россия: бесплатный оффлайновый гид" - }, - "keys":[ - "Russia_Central", - "Russia_Far Eastern", - "Russia_North Caucasian", - "Russia_Northwestern", - "Russia_Siberian", - "Russia_Southern", - "Russia_Urals", - "Russia_Volga" - ] - }, - "Switzerland":{ - "url":"itms-apps://itunes.apple.com/app/id724594431", - "appId":"guidewithme-switzerland://", - "adTitles":{ - "en":"Go to Travel Guide", - "nl":"Ga naar Reisgids", - "uk":"Обирайте путівник", - "zh":"常備旅行指南", - "cs":"Přejděte k cestovnímu průvodci", - "fr":"Aller au guide de voyage", - "it":"Vai alla guida turistica", - "ja":"旅行ガイドに進む", - "ko":"여행 가이드로 이동", - "pt":"Ir para Guia de Viagem", - "es":"Ir a la guía de viaje", - "pl":"Przejdź do przewodnika turystycznego", - "de":"Besuchen Sie Travel Guide", - "ru":"Перейти к путеводителю" - }, - "adMessages":{ - "en":"Switzerland: free offline travel guide", - "nl":"Zwitserland: gratis offline reisgids", - "uk":"Швейцарія: безкоштовні путівники оф-лайн.", - "zh":"瑞士:免費離線旅行指南", - "cs":"Švýcarsko: bezplatný off-line turistický průvodce", - "fr":"Suisse: guide de voyage gratuit hors ligne", - "it":"Svizzera: guida turistica gratuita offline", - "ja":"スイス:無料オフライン旅行ガイド", - "ko":"스위스: 무료 오프라인 여행 가이드", - "pt":"Suíça: guia de viagem grátis offline", - "es":"Suiza: guía de viaje offline gratis", - "pl":"Szwajcaria: bezpłatny przewodnik turystyczny dostępny w trybie offline", - "de":"Schweiz: kostenloser Offline-Reiseführer", - "ru":"Швейцария: бесплатный оффлайновый гид" - }, - "keys":[ - "Switzerland" - ] - } -} \ No newline at end of file diff --git a/defines.hpp b/defines.hpp index f051d8b5fa..94df0536e9 100644 --- a/defines.hpp +++ b/defines.hpp @@ -30,7 +30,6 @@ #define ROUTING_FILE_EXTENSION ".routing" #define COUNTRIES_FILE "countries.txt" -#define GUIDES_DATA_FILE_SUFFIX "guides.json" #define WORLD_FILE_NAME "World" #define WORLD_COASTS_FILE_NAME "WorldCoasts" diff --git a/iphone/Maps/ActiveMapsVC.mm b/iphone/Maps/ActiveMapsVC.mm index d54856dd62..87d9b8bb27 100644 --- a/iphone/Maps/ActiveMapsVC.mm +++ b/iphone/Maps/ActiveMapsVC.mm @@ -120,17 +120,6 @@ return [NSString stringWithUTF8String:self.mapsLayout.GetCountryName(self.selectedGroup, self.selectedPosition).c_str()]; } -- (NSString *)selectedMapGuideName -{ - guides::GuideInfo info; - if (self.mapsLayout.GetGuideInfo(self.selectedGroup, self.selectedPosition, info)) - { - string const lang = languages::GetCurrentNorm(); - return [NSString stringWithUTF8String:info.GetAdTitle(lang).c_str()]; - } - return nil; -} - - (size_t)selectedMapSizeWithOptions:(storage::TMapOptions)options { return self.mapsLayout.GetCountrySize(self.selectedGroup, self.selectedPosition, options).second; @@ -172,12 +161,6 @@ [[Statistics instance] logEvent:@"Show Map From Download Countries Screen"]; [self.navigationController popToRootViewControllerAnimated:YES]; break; - - case DownloaderActionShowGuide: - guides::GuideInfo info; - if (self.mapsLayout.GetGuideInfo(self.selectedGroup, self.selectedPosition, info)) - [self openGuideWithInfo:info]; - break; } } diff --git a/iphone/Maps/Categories/UIKitCategories.h b/iphone/Maps/Categories/UIKitCategories.h index cae9d056f6..3eb79bf20c 100644 --- a/iphone/Maps/Categories/UIKitCategories.h +++ b/iphone/Maps/Categories/UIKitCategories.h @@ -50,7 +50,6 @@ @interface UIApplication (URLs) - (void)rateVersionFrom:(NSString *)launchPlaceName; -- (void)openGuideWithName:(NSString *)guideName itunesURL:(NSString *)itunesURL; @end diff --git a/iphone/Maps/Categories/UIKitCategories.m b/iphone/Maps/Categories/UIKitCategories.m index ae56c075f8..32bfc9a0c6 100644 --- a/iphone/Maps/Categories/UIKitCategories.m +++ b/iphone/Maps/Categories/UIKitCategories.m @@ -186,16 +186,6 @@ [self openURL:[NSURL URLWithString:urlString]]; } -- (void)openGuideWithName:(NSString *)guideName itunesURL:(NSString *)itunesURL -{ - NSString * guide = [[guideName stringByReplacingOccurrencesOfString:@" " withString:@""] lowercaseString]; - NSURL * url = [NSURL URLWithString:[NSString stringWithFormat:@"guidewithme-%@://", guide]]; - if ([self canOpenURL:url]) - [self openURL:url]; - else - [self openURL:[NSURL URLWithString:itunesURL]]; -} - @end diff --git a/iphone/Maps/Classes/InterstitialView.h b/iphone/Maps/Classes/InterstitialView.h deleted file mode 100644 index 87995b8fc9..0000000000 --- a/iphone/Maps/Classes/InterstitialView.h +++ /dev/null @@ -1,27 +0,0 @@ - -#import - -typedef NS_ENUM(NSUInteger, InterstitialViewResult) { - InterstitialViewResultDismissed, - InterstitialViewResultClicked -}; - -@class InterstitialView; -@protocol InterstitialViewDelegate - -- (void)interstitialView:(InterstitialView *)interstitial didCloseWithResult:(InterstitialViewResult)result; -- (void)interstitialViewWillOpen:(InterstitialView *)interstitial; - -@end - -@interface InterstitialView : UIView - -@property (nonatomic, weak, readonly) id delegate; -@property (nonatomic, readonly) NSString * inAppMessageName; -@property (nonatomic, readonly) NSString * imageType; - -// Portrait, Landscape -- (instancetype)initWithImages:(NSArray *)images inAppMessageName:(NSString *)messageName imageType:(NSString *)imageType delegate:(id )delegate; -- (void)show; - -@end \ No newline at end of file diff --git a/iphone/Maps/Classes/InterstitialView.mm b/iphone/Maps/Classes/InterstitialView.mm deleted file mode 100644 index e0bc63d3b7..0000000000 --- a/iphone/Maps/Classes/InterstitialView.mm +++ /dev/null @@ -1,179 +0,0 @@ - -#import "InterstitialView.h" -#import "UIKitCategories.h" -#import "NavigationController.h" - -@interface InterstitialView () - -@property (nonatomic) UIView * fadeView; -@property (nonatomic) UIView * contentView; - -@property (nonatomic, weak) id delegate; -@property (nonatomic) NSString * inAppMessageName; -@property (nonatomic) NSString * imageType; -@property (nonatomic) UIImageView * portraitImageView; -@property (nonatomic) UIImageView * landscapeImageView; - -@end - -@implementation InterstitialView - -- (instancetype)initWithImages:(NSArray *)images inAppMessageName:(NSString *)messageName imageType:(NSString *)imageType delegate:(id)delegate -{ - self = [super initWithFrame:[self viewWindow].bounds]; - - if (IPAD && [images count] != 2) - return self; - if (!IPAD && [images count] != 1) - return self; - - self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; - - UIView * fadeView = [[UIView alloc] initWithFrame:self.bounds]; - fadeView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.8]; - fadeView.alpha = 0; - fadeView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; - [self addSubview:fadeView]; - self.fadeView = fadeView; - - UIView * contentView = [[UIView alloc] initWithFrame:self.bounds]; - contentView.minY = self.height; - contentView.midX = self.width / 2; - contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; - [self addSubview:contentView]; - self.contentView = contentView; - - UIImage * portraitImage = images[0]; - UIImageView * portraitImageView = [[UIImageView alloc] initWithImage:portraitImage]; - portraitImageView.userInteractionEnabled = YES; - UITapGestureRecognizer * tap1 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)]; - [portraitImageView addGestureRecognizer:tap1]; - portraitImageView.center = CGPointMake(self.contentView.width / 2, self.contentView.height / 2); - [self.contentView addSubview:portraitImageView]; - self.portraitImageView = portraitImageView; - - if (IPAD) - { - UIImage * landscapeImage = images[1]; - UIImageView * landscapeImageView = [[UIImageView alloc] initWithImage:landscapeImage]; - landscapeImageView.userInteractionEnabled = YES; - UITapGestureRecognizer * tap2 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)]; - [landscapeImageView addGestureRecognizer:tap2]; - [self.contentView addSubview:landscapeImageView]; - self.landscapeImageView = landscapeImageView; - } - - self.inAppMessageName = messageName; - self.imageType = imageType; - self.delegate = delegate; - - UIButton * closeButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, self.width, 70)]; - closeButton.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin; - [closeButton addTarget:self action:@selector(closeButtonPressed:) forControlEvents:UIControlEventTouchUpInside]; - [self.contentView addSubview:closeButton]; - - [self updateAnimated:NO]; - - return self; -} - -- (void)layoutSubviews -{ - [self updateAnimated:YES]; -} - -- (void)updateAnimated:(BOOL)animated -{ - if (IPAD) - { - BOOL portrait = self.width < self.height; - UIImageView * currentImageView = portrait ? self.portraitImageView : self.landscapeImageView; - UIImageView * prevImageView = portrait ? self.landscapeImageView : self.portraitImageView; - - CGFloat scale = MIN(1, MIN(self.height / currentImageView.height, self.width / currentImageView.width)); - [UIView animateWithDuration:(animated ? 0.3 : 0) delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{ - currentImageView.transform = CGAffineTransformMakeScale(scale, scale); - currentImageView.center = CGPointMake(self.contentView.width / 2, self.contentView.height / 2); - prevImageView.alpha = 0; - currentImageView.alpha = 1; - } completion:^(BOOL finished) {}]; - } -} - -- (void)tap:(id)sender -{ - [self closeWithResult:InterstitialViewResultClicked]; -} - -- (void)closeButtonPressed:(id)sender -{ - [self closeWithResult:InterstitialViewResultDismissed]; -} - -- (UIView *)viewWindow -{ - UIWindow * window = [[UIApplication sharedApplication].windows firstObject]; - // we do this because on iPhone messages are only in portrait mode - return IPAD ? [window.subviews firstObject] : window; -} - -- (void)show -{ - UIWindow * window = [[UIApplication sharedApplication].windows firstObject]; - NavigationController * vc = (NavigationController *)window.rootViewController; - if (!IPAD && !UIInterfaceOrientationIsPortrait(vc.interfaceOrientation)) - return; - - if (!IPAD) - [self blockRotation:YES]; - - UIView * view = [self viewWindow]; - for (UIView * subview in view.subviews) - { - if ([subview isKindOfClass:[self class]]) - [subview removeFromSuperview]; - } - [view addSubview:self]; - [view endEditing:YES]; - [self.delegate interstitialViewWillOpen:self]; - if ([UIView respondsToSelector:@selector(animateWithDuration:delay:usingSpringWithDamping:initialSpringVelocity:options:animations:completion:)]) - { - [UIView animateWithDuration:0.5 delay:0 usingSpringWithDamping:1 initialSpringVelocity:0.2 options:UIViewAnimationOptionCurveEaseInOut animations:^{ - self.fadeView.alpha = 1; - self.contentView.midY = self.height / 2; - } completion:^(BOOL finished){}]; - } - else - { - [UIView animateWithDuration:0.4 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{ - self.fadeView.alpha = 1; - self.contentView.midY = self.height / 2; - } completion:^(BOOL finished){}]; - } -} - -- (void)closeWithResult:(InterstitialViewResult)result -{ - [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{ - self.fadeView.alpha = 0; - self.contentView.minY = self.height; - } completion:^(BOOL finished){ - [self.delegate interstitialView:self didCloseWithResult:result]; - [self removeFromSuperview]; - [self blockRotation:NO]; - }]; -} - -- (void)blockRotation:(BOOL)block -{ - UIWindow * window = [[UIApplication sharedApplication].windows firstObject]; - NavigationController * vc = (NavigationController *)window.rootViewController; - vc.autorotate = !block; -} - -- (void)dealloc -{ - [self blockRotation:NO]; -} - -@end diff --git a/iphone/Maps/Classes/MapViewController.mm b/iphone/Maps/Classes/MapViewController.mm index 3b87d791ad..2b78751159 100644 --- a/iphone/Maps/Classes/MapViewController.mm +++ b/iphone/Maps/Classes/MapViewController.mm @@ -6,8 +6,6 @@ #import "UIViewController+Navigation.h" #import "ShareActionSheet.h" #import "AppInfo.h" -//#import "InterstitialView.h" -#import "MoreAppsVC.h" #import "ContainerView.h" #import "ToolbarView.h" #import "SelectSetVC.h" diff --git a/iphone/Maps/Classes/MapsAppDelegate.mm b/iphone/Maps/Classes/MapsAppDelegate.mm index 45a307279f..34b22e362a 100644 --- a/iphone/Maps/Classes/MapsAppDelegate.mm +++ b/iphone/Maps/Classes/MapsAppDelegate.mm @@ -23,8 +23,6 @@ NSString * const MapsStatusChangedNotification = @"MapsStatusChangedNotification"; -#define NOTIFICATION_ALERT_VIEW_TAG 665 - /// Adds needed localized strings to C++ code /// @TODO Refactor localization mechanism to make it simpler void InitLocalizedStrings() @@ -52,12 +50,6 @@ void InitLocalizedStrings() f.AddString("routing_failed_internal_error", [L(@"routing_failed_internal_error") UTF8String]); } -@interface MapsAppDelegate() - -@property (nonatomic) NSString * lastGuidesUrl; - -@end - @implementation MapsAppDelegate { NSString * m_geoURL; @@ -368,18 +360,7 @@ void InitLocalizedStrings() - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { - NSDictionary * dict = notification.userInfo; - if ([[dict objectForKey:@"Proposal"] isEqual:@"OpenGuides"]) - { - self.lastGuidesUrl = [dict objectForKey:@"GuideUrl"]; - UIAlertView * view = [[UIAlertView alloc] initWithTitle:[dict objectForKey:@"GuideTitle"] message:[dict objectForKey:@"GuideMessage"] delegate:self cancelButtonTitle:L(@"later") otherButtonTitles:L(@"get_it_now"), nil]; - view.tag = NOTIFICATION_ALERT_VIEW_TAG; - [view show]; - } - else - { - [[LocalNotificationManager sharedManager] processNotification:notification onLaunch:NO]; - } + [[LocalNotificationManager sharedManager] processNotification:notification onLaunch:NO]; } // We don't support HandleOpenUrl as it's deprecated from iOS 4.2 @@ -438,19 +419,7 @@ void InitLocalizedStrings() - (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex { - if (alertView.tag == NOTIFICATION_ALERT_VIEW_TAG) - { - if (buttonIndex != alertView.cancelButtonIndex) - { - [[Statistics instance] logEvent:@"Download Guides Proposal" withParameters:@{@"Answer" : @"YES"}]; - NSURL * url = [NSURL URLWithString:self.lastGuidesUrl]; - [[UIApplication sharedApplication] openURL:url]; - } - else - [[Statistics instance] logEvent:@"Download Guides Proposal" withParameters:@{@"Answer" : @"NO"}]; - } - else - m_loadingAlertView = nil; + m_loadingAlertView = nil; } - (void)showMap diff --git a/iphone/Maps/Classes/MoreAppsCell.h b/iphone/Maps/Classes/MoreAppsCell.h deleted file mode 100644 index 85e8f1c7a0..0000000000 --- a/iphone/Maps/Classes/MoreAppsCell.h +++ /dev/null @@ -1,8 +0,0 @@ - -#import - -@interface MoreAppsCell : UITableViewCell - -- (void)setFree:(BOOL)free; - -@end diff --git a/iphone/Maps/Classes/MoreAppsCell.m b/iphone/Maps/Classes/MoreAppsCell.m deleted file mode 100644 index b2f5d3a0bc..0000000000 --- a/iphone/Maps/Classes/MoreAppsCell.m +++ /dev/null @@ -1,53 +0,0 @@ - -#import "MoreAppsCell.h" -#import "UIKitCategories.h" - -@interface MoreAppsCell () - -@property (nonatomic) UIButton * priceButton; - -@end - -@implementation MoreAppsCell - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier -{ - self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; - - [self.contentView addSubview:self.priceButton]; - - return self; -} - -- (void)layoutSubviews -{ - [super layoutSubviews]; - self.priceButton.midY = self.height / 2; - self.priceButton.maxX = self.width - 10; -} - -- (void)setFree:(BOOL)free -{ - NSString * title = free ? L(@"free") : L(@"buy"); - title = [title uppercaseString]; - self.priceButton.width = [title sizeWithDrawSize:CGSizeMake(100, self.priceButton.height) font:self.priceButton.titleLabel.font].width + 18; - [self.priceButton setTitle:title forState:UIControlStateNormal]; -} - -- (UIButton *)priceButton -{ - if (!_priceButton) - { - UIImage * image = [[UIImage imageNamed:@"PriceButton"] resizableImageWithCapInsets:UIEdgeInsetsMake(4, 4, 4, 4)]; - _priceButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 0, 26)]; - _priceButton.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin; - _priceButton.titleLabel.font = [UIFont fontWithName:@"HelveticaNeue-Medium" size:12.5]; - _priceButton.userInteractionEnabled = NO; - _priceButton.contentEdgeInsets = UIEdgeInsetsMake(0, 1, 0, 0); - [_priceButton setBackgroundImage:image forState:UIControlStateNormal]; - [_priceButton setTitleColor:[UIColor colorWithColorCode:@"007aff"] forState:UIControlStateNormal]; - } - return _priceButton; -} - -@end diff --git a/iphone/Maps/Classes/MoreAppsVC.h b/iphone/Maps/Classes/MoreAppsVC.h deleted file mode 100644 index 23252a1f79..0000000000 --- a/iphone/Maps/Classes/MoreAppsVC.h +++ /dev/null @@ -1,7 +0,0 @@ - -#import -#import "ViewController.h" - -@interface MoreAppsVC : ViewController - -@end diff --git a/iphone/Maps/Classes/MoreAppsVC.mm b/iphone/Maps/Classes/MoreAppsVC.mm deleted file mode 100644 index 2bf384ae50..0000000000 --- a/iphone/Maps/Classes/MoreAppsVC.mm +++ /dev/null @@ -1,228 +0,0 @@ - -#import "MoreAppsVC.h" -#include "../../platform/platform.hpp" -#include "Framework.h" -#import "MoreAppsCell.h" -#import "UIKitCategories.h" -#import -#import "AppInfo.h" -#import "Statistics.h" - -@interface MoreAppsVC () - -@property (nonatomic) UITableView * tableView; -@property (nonatomic) NSArray * guideRegions; -@property (nonatomic) NSArray * data; -@property (nonatomic) ADBannerView * bannerView; - -@end - -NSString * TitleGuides; -NSString * TitleAds; - -using namespace::storage; - -@implementation MoreAppsVC - -- (void)viewDidLoad -{ - [super viewDidLoad]; - - self.title = L(@"more_apps_guides"); - - guides::GuidesManager & manager = GetFramework().GetGuidesManager(); - NSString * JSONPath = [NSString stringWithUTF8String:manager.GetDataFileFullPath().c_str()]; - NSData * JSONData = [NSData dataWithContentsOfFile:JSONPath]; - if (!JSONData) - { - JSONPath = [[NSBundle mainBundle] pathForResource:@"ios-guides" ofType:@"json"]; - JSONData = [NSData dataWithContentsOfFile:JSONPath]; - } - NSDictionary * JSON = [NSJSONSerialization JSONObjectWithData:JSONData options:NSJSONReadingMutableContainers error:nil]; - NSMutableArray * guideRegions = [[NSMutableArray alloc] init]; - for (NSString * key in [JSON allKeys]) - { - if ([key isEqualToString:@"version"]) - continue; - NSDictionary * guide = JSON[key]; - NSString * language = [[NSLocale preferredLanguages] firstObject]; - NSString * message = guide[@"adMessages"][language]; - if (!message) - message = guide[@"adMessages"][@"en"]; - NSString * country = [[message componentsSeparatedByString:@":"] firstObject]; - - NSDictionary * info = @{@"Country" : country, @"URI" : guide[@"url"], @"GuideName" : key}; - [guideRegions addObject:info]; - } - self.guideRegions = [guideRegions sortedArrayUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"Country" ascending:YES]]]; - - TitleGuides = L(@"more_apps_guides"); - TitleAds = L(@"more_apps_ads"); - - [self updateData]; - - [self.view addSubview:self.tableView]; - - [[Statistics instance] logEvent:@"MoreApps screen launched"]; -} - -- (void)updateData -{ - NSMutableArray * mData = [[NSMutableArray alloc] init]; - - [mData addObject:TitleGuides]; - - if ([[AppInfo sharedInfo] featureAvailable:AppFeatureMoreAppsBanner]) - { - if (self.bannerView.isBannerLoaded) - [mData addObject:TitleAds]; - } - - self.data = mData; -} - -- (UIImage *)iconImageWithImage:(UIImage *)image -{ - CGRect rect = CGRectMake(0, 0, image.size.width, image.size.height); - UIGraphicsBeginImageContextWithOptions(rect.size, NO, [UIScreen mainScreen].scale); - [[UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:6.5] addClip]; - [image drawInRect:rect]; - UIImage * iconImage = UIGraphicsGetImageFromCurrentImageContext(); - UIGraphicsEndImageContext(); - - return iconImage; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath -{ - NSString * title = self.data[indexPath.section]; - if ([title isEqualToString:TitleGuides]) - { - MoreAppsCell * cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"]; - if (!cell) - cell = [[MoreAppsCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"]; - - if ([title isEqualToString:TitleGuides]) - { - NSDictionary * guide = self.guideRegions[indexPath.row]; - cell.textLabel.text = guide[@"Country"]; - NSString * imageName = [[guide[@"GuideName"] stringByReplacingOccurrencesOfString:@" " withString:@""] lowercaseString]; - cell.imageView.image = [self iconImageWithImage:[UIImage imageNamed:imageName]]; - [cell setFree:YES]; - } - return cell; - } - else if ([title isEqualToString:TitleAds]) - { - UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"iAdCell"]; - if (!cell) - { - cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"iAdCell"]; - self.bannerView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin; - [cell.contentView addSubview:self.bannerView]; - } - self.bannerView.midX = cell.width / 2; - return cell; - } - return nil; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath -{ - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - NSString * title = self.data[indexPath.section]; - if ([title isEqualToString:TitleGuides]) - { - [[Statistics instance] logEvent:@"MoreApps guide clicked" withParameters:@{@"Guide" : self.guideRegions[indexPath.row][@"GuideName"]}]; - NSDictionary * guide = self.guideRegions[indexPath.row]; - [[UIApplication sharedApplication] openGuideWithName:guide[@"GuideName"] itunesURL:guide[@"URI"]]; - } -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section -{ - NSString * title = self.data[section]; - if ([title isEqualToString:TitleGuides]) - return [self.guideRegions count]; - else if ([title isEqualToString:TitleAds]) - return 1; - return 0; -} - -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView -{ - return [self.data count]; -} - -- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section -{ - return self.data[section]; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath -{ - NSString * title = self.data[indexPath.section]; - if ([title isEqualToString:TitleGuides]) - return 44; - else - return self.bannerView.height; -} - -- (void)bannerViewDidLoadAd:(ADBannerView *)banner -{ - NSInteger section = [self.data indexOfObject:TitleAds]; - [self updateData]; - if (section == NSNotFound) - { - section = [self.data indexOfObject:TitleAds]; - [self.tableView insertSections:[NSIndexSet indexSetWithIndex:section] withRowAnimation:UITableViewRowAnimationAutomatic]; - } -} - -- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error -{ - NSInteger section = [self.data indexOfObject:TitleAds]; - [self updateData]; - if (section != NSNotFound) - [self.tableView deleteSections:[NSIndexSet indexSetWithIndex:section] withRowAnimation:UITableViewRowAnimationAutomatic]; -} - -- (void)bannerViewActionDidFinish:(ADBannerView *)banner -{ - [[Statistics instance] logEvent:@"MoreApps banner clicked"]; -} - -- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation -{ - if ([[AppInfo sharedInfo] featureAvailable:AppFeatureMoreAppsBanner]) - { - self.bannerView.currentContentSizeIdentifier = UIInterfaceOrientationIsPortrait(self.interfaceOrientation) ? ADBannerContentSizeIdentifierPortrait : ADBannerContentSizeIdentifierLandscape; - [self updateData]; - [self.tableView reloadData]; - } -} - -- (UITableView *)tableView -{ - if (!_tableView) - { - _tableView = [[UITableView alloc] initWithFrame:self.view.bounds]; - _tableView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; - _tableView.dataSource = self; - _tableView.delegate = self; - } - return _tableView; -} - -- (UIView *)bannerView -{ - if (!_bannerView) - { - _bannerView = [[ADBannerView alloc] initWithFrame:CGRectZero]; - _bannerView.currentContentSizeIdentifier = UIInterfaceOrientationIsPortrait(self.interfaceOrientation) ? ADBannerContentSizeIdentifierPortrait : ADBannerContentSizeIdentifierLandscape; - _bannerView.delegate = self; - } - return _bannerView; -} - -@end diff --git a/iphone/Maps/Classes/PlacePageView.mm b/iphone/Maps/Classes/PlacePageView.mm index da89584cab..b270ba5187 100644 --- a/iphone/Maps/Classes/PlacePageView.mm +++ b/iphone/Maps/Classes/PlacePageView.mm @@ -767,12 +767,6 @@ typedef NS_ENUM(NSUInteger, CellRow) [self addBookmark]; } -- (void)guideButtonPressed:(id)sender -{ - NSString * urlString = [NSString stringWithUTF8String:GetFramework().GetApiDataHolder().GetGlobalBackUrl().c_str()]; - [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]]; -} - - (void)clearCachedProperties { _title = nil; diff --git a/iphone/Maps/Classes/en.lproj/LocalNotifications.plist b/iphone/Maps/Classes/en.lproj/LocalNotifications.plist new file mode 100644 index 0000000000..5dd5da85fd --- /dev/null +++ b/iphone/Maps/Classes/en.lproj/LocalNotifications.plist @@ -0,0 +1,5 @@ + + + + + diff --git a/iphone/Maps/CountryTreeVC.mm b/iphone/Maps/CountryTreeVC.mm index c311ecce7c..1228cf7cac 100644 --- a/iphone/Maps/CountryTreeVC.mm +++ b/iphone/Maps/CountryTreeVC.mm @@ -127,17 +127,6 @@ return [NSString stringWithUTF8String:self.tree.GetChildName(self.selectedPosition).c_str()]; } -- (NSString *)selectedMapGuideName -{ - guides::GuideInfo info; - if (self.tree.GetLeafGuideInfo(self.selectedPosition, info)) - { - string const lang = languages::GetCurrentNorm(); - return [NSString stringWithUTF8String:info.GetAdTitle(lang).c_str()]; - } - return nil; -} - - (size_t)selectedMapSizeWithOptions:(storage::TMapOptions)options { return self.tree.GetLeafSize(self.selectedPosition, options).second; @@ -179,12 +168,6 @@ [[Statistics instance] logEvent:@"Show Map From Download Countries Screen"]; [self.navigationController popToRootViewControllerAnimated:YES]; break; - - case DownloaderActionShowGuide: - guides::GuideInfo info; - if (self.tree.GetLeafGuideInfo(self.selectedPosition, info)) - [self openGuideWithInfo:info]; - break; } } diff --git a/iphone/Maps/DownloaderParentVC.h b/iphone/Maps/DownloaderParentVC.h index 94e653fef2..56c1337e5f 100644 --- a/iphone/Maps/DownloaderParentVC.h +++ b/iphone/Maps/DownloaderParentVC.h @@ -18,8 +18,7 @@ typedef NS_ENUM(NSUInteger, DownloaderAction) DownloaderActionDeleteMap, DownloaderActionDeleteCarRouting, DownloaderActionCancelDownloading, - DownloaderActionZoomToCountry, - DownloaderActionShowGuide + DownloaderActionZoomToCountry }; using namespace storage; @@ -27,7 +26,6 @@ using namespace storage; @interface DownloaderParentVC : ViewController - (NSString *)formattedMapSize:(size_t)size; -- (void)openGuideWithInfo:(guides::GuideInfo const &)info; - (BOOL)canDownloadSelectedMap; - (UIActionSheet *)actionSheetToCancelDownloadingSelectedMap; @@ -43,7 +41,6 @@ using namespace storage; // virtual - (NSString *)parentTitle; - (NSString *)selectedMapName; -- (NSString *)selectedMapGuideName; - (size_t)selectedMapSizeWithOptions:(TMapOptions)options; - (TStatus)selectedMapStatus; - (TMapOptions)selectedMapOptions; diff --git a/iphone/Maps/DownloaderParentVC.mm b/iphone/Maps/DownloaderParentVC.mm index 8d5d3c9c8d..9b62d585b7 100644 --- a/iphone/Maps/DownloaderParentVC.mm +++ b/iphone/Maps/DownloaderParentVC.mm @@ -57,7 +57,6 @@ - (void)performAction:(DownloaderAction)action withSizeCheck:(BOOL)check {} - (NSString *)parentTitle { return nil; } - (NSString *)selectedMapName { return nil; } -- (NSString *)selectedMapGuideName { return nil; } - (size_t)selectedMapSizeWithOptions:(TMapOptions)options { return 0; } - (TStatus)selectedMapStatus { return TStatus::EUnknown; } - (TMapOptions)selectedMapOptions { return TMapOptions::EMapOnly; } @@ -104,24 +103,6 @@ return NO; } -- (void)openGuideWithInfo:(const guides::GuideInfo &)info -{ - string const lang = languages::GetCurrentNorm(); - NSURL * guideUrl = [NSURL URLWithString:[NSString stringWithUTF8String:info.GetAppID().c_str()]]; - [[Statistics instance] logEvent:@"Open Guide Country" withParameters:@{@"Country Name" : [self selectedMapName]}]; - UIApplication * application = [UIApplication sharedApplication]; - if ([application canOpenURL:guideUrl]) - { - [application openURL:guideUrl]; - [[Statistics instance] logEvent:@"Open Guide Button" withParameters:@{@"Guide downloaded" : @"YES"}]; - } - else - { - [application openURL:[NSURL URLWithString:[NSString stringWithUTF8String:info.GetURL().c_str()]]]; - [[Statistics instance] logEvent:@"Open Guide Button" withParameters:@{@"Guide downloaded" : @"NO"}]; - } -} - #define ROUTING_SYMBOL @"\xF0\x9F\x9A\x97" - (UIActionSheet *)actionSheetToPerformActionOnSelectedMap @@ -140,12 +121,7 @@ UIActionSheet * actionSheet = [[UIActionSheet alloc] initWithTitle:title delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil]; if (status == TStatus::EOnDisk || status == TStatus::EOnDiskOutOfDate) - { - if ([self selectedMapGuideName]) - [self addButtonWithTitle:[self selectedMapGuideName] action:DownloaderActionShowGuide toActionSheet:actionSheet]; - [self addButtonWithTitle:L(@"zoom_to_country") action:DownloaderActionZoomToCountry toActionSheet:actionSheet]; - } if (status == TStatus::ENotDownloaded || status == TStatus::EOutOfMemFailed || status == TStatus::EDownloadFailed) { diff --git a/iphone/Maps/Images.xcassets/More Apps/PriceButton.imageset/Contents.json b/iphone/Maps/Images.xcassets/More Apps/PriceButton.imageset/Contents.json deleted file mode 100644 index c97631b77e..0000000000 --- a/iphone/Maps/Images.xcassets/More Apps/PriceButton.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x", - "filename" : "MoreAppsPriceButton@2x.png" - }, - { - "idiom" : "universal", - "scale" : "3x", - "filename" : "MoreAppsPriceButton@2x-1.png" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/More Apps/PriceButton.imageset/MoreAppsPriceButton@2x-1.png b/iphone/Maps/Images.xcassets/More Apps/PriceButton.imageset/MoreAppsPriceButton@2x-1.png deleted file mode 100644 index feb9f75a0d..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/PriceButton.imageset/MoreAppsPriceButton@2x-1.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/PriceButton.imageset/MoreAppsPriceButton@2x.png b/iphone/Maps/Images.xcassets/More Apps/PriceButton.imageset/MoreAppsPriceButton@2x.png deleted file mode 100644 index feb9f75a0d..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/PriceButton.imageset/MoreAppsPriceButton@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/california.imageset/Contents.json b/iphone/Maps/Images.xcassets/More Apps/california.imageset/Contents.json deleted file mode 100644 index f2947c13e7..0000000000 --- a/iphone/Maps/Images.xcassets/More Apps/california.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x", - "filename" : "california.png" - }, - { - "idiom" : "universal", - "scale" : "2x", - "filename" : "california@2x.png" - }, - { - "idiom" : "universal", - "scale" : "3x", - "filename" : "GWM60x60@2x.png" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/More Apps/california.imageset/GWM60x60@2x.png b/iphone/Maps/Images.xcassets/More Apps/california.imageset/GWM60x60@2x.png deleted file mode 100644 index 3db264b2db..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/california.imageset/GWM60x60@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/california.imageset/california.png b/iphone/Maps/Images.xcassets/More Apps/california.imageset/california.png deleted file mode 100644 index bddf615843..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/california.imageset/california.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/california.imageset/california@2x.png b/iphone/Maps/Images.xcassets/More Apps/california.imageset/california@2x.png deleted file mode 100644 index b375264c1a..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/california.imageset/california@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/czechrepublic.imageset/60x60@2x.png b/iphone/Maps/Images.xcassets/More Apps/czechrepublic.imageset/60x60@2x.png deleted file mode 100644 index 9d8008f743..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/czechrepublic.imageset/60x60@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/czechrepublic.imageset/Contents.json b/iphone/Maps/Images.xcassets/More Apps/czechrepublic.imageset/Contents.json deleted file mode 100644 index ffaa87513b..0000000000 --- a/iphone/Maps/Images.xcassets/More Apps/czechrepublic.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x", - "filename" : "czechrepublic.png" - }, - { - "idiom" : "universal", - "scale" : "2x", - "filename" : "czechrepublic@2x.png" - }, - { - "idiom" : "universal", - "scale" : "3x", - "filename" : "60x60@2x.png" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/More Apps/czechrepublic.imageset/czechrepublic.png b/iphone/Maps/Images.xcassets/More Apps/czechrepublic.imageset/czechrepublic.png deleted file mode 100644 index ffc3368c05..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/czechrepublic.imageset/czechrepublic.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/czechrepublic.imageset/czechrepublic@2x.png b/iphone/Maps/Images.xcassets/More Apps/czechrepublic.imageset/czechrepublic@2x.png deleted file mode 100644 index 7cd4dace2a..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/czechrepublic.imageset/czechrepublic@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/estonia.imageset/60x60@2x.png b/iphone/Maps/Images.xcassets/More Apps/estonia.imageset/60x60@2x.png deleted file mode 100644 index dac8a4fb55..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/estonia.imageset/60x60@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/estonia.imageset/Contents.json b/iphone/Maps/Images.xcassets/More Apps/estonia.imageset/Contents.json deleted file mode 100644 index 2359a72cfa..0000000000 --- a/iphone/Maps/Images.xcassets/More Apps/estonia.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x", - "filename" : "estonia.png" - }, - { - "idiom" : "universal", - "scale" : "2x", - "filename" : "estonia@2x.png" - }, - { - "idiom" : "universal", - "scale" : "3x", - "filename" : "60x60@2x.png" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/More Apps/estonia.imageset/estonia.png b/iphone/Maps/Images.xcassets/More Apps/estonia.imageset/estonia.png deleted file mode 100644 index d5315799b7..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/estonia.imageset/estonia.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/estonia.imageset/estonia@2x.png b/iphone/Maps/Images.xcassets/More Apps/estonia.imageset/estonia@2x.png deleted file mode 100644 index adbb316894..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/estonia.imageset/estonia@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/france.imageset/Contents.json b/iphone/Maps/Images.xcassets/More Apps/france.imageset/Contents.json deleted file mode 100644 index 52396b1a6b..0000000000 --- a/iphone/Maps/Images.xcassets/More Apps/france.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x", - "filename" : "france.png" - }, - { - "idiom" : "universal", - "scale" : "2x", - "filename" : "france@2x.png" - }, - { - "idiom" : "universal", - "scale" : "3x", - "filename" : "GWM60x60@2x.png" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/More Apps/france.imageset/GWM60x60@2x.png b/iphone/Maps/Images.xcassets/More Apps/france.imageset/GWM60x60@2x.png deleted file mode 100644 index 48c687a5c5..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/france.imageset/GWM60x60@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/france.imageset/france.png b/iphone/Maps/Images.xcassets/More Apps/france.imageset/france.png deleted file mode 100644 index 54eca773e5..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/france.imageset/france.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/france.imageset/france@2x.png b/iphone/Maps/Images.xcassets/More Apps/france.imageset/france@2x.png deleted file mode 100644 index e19460e7f2..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/france.imageset/france@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/germany.imageset/Contents.json b/iphone/Maps/Images.xcassets/More Apps/germany.imageset/Contents.json deleted file mode 100644 index f8331869fd..0000000000 --- a/iphone/Maps/Images.xcassets/More Apps/germany.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x", - "filename" : "germany.png" - }, - { - "idiom" : "universal", - "scale" : "2x", - "filename" : "germany@2x.png" - }, - { - "idiom" : "universal", - "scale" : "3x", - "filename" : "GWM60x60@2x.png" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/More Apps/germany.imageset/GWM60x60@2x.png b/iphone/Maps/Images.xcassets/More Apps/germany.imageset/GWM60x60@2x.png deleted file mode 100644 index 161b4dca66..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/germany.imageset/GWM60x60@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/germany.imageset/germany.png b/iphone/Maps/Images.xcassets/More Apps/germany.imageset/germany.png deleted file mode 100644 index 2b824112ec..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/germany.imageset/germany.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/germany.imageset/germany@2x.png b/iphone/Maps/Images.xcassets/More Apps/germany.imageset/germany@2x.png deleted file mode 100644 index 9efe0767e1..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/germany.imageset/germany@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/greece.imageset/Contents.json b/iphone/Maps/Images.xcassets/More Apps/greece.imageset/Contents.json deleted file mode 100644 index 7f9f0f678d..0000000000 --- a/iphone/Maps/Images.xcassets/More Apps/greece.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x", - "filename" : "greece.png" - }, - { - "idiom" : "universal", - "scale" : "2x", - "filename" : "greece@2x.png" - }, - { - "idiom" : "universal", - "scale" : "3x", - "filename" : "GWM60x60@2x.png" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/More Apps/greece.imageset/GWM60x60@2x.png b/iphone/Maps/Images.xcassets/More Apps/greece.imageset/GWM60x60@2x.png deleted file mode 100644 index 7eb966777f..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/greece.imageset/GWM60x60@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/greece.imageset/greece.png b/iphone/Maps/Images.xcassets/More Apps/greece.imageset/greece.png deleted file mode 100644 index 0cef4ed890..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/greece.imageset/greece.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/greece.imageset/greece@2x.png b/iphone/Maps/Images.xcassets/More Apps/greece.imageset/greece@2x.png deleted file mode 100644 index 8876e392c2..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/greece.imageset/greece@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/hawaii.imageset/Contents.json b/iphone/Maps/Images.xcassets/More Apps/hawaii.imageset/Contents.json deleted file mode 100644 index b52f439807..0000000000 --- a/iphone/Maps/Images.xcassets/More Apps/hawaii.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x", - "filename" : "hawaii.png" - }, - { - "idiom" : "universal", - "scale" : "2x", - "filename" : "hawaii@2x.png" - }, - { - "idiom" : "universal", - "scale" : "3x", - "filename" : "GWM60x60@2x.png" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/More Apps/hawaii.imageset/GWM60x60@2x.png b/iphone/Maps/Images.xcassets/More Apps/hawaii.imageset/GWM60x60@2x.png deleted file mode 100644 index ddbb9ba51f..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/hawaii.imageset/GWM60x60@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/hawaii.imageset/hawaii.png b/iphone/Maps/Images.xcassets/More Apps/hawaii.imageset/hawaii.png deleted file mode 100644 index cede3a3218..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/hawaii.imageset/hawaii.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/hawaii.imageset/hawaii@2x.png b/iphone/Maps/Images.xcassets/More Apps/hawaii.imageset/hawaii@2x.png deleted file mode 100644 index e9856d2a29..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/hawaii.imageset/hawaii@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/hongkong.imageset/60x60@2x.png b/iphone/Maps/Images.xcassets/More Apps/hongkong.imageset/60x60@2x.png deleted file mode 100644 index 1f77ff3ca1..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/hongkong.imageset/60x60@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/hongkong.imageset/Contents.json b/iphone/Maps/Images.xcassets/More Apps/hongkong.imageset/Contents.json deleted file mode 100644 index 184afe7f0a..0000000000 --- a/iphone/Maps/Images.xcassets/More Apps/hongkong.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x", - "filename" : "hongkong.png" - }, - { - "idiom" : "universal", - "scale" : "2x", - "filename" : "hongkong@2x.png" - }, - { - "idiom" : "universal", - "scale" : "3x", - "filename" : "60x60@2x.png" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/More Apps/hongkong.imageset/hongkong.png b/iphone/Maps/Images.xcassets/More Apps/hongkong.imageset/hongkong.png deleted file mode 100644 index 5f2de6cabe..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/hongkong.imageset/hongkong.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/hongkong.imageset/hongkong@2x.png b/iphone/Maps/Images.xcassets/More Apps/hongkong.imageset/hongkong@2x.png deleted file mode 100644 index d3066f0804..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/hongkong.imageset/hongkong@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/italy.imageset/Contents.json b/iphone/Maps/Images.xcassets/More Apps/italy.imageset/Contents.json deleted file mode 100644 index c07d24c94d..0000000000 --- a/iphone/Maps/Images.xcassets/More Apps/italy.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x", - "filename" : "italy.png" - }, - { - "idiom" : "universal", - "scale" : "2x", - "filename" : "italy@2x.png" - }, - { - "idiom" : "universal", - "scale" : "3x", - "filename" : "GWM60x60@2x.png" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/More Apps/italy.imageset/GWM60x60@2x.png b/iphone/Maps/Images.xcassets/More Apps/italy.imageset/GWM60x60@2x.png deleted file mode 100644 index 50c779c367..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/italy.imageset/GWM60x60@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/italy.imageset/italy.png b/iphone/Maps/Images.xcassets/More Apps/italy.imageset/italy.png deleted file mode 100644 index c5987afd7c..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/italy.imageset/italy.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/italy.imageset/italy@2x.png b/iphone/Maps/Images.xcassets/More Apps/italy.imageset/italy@2x.png deleted file mode 100644 index 1fbc5034e2..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/italy.imageset/italy@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/japan.imageset/Contents.json b/iphone/Maps/Images.xcassets/More Apps/japan.imageset/Contents.json deleted file mode 100644 index 6fc5f93224..0000000000 --- a/iphone/Maps/Images.xcassets/More Apps/japan.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x", - "filename" : "japan.png" - }, - { - "idiom" : "universal", - "scale" : "2x", - "filename" : "japan@2x.png" - }, - { - "idiom" : "universal", - "scale" : "3x", - "filename" : "GWM60x60@2x.png" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/More Apps/japan.imageset/GWM60x60@2x.png b/iphone/Maps/Images.xcassets/More Apps/japan.imageset/GWM60x60@2x.png deleted file mode 100644 index 2e53406739..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/japan.imageset/GWM60x60@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/japan.imageset/japan.png b/iphone/Maps/Images.xcassets/More Apps/japan.imageset/japan.png deleted file mode 100644 index 1b8a5449df..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/japan.imageset/japan.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/japan.imageset/japan@2x.png b/iphone/Maps/Images.xcassets/More Apps/japan.imageset/japan@2x.png deleted file mode 100644 index f481df28a4..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/japan.imageset/japan@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/latvia.imageset/60x60@2x.png b/iphone/Maps/Images.xcassets/More Apps/latvia.imageset/60x60@2x.png deleted file mode 100644 index 535a72c88b..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/latvia.imageset/60x60@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/latvia.imageset/Contents.json b/iphone/Maps/Images.xcassets/More Apps/latvia.imageset/Contents.json deleted file mode 100644 index 291e77ac78..0000000000 --- a/iphone/Maps/Images.xcassets/More Apps/latvia.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x", - "filename" : "latvia.png" - }, - { - "idiom" : "universal", - "scale" : "2x", - "filename" : "latvia@2x.png" - }, - { - "idiom" : "universal", - "scale" : "3x", - "filename" : "60x60@2x.png" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/More Apps/latvia.imageset/latvia.png b/iphone/Maps/Images.xcassets/More Apps/latvia.imageset/latvia.png deleted file mode 100644 index 39b0fe5963..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/latvia.imageset/latvia.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/latvia.imageset/latvia@2x.png b/iphone/Maps/Images.xcassets/More Apps/latvia.imageset/latvia@2x.png deleted file mode 100644 index 0ca4e80dc6..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/latvia.imageset/latvia@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/lithuania.imageset/60x60@2x.png b/iphone/Maps/Images.xcassets/More Apps/lithuania.imageset/60x60@2x.png deleted file mode 100644 index b4a4a208b8..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/lithuania.imageset/60x60@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/lithuania.imageset/Contents.json b/iphone/Maps/Images.xcassets/More Apps/lithuania.imageset/Contents.json deleted file mode 100644 index 72ff00d457..0000000000 --- a/iphone/Maps/Images.xcassets/More Apps/lithuania.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x", - "filename" : "lithuania.png" - }, - { - "idiom" : "universal", - "scale" : "2x", - "filename" : "lithuania@2x.png" - }, - { - "idiom" : "universal", - "scale" : "3x", - "filename" : "60x60@2x.png" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/More Apps/lithuania.imageset/lithuania.png b/iphone/Maps/Images.xcassets/More Apps/lithuania.imageset/lithuania.png deleted file mode 100644 index 8ebaf0fe6d..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/lithuania.imageset/lithuania.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/lithuania.imageset/lithuania@2x.png b/iphone/Maps/Images.xcassets/More Apps/lithuania.imageset/lithuania@2x.png deleted file mode 100644 index 663053cf47..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/lithuania.imageset/lithuania@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/malaysia.imageset/60x60@2x.png b/iphone/Maps/Images.xcassets/More Apps/malaysia.imageset/60x60@2x.png deleted file mode 100644 index 1a6316648a..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/malaysia.imageset/60x60@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/malaysia.imageset/Contents.json b/iphone/Maps/Images.xcassets/More Apps/malaysia.imageset/Contents.json deleted file mode 100644 index 63622e866d..0000000000 --- a/iphone/Maps/Images.xcassets/More Apps/malaysia.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x", - "filename" : "malaysia.png" - }, - { - "idiom" : "universal", - "scale" : "2x", - "filename" : "malaysia@2x.png" - }, - { - "idiom" : "universal", - "scale" : "3x", - "filename" : "60x60@2x.png" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/More Apps/malaysia.imageset/malaysia.png b/iphone/Maps/Images.xcassets/More Apps/malaysia.imageset/malaysia.png deleted file mode 100644 index 27cb977a13..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/malaysia.imageset/malaysia.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/malaysia.imageset/malaysia@2x.png b/iphone/Maps/Images.xcassets/More Apps/malaysia.imageset/malaysia@2x.png deleted file mode 100644 index 0b5728fe5b..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/malaysia.imageset/malaysia@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/montenegro.imageset/60x60@2x.png b/iphone/Maps/Images.xcassets/More Apps/montenegro.imageset/60x60@2x.png deleted file mode 100644 index 27951364e5..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/montenegro.imageset/60x60@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/montenegro.imageset/Contents.json b/iphone/Maps/Images.xcassets/More Apps/montenegro.imageset/Contents.json deleted file mode 100644 index bbb096273a..0000000000 --- a/iphone/Maps/Images.xcassets/More Apps/montenegro.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x", - "filename" : "montenegro.png" - }, - { - "idiom" : "universal", - "scale" : "2x", - "filename" : "montenegro@2x.png" - }, - { - "idiom" : "universal", - "scale" : "3x", - "filename" : "60x60@2x.png" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/More Apps/montenegro.imageset/montenegro.png b/iphone/Maps/Images.xcassets/More Apps/montenegro.imageset/montenegro.png deleted file mode 100644 index ec29ab5c42..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/montenegro.imageset/montenegro.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/montenegro.imageset/montenegro@2x.png b/iphone/Maps/Images.xcassets/More Apps/montenegro.imageset/montenegro@2x.png deleted file mode 100644 index d0a5ba678e..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/montenegro.imageset/montenegro@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/nepal.imageset/60x60@2x.png b/iphone/Maps/Images.xcassets/More Apps/nepal.imageset/60x60@2x.png deleted file mode 100644 index 7ebbb55d8a..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/nepal.imageset/60x60@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/nepal.imageset/Contents.json b/iphone/Maps/Images.xcassets/More Apps/nepal.imageset/Contents.json deleted file mode 100644 index f55500a914..0000000000 --- a/iphone/Maps/Images.xcassets/More Apps/nepal.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x", - "filename" : "nepal.png" - }, - { - "idiom" : "universal", - "scale" : "2x", - "filename" : "nepal@2x.png" - }, - { - "idiom" : "universal", - "scale" : "3x", - "filename" : "60x60@2x.png" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/More Apps/nepal.imageset/nepal.png b/iphone/Maps/Images.xcassets/More Apps/nepal.imageset/nepal.png deleted file mode 100644 index 4566b50d51..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/nepal.imageset/nepal.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/nepal.imageset/nepal@2x.png b/iphone/Maps/Images.xcassets/More Apps/nepal.imageset/nepal@2x.png deleted file mode 100644 index 63db32d7a3..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/nepal.imageset/nepal@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/newzealand.imageset/60x60@2x.png b/iphone/Maps/Images.xcassets/More Apps/newzealand.imageset/60x60@2x.png deleted file mode 100644 index cea8c51c3f..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/newzealand.imageset/60x60@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/newzealand.imageset/Contents.json b/iphone/Maps/Images.xcassets/More Apps/newzealand.imageset/Contents.json deleted file mode 100644 index aa83afc6b5..0000000000 --- a/iphone/Maps/Images.xcassets/More Apps/newzealand.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x", - "filename" : "newzealand.png" - }, - { - "idiom" : "universal", - "scale" : "2x", - "filename" : "newzealand@2x.png" - }, - { - "idiom" : "universal", - "scale" : "3x", - "filename" : "60x60@2x.png" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/More Apps/newzealand.imageset/newzealand.png b/iphone/Maps/Images.xcassets/More Apps/newzealand.imageset/newzealand.png deleted file mode 100644 index 914fb8565d..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/newzealand.imageset/newzealand.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/newzealand.imageset/newzealand@2x.png b/iphone/Maps/Images.xcassets/More Apps/newzealand.imageset/newzealand@2x.png deleted file mode 100644 index c59cbd94e4..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/newzealand.imageset/newzealand@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/poland.imageset/60x60@2x.png b/iphone/Maps/Images.xcassets/More Apps/poland.imageset/60x60@2x.png deleted file mode 100644 index 86ee54a4d7..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/poland.imageset/60x60@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/poland.imageset/Contents.json b/iphone/Maps/Images.xcassets/More Apps/poland.imageset/Contents.json deleted file mode 100644 index b2350a93fc..0000000000 --- a/iphone/Maps/Images.xcassets/More Apps/poland.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x", - "filename" : "poland.png" - }, - { - "idiom" : "universal", - "scale" : "2x", - "filename" : "poland@2x.png" - }, - { - "idiom" : "universal", - "scale" : "3x", - "filename" : "60x60@2x.png" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/More Apps/poland.imageset/poland.png b/iphone/Maps/Images.xcassets/More Apps/poland.imageset/poland.png deleted file mode 100644 index df94e50ad6..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/poland.imageset/poland.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/poland.imageset/poland@2x.png b/iphone/Maps/Images.xcassets/More Apps/poland.imageset/poland@2x.png deleted file mode 100644 index aca49f1baa..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/poland.imageset/poland@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/russia.imageset/Contents.json b/iphone/Maps/Images.xcassets/More Apps/russia.imageset/Contents.json deleted file mode 100644 index 280c24ae6f..0000000000 --- a/iphone/Maps/Images.xcassets/More Apps/russia.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x", - "filename" : "russia.png" - }, - { - "idiom" : "universal", - "scale" : "2x", - "filename" : "russia@2x.png" - }, - { - "idiom" : "universal", - "scale" : "3x", - "filename" : "GWM60x60@2x.png" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/More Apps/russia.imageset/GWM60x60@2x.png b/iphone/Maps/Images.xcassets/More Apps/russia.imageset/GWM60x60@2x.png deleted file mode 100644 index b13a9e57b7..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/russia.imageset/GWM60x60@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/russia.imageset/russia.png b/iphone/Maps/Images.xcassets/More Apps/russia.imageset/russia.png deleted file mode 100644 index 0ef4b5bd35..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/russia.imageset/russia.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/russia.imageset/russia@2x.png b/iphone/Maps/Images.xcassets/More Apps/russia.imageset/russia@2x.png deleted file mode 100644 index a364f2ecce..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/russia.imageset/russia@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/singapore.imageset/60x60@2x.png b/iphone/Maps/Images.xcassets/More Apps/singapore.imageset/60x60@2x.png deleted file mode 100644 index a52f4ee7cb..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/singapore.imageset/60x60@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/singapore.imageset/Contents.json b/iphone/Maps/Images.xcassets/More Apps/singapore.imageset/Contents.json deleted file mode 100644 index d73cd45a44..0000000000 --- a/iphone/Maps/Images.xcassets/More Apps/singapore.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x", - "filename" : "singapore.png" - }, - { - "idiom" : "universal", - "scale" : "2x", - "filename" : "singapore@2x.png" - }, - { - "idiom" : "universal", - "scale" : "3x", - "filename" : "60x60@2x.png" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/More Apps/singapore.imageset/singapore.png b/iphone/Maps/Images.xcassets/More Apps/singapore.imageset/singapore.png deleted file mode 100644 index ea429ebec8..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/singapore.imageset/singapore.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/singapore.imageset/singapore@2x.png b/iphone/Maps/Images.xcassets/More Apps/singapore.imageset/singapore@2x.png deleted file mode 100644 index f6844b466c..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/singapore.imageset/singapore@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/spain.imageset/Contents.json b/iphone/Maps/Images.xcassets/More Apps/spain.imageset/Contents.json deleted file mode 100644 index d7341dbfed..0000000000 --- a/iphone/Maps/Images.xcassets/More Apps/spain.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x", - "filename" : "spain.png" - }, - { - "idiom" : "universal", - "scale" : "2x", - "filename" : "spain@2x.png" - }, - { - "idiom" : "universal", - "scale" : "3x", - "filename" : "GWM60x60@2x.png" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/More Apps/spain.imageset/GWM60x60@2x.png b/iphone/Maps/Images.xcassets/More Apps/spain.imageset/GWM60x60@2x.png deleted file mode 100644 index a0070e4d88..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/spain.imageset/GWM60x60@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/spain.imageset/spain.png b/iphone/Maps/Images.xcassets/More Apps/spain.imageset/spain.png deleted file mode 100644 index ffd3b19bd9..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/spain.imageset/spain.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/spain.imageset/spain@2x.png b/iphone/Maps/Images.xcassets/More Apps/spain.imageset/spain@2x.png deleted file mode 100644 index a7b2f38725..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/spain.imageset/spain@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/srilanka.imageset/60x60@2x.png b/iphone/Maps/Images.xcassets/More Apps/srilanka.imageset/60x60@2x.png deleted file mode 100644 index 8be9ef62b5..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/srilanka.imageset/60x60@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/srilanka.imageset/Contents.json b/iphone/Maps/Images.xcassets/More Apps/srilanka.imageset/Contents.json deleted file mode 100644 index 5419f976f6..0000000000 --- a/iphone/Maps/Images.xcassets/More Apps/srilanka.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x", - "filename" : "srilanka.png" - }, - { - "idiom" : "universal", - "scale" : "2x", - "filename" : "srilanka@2x.png" - }, - { - "idiom" : "universal", - "scale" : "3x", - "filename" : "60x60@2x.png" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/More Apps/srilanka.imageset/srilanka.png b/iphone/Maps/Images.xcassets/More Apps/srilanka.imageset/srilanka.png deleted file mode 100644 index 088874a014..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/srilanka.imageset/srilanka.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/srilanka.imageset/srilanka@2x.png b/iphone/Maps/Images.xcassets/More Apps/srilanka.imageset/srilanka@2x.png deleted file mode 100644 index 26d5fecc8d..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/srilanka.imageset/srilanka@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/switzerland.imageset/Contents.json b/iphone/Maps/Images.xcassets/More Apps/switzerland.imageset/Contents.json deleted file mode 100644 index 34c8519b40..0000000000 --- a/iphone/Maps/Images.xcassets/More Apps/switzerland.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x", - "filename" : "switzerland.png" - }, - { - "idiom" : "universal", - "scale" : "2x", - "filename" : "switzerland@2x.png" - }, - { - "idiom" : "universal", - "scale" : "3x", - "filename" : "GWM60x60@2x.png" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/More Apps/switzerland.imageset/GWM60x60@2x.png b/iphone/Maps/Images.xcassets/More Apps/switzerland.imageset/GWM60x60@2x.png deleted file mode 100644 index ba691f219b..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/switzerland.imageset/GWM60x60@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/switzerland.imageset/switzerland.png b/iphone/Maps/Images.xcassets/More Apps/switzerland.imageset/switzerland.png deleted file mode 100644 index 58be4c80a7..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/switzerland.imageset/switzerland.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/switzerland.imageset/switzerland@2x.png b/iphone/Maps/Images.xcassets/More Apps/switzerland.imageset/switzerland@2x.png deleted file mode 100644 index 4c2fc14ae3..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/switzerland.imageset/switzerland@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/taiwan.imageset/60x60@2x.png b/iphone/Maps/Images.xcassets/More Apps/taiwan.imageset/60x60@2x.png deleted file mode 100644 index 130d23599c..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/taiwan.imageset/60x60@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/taiwan.imageset/Contents.json b/iphone/Maps/Images.xcassets/More Apps/taiwan.imageset/Contents.json deleted file mode 100644 index a14b9be88b..0000000000 --- a/iphone/Maps/Images.xcassets/More Apps/taiwan.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x", - "filename" : "taiwan.png" - }, - { - "idiom" : "universal", - "scale" : "2x", - "filename" : "taiwan@2x.png" - }, - { - "idiom" : "universal", - "scale" : "3x", - "filename" : "60x60@2x.png" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/More Apps/taiwan.imageset/taiwan.png b/iphone/Maps/Images.xcassets/More Apps/taiwan.imageset/taiwan.png deleted file mode 100644 index dfce8f5073..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/taiwan.imageset/taiwan.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/taiwan.imageset/taiwan@2x.png b/iphone/Maps/Images.xcassets/More Apps/taiwan.imageset/taiwan@2x.png deleted file mode 100644 index 61a9215b31..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/taiwan.imageset/taiwan@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/thailand.imageset/Contents.json b/iphone/Maps/Images.xcassets/More Apps/thailand.imageset/Contents.json deleted file mode 100644 index f0b019960c..0000000000 --- a/iphone/Maps/Images.xcassets/More Apps/thailand.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x", - "filename" : "thailand.png" - }, - { - "idiom" : "universal", - "scale" : "2x", - "filename" : "thailand@2x.png" - }, - { - "idiom" : "universal", - "scale" : "3x", - "filename" : "GWM60x60@2x.png" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/More Apps/thailand.imageset/GWM60x60@2x.png b/iphone/Maps/Images.xcassets/More Apps/thailand.imageset/GWM60x60@2x.png deleted file mode 100644 index 7cc3b6c947..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/thailand.imageset/GWM60x60@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/thailand.imageset/thailand.png b/iphone/Maps/Images.xcassets/More Apps/thailand.imageset/thailand.png deleted file mode 100644 index 1e62dca098..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/thailand.imageset/thailand.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/thailand.imageset/thailand@2x.png b/iphone/Maps/Images.xcassets/More Apps/thailand.imageset/thailand@2x.png deleted file mode 100644 index 993d239deb..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/thailand.imageset/thailand@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/turkey.imageset/Contents.json b/iphone/Maps/Images.xcassets/More Apps/turkey.imageset/Contents.json deleted file mode 100644 index 428f4592f7..0000000000 --- a/iphone/Maps/Images.xcassets/More Apps/turkey.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x", - "filename" : "turkey.png" - }, - { - "idiom" : "universal", - "scale" : "2x", - "filename" : "turkey@2x.png" - }, - { - "idiom" : "universal", - "scale" : "3x", - "filename" : "GWM60x60@2x.png" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/More Apps/turkey.imageset/GWM60x60@2x.png b/iphone/Maps/Images.xcassets/More Apps/turkey.imageset/GWM60x60@2x.png deleted file mode 100644 index 9ca381b665..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/turkey.imageset/GWM60x60@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/turkey.imageset/turkey.png b/iphone/Maps/Images.xcassets/More Apps/turkey.imageset/turkey.png deleted file mode 100644 index a61712692a..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/turkey.imageset/turkey.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/turkey.imageset/turkey@2x.png b/iphone/Maps/Images.xcassets/More Apps/turkey.imageset/turkey@2x.png deleted file mode 100644 index 69acd47cf8..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/turkey.imageset/turkey@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/uk.imageset/Contents.json b/iphone/Maps/Images.xcassets/More Apps/uk.imageset/Contents.json deleted file mode 100644 index d20ec54185..0000000000 --- a/iphone/Maps/Images.xcassets/More Apps/uk.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x", - "filename" : "uk.png" - }, - { - "idiom" : "universal", - "scale" : "2x", - "filename" : "uk@2x.png" - }, - { - "idiom" : "universal", - "scale" : "3x", - "filename" : "GWM60x60@2x.png" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/More Apps/uk.imageset/GWM60x60@2x.png b/iphone/Maps/Images.xcassets/More Apps/uk.imageset/GWM60x60@2x.png deleted file mode 100644 index 5efbe1d467..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/uk.imageset/GWM60x60@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/uk.imageset/uk.png b/iphone/Maps/Images.xcassets/More Apps/uk.imageset/uk.png deleted file mode 100644 index f50ba745fd..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/uk.imageset/uk.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/More Apps/uk.imageset/uk@2x.png b/iphone/Maps/Images.xcassets/More Apps/uk.imageset/uk@2x.png deleted file mode 100644 index cc541374ff..0000000000 Binary files a/iphone/Maps/Images.xcassets/More Apps/uk.imageset/uk@2x.png and /dev/null differ diff --git a/iphone/Maps/Maps.xcodeproj/project.pbxproj b/iphone/Maps/Maps.xcodeproj/project.pbxproj index d4accefd4c..ef3386b089 100644 --- a/iphone/Maps/Maps.xcodeproj/project.pbxproj +++ b/iphone/Maps/Maps.xcodeproj/project.pbxproj @@ -46,7 +46,6 @@ 977E26BE19E31BBE00BA2219 /* CountryTreeVC.mm in Sources */ = {isa = PBXBuildFile; fileRef = 977E26BD19E31BBE00BA2219 /* CountryTreeVC.mm */; }; 977E26C219E31BCC00BA2219 /* ActiveMapsVC.mm in Sources */ = {isa = PBXBuildFile; fileRef = 977E26C119E31BCC00BA2219 /* ActiveMapsVC.mm */; }; 977E26C619E31BDF00BA2219 /* DownloaderParentVC.mm in Sources */ = {isa = PBXBuildFile; fileRef = 977E26C519E31BDF00BA2219 /* DownloaderParentVC.mm */; }; - 9789DB5A188D94F9007C6FAE /* InterstitialView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9789DB59188D94F9007C6FAE /* InterstitialView.mm */; }; 978D4A251996B0EC00D72CA7 /* CommunityVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 978D4A241996B0EC00D72CA7 /* CommunityVC.m */; }; 978D4A291996C17300D72CA7 /* RichTextVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 978D4A281996C17300D72CA7 /* RichTextVC.m */; }; 978D4A31199A11E600D72CA7 /* faq.html in Resources */ = {isa = PBXBuildFile; fileRef = 978D4A30199A11E600D72CA7 /* faq.html */; }; @@ -74,8 +73,6 @@ 97D092B9190AA69700FF645B /* SmallCompassView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 97D092B8190AA69700FF645B /* SmallCompassView.mm */; }; 97D40C08184CFA4100A1D572 /* ImagesPro.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97D40C07184CFA4100A1D572 /* ImagesPro.xcassets */; }; 97D40C0A184D031900A1D572 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97D40C09184D031900A1D572 /* Images.xcassets */; }; - 97D807B818A92AAB00D416E0 /* MoreAppsVC.mm in Sources */ = {isa = PBXBuildFile; fileRef = 97D807B718A92AAB00D416E0 /* MoreAppsVC.mm */; }; - 97D807BC18A933FB00D416E0 /* MoreAppsCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 97D807BB18A933FB00D416E0 /* MoreAppsCell.m */; }; 97D807BE18A93C8800D416E0 /* iAd.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 97C98651186C5EF000AF7E9E /* iAd.framework */; }; 97DD585518A8EAFA0079837E /* libAarkiSDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 97DD585218A8EAFA0079837E /* libAarkiSDK.a */; }; 97DD585C18A8EB130079837E /* libFlurry_5.4.0.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 97DD585A18A8EB120079837E /* libFlurry_5.4.0.a */; }; @@ -112,7 +109,6 @@ CB252D6F16FF82C9001E41E9 /* Statistics.mm in Sources */ = {isa = PBXBuildFile; fileRef = CB252D6C16FF82C8001E41E9 /* Statistics.mm */; }; ED48BBB517C267F5003E7E92 /* ColorPickerView.mm in Sources */ = {isa = PBXBuildFile; fileRef = ED48BBB417C267F5003E7E92 /* ColorPickerView.mm */; }; ED48BBBA17C2B1E2003E7E92 /* CircleView.mm in Sources */ = {isa = PBXBuildFile; fileRef = ED48BBB917C2B1E2003E7E92 /* CircleView.mm */; }; - ED9CC5EF17CA18770051642E /* ios-guides.json in Resources */ = {isa = PBXBuildFile; fileRef = ED9CC5EE17CA18770051642E /* ios-guides.json */; }; EDB811A3175E1A9C00E36BF2 /* TwoButtonsView.m in Sources */ = {isa = PBXBuildFile; fileRef = EDB811A2175E1A9C00E36BF2 /* TwoButtonsView.m */; }; EDC5C543175F2CA600420E92 /* ShareActionSheet.mm in Sources */ = {isa = PBXBuildFile; fileRef = EDC5C542175F2CA600420E92 /* ShareActionSheet.mm */; }; EE026F0611D6AC0D00645242 /* classificator.txt in Resources */ = {isa = PBXBuildFile; fileRef = EE026F0511D6AC0D00645242 /* classificator.txt */; }; @@ -262,8 +258,6 @@ 977E26C119E31BCC00BA2219 /* ActiveMapsVC.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ActiveMapsVC.mm; sourceTree = ""; }; 977E26C419E31BDF00BA2219 /* DownloaderParentVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DownloaderParentVC.h; sourceTree = ""; }; 977E26C519E31BDF00BA2219 /* DownloaderParentVC.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DownloaderParentVC.mm; sourceTree = ""; }; - 9789DB58188D94F9007C6FAE /* InterstitialView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InterstitialView.h; sourceTree = ""; }; - 9789DB59188D94F9007C6FAE /* InterstitialView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = InterstitialView.mm; sourceTree = ""; }; 978D4A231996B0EC00D72CA7 /* CommunityVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CommunityVC.h; sourceTree = ""; }; 978D4A241996B0EC00D72CA7 /* CommunityVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CommunityVC.m; sourceTree = ""; }; 978D4A271996C17300D72CA7 /* RichTextVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RichTextVC.h; sourceTree = ""; }; @@ -321,10 +315,6 @@ 97D092B8190AA69700FF645B /* SmallCompassView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SmallCompassView.mm; sourceTree = ""; }; 97D40C07184CFA4100A1D572 /* ImagesPro.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = ImagesPro.xcassets; sourceTree = SOURCE_ROOT; }; 97D40C09184D031900A1D572 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = SOURCE_ROOT; }; - 97D807B618A92AAB00D416E0 /* MoreAppsVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MoreAppsVC.h; sourceTree = ""; }; - 97D807B718A92AAB00D416E0 /* MoreAppsVC.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MoreAppsVC.mm; sourceTree = ""; }; - 97D807BA18A933FB00D416E0 /* MoreAppsCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MoreAppsCell.h; sourceTree = ""; }; - 97D807BB18A933FB00D416E0 /* MoreAppsCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MoreAppsCell.m; sourceTree = ""; }; 97DD585218A8EAFA0079837E /* libAarkiSDK.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libAarkiSDK.a; sourceTree = ""; }; 97DD585318A8EAFA0079837E /* Aarki.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Aarki.h; sourceTree = ""; }; 97DD585418A8EAFA0079837E /* AarkiContact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AarkiContact.h; sourceTree = ""; }; @@ -377,7 +367,6 @@ ED48BBB417C267F5003E7E92 /* ColorPickerView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ColorPickerView.mm; sourceTree = ""; }; ED48BBB817C2B1E2003E7E92 /* CircleView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CircleView.h; sourceTree = ""; }; ED48BBB917C2B1E2003E7E92 /* CircleView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CircleView.mm; sourceTree = ""; }; - ED9CC5EE17CA18770051642E /* ios-guides.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = "ios-guides.json"; path = "../../data/ios-guides.json"; sourceTree = ""; }; EDB811A1175E1A9C00E36BF2 /* TwoButtonsView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TwoButtonsView.h; sourceTree = ""; }; EDB811A2175E1A9C00E36BF2 /* TwoButtonsView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TwoButtonsView.m; sourceTree = ""; }; EDBB18B716972B0600AF0742 /* libzlib.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libzlib.a; sourceTree = ""; }; @@ -551,8 +540,6 @@ isa = PBXGroup; children = ( 97B4E9271851DAB300BEC5D7 /* Custom Views */, - 9789DB53188D5DFF007C6FAE /* In App Messaging */, - 9770A04618AD19D300126E5C /* More Apps */, FA4135DF120A25B90062D5B4 /* Settings */, 974D041C1977DE430081D0A7 /* LocalNotificationManager.h */, 974D041B1977DE430081D0A7 /* LocalNotificationManager.mm */, @@ -653,7 +640,6 @@ B00511001A1101AA00A61AA4 /* libz.dylib */, B00510FE1A1101A000A61AA4 /* libxml2.dylib */, B00510FC1A11019400A61AA4 /* libsqlite3.dylib */, - FAA0F162196AC14100E01C3F /* librouting.a */, 974386D81934CBAC00FD5659 /* FacebookSDK.framework */, 97EDDCE418A299C000AEFB7A /* Twitter.framework */, 972CDCC51887F1B7006641CA /* CFNetwork.framework */, @@ -727,26 +713,6 @@ name = Downloader; sourceTree = ""; }; - 9770A04618AD19D300126E5C /* More Apps */ = { - isa = PBXGroup; - children = ( - 97D807B618A92AAB00D416E0 /* MoreAppsVC.h */, - 97D807B718A92AAB00D416E0 /* MoreAppsVC.mm */, - 97D807BA18A933FB00D416E0 /* MoreAppsCell.h */, - 97D807BB18A933FB00D416E0 /* MoreAppsCell.m */, - ); - name = "More Apps"; - sourceTree = ""; - }; - 9789DB53188D5DFF007C6FAE /* In App Messaging */ = { - isa = PBXGroup; - children = ( - 9789DB58188D94F9007C6FAE /* InterstitialView.h */, - 9789DB59188D94F9007C6FAE /* InterstitialView.mm */, - ); - name = "In App Messaging"; - sourceTree = ""; - }; 978F924D183BB5D6000D6C7C /* Cells */ = { isa = PBXGroup; children = ( @@ -899,7 +865,6 @@ FA065FC61286143F00FEA989 /* External Resources */ = { isa = PBXGroup; children = ( - ED9CC5EE17CA18770051642E /* ios-guides.json */, 97A5967E19B9CD47007A963F /* copyright.html */, 978D4A30199A11E600D72CA7 /* faq.html */, FAAEA7D0161BD26600CCD661 /* synonyms.txt */, @@ -940,6 +905,7 @@ FA1DE68411E15D4E00C6D69A /* Static Libraries */ = { isa = PBXGroup; children = ( + FAA0F162196AC14100E01C3F /* librouting.a */, EDBB18B716972B0600AF0742 /* libzlib.a */, EE5A34E5156FCB9500E34FFE /* libgui.a */, FAF29846146EEF4A00FF0057 /* libprotobuf.a */, @@ -1228,7 +1194,6 @@ F7E7BA4016723CD200B4492E /* hotel.png in Resources */, F7E7BA4116723CD200B4492E /* hotel@2x.png in Resources */, FAF30A95173AB23900818BF6 /* 00_roboto_regular.ttf in Resources */, - ED9CC5EF17CA18770051642E /* ios-guides.json in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1292,8 +1257,6 @@ 97A8002718B2741C000C07A2 /* SearchCell.m in Sources */, 97908B2C19658767003DD7C6 /* SearchCategoryCell.m in Sources */, 9778E9A5191A86D800AD850A /* SelectedColorView.m in Sources */, - 97D807B818A92AAB00D416E0 /* MoreAppsVC.mm in Sources */, - 9789DB5A188D94F9007C6FAE /* InterstitialView.mm in Sources */, B08AA8DA1A26299A00810B1C /* TimeUtils.m in Sources */, 976D86F519CB21BD00C920EF /* RouteView.m in Sources */, FA29FDAA141E77F8004ADF66 /* Preferences.mm in Sources */, @@ -1302,7 +1265,6 @@ 97AA2821190AD21100AE1AAB /* PlacePageShareCell.m in Sources */, 97DEA09618D75BB000C5F963 /* ContextViews.mm in Sources */, 978F9240183B660F000D6C7C /* SettingsViewController.mm in Sources */, - 97D807BC18A933FB00D416E0 /* MoreAppsCell.m in Sources */, B0E1FCDC1A23399E00A8E08B /* RouteOverallInfoView.m in Sources */, F7B90CD31521E6D200C054EE /* CustomNavigationView.mm in Sources */, FA36B80D15403A4F004560CC /* BookmarksVC.mm in Sources */, diff --git a/iphone/Maps/Settings/Preferences.mm b/iphone/Maps/Settings/Preferences.mm index 49abfa421d..1e6e403b30 100644 --- a/iphone/Maps/Settings/Preferences.mm +++ b/iphone/Maps/Settings/Preferences.mm @@ -3,7 +3,6 @@ #import #import "../Classes/MapViewController.h" #import "Framework.h" -#import "Statistics.h" #include "../../platform/settings.hpp" @@ -41,19 +40,6 @@ d.m_controller = controller; } - /*This code counts conversion Guides->MWM. We rely on setting with name "Units", and by the time this code will be executed, Framework->GuidesManager should be initialised*/ - set s; - GetFramework().GetGuidesManager().GetGuidesIds(s); - NSMutableDictionary * guidesUrls = [[NSMutableDictionary alloc] init]; - for (set::iterator it = s.begin(); it != s.end();++it) - { - NSString * countryUrl = [NSString stringWithUTF8String:it->c_str()]; - if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:countryUrl]]) - guidesUrls[countryUrl] = @1; - } - if ([guidesUrls count]) - [[Statistics instance] logEvent:@"Guides Downloaded before MWM" withParameters:guidesUrls]; - Settings::Set("Units", u); } else diff --git a/iphone/Maps/SettingsAndMoreVC.mm b/iphone/Maps/SettingsAndMoreVC.mm index 94ed4e5a6b..220dfd38c7 100644 --- a/iphone/Maps/SettingsAndMoreVC.mm +++ b/iphone/Maps/SettingsAndMoreVC.mm @@ -186,7 +186,7 @@ - (void)rateApp { dlg_settings::SaveResult(dlg_settings::AppStore, dlg_settings::OK); - [[UIApplication sharedApplication] rateVersionFrom:@"ios_pro_popup"]; + [[UIApplication sharedApplication] rateVersionFrom:@"rate_menu_item"]; } - (void)reportBug diff --git a/iphone/Maps/ar.lproj/Localizable.strings b/iphone/Maps/ar.lproj/Localizable.strings index 9c501a8b32..73a5487608 100644 --- a/iphone/Maps/ar.lproj/Localizable.strings +++ b/iphone/Maps/ar.lproj/Localizable.strings @@ -491,12 +491,6 @@ "pref_zoom_summary" = "عرض على الشاشة"; -"more_apps_title" = "المزيد من التطبيقات"; - -"more_apps_guides" = "دليل السفر الارشادي"; - -"more_apps_ads" = "المزيد من التطبيقات"; - "placepage_distance" = "المسافة"; "placepage_coordinates" = "الإحداثيات"; diff --git a/iphone/Maps/cs.lproj/Localizable.strings b/iphone/Maps/cs.lproj/Localizable.strings index c4638816b4..e3c7284271 100644 --- a/iphone/Maps/cs.lproj/Localizable.strings +++ b/iphone/Maps/cs.lproj/Localizable.strings @@ -491,12 +491,6 @@ "pref_zoom_summary" = "Zobrazit na obrazovce"; -"more_apps_title" = "Další aplikace"; - -"more_apps_guides" = "Cestovní průvodce"; - -"more_apps_ads" = "Další aplikace"; - "placepage_distance" = "Vzdálenost"; "placepage_coordinates" = "Souřadnice"; diff --git a/iphone/Maps/da.lproj/Localizable.strings b/iphone/Maps/da.lproj/Localizable.strings index 1a079d2d9b..756766496f 100644 --- a/iphone/Maps/da.lproj/Localizable.strings +++ b/iphone/Maps/da.lproj/Localizable.strings @@ -491,12 +491,6 @@ "pref_zoom_summary" = "Vis på skærmen"; -"more_apps_title" = "Flere apps"; - -"more_apps_guides" = "Rejseguider"; - -"more_apps_ads" = "Flere apps"; - "placepage_distance" = "Afstand"; "placepage_coordinates" = "Koordinater"; diff --git a/iphone/Maps/de.lproj/Localizable.strings b/iphone/Maps/de.lproj/Localizable.strings index 622bd3b8d4..99312d6654 100644 --- a/iphone/Maps/de.lproj/Localizable.strings +++ b/iphone/Maps/de.lproj/Localizable.strings @@ -491,12 +491,6 @@ "pref_zoom_summary" = "Auf dem Bildschirm anzeigen"; -"more_apps_title" = "Mehr Apps"; - -"more_apps_guides" = "Reiseführer"; - -"more_apps_ads" = "Mehr Apps"; - "placepage_distance" = "Distanz"; "placepage_coordinates" = "Koordinaten"; diff --git a/iphone/Maps/en.lproj/Localizable.strings b/iphone/Maps/en.lproj/Localizable.strings index 073200586a..88c23957d0 100644 --- a/iphone/Maps/en.lproj/Localizable.strings +++ b/iphone/Maps/en.lproj/Localizable.strings @@ -491,12 +491,6 @@ "pref_zoom_summary" = "Display on the screen"; -"more_apps_title" = "More Apps"; - -"more_apps_guides" = "Travel Guides"; - -"more_apps_ads" = "More Apps"; - "placepage_distance" = "Distance"; "placepage_coordinates" = "Coordinates"; diff --git a/iphone/Maps/es.lproj/Localizable.strings b/iphone/Maps/es.lproj/Localizable.strings index a36a559984..1e15a6b2e5 100644 --- a/iphone/Maps/es.lproj/Localizable.strings +++ b/iphone/Maps/es.lproj/Localizable.strings @@ -491,12 +491,6 @@ "pref_zoom_summary" = "Visualización en la pantalla"; -"more_apps_title" = "Más aplicaciones"; - -"more_apps_guides" = "Guías de viaje"; - -"more_apps_ads" = "Más aplicaciones"; - "placepage_distance" = "Distancia"; "placepage_coordinates" = "Coordenadas"; diff --git a/iphone/Maps/fr.lproj/Localizable.strings b/iphone/Maps/fr.lproj/Localizable.strings index fe8bb645d3..df37842430 100644 --- a/iphone/Maps/fr.lproj/Localizable.strings +++ b/iphone/Maps/fr.lproj/Localizable.strings @@ -491,12 +491,6 @@ "pref_zoom_summary" = "Afficher à l'écran"; -"more_apps_title" = "Plus d'applis"; - -"more_apps_guides" = "Guides de voyage"; - -"more_apps_ads" = "Plus d'applis"; - "placepage_distance" = "Distance"; "placepage_coordinates" = "Coordonnées"; diff --git a/iphone/Maps/hu.lproj/Localizable.strings b/iphone/Maps/hu.lproj/Localizable.strings index 293b2e18fa..fd8cc6b6f5 100644 --- a/iphone/Maps/hu.lproj/Localizable.strings +++ b/iphone/Maps/hu.lproj/Localizable.strings @@ -491,12 +491,6 @@ "pref_zoom_summary" = "Mutassa a kijelzőn"; -"more_apps_title" = "Több alkalmazás"; - -"more_apps_guides" = "Útikönyvek"; - -"more_apps_ads" = "Több alkalmazás"; - "placepage_distance" = "Távolság"; "placepage_coordinates" = "Koordináták"; diff --git a/iphone/Maps/it.lproj/Localizable.strings b/iphone/Maps/it.lproj/Localizable.strings index e9a886ceea..bdfbd3f4c7 100644 --- a/iphone/Maps/it.lproj/Localizable.strings +++ b/iphone/Maps/it.lproj/Localizable.strings @@ -491,12 +491,6 @@ "pref_zoom_summary" = "Condividi la mia location"; -"more_apps_title" = "Altre app"; - -"more_apps_guides" = "Guide turistiche"; - -"more_apps_ads" = "Altre app"; - "placepage_distance" = "Distanza"; "placepage_coordinates" = "Coordinate"; diff --git a/iphone/Maps/ja.lproj/Localizable.strings b/iphone/Maps/ja.lproj/Localizable.strings index 703f5c567d..afe5f411f5 100644 --- a/iphone/Maps/ja.lproj/Localizable.strings +++ b/iphone/Maps/ja.lproj/Localizable.strings @@ -491,12 +491,6 @@ "pref_zoom_summary" = "画面上に表示"; -"more_apps_title" = "その他のアプリ"; - -"more_apps_guides" = "トラベルガイド"; - -"more_apps_ads" = "その他のアプリ"; - "placepage_distance" = "距離"; "placepage_coordinates" = "コーディネート"; diff --git a/iphone/Maps/ko.lproj/Localizable.strings b/iphone/Maps/ko.lproj/Localizable.strings index c9f0193646..ccaf223b12 100644 --- a/iphone/Maps/ko.lproj/Localizable.strings +++ b/iphone/Maps/ko.lproj/Localizable.strings @@ -491,12 +491,6 @@ "pref_zoom_summary" = "화면에 표시"; -"more_apps_title" = "기타 앱"; - -"more_apps_guides" = "여행 가이드"; - -"more_apps_ads" = "기타 앱"; - "placepage_distance" = "거리"; "placepage_coordinates" = "좌표"; diff --git a/iphone/Maps/nl.lproj/Localizable.strings b/iphone/Maps/nl.lproj/Localizable.strings index 289f866a05..c9682665e4 100644 --- a/iphone/Maps/nl.lproj/Localizable.strings +++ b/iphone/Maps/nl.lproj/Localizable.strings @@ -491,12 +491,6 @@ "pref_zoom_summary" = "Weergave op het scherm"; -"more_apps_title" = "Meer apps"; - -"more_apps_guides" = "Reisgidsen"; - -"more_apps_ads" = "Meer apps"; - "placepage_distance" = "Afstand"; "placepage_coordinates" = "Coördinaten"; diff --git a/iphone/Maps/pl.lproj/Localizable.strings b/iphone/Maps/pl.lproj/Localizable.strings index dfc58e5e14..19332fc7b5 100644 --- a/iphone/Maps/pl.lproj/Localizable.strings +++ b/iphone/Maps/pl.lproj/Localizable.strings @@ -491,12 +491,6 @@ "pref_zoom_summary" = "Wyświetl na ekranie"; -"more_apps_title" = "Więcej aplikacji"; - -"more_apps_guides" = "Przewodniki podróżne"; - -"more_apps_ads" = "Więcej aplikacji"; - "placepage_distance" = "Dystans"; "placepage_coordinates" = "Współrzędne"; diff --git a/iphone/Maps/pt.lproj/Localizable.strings b/iphone/Maps/pt.lproj/Localizable.strings index 35f20aced3..cd2e70ff93 100644 --- a/iphone/Maps/pt.lproj/Localizable.strings +++ b/iphone/Maps/pt.lproj/Localizable.strings @@ -491,12 +491,6 @@ "pref_zoom_summary" = "Mostrar no ecrã"; -"more_apps_title" = "Mais aplicativos"; - -"more_apps_guides" = "Guias de Viagem"; - -"more_apps_ads" = "Mais aplicativos"; - "placepage_distance" = "Distância"; "placepage_coordinates" = "Coordenadas"; diff --git a/iphone/Maps/ru.lproj/Localizable.strings b/iphone/Maps/ru.lproj/Localizable.strings index a1cd5192bd..5cf80c2dbe 100644 --- a/iphone/Maps/ru.lproj/Localizable.strings +++ b/iphone/Maps/ru.lproj/Localizable.strings @@ -491,12 +491,6 @@ "pref_zoom_summary" = "Показать на карте"; -"more_apps_title" = "Другие приложения"; - -"more_apps_guides" = "Путеводители"; - -"more_apps_ads" = "Другие приложения"; - "placepage_distance" = "Расстояние"; "placepage_coordinates" = "Координаты"; diff --git a/iphone/Maps/sk.lproj/Localizable.strings b/iphone/Maps/sk.lproj/Localizable.strings index 4a160b030a..aac391e36d 100644 --- a/iphone/Maps/sk.lproj/Localizable.strings +++ b/iphone/Maps/sk.lproj/Localizable.strings @@ -491,12 +491,6 @@ "pref_zoom_summary" = "Zobraziť na obrazovke"; -"more_apps_title" = "Viacej aplikácií"; - -"more_apps_guides" = "Travel Guides"; - -"more_apps_ads" = "Viacej aplikácií"; - "placepage_distance" = "Vzdialenosť"; "placepage_coordinates" = "Súradnice"; diff --git a/iphone/Maps/sv.lproj/Localizable.strings b/iphone/Maps/sv.lproj/Localizable.strings index 4987e5970d..f48fc9fa90 100644 --- a/iphone/Maps/sv.lproj/Localizable.strings +++ b/iphone/Maps/sv.lproj/Localizable.strings @@ -491,12 +491,6 @@ "pref_zoom_summary" = "Visa på skärmen"; -"more_apps_title" = "Fler Appar"; - -"more_apps_guides" = "Reseguider"; - -"more_apps_ads" = "Fler Appar"; - "placepage_distance" = "Avstånd"; "placepage_coordinates" = "Koordinater"; diff --git a/iphone/Maps/th.lproj/Localizable.strings b/iphone/Maps/th.lproj/Localizable.strings index b24d08accf..de31d0be83 100644 --- a/iphone/Maps/th.lproj/Localizable.strings +++ b/iphone/Maps/th.lproj/Localizable.strings @@ -491,12 +491,6 @@ "pref_zoom_summary" = "แสดงบนหน้าจอ"; -"more_apps_title" = "แอปเพิ่มเติม"; - -"more_apps_guides" = "คู่มือการเดินทาง"; - -"more_apps_ads" = "แอปเพิ่มเติม"; - "placepage_distance" = "ระยะห่าง"; "placepage_coordinates" = "พิกัด"; diff --git a/iphone/Maps/tr.lproj/Localizable.strings b/iphone/Maps/tr.lproj/Localizable.strings index 39a06de55a..203bc58152 100644 --- a/iphone/Maps/tr.lproj/Localizable.strings +++ b/iphone/Maps/tr.lproj/Localizable.strings @@ -491,12 +491,6 @@ "pref_zoom_summary" = "Ekranda göster"; -"more_apps_title" = "Daha fazla uygulama"; - -"more_apps_guides" = "Seyahat rehberleri"; - -"more_apps_ads" = "Daha fazla uygulama"; - "placepage_distance" = "Mesafe"; "placepage_coordinates" = "Koordinatlar"; diff --git a/iphone/Maps/uk.lproj/Localizable.strings b/iphone/Maps/uk.lproj/Localizable.strings index ee69d26764..b68c1afc5f 100644 --- a/iphone/Maps/uk.lproj/Localizable.strings +++ b/iphone/Maps/uk.lproj/Localizable.strings @@ -491,12 +491,6 @@ "pref_zoom_summary" = "Відображення на екрані"; -"more_apps_title" = "Більше програм"; - -"more_apps_guides" = "Довідники туриста"; - -"more_apps_ads" = "Більше програм"; - "placepage_distance" = "Відстань"; "placepage_coordinates" = "Координати"; diff --git a/iphone/Maps/zh-Hans.lproj/Localizable.strings b/iphone/Maps/zh-Hans.lproj/Localizable.strings index 69aa58a471..5810ea65ee 100644 --- a/iphone/Maps/zh-Hans.lproj/Localizable.strings +++ b/iphone/Maps/zh-Hans.lproj/Localizable.strings @@ -491,12 +491,6 @@ "pref_zoom_summary" = "在屏幕上显示"; -"more_apps_title" = "更多应用"; - -"more_apps_guides" = "旅游指南"; - -"more_apps_ads" = "更多应用"; - "placepage_distance" = "距离"; "placepage_coordinates" = "坐标"; diff --git a/iphone/Maps/zh-Hant.lproj/Localizable.strings b/iphone/Maps/zh-Hant.lproj/Localizable.strings index d119460b30..d9fc5fda79 100644 --- a/iphone/Maps/zh-Hant.lproj/Localizable.strings +++ b/iphone/Maps/zh-Hant.lproj/Localizable.strings @@ -491,12 +491,6 @@ "pref_zoom_summary" = "在螢幕上顯示"; -"more_apps_title" = "更多應用"; - -"more_apps_guides" = "旅行指南"; - -"more_apps_ads" = "更多應用"; - "placepage_distance" = "距离"; "placepage_coordinates" = "坐标"; diff --git a/map/active_maps_layout.cpp b/map/active_maps_layout.cpp index fb935f5a70..e93cc94d5f 100644 --- a/map/active_maps_layout.cpp +++ b/map/active_maps_layout.cpp @@ -260,16 +260,6 @@ void ActiveMapsLayout::RemoveListener(int slotID) m_listeners.erase(slotID); } -bool ActiveMapsLayout::GetGuideInfo(TIndex const & index, guides::GuideInfo & info) const -{ - return m_framework.GetGuideInfo(index, info); -} - -bool ActiveMapsLayout::GetGuideInfo(TGroup const & group, int position, guides::GuideInfo & info) const -{ - return GetGuideInfo(GetItemInGroup(group, position).m_index, info); -} - void ActiveMapsLayout::DownloadMap(TIndex const & index, TMapOptions const & options) { TMapOptions validOptions = ValidOptionsForDownload(options); diff --git a/map/active_maps_layout.hpp b/map/active_maps_layout.hpp index 8d7904f705..7dc04a110b 100644 --- a/map/active_maps_layout.hpp +++ b/map/active_maps_layout.hpp @@ -1,11 +1,13 @@ #pragma once #include "../storage/storage_defines.hpp" -#include "../storage/guides.hpp" #include "../storage/index.hpp" #include "../std/string.hpp" #include "../std/vector.hpp" +#include "../std/map.hpp" +#include "../std/function.hpp" + class Framework; @@ -67,8 +69,6 @@ public: int AddListener(ActiveMapsListener * listener); void RemoveListener(int slotID); - bool GetGuideInfo(TGroup const & group, int position, guides::GuideInfo & info) const; - void DownloadMap(TIndex const & index, TMapOptions const & options); void DownloadMap(TGroup const & group, int position, TMapOptions const & options); void DeleteMap(TIndex const & index, TMapOptions const & options); @@ -94,8 +94,6 @@ private: void Init(vector const & maps); void Clear(); - bool GetGuideInfo(TIndex const & index, guides::GuideInfo & info) const; - void ShowMap(TIndex const & index); private: diff --git a/map/country_tree.cpp b/map/country_tree.cpp index 7ee6ffa724..72e6d86557 100644 --- a/map/country_tree.cpp +++ b/map/country_tree.cpp @@ -156,12 +156,6 @@ TMapOptions CountryTree::GetLeafOptions(int position) const return options; } -bool CountryTree::GetLeafGuideInfo(int position, guides::GuideInfo & info) const -{ - ASSERT(IsLeaf(position), ()); - return GetActiveMapLayout().GetGuideInfo(GetChild(position), info); -} - LocalAndRemoteSizeT const CountryTree::GetDownloadableLeafSize(int position) const { return GetActiveMapLayout().GetDownloadableCountrySize(GetChild(position)); diff --git a/map/country_tree.hpp b/map/country_tree.hpp index 6824bf75b7..7163778ff8 100644 --- a/map/country_tree.hpp +++ b/map/country_tree.hpp @@ -58,7 +58,6 @@ public: /// call this only if child IsLeaf == true TStatus GetLeafStatus(int position) const; TMapOptions GetLeafOptions(int position) const; - bool GetLeafGuideInfo(int position, guides::GuideInfo & info) const; LocalAndRemoteSizeT const GetDownloadableLeafSize(int position) const; LocalAndRemoteSizeT const GetLeafSize(int position, TMapOptions const & options) const; LocalAndRemoteSizeT const GetRemoteLeafSizes(int position) const; diff --git a/map/framework.cpp b/map/framework.cpp index e8f970bd4e..7fcff9aac8 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -267,12 +267,6 @@ Framework::Framework() m_storage.Init(bind(&Framework::UpdateAfterDownload, this, _1, _2)); LOG(LDEBUG, ("Storage initialized")); -#ifndef OMIM_OS_DESKTOP - // Init guides manager - m_storage.GetGuideManager().RestoreFromFile(); - LOG(LDEBUG, ("Guides info initialized")); -#endif - m_routingSession.SetRouter(new OsrmRouter(&m_model.GetIndex(), [this] (m2::PointD const & pt) { return GetSearchEngine()->GetCountryFile(pt); @@ -1944,11 +1938,6 @@ void Framework::UpdateSavedDataVersion() Settings::Set("DataVersion", m_storage.GetCurrentDataVersion()); } -bool Framework::GetGuideInfo(TIndex const & index, guides::GuideInfo & info) const -{ - return m_storage.GetGuideManager().GetGuideInfo(m_storage.CountryFileNameWithoutExt(index), info); -} - bool Framework::IsRoutingActive() const { return m_routingSession.IsActive(); diff --git a/map/framework.hpp b/map/framework.hpp index 12949f75bb..6f39b1275d 100644 --- a/map/framework.hpp +++ b/map/framework.hpp @@ -489,13 +489,6 @@ public: void UpdateSavedDataVersion(); //@} - /// @name Guides - //@{ -public: - guides::GuidesManager & GetGuidesManager() { return m_storage.GetGuideManager(); } - bool GetGuideInfo(storage::TIndex const & index, guides::GuideInfo & info) const; - //@} - BookmarkManager & GetBookmarkManager() { return m_bmManager; } public: diff --git a/storage/guides.cpp b/storage/guides.cpp deleted file mode 100644 index 6ffeaeeaf9..0000000000 --- a/storage/guides.cpp +++ /dev/null @@ -1,315 +0,0 @@ -#include "guides.hpp" - -#include "../coding/file_writer.hpp" -#include "../coding/file_reader.hpp" -#include "../coding/internal/file_data.hpp" - -#include "../platform/platform.hpp" -#include "../platform/settings.hpp" - -#include "../base/logging.hpp" -#include "../base/timer.hpp" - -#include "../std/bind.hpp" -#include "../std/iostream.hpp" -#include "../std/target_os.hpp" - -#include "../3party/jansson/myjansson.hpp" - - -namespace -{ -char const * GUIDE_UPDATE_TIME_KEY = "GuideUpdateTime"; -char const * GUIDE_ADVERTISE_KEY = "GuideAdvertised:"; -int const GUIDE_UPDATE_PERIOD = 60 * 60 * 24; -} - -namespace guides -{ - -string GetStringImpl(json_t * j) -{ - char const * s = json_string_value(j); - return (s ? s : ""); -} - -GuideInfo::GuideInfo(json_struct_t * obj, const char * name) - : m_obj(obj), m_name(name ? name : "") -{ -} - -string GuideInfo::GetName() const -{ - return m_name; -} - -string GuideInfo::GetString(char const * key) const -{ - return GetStringImpl(json_object_get(m_obj.get(), key)); -} - -string GuideInfo::GetAdForLang(string const & lang, char const * key) const -{ - json_t * jKey = json_object_get(m_obj.get(), key); - ASSERT(jKey, (key)); - - string s = GetStringImpl(json_object_get(jKey, lang.c_str())); - if (s.empty()) - { - s = GetStringImpl(json_object_get(jKey, "en")); - ASSERT(!s.empty(), ()); - } - return s; -} - -string GuideInfo::GetURL() const -{ - return GetString("url"); -} - -string GuideInfo::GetAppID() const -{ - return GetString("appId"); -} - -string GuideInfo::GetAdTitle(string const & lang) const -{ - return GetAdForLang(lang, "adTitles"); -} - -string GuideInfo::GetAdMessage(string const & lang) const -{ - return GetAdForLang(lang, "adMessages"); -} - -bool GuideInfo::IsValid() const -{ - return (!GetURL().empty() && !GetAppID().empty()); -} - -string DebugPrint(GuideInfo const & r) -{ - ostringstream ss; - ss << "URL: " << r.GetURL() << "; ID: " << r.GetAppID(); - return ss.str(); -} - -void GuidesManager::RestoreFromParsedData(int version, MapT & guidesInfo) -{ - m_version = version; - m_file2Info.swap(guidesInfo); -} - -bool GuidesManager::RestoreFromFile() -{ - int resourcesVersion = -1, downloadedVersion = -1; - MapT fromResources, fromDownloaded; - - // Do not merge this blocks into one try-catch. Try to read from 2 sources independently. - Platform & pl = GetPlatform(); - try - { - string json; - ReaderPtr(pl.GetReader(GetDataFileName(), "r")).ReadAsString(json); - resourcesVersion = ParseGuidesData(json, fromResources); - } - catch (RootException const &) - { - } - - try - { - string json; - FileReader(GetDataFileFullPath()).ReadAsString(json); - downloadedVersion = ParseGuidesData(json, fromDownloaded); - } - catch (RootException const &) - { - } - - if (resourcesVersion >= 0) - { - if (downloadedVersion > resourcesVersion) - { - RestoreFromParsedData(downloadedVersion, fromDownloaded); - return true; - } - RestoreFromParsedData(resourcesVersion, fromResources); - return true; - } - - LOG(LINFO, ("Travel Guides descriptions were not loaded from bundle and they are disabled")); - return false; -} - -void GuidesManager::UpdateGuidesData() -{ - // Do not download any updated guides if they are not present at all in the resources. - // This means that some app stores, like Amazon and Samsung, doesn't want us to promote guides on Google Play. - if (m_file2Info.empty()) - return; - - if (m_httpRequest) - return; - - double lastUpdateTime; - bool const flag = Settings::Get(GUIDE_UPDATE_TIME_KEY, lastUpdateTime); - - double const currentTime = my::Timer::LocalTime(); - if (!flag || ((currentTime - lastUpdateTime) >= GUIDE_UPDATE_PERIOD)) - { - Settings::Set(GUIDE_UPDATE_TIME_KEY, currentTime); - - downloader::HttpRequest::CallbackT onFinish = bind(&GuidesManager::OnFinish, this, _1); - m_httpRequest.reset(downloader::HttpRequest::Get(GetGuidesDataUrl(), onFinish)); - } -} - -bool GuidesManager::GetGuideInfo(string const & countryFile, GuideInfo & appInfo) const -{ - MapT::const_iterator const it = m_file2Info.find(countryFile); - if (it != m_file2Info.end()) - { - appInfo = it->second; - return true; - } - return false; -} - -bool GuidesManager::GetGuideInfoByAppId(string const & id, GuideInfo & appInfo) const -{ - for (MapT::const_iterator it = m_file2Info.begin(); it != m_file2Info.end(); ++it) - if (it->second.GetAppID() == id) - { - appInfo = it->second; - return true; - } - return false; -} - -void GuidesManager::GetGuidesIds(set & s) -{ - for (MapT::iterator it = m_file2Info.begin(); it != m_file2Info.end(); ++it) - s.insert(it->second.GetAppID()); -} - -string GuidesManager::GetGuidesDataUrl() -{ -#ifdef DEBUG - return "http://application.server/rest/guides/debug/" + GetDataFileName(); -#else - return "http://application.server/rest/guides/v1/" + GetDataFileName(); -#endif -} - -string GuidesManager::GetDataFileName() -{ - return OMIM_OS_NAME "-" GUIDES_DATA_FILE_SUFFIX; -} - -string GuidesManager::GetDataFileFullPath() -{ - return GetPlatform().SettingsDir() + GetDataFileName(); -} - -void GuidesManager::OnFinish(downloader::HttpRequest & request) -{ - if (request.Status() == downloader::HttpRequest::ECompleted) - { - string const & data = request.Data(); - MapT tmpGuides; - int const downloadedVersion = ParseGuidesData(data, tmpGuides); - - // Sanity check if we forgot to update json version on servers - if (downloadedVersion == -1) - { - LOG(LWARNING, ("Request data is invalid:", request.Data())); - } - else if (downloadedVersion > m_version) - { - // Load into the memory even if we will fail to save it on disk - m_version = downloadedVersion; - m_file2Info.swap(tmpGuides); - - string const path = GetDataFileFullPath(); - try - { - FileWriter writer(path); - writer.Write(data.c_str(), data.size()); - } - catch (Writer::Exception const & ex) - { - LOG(LWARNING, ("Failed to write guide info file:", ex.Msg())); - - // Delete file in case of error - // (app will get the default one from bundle on start). - (void)my::DeleteFileX(path); - } - } - } - else - LOG(LWARNING, ("Request is failed to complete:", request.Status())); - - m_httpRequest.reset(); -} - -int GuidesManager::ParseGuidesData(string const & jsonData, MapT & guidesInfo) -{ - guidesInfo.clear(); - // 0 means "version" key is absent in json - int version = 0; - try - { - my::Json root(jsonData.c_str()); - void * iter = json_object_iter(root.get()); - - MapT temp; - while (iter) - { - json_t * entry = json_object_iter_value(iter); - if (entry) - { - if (json_is_integer(entry) && string(json_object_iter_key(iter)) == "version") - version = json_integer_value(entry); - else - { - GuideInfo info(entry, json_object_iter_key(iter)); - if (info.IsValid()) - { - json_t * keys = json_object_get(entry, "keys"); - for (size_t i = 0; i < json_array_size(keys); ++i) - { - char const * key = json_string_value(json_array_get(keys, i)); - if (key) - temp.insert(MapT::value_type(key, info)); - } - } - } - } - - iter = json_object_iter_next(root.get(), iter); - } - - guidesInfo.swap(temp); - return version; - } - catch (my::Json::Exception const & ex) - { - LOG(LWARNING, ("Failed to parse guides data:", ex.Msg())); - return -1; - } -} - -bool GuidesManager::WasAdvertised(string const & appID) -{ - bool flag = false; - Settings::Get(GUIDE_ADVERTISE_KEY + appID, flag); - return flag; -} - -void GuidesManager::SetWasAdvertised(string const & appID) -{ - Settings::Set(GUIDE_ADVERTISE_KEY + appID, true); -} - -} diff --git a/storage/guides.hpp b/storage/guides.hpp deleted file mode 100644 index b230cc398d..0000000000 --- a/storage/guides.hpp +++ /dev/null @@ -1,80 +0,0 @@ -#pragma once - -#include "../platform/http_request.hpp" - -#include "../std/string.hpp" -#include "../std/map.hpp" -#include "../std/set.hpp" -#include "../std/unique_ptr.hpp" -#include "../std/noncopyable.hpp" - -#include "../3party/jansson/jansson_handle.hpp" - -namespace guides -{ - -class GuideInfo -{ - my::JsonHandle m_obj; - string m_name; - - string GetString(char const * key) const; - string GetAdForLang(string const & lang, char const * key) const; - -public: - GuideInfo(json_struct_t * obj = 0, char const * name = 0); - - string GetName() const; - string GetURL() const; - string GetAppID() const; - string GetAdTitle(string const & lang) const; - string GetAdMessage(string const & lang) const; - - bool operator == (GuideInfo const & r) const { return (m_obj.get() == r.m_obj.get()); } - - bool IsValid() const; -}; - -string DebugPrint(GuideInfo const & r); - -class GuidesManager : private noncopyable -{ -/// @name Guides managment -//@{ -public: - void UpdateGuidesData(); - bool RestoreFromFile(); - typedef map MapT; - /// @param[in] guidesInfo filled with correct info about guides on success - /// @return -1 if failed to parse or json version number otherwise. 0 means version is absent in json. - static int ParseGuidesData(string const & jsonData, MapT & guidesInfo); - void RestoreFromParsedData(int version, MapT & guidesInfo); - static string GetDataFileFullPath(); - - /// @param[in] id MWM file name without extension as a key. - bool GetGuideInfo(string const & countryFile, GuideInfo & appInfo) const; - bool GetGuideInfoByAppId(string const & id, GuideInfo & appInfo) const; - void GetGuidesIds(set & s); - - /// @param[in] appID Guide app package id. - //@{ - bool WasAdvertised(string const & appID); - void SetWasAdvertised(string const & appID); - //@} - -private: - void OnFinish(downloader::HttpRequest & request); - static string GetGuidesDataUrl(); - static string GetDataFileName(); - - /// Map from mwm file name (key) to guide info. - MapT m_file2Info; - - /// Loaded Guides json version - int m_version; - - unique_ptr m_httpRequest; -//@} -}; - -} diff --git a/storage/storage.cpp b/storage/storage.cpp index b8f74f11e8..e14dcfb4df 100644 --- a/storage/storage.cpp +++ b/storage/storage.cpp @@ -303,8 +303,6 @@ namespace storage return; } - m_guideManager.UpdateGuidesData(); - // remove it from failed list m_failedCountries.erase(index); diff --git a/storage/storage.hpp b/storage/storage.hpp index 093cd6171f..258faba238 100644 --- a/storage/storage.hpp +++ b/storage/storage.hpp @@ -3,7 +3,6 @@ #include "storage_defines.hpp" #include "country.hpp" #include "index.hpp" -#include "guides.hpp" #include "../platform/http_request.hpp" @@ -150,14 +149,5 @@ namespace storage private: TStatus CountryStatusWithoutFailed(TIndex const & index) const; TStatus CountryStatusFull(TIndex const & index, TStatus const status) const; - - //@{ - private: - guides::GuidesManager m_guideManager; - - public: - guides::GuidesManager const & GetGuideManager() const { return m_guideManager; } - guides::GuidesManager & GetGuideManager() { return m_guideManager; } - //@} }; } diff --git a/storage/storage.pro b/storage/storage.pro index 68bfca9d88..01f5e4bd07 100644 --- a/storage/storage.pro +++ b/storage/storage.pro @@ -18,7 +18,6 @@ HEADERS += \ country_info.hpp \ country_decl.hpp \ index.hpp \ - guides.hpp \ storage_defines.hpp \ SOURCES += \ @@ -27,4 +26,3 @@ SOURCES += \ country_info.cpp \ country_decl.cpp \ index.cpp \ - guides.cpp \ diff --git a/storage/storage_tests/guides_tests.cpp b/storage/storage_tests/guides_tests.cpp deleted file mode 100644 index 53b57d6a24..0000000000 --- a/storage/storage_tests/guides_tests.cpp +++ /dev/null @@ -1,218 +0,0 @@ -#include "../../testing/testing.hpp" - -#include "../guides.hpp" - -#include "../../platform/platform.hpp" - -#include "../../coding/file_writer.hpp" -#include "../../coding/file_reader.hpp" - -// Needed for friend functions to work correctly -namespace guides -{ - -UNIT_TEST(Guides_SmokeTest) -{ - GuidesManager manager; - GuideInfo info; - - string const str = "{ \"version\": 2," - "\"UK\": {" - "\"url\": \"https://itunes.apple.com/app/uk-travel-guide-with-me/id687855665\"," - "\"appId\": \"com.guideswithme.uk\"," - "\"adTitles\": { \"en\": \"UK title\", \"ru\": \"ВБ заголовок\" }," - "\"adMessages\": { \"en\": \"UK message\", \"ru\": \"ВБ сообщение\" }," - "\"keys\": [ \"Guernsey\", \"Mercy\" ]" - "} }"; - - GuidesManager::MapT data; - int version; - TEST_EQUAL(-1, version = manager.ParseGuidesData("invalidtest", data), ()); - TEST_EQUAL(0, version = manager.ParseGuidesData("{}", data), ()); - manager.RestoreFromParsedData(version, data); - TEST(!manager.GetGuideInfo("Guernsey", info), ()); - - TEST_EQUAL(2, version = manager.ParseGuidesData(str, data), ()); - manager.RestoreFromParsedData(version, data); - TEST(manager.GetGuideInfo("Guernsey", info), ()); - TEST(info.IsValid(), ()); - - TEST_EQUAL(info.GetName(), "UK", ()); - TEST_EQUAL(info.GetAdTitle("en"), "UK title", ()); - TEST_EQUAL(info.GetAdMessage("en"), "UK message", ()); - TEST_EQUAL(info.GetAdTitle("ru"), "ВБ заголовок", ()); - TEST_EQUAL(info.GetAdMessage("ru"), "ВБ сообщение", ()); - TEST_EQUAL(info.GetAdTitle("zh"), "UK title", ()); - TEST_EQUAL(info.GetAdMessage("zh"), "UK message", ()); - - GuideInfo info1; - TEST(manager.GetGuideInfo("Mercy", info1), ()); - TEST(info1.IsValid(), ()); - TEST_EQUAL(info, info1, ()); - - TEST(!manager.GetGuideInfo("Minsk", info), ()); -} - -UNIT_TEST(Guides_CorrectlyParseData) -{ - GuidesManager manager; - GuideInfo info; - - string strLondonIsle = "{ \"version\": 2," - "\"UK_1\": {" - "\"url\": \"https://itunes.apple.com/app/uk-travel-guide-with-me/id687855665\"," - "\"appId\": \"com.guideswithme.uk\"," - "\"adTitles\": { \"en\": \"UK title\", \"ru\": \"ВБ заголовок\" }," - "\"adMessages\": { \"en\": \"UK message\", \"ru\": \"ВБ сообщение\" }," - "\"keys\": [ \"London\" ]" - "}, \"UK_2\": {" - "\"url\": \"https://play.google.com/store/apps/details?id=com.guidewithme.uk\"," - "\"appId\": \"com.guideswithme.uk\"," - "\"adTitles\": { \"en\": \"UK title\", \"ru\": \"ВБ заголовок\" }," - "\"adMessages\": { \"en\": \"UK message\", \"ru\": \"ВБ сообщение\" }," - "\"keys\": [ \"Isle of Man\" ]" - "} }"; - - string validKeys[] = { "London", "Isle of Man" }; - string invalidKeys[] = { "london", "Lond", "Isle", "Man" }; - - GuidesManager::MapT data; - int version; - TEST_EQUAL(2, version = manager.ParseGuidesData(strLondonIsle, data), ()); - manager.RestoreFromParsedData(version, data); - for (size_t i = 0; i < ARRAY_SIZE(validKeys); ++i) - { - TEST(manager.GetGuideInfo(validKeys[i], info), (i)); - TEST(info.IsValid(), ()); - } - - for (size_t i = 0; i < ARRAY_SIZE(invalidKeys); ++i) - TEST(!manager.GetGuideInfo(invalidKeys[i], info), (i)); - - char const * guidesArray[][2] = - { - { "https://itunes.apple.com/app/uk-travel-guide-with-me/id687855665", "com.guideswithme.uk" }, - { "https://play.google.com/store/apps/details?id=com.guidewithme.uk", "com.guideswithme.uk" } - }; - - for (size_t i = 0; i < ARRAY_SIZE(validKeys); ++i) - { - TEST(manager.GetGuideInfo(validKeys[i], info), ()); - TEST(info.IsValid(), ()); - TEST_EQUAL(info.GetURL(), guidesArray[i][0], (i)); - TEST_EQUAL(info.GetAppID(), guidesArray[i][1], (i)); - } -} - -UNIT_TEST(Guides_ComplexNames) -{ - GuidesManager manager; - GuideInfo info; - - string const strLondonIsle = "{ \"version\": 123456," - "\"Côte_d'Ivoire\": {" - "\"url\": \"https://itunes.apple.com/app/uk-travel-guide-with-me/id687855665\"," - "\"appId\": \"com.guideswithme.uk\"," - "\"adTitles\": { \"en\": \"Côte_d'Ivoire title\", \"ru\": \"КДВар заголовок\" }," - "\"adMessages\": { \"en\": \"Côte_d'Ivoire message\", \"ru\": \"КДВар сообщение\" }," - "\"keys\": [ \"Côte_d'Ivoire\" ]" - "}, \"Беларусь\": {" - "\"url\": \"https://play.google.com/store/apps/details?id=com.guidewithme.uk\"," - "\"appId\": \"com.guideswithme.uk\"," - "\"adTitles\": { \"en\": \"Belarus title\", \"ru\": \"РБ заголовок\" }," - "\"adMessages\": { \"en\": \"Belarus message\", \"ru\": \"РБ сообщение\" }," - "\"keys\": [ \"Беларусь\" ]" - "} }"; - - string validKeys[] = { "Côte_d'Ivoire", "Беларусь" }; - string invalidKeys[] = { "Не Беларусь", "Côte_d'IvoireCôte_d'IvoireCôte_d'Ivoire" }; - - GuidesManager::MapT data; - int version; - TEST_EQUAL(123456, version = manager.ParseGuidesData(strLondonIsle, data), ()); - manager.RestoreFromParsedData(version, data); - for (size_t i = 0; i < ARRAY_SIZE(validKeys); ++i) - { - TEST(manager.GetGuideInfo(validKeys[i], info), (i)); - TEST(info.IsValid(), ()); - } - - for (size_t i = 0; i < ARRAY_SIZE(invalidKeys); ++i) - TEST(!manager.GetGuideInfo(invalidKeys[i], info), (i)); -} - -UNIT_TEST(Guides_SaveRestoreFromFile) -{ - GuidesManager manager; - GuideInfo info; - - string const strLondonIsle = "{ \"version\": 2," - "\"UK_1\": {" - "\"url\": \"https://itunes.apple.com/app/uk-travel-guide-with-me/id687855665\"," - "\"appId\": \"com.guideswithme.uk\"," - "\"adTitles\": { \"en\": \"UK title\", \"ru\": \"ВБ заголовок\" }," - "\"adMessages\": { \"en\": \"UK message\", \"ru\": \"ВБ сообщение\" }," - "\"keys\": [ \"London\" ]" - "}, \"UK_2\": {" - "\"url\": \"https://play.google.com/store/apps/details?id=com.guidewithme.uk\"," - "\"appId\": \"com.guideswithme.uk\"," - "\"adTitles\": { \"en\": \"UK title\", \"ru\": \"ВБ заголовок\" }," - "\"adMessages\": { \"en\": \"UK message\", \"ru\": \"ВБ сообщение\" }," - "\"keys\": [ \"Isle of Man\" ]" - "} }"; - - GuidesManager::MapT data; - int version; - TEST_EQUAL(2, version = manager.ParseGuidesData(strLondonIsle, data), ()); - manager.RestoreFromParsedData(version, data); - - string const path = manager.GetDataFileFullPath(); - { - FileWriter writer(path); - writer.Write(strLondonIsle.c_str(), strLondonIsle.size()); - } - - TEST(manager.RestoreFromFile(), ()); - - string validKeys[] = { "London", "Isle of Man" }; - char const * guidesArray [][2] = - { - { "https://itunes.apple.com/app/uk-travel-guide-with-me/id687855665", "com.guideswithme.uk" }, - { "https://play.google.com/store/apps/details?id=com.guidewithme.uk", "com.guideswithme.uk" } - }; - - for (size_t i = 0; i < ARRAY_SIZE(validKeys); ++i) - { - TEST(manager.GetGuideInfo(validKeys[i], info), (i)); - TEST(info.IsValid(), ()); - TEST_EQUAL(info.GetURL(), guidesArray[i][0], (i)); - TEST_EQUAL(info.GetAppID(), guidesArray[i][1], (i)); - } - - FileWriter::DeleteFileX(path); -} - -UNIT_TEST(Guides_CheckDataFiles) -{ - string const path = GetPlatform().WritableDir(); - string arr[] = { "android-guides.json", "ios-guides.json" }; - - GuidesManager manager; - GuideInfo info; - - for (size_t i = 0; i < ARRAY_SIZE(arr); ++i) - { - FileReader reader(path + arr[i]); - string str; - reader.ReadAsString(str); - - GuidesManager::MapT data; - int version; - TEST_LESS(0, version = manager.ParseGuidesData(str, data), ()); - manager.RestoreFromParsedData(version, data); - TEST(manager.GetGuideInfo("UK_England", info), ()); - TEST(info.IsValid(), ()); - } -} - -} // namespace guides diff --git a/storage/storage_tests/storage_tests.pro b/storage/storage_tests/storage_tests.pro index 72028446c6..45cd3b0f09 100644 --- a/storage/storage_tests/storage_tests.pro +++ b/storage/storage_tests/storage_tests.pro @@ -24,4 +24,3 @@ SOURCES += \ simple_tree_test.cpp \ country_info_test.cpp \ storage_tests.cpp \ - guides_tests.cpp \ diff --git a/strings.txt b/strings.txt index 9a91e1eda0..9dec15e08c 100644 --- a/strings.txt +++ b/strings.txt @@ -4246,78 +4246,6 @@ tr = Ekranda göster sv = Visa på skärmen - [more_apps_title] - tags = ios,android - en = More Apps - ru = Другие приложения - fr = Plus d'applis - pl = Więcej aplikacji - zh-Hant = 更多應用 - de = Mehr Apps - uk = Більше програм - pt = Mais aplicativos - es = Más aplicaciones - it = Altre app - ko = 기타 앱 - nl = Meer apps - cs = Další aplikace - sk = Viacej aplikácií - ja = その他のアプリ - hu = Több alkalmazás - th = แอปเพิ่มเติม - zh-Hans = 更多应用 - ar = المزيد من التطبيقات - da = Flere apps - tr = Daha fazla uygulama - sv = Fler Appar - - [more_apps_guides] - en = Travel Guides - ru = Путеводители - fr = Guides de voyage - pl = Przewodniki podróżne - zh-Hant = 旅行指南 - de = Reiseführer - uk = Довідники туриста - pt = Guias de Viagem - es = Guías de viaje - it = Guide turistiche - ko = 여행 가이드 - nl = Reisgidsen - cs = Cestovní průvodce - ja = トラベルガイド - hu = Útikönyvek - th = คู่มือการเดินทาง - zh-Hans = 旅游指南 - ar = دليل السفر الارشادي - da = Rejseguider - tr = Seyahat rehberleri - sv = Reseguider - - [more_apps_ads] - fr = Plus d'applis - pl = Więcej aplikacji - zh-Hant = 更多應用 - de = Mehr Apps - uk = Більше програм - pt = Mais aplicativos - es = Más aplicaciones - it = Altre app - ko = 기타 앱 - nl = Meer apps - cs = Další aplikace - sk = Viacej aplikácií - ja = その他のアプリ - hu = Több alkalmazás - en = More Apps - ru = Другие приложения - th = แอปเพิ่มเติม - zh-Hans = 更多应用 - ar = المزيد من التطبيقات - da = Flere apps - tr = Daha fazla uygulama - sv = Fler Appar - [placepage_distance] en = Distance fr = Distance