Merge pull request #4381 from bykoianko/release-64-to-master

release-64 to master
This commit is contained in:
Vlad Mihaylenko 2016-09-26 17:07:15 +04:00 committed by GitHub
commit a115d10958
175 changed files with 3391 additions and 2261 deletions

View file

@ -3,8 +3,8 @@ propMinSdkVersion=15
# https://code.google.com/p/android/issues/detail?id=184567
propTargetSdkVersion=22
propBuildToolsVersion=22.0.1
propVersionCode=630
propVersionName=6.3
propVersionCode=642
propVersionName=6.4.2
propDebugNdkFlags=V=1 NDK_DEBUG=1 DEBUG=1
propReleaseNdkFlags=V=1 NDK_DEBUG=0 PRODUCTION=1

View file

@ -16,6 +16,7 @@ extern JavaVM * GetJVM()
// caching is necessary to create class from native threads
jclass g_mapObjectClazz;
jclass g_bookmarkClazz;
jclass g_myTrackerClazz;
extern "C"
{
@ -29,6 +30,7 @@ JNI_OnLoad(JavaVM * jvm, void *)
JNIEnv * env = jni::GetEnv();
g_mapObjectClazz = jni::GetGlobalClassRef(env, "com/mapswithme/maps/bookmarks/data/MapObject");
g_bookmarkClazz = jni::GetGlobalClassRef(env, "com/mapswithme/maps/bookmarks/data/Bookmark");
g_myTrackerClazz = jni::GetGlobalClassRef(env, "com/my/tracker/MyTracker");
return JNI_VERSION_1_6;
}
@ -40,6 +42,7 @@ JNI_OnUnload(JavaVM *, void *)
JNIEnv * env = jni::GetEnv();
env->DeleteGlobalRef(g_mapObjectClazz);
env->DeleteGlobalRef(g_bookmarkClazz);
env->DeleteGlobalRef(g_myTrackerClazz);
}
} // extern "C"

View file

@ -11,6 +11,7 @@
extern jclass g_mapObjectClazz;
extern jclass g_bookmarkClazz;
extern jclass g_myTrackerClazz;
namespace jni
{

View file

@ -86,7 +86,22 @@ void Platform::SendPushWooshTag(string const & tag, vector<string> const & value
void Platform::SendMarketingEvent(string const & tag, map<string, string> const & params)
{
// TODO: Add implementation.
JNIEnv * env = jni::GetEnv();
if (env == nullptr)
return;
string eventData = tag;
for (auto const & item : params)
{
eventData.append("_" + item.first + "_" + item.second);
}
static jmethodID const myTrackerTrackEvent =
env->GetStaticMethodID(g_myTrackerClazz, "trackEvent", "(Ljava/lang/String;)V");
env->CallStaticVoidMethod(g_myTrackerClazz, myTrackerTrackEvent,
jni::TScopedLocalRef(env, jni::ToJavaString(env, eventData)).get());
}
Platform::EConnectionType Platform::ConnectionStatus()

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

View file

@ -12,6 +12,7 @@
android:paddingStart="@dimen/altitude_chart_container_padding_left"
android:paddingRight="@dimen/altitude_chart_container_padding_left"
android:paddingEnd="@dimen/altitude_chart_container_padding_left"
android:paddingBottom="@dimen/altitude_chart_container_padding_bottom"
android:orientation="horizontal"
tools:showIn="@layout/fragment_routing">
@ -24,6 +25,5 @@
<ImageView
android:id="@+id/altitude_chart"
android:layout_width="@dimen/altitude_chart_image_width"
android:layout_height="@dimen/altitude_chart_image_height"
android:layout_marginBottom="8dp"/>
android:layout_height="@dimen/altitude_chart_image_height"/>
</LinearLayout>

View file

@ -29,7 +29,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:textAppearance="@style/MwmTextAppearance.RoutingNumber"
android:textAppearance="@style/MwmTextAppearance.RoutingNumber.Navigation"
tools:text="999"/>
<TextView
@ -37,7 +37,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:textAppearance="@style/MwmTextAppearance.RoutingDimension.Inline"
android:textAppearance="@style/MwmTextAppearance.RoutingDimension"
tools:text="km/h"/>
</LinearLayout>
@ -64,7 +64,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:textAppearance="@style/MwmTextAppearance.RoutingNumber"
android:textAppearance="@style/MwmTextAppearance.RoutingNumber.Navigation"
tools:text="999"/>
<TextView
@ -73,7 +73,7 @@
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/margin_quarter"
android:singleLine="true"
android:textAppearance="@style/MwmTextAppearance.RoutingDimension.Inline"
android:textAppearance="@style/MwmTextAppearance.RoutingDimension"
tools:text="h"/>
<TextView
@ -81,7 +81,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:textAppearance="@style/MwmTextAppearance.RoutingNumber"
android:textAppearance="@style/MwmTextAppearance.RoutingNumber.Navigation"
tools:text="99"/>
<TextView
@ -89,7 +89,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:textAppearance="@style/MwmTextAppearance.RoutingDimension.Inline"
android:textAppearance="@style/MwmTextAppearance.RoutingDimension"
tools:text="m"/>
</LinearLayout>
@ -137,7 +137,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:textAppearance="@style/MwmTextAppearance.RoutingNumber"
android:textAppearance="@style/MwmTextAppearance.RoutingNumber.Navigation"
tools:text="99999"/>
<TextView
@ -145,7 +145,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:textAppearance="@style/MwmTextAppearance.RoutingDimension.Inline"
android:textAppearance="@style/MwmTextAppearance.RoutingDimension"
tools:text="km"/>
</LinearLayout>
</LinearLayout>

View file

@ -79,7 +79,7 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/height_item_edit_bookmark"
android:layout_height="wrap_content"
android:layout_below="@id/rl__bookmark_set"
android:layout_margin="@dimen/margin_half"
android:orientation="vertical"
@ -94,8 +94,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/edit_description_hint"
android:inputType="text"
android:singleLine="false"/>
android:inputType="textMultiLine"/>
</com.mapswithme.maps.widget.CustomTextInputLayout>
</LinearLayout>
</RelativeLayout>

View file

@ -31,7 +31,7 @@
android:layout_marginBottom="@dimen/neg_margin_quarter"
android:singleLine="true"
android:includeFontPadding="false"
android:textAppearance="@style/MwmTextAppearance.RoutingNumber"
android:textAppearance="@style/MwmTextAppearance.RoutingNumber.Navigation"
tools:text="999"/>
<TextView
@ -65,7 +65,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:textAppearance="@style/MwmTextAppearance.RoutingNumber"
android:textAppearance="@style/MwmTextAppearance.RoutingNumber.Navigation"
tools:text="999"/>
<TextView
@ -75,7 +75,7 @@
android:layout_marginRight="@dimen/margin_quarter"
android:layout_marginEnd="@dimen/margin_quarter"
android:singleLine="true"
android:textAppearance="@style/MwmTextAppearance.RoutingDimension.Inline"
android:textAppearance="@style/MwmTextAppearance.RoutingDimension"
tools:text="h"/>
<TextView
@ -83,7 +83,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:textAppearance="@style/MwmTextAppearance.RoutingNumber"
android:textAppearance="@style/MwmTextAppearance.RoutingNumber.Navigation"
tools:text="99"/>
<TextView
@ -91,7 +91,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:textAppearance="@style/MwmTextAppearance.RoutingDimension.Inline"
android:textAppearance="@style/MwmTextAppearance.RoutingNumber"
tools:text="m"/>
</LinearLayout>
@ -101,6 +101,8 @@
android:orientation="horizontal"
android:theme="?navigationTheme"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="@dimen/margin_eighth"
android:layout_marginStart="@dimen/margin_eighth"
android:layout_marginTop="30dp">
<ImageView
android:id="@+id/dot_left"
@ -141,7 +143,7 @@
android:layout_marginBottom="@dimen/neg_margin_quarter"
android:singleLine="true"
android:includeFontPadding="false"
android:textAppearance="@style/MwmTextAppearance.RoutingNumber"
android:textAppearance="@style/MwmTextAppearance.RoutingNumber.Navigation"
tools:text="99999"/>
<TextView

View file

@ -721,6 +721,10 @@
<string name="place_name">اسم المكان</string>
<!-- title above languages list cells in the editor, below editable name text field. -->
<string name="other_languages">لغات أخرى</string>
<!-- small button to open list with names in different languages -->
<string name="show_more">إظهار المزيد</string>
<!-- small button to close list with names in different languages -->
<string name="show_less">إظهار أقل</string>
<string name="add_language">إضافة لغة</string>
<string name="street">الشارع</string>
<!-- Editable House Number text field (in address block). -->
@ -945,4 +949,8 @@
<string name="accept">قبول</string>
<!-- For the first routing -->
<string name="decline">رفض</string>
<string name="whats_new_route_profile_title">الأفضل العثور على حل بدلا من السقوط في خندق</string>
<string name="whats_new_route_profile_message">بالنسبة لمسارات المشاة والدراجات نحن الآن نعرض تشكيل الارتفاع.</string>
<string name="whats_new_booking_improve_title">توفير عند حجز الفنادق</string>
<string name="whats_new_booking_improve_message">تحتوي نتائج البحث عن الفنادق الآن على فئة السعر.\nوأضفنا أيضًا أكثر من 110000 فندق.</string>
</resources>

View file

@ -722,6 +722,10 @@
<string name="place_name">Název místa</string>
<!-- title above languages list cells in the editor, below editable name text field. -->
<string name="other_languages">Další jazyky</string>
<!-- small button to open list with names in different languages -->
<string name="show_more">Zobrazit více</string>
<!-- small button to close list with names in different languages -->
<string name="show_less">Zobrazit méně</string>
<string name="add_language">Přidat jazyk</string>
<string name="street">Ulice</string>
<!-- Editable House Number text field (in address block). -->
@ -946,4 +950,8 @@
<string name="accept">Přijmout</string>
<!-- For the first routing -->
<string name="decline">Odmítnout</string>
<string name="whats_new_route_profile_title">Nejlepší je vyřešit to jednou pro vždy</string>
<string name="whats_new_route_profile_message">U pěších a cyklistických tras nyní zobrazujeme výškový profil.</string>
<string name="whats_new_booking_improve_title">Ušetřete při rezervaci hotelů</string>
<string name="whats_new_booking_improve_message">Výsledky hledání hotelů nyní obsahují cenové kategorie. \nTaké jsme přidali více než 110 000 hotelů.</string>
</resources>

View file

@ -719,6 +719,10 @@
<string name="place_name">Navn på sted</string>
<!-- title above languages list cells in the editor, below editable name text field. -->
<string name="other_languages">Andre sprog</string>
<!-- small button to open list with names in different languages -->
<string name="show_more">Vis mere</string>
<!-- small button to close list with names in different languages -->
<string name="show_less">Vis mindre</string>
<string name="add_language">Tilføj et sprog</string>
<string name="street">Gade</string>
<!-- Editable House Number text field (in address block). -->
@ -943,4 +947,8 @@
<string name="accept">Accepter</string>
<!-- For the first routing -->
<string name="decline">Afvis</string>
<string name="whats_new_route_profile_title">Spring over hvor gærdet er lavest</string>
<string name="whats_new_route_profile_message">Vi viser nu højdeprofilen for fodgænger- og cykelruter.</string>
<string name="whats_new_booking_improve_title">Spar penge når du bestiller hotelværelser</string>
<string name="whats_new_booking_improve_message">Søgeresultater for hoteller viser nu også priskategorien.\nVi har desuden tilføjet mere end 110.000 hoteller.</string>
</resources>

View file

@ -961,4 +961,8 @@
<string name="accept">Annehmen</string>
<!-- For the first routing -->
<string name="decline">Ablehnen</string>
<string name="whats_new_route_profile_title">Am besten den leichtesten Weg gehen</string>
<string name="whats_new_route_profile_message">Für Fußgänger- und Fahrradrouten zeigen wir nun das Höhenprofil an.</string>
<string name="whats_new_booking_improve_title">Beim Buchen von Hotels sparen</string>
<string name="whats_new_booking_improve_message">Suchergebnisse für Hotels enthalten jetzt die Kategorie Preis.\nAußerdem haben wir über 110.000 Hotels hinzugefügt.</string>
</resources>

View file

@ -710,6 +710,10 @@
<string name="place_name">Nombre del lugar</string>
<!-- title above languages list cells in the editor, below editable name text field. -->
<string name="other_languages">Otros idiomas</string>
<!-- small button to open list with names in different languages -->
<string name="show_more">Mostrar más</string>
<!-- small button to close list with names in different languages -->
<string name="show_less">Mostrar menos</string>
<string name="add_language">Añadir un idioma</string>
<string name="street">Calle</string>
<!-- Editable House Number text field (in address block). -->
@ -934,4 +938,8 @@
<string name="accept">Aceptar</string>
<!-- For the first routing -->
<string name="decline">Declinar</string>
<string name="whats_new_route_profile_title">Más vale rodear que no ahogar</string>
<string name="whats_new_route_profile_message">Ahora se muestra el perfil de elevación en los itinerarios pedestres y en bicicleta.</string>
<string name="whats_new_booking_improve_title">Ahorrar al reservar hoteles</string>
<string name="whats_new_booking_improve_message">La búsqueda de resultados de hoteles ahora contiene la categoría de precios.\nHemos añadido más de 110 000 hoteles.</string>
</resources>

View file

@ -715,6 +715,10 @@
<string name="place_name">Paikan nimi</string>
<!-- title above languages list cells in the editor, below editable name text field. -->
<string name="other_languages">Muut Kielet</string>
<!-- small button to open list with names in different languages -->
<string name="show_more">Näytä lisää</string>
<!-- small button to close list with names in different languages -->
<string name="show_less">Näytä vähemmän</string>
<string name="add_language">Lisää kieli</string>
<string name="street">Katu</string>
<!-- Editable House Number text field (in address block). -->
@ -939,4 +943,8 @@
<string name="accept">Hyväksy</string>
<!-- For the first routing -->
<string name="decline">Hylkää</string>
<string name="whats_new_route_profile_title">Parempi katsoa kuin katua</string>
<string name="whats_new_route_profile_message">Näytämme nyt maaston korkeuden kävely- ja pyöräilyreittejä varten.</string>
<string name="whats_new_booking_improve_title">Säästä hotellivarauksissa</string>
<string name="whats_new_booking_improve_message">Hotellien hakutuloksissa näkyy nyt hintakategoria.\nLisäsimme myös yli 110 000 hotellia.</string>
</resources>

View file

@ -735,9 +735,9 @@
<!-- title above languages list cells in the editor, below editable name text field. -->
<string name="other_languages">Autres langues</string>
<!-- small button to open list with names in different languages -->
<string name="show_more">Voir plus</string>
<string name="show_more">Afficher plus</string>
<!-- small button to close list with names in different languages -->
<string name="show_less">Voir moins</string>
<string name="show_less">Afficher moins</string>
<string name="add_language">Ajouter une langue</string>
<string name="street">Rue</string>
<!-- Editable House Number text field (in address block). -->
@ -962,4 +962,8 @@
<string name="accept">Accepter</string>
<!-- For the first routing -->
<string name="decline">Refuser</string>
<string name="whats_new_route_profile_title">C\&#39;est en se bougeant que l\&#39;on trouve des solutions</string>
<string name="whats_new_route_profile_message">Pour les routes pédestres et cyclables nous affichons maintenant le profil d\&#39;élévation.</string>
<string name="whats_new_booking_improve_title">Économisez de l\&#39;argent en réservant des hôtels</string>
<string name="whats_new_booking_improve_message">Les résultats des recherches d\&#39;hôtels comprennent maintenant la catégorie de prix.\nNous avons aussi ajouté plus de 110.000 hôtels.</string>
</resources>

View file

@ -716,6 +716,10 @@
<string name="place_name">Hely neve</string>
<!-- title above languages list cells in the editor, below editable name text field. -->
<string name="other_languages">Más nyelv</string>
<!-- small button to open list with names in different languages -->
<string name="show_more">Továbbiak megjelenítése</string>
<!-- small button to close list with names in different languages -->
<string name="show_less">Kevesebb megjelenítése</string>
<string name="add_language">Nyelv hozzáadása</string>
<string name="street">Utca</string>
<!-- Editable House Number text field (in address block). -->
@ -939,4 +943,8 @@
<string name="accept">Elfogadja</string>
<!-- For the first routing -->
<string name="decline">Elutasítja</string>
<string name="whats_new_route_profile_title">Az árkot jobb megkerülni, mint beleesni</string>
<string name="whats_new_route_profile_message">A gyalogos és kerékpáros utakat most már emelkedési profillal jelenítjük meg.</string>
<string name="whats_new_booking_improve_title">Takarékoskodjon szálláshely foglalásakor</string>
<string name="whats_new_booking_improve_message">A szálláshely keresési eredménye már tartalmazza az árkategóriát. \nEmellett kiegészítettük több mint 110.000 szálláshellyel.</string>
</resources>

View file

@ -714,6 +714,10 @@
<string name="place_name">Nama tempat</string>
<!-- title above languages list cells in the editor, below editable name text field. -->
<string name="other_languages">Bahasa lainnya</string>
<!-- small button to open list with names in different languages -->
<string name="show_more">Selengkapnya</string>
<!-- small button to close list with names in different languages -->
<string name="show_less">Kurangi</string>
<string name="add_language">Tambahkan bahasa</string>
<string name="street">Jalan</string>
<!-- Editable House Number text field (in address block). -->
@ -938,4 +942,8 @@
<string name="accept">Terima</string>
<!-- For the first routing -->
<string name="decline">Tolak</string>
<string name="whats_new_route_profile_title">Jalan-jalan dengan lebih aman dan nyaman</string>
<string name="whats_new_route_profile_message">Untuk rute pejalan kaki dan sepeda, kami kini menampilkan profil elevasi.</string>
<string name="whats_new_booking_improve_title">Berhemat saat memesan hotel</string>
<string name="whats_new_booking_improve_message">Hasil pencarian untuk hotel kini disertai kategori harga.\nKami juga menambahkan lebih dari 110.000 hotel.</string>
</resources>

View file

@ -714,6 +714,10 @@
<string name="place_name">Nome del luogo</string>
<!-- title above languages list cells in the editor, below editable name text field. -->
<string name="other_languages">Altre lingue</string>
<!-- small button to open list with names in different languages -->
<string name="show_more">Mostra altro</string>
<!-- small button to close list with names in different languages -->
<string name="show_less">Mostra meno</string>
<string name="add_language">Aggiungi una lingua</string>
<string name="street">Via</string>
<!-- Editable House Number text field (in address block). -->
@ -938,4 +942,8 @@
<string name="accept">Accetta</string>
<!-- For the first routing -->
<string name="decline">Rifiuta</string>
<string name="whats_new_route_profile_title">Meglio è tornar indietro, che correr male avanti</string>
<string name="whats_new_route_profile_message">Per gli itinerari pedonali e ciclabili, è ora visualizzato il profilo altimetrico.</string>
<string name="whats_new_booking_improve_title">Risparmia alla prenotazione degli hotel</string>
<string name="whats_new_booking_improve_message">I risultati della ricerca per gli hotel contengono ora la categoria di prezzo.\nInoltre, abbiamo aggiunto più di 110.000 hotel.</string>
</resources>

View file

@ -714,6 +714,10 @@
<string name="place_name">場所の名前</string>
<!-- title above languages list cells in the editor, below editable name text field. -->
<string name="other_languages">その他の言語</string>
<!-- small button to open list with names in different languages -->
<string name="show_more">表示を増やす</string>
<!-- small button to close list with names in different languages -->
<string name="show_less">表示を減らす</string>
<string name="add_language">言語を追加</string>
<string name="street">通り</string>
<!-- Editable House Number text field (in address block). -->
@ -938,4 +942,8 @@
<string name="accept">了解</string>
<!-- For the first routing -->
<string name="decline">拒否</string>
<string name="whats_new_route_profile_title">時は金なり。古きを捨て新しきを得よう。</string>
<string name="whats_new_route_profile_message">歩行者とバイク用のルートに高度プロファイルが表示されるようになりました。</string>
<string name="whats_new_booking_improve_title">ホテル予約時に節約しましょう</string>
<string name="whats_new_booking_improve_message">ホテルの検索結果に価格のカテゴリーが表示されるようになりました。\nさらに、 110,000 軒を超えるホテルを追加しました。</string>
</resources>

View file

@ -711,6 +711,10 @@
<string name="place_name">지명</string>
<!-- title above languages list cells in the editor, below editable name text field. -->
<string name="other_languages">다른 언어</string>
<!-- small button to open list with names in different languages -->
<string name="show_more">자세히 표시</string>
<!-- small button to close list with names in different languages -->
<string name="show_less">간단히 표시</string>
<string name="add_language">언어 추가</string>
<string name="street">거리</string>
<!-- Editable House Number text field (in address block). -->
@ -935,4 +939,8 @@
<string name="accept">동의</string>
<!-- For the first routing -->
<string name="decline">거부</string>
<string name="whats_new_route_profile_title">문제가 있으면 계속 어려움을 겪는 것보다 그만두는 게 낫습니다.</string>
<string name="whats_new_route_profile_message">보행자 및 자전거 도로를 위해 이제 고도 단면을 표시합니다.</string>
<string name="whats_new_booking_improve_title">호텔 예약 시 절약</string>
<string name="whats_new_booking_improve_message">이제 가격 범주를 포함하는 호텔에 대한 결과를 검색하세요.\n또한 110,000곳 이상의 호텔이 추가되었습니다.</string>
</resources>

View file

@ -715,6 +715,10 @@
<string name="place_name">Stedsnavn</string>
<!-- title above languages list cells in the editor, below editable name text field. -->
<string name="other_languages">Andre språk</string>
<!-- small button to open list with names in different languages -->
<string name="show_more">Vis mer</string>
<!-- small button to close list with names in different languages -->
<string name="show_less">Vis mindre</string>
<string name="add_language">Legg til et språk</string>
<string name="street">Gate</string>
<!-- Editable House Number text field (in address block). -->
@ -937,4 +941,8 @@
<string name="accept">Godta</string>
<!-- For the first routing -->
<string name="decline">Avvis</string>
<string name="whats_new_route_profile_title">Range vegen vert ikkje rett om det er mange som går han</string>
<string name="whats_new_route_profile_message">Vi viser nå høydeprofilen med tanke på gå- og sykkelruter.</string>
<string name="whats_new_booking_improve_title">Spar penger når du bestiller hotell</string>
<string name="whats_new_booking_improve_message">Søkeresultatene for hoteller inneholder nå priskategori.\nVi har også lagt til flere enn 110.000 hoteller.</string>
</resources>

View file

@ -715,6 +715,10 @@
<string name="place_name">Locatienaam</string>
<!-- title above languages list cells in the editor, below editable name text field. -->
<string name="other_languages">Overige talen</string>
<!-- small button to open list with names in different languages -->
<string name="show_more">Meer Tonen</string>
<!-- small button to close list with names in different languages -->
<string name="show_less">Minder Tonen</string>
<string name="add_language">Een taal toevoegen</string>
<string name="street">Straat</string>
<!-- Editable House Number text field (in address block). -->
@ -939,4 +943,8 @@
<string name="accept">Aanvaarden</string>
<!-- For the first routing -->
<string name="decline">Weigeren</string>
<string name="whats_new_route_profile_title">Beter ten halve gekeerd, dan ten hele gedwaald</string>
<string name="whats_new_route_profile_message">Voor wandel- en fietsroutes geven we nu het hoogteprofiel weer.</string>
<string name="whats_new_booking_improve_title">Bespaar op het boeken van hotels</string>
<string name="whats_new_booking_improve_message">Zoekresultaten voor hotels bevatten nu de prijscategorie.\nWe hebben ook meer dan 110.000 hotels toegevoegd.</string>
</resources>

View file

@ -724,6 +724,10 @@
<string name="place_name">Nazwa miejsca</string>
<!-- title above languages list cells in the editor, below editable name text field. -->
<string name="other_languages">Inne języki</string>
<!-- small button to open list with names in different languages -->
<string name="show_more">Pokaż więcej</string>
<!-- small button to close list with names in different languages -->
<string name="show_less">Pokaż mniej</string>
<string name="add_language">Dodaj język</string>
<string name="street">Ulica</string>
<!-- Editable House Number text field (in address block). -->
@ -948,4 +952,8 @@
<string name="accept">Zaakceptuj</string>
<!-- For the first routing -->
<string name="decline">Odrzuć</string>
<string name="whats_new_route_profile_title">Kto drogi prostuje, ten w domu nie nocuje</string>
<string name="whats_new_route_profile_message">Dla tras pieszych i rowerowych pokazujemy teraz też profil wysokościowy.</string>
<string name="whats_new_booking_improve_title">Oszczędzaj przy rezerwacji hotelów</string>
<string name="whats_new_booking_improve_message">Wyniki wyszukiwania hoteli zawierają teraz kategorię cenową. \nDodaliśmy też ponad 110 000 hoteli.</string>
</resources>

View file

@ -714,6 +714,10 @@
<string name="place_name">Nome do local</string>
<!-- title above languages list cells in the editor, below editable name text field. -->
<string name="other_languages">Outros idiomas</string>
<!-- small button to open list with names in different languages -->
<string name="show_more">Mostrar mais</string>
<!-- small button to close list with names in different languages -->
<string name="show_less">Mostrar Menos</string>
<string name="add_language">Adicionar um idioma</string>
<string name="street">Rua</string>
<!-- Editable House Number text field (in address block). -->
@ -938,4 +942,8 @@
<string name="accept">Aceitar</string>
<!-- For the first routing -->
<string name="decline">Declinar</string>
<string name="whats_new_route_profile_title">Circular é viver</string>
<string name="whats_new_route_profile_message">Nas rotas para peões e ciclovias apresentamos agora o perfil de elevação.</string>
<string name="whats_new_booking_improve_title">Poupe nas reservas de hotéis</string>
<string name="whats_new_booking_improve_message">Agora, os resultados da pesquisa de hotéis contêm a categoria de preços.\nAdicinámos mais de 110.000 hotéis.</string>
</resources>

View file

@ -712,6 +712,10 @@
<string name="place_name">Denumire loc</string>
<!-- title above languages list cells in the editor, below editable name text field. -->
<string name="other_languages">Alte limbi</string>
<!-- small button to open list with names in different languages -->
<string name="show_more">Arată mai multe</string>
<!-- small button to close list with names in different languages -->
<string name="show_less">Arată mai puține</string>
<string name="add_language">Adăugare limbă</string>
<string name="street">Stradă</string>
<!-- Editable House Number text field (in address block). -->
@ -935,4 +939,8 @@
<string name="accept">Acceptați</string>
<!-- For the first routing -->
<string name="decline">Refuzați</string>
<string name="whats_new_route_profile_title">Mai bine căutați soluții decât să greșiți</string>
<string name="whats_new_route_profile_message">Pentru rutele pentru pietoni și bicicliști, afișam acum profilul de elevație.</string>
<string name="whats_new_booking_improve_title">Economisiți bani când rezervați hoteluri</string>
<string name="whats_new_booking_improve_message">Rezultatele de căutare pentru hoteluri conțin acum categoria de preț. \nAm mai adăugat și peste 110.000 de hoteluri.</string>
</resources>

View file

@ -963,4 +963,8 @@
<string name="accept">Принять</string>
<!-- For the first routing -->
<string name="decline">Отклонить</string>
<string name="whats_new_route_profile_title">Умный в гору не пойдет</string>
<string name="whats_new_route_profile_message">На пеших и веломаршрутах отображается профиль рельефа.</string>
<string name="whats_new_booking_improve_title">Экономь на бронировании отеля</string>
<string name="whats_new_booking_improve_message">Результаты поиска отелей на карте показывают ценовую категорию.\nОтелей для бронирования стало на 110 000 больше.</string>
</resources>

View file

@ -718,6 +718,10 @@
<string name="place_name">Názov miesta</string>
<!-- title above languages list cells in the editor, below editable name text field. -->
<string name="other_languages">Iné jazyky</string>
<!-- small button to open list with names in different languages -->
<string name="show_more">Ukázať viac</string>
<!-- small button to close list with names in different languages -->
<string name="show_less">Ukázať menej</string>
<string name="add_language">Pridať jazyk</string>
<string name="street">Ulica</string>
<!-- Editable House Number text field (in address block). -->
@ -942,4 +946,8 @@
<string name="accept">Prijať</string>
<!-- For the first routing -->
<string name="decline">Odmietnuť</string>
<string name="whats_new_route_profile_title">Radšej dlhšia cesta, ale bezpečná</string>
<string name="whats_new_route_profile_message">Pre pešie trasy a cyklotrasy sa odteraz zobrazuje aj výškový profil.</string>
<string name="whats_new_booking_improve_title">Ušetriť pri rezervácii hotelov</string>
<string name="whats_new_booking_improve_message">Výsledky vyhľadávania hotelov odteraz obsahujú aj cenové kategórie. \nTiež sme pridali viac ako 110 000 hotelov.</string>
</resources>

View file

@ -719,6 +719,10 @@
<string name="place_name">Platsens namn</string>
<!-- title above languages list cells in the editor, below editable name text field. -->
<string name="other_languages">Övriga språk</string>
<!-- small button to open list with names in different languages -->
<string name="show_more">Visa mer</string>
<!-- small button to close list with names in different languages -->
<string name="show_less">Visa mindre</string>
<string name="add_language">Lägg till ett språk</string>
<string name="street">Gata</string>
<!-- Editable House Number text field (in address block). -->
@ -943,4 +947,8 @@
<string name="accept">Acceptera</string>
<!-- For the first routing -->
<string name="decline">Neka</string>
<string name="whats_new_route_profile_title">Genvägar är senvägar</string>
<string name="whats_new_route_profile_message">För gångvägar och cykelturer visar vi nu höjdprofilen.</string>
<string name="whats_new_booking_improve_title">Spara pengar när du bokar hotell</string>
<string name="whats_new_booking_improve_message">Sökresultat för hotell innehåller nu priskategorin.\nVi har även lagt till över 110 000 hotell.</string>
</resources>

View file

@ -721,6 +721,10 @@
<string name="place_name">ชื่อสถานที่</string>
<!-- title above languages list cells in the editor, below editable name text field. -->
<string name="other_languages">ภาษาอื่น ๆ</string>
<!-- small button to open list with names in different languages -->
<string name="show_more">แสดงเพิ่มเติม</string>
<!-- small button to close list with names in different languages -->
<string name="show_less">แสดงน้อยลง</string>
<string name="add_language">เพิ่มภาษา</string>
<string name="street">ถนน</string>
<!-- Editable House Number text field (in address block). -->
@ -945,4 +949,8 @@
<string name="accept">ยอมรับ</string>
<!-- For the first routing -->
<string name="decline">ปฏิเสธ</string>
<string name="whats_new_route_profile_title">ทำให้มันจบดีกว่าปล่อยให้มันรบกวนอยู่</string>
<string name="whats_new_route_profile_message">สำหรับเส้นทางคนเดินเท้าและจักรยาน ตอนนี้เราแสดงโปรไฟล์ระดับความสูงแล้ว</string>
<string name="whats_new_booking_improve_title">ประหยัดเมื่อจองโรงแรม</string>
<string name="whats_new_booking_improve_message">การค้นหาโรงแรมตอนนี้มีหมวดหมู่ราคาแล้ว\nเรายังได้เพิ่มโรงแรมเข้ามากว่า 110,000 โรงแรมอีกด้วย</string>
</resources>

View file

@ -721,6 +721,10 @@
<string name="place_name">Yer ismi</string>
<!-- title above languages list cells in the editor, below editable name text field. -->
<string name="other_languages">Diğer Diller</string>
<!-- small button to open list with names in different languages -->
<string name="show_more">Daha fazla göster</string>
<!-- small button to close list with names in different languages -->
<string name="show_less">Daha az göster</string>
<string name="add_language">Bir dil ekle</string>
<string name="street">Sokak</string>
<!-- Editable House Number text field (in address block). -->
@ -945,4 +949,8 @@
<string name="accept">Kabul</string>
<!-- For the first routing -->
<string name="decline">Ret</string>
<string name="whats_new_route_profile_title">Düz yoldan gitmek çukura düşmekten daha iyidir</string>
<string name="whats_new_route_profile_message">Yürüyüş ve bisiklet yolları şimdi yükseklik profilli olarak görüntüleniyor.</string>
<string name="whats_new_booking_improve_title">Otel rezervasyonlarınızdan tasarruf edin</string>
<string name="whats_new_booking_improve_message">Artık otel arama sonuçlarında fiyat kategorisi de gösteriliyor.\nVe 110,000\&#39;den fazla oteli sistemimize ekledik.</string>
</resources>

View file

@ -719,6 +719,10 @@
<string name="place_name">Назва</string>
<!-- title above languages list cells in the editor, below editable name text field. -->
<string name="other_languages">Інші мови</string>
<!-- small button to open list with names in different languages -->
<string name="show_more">Показати більше</string>
<!-- small button to close list with names in different languages -->
<string name="show_less">Показати менше</string>
<string name="add_language">Додати мову</string>
<string name="street">Вулиця</string>
<!-- Editable House Number text field (in address block). -->
@ -943,4 +947,8 @@
<string name="accept">Прийняти</string>
<!-- For the first routing -->
<string name="decline">Відхилити</string>
<string name="whats_new_route_profile_title">Мудрий в гори б не звернув, мудрий гори б обминув</string>
<string name="whats_new_route_profile_message">Для пішохідних і велосипедних маршрутів тепер відображається профіль рельєфу.</string>
<string name="whats_new_booking_improve_title">Заощаджуйте на бронюванні готелів</string>
<string name="whats_new_booking_improve_message">В результатах пошуку готелів на карті відображається цінова категорія.\nКрім того, тепер у нашій базі даних з\&#39;явилося 110 000 нових готелів.</string>
</resources>

View file

@ -715,6 +715,10 @@
<string name="place_name">Tên địa điểm</string>
<!-- title above languages list cells in the editor, below editable name text field. -->
<string name="other_languages">Ngôn ngữ khác</string>
<!-- small button to open list with names in different languages -->
<string name="show_more">Hiển thị nhiều hơn</string>
<!-- small button to close list with names in different languages -->
<string name="show_less">Hiển thị ít hơn</string>
<string name="add_language">Thêm ngôn ngữ</string>
<string name="street">Đường</string>
<!-- Editable House Number text field (in address block). -->
@ -939,4 +943,8 @@
<string name="accept">Chấp nhận</string>
<!-- For the first routing -->
<string name="decline">Từ chối</string>
<string name="whats_new_route_profile_title">Đi đường vòng vẫn tốt hơn là rơi xuống hố</string>
<string name="whats_new_route_profile_message">Đối với các đường đi bộ và đi xe đạp, chúng tôi hiện đã hiển thị mặt cắt tầng.</string>
<string name="whats_new_booking_improve_title">Tiết kiệm khi đặt khách sạn</string>
<string name="whats_new_booking_improve_message">Kết quả tìm kiếm cho khách sạn giờ đã có bậc giá cả.\nChúng tôi cũng đã bổ sung hơn 110.000 khách sạn.</string>
</resources>

View file

@ -730,7 +730,7 @@
<!-- small button to open list with names in different languages -->
<string name="show_more">顯示更多</string>
<!-- small button to close list with names in different languages -->
<string name="show_less">顯示</string>
<string name="show_less">顯示</string>
<string name="add_language">新增語言</string>
<string name="street">街道</string>
<!-- Editable House Number text field (in address block). -->
@ -955,4 +955,8 @@
<string name="accept">接受</string>
<!-- For the first routing -->
<string name="decline">拒絕</string>
<string name="whats_new_route_profile_title">與其長年勞而無功,不如奮起振作</string>
<string name="whats_new_route_profile_message">對於行人和自行車路線,我們現在顯示海拔剖面圖。</string>
<string name="whats_new_booking_improve_title">優惠預訂飯店</string>
<string name="whats_new_booking_improve_message">飯店搜尋結果現在還包含價格類別。\n我們還加入了超過 110,000 間飯店。</string>
</resources>

View file

@ -721,6 +721,10 @@
<string name="place_name">地点名</string>
<!-- title above languages list cells in the editor, below editable name text field. -->
<string name="other_languages">其他语言</string>
<!-- small button to open list with names in different languages -->
<string name="show_more">显示更多</string>
<!-- small button to close list with names in different languages -->
<string name="show_less">显示更少</string>
<string name="add_language">添加语言</string>
<string name="street">街道</string>
<!-- Editable House Number text field (in address block). -->
@ -945,4 +949,8 @@
<string name="accept">接受</string>
<!-- For the first routing -->
<string name="decline">拒绝</string>
<string name="whats_new_route_profile_title">与其循规蹈矩,不如奋起改变</string>
<string name="whats_new_route_profile_message">对于行人和自行车路线,我们现在显示纵剖面。</string>
<string name="whats_new_booking_improve_title">优惠预订酒店</string>
<string name="whats_new_booking_improve_message">酒店的搜索结果现在包含价格类别。\n我们还添加了超过 110,000 家酒店。</string>
</resources>

View file

@ -29,38 +29,32 @@
<!-- What's new -->
<integer-array name="news_images">
<item>@drawable/img_whatsnew_car_navigation</item>
<item>@drawable/img_whatsnew_cycle_navigation_improved</item>
<item>@drawable/img_whatsnew_booking_improved</item>
<item>@drawable/ic_img_whatsnew_route_profile</item>
<item>@drawable/ic_img_whatsnew_booking_improve</item>
</integer-array>
<string-array name="news_titles">
<item>@string/whatsnew_car_navigation_header</item>
<item>@string/whatsnew_cycle_navigation_2_header</item>
<item>@string/whatsnew_booking_2_header</item>
<item>@string/whats_new_route_profile_title</item>
<item>@string/whats_new_booking_improve_title</item>
</string-array>
<string-array name="news_messages_1">
<item>@string/whatsnew_car_navigation_message</item>
<item>@string/whatsnew_cycle_navigation_2_message</item>
<item>@string/whatsnew_booking_2_message</item>
<item>@string/whats_new_route_profile_message</item>
<item>@string/whats_new_booking_improve_message</item>
</string-array>
<string-array name="news_messages_2">
<item/>
<item/>
<item/>
</string-array>
<string-array name="news_switch_titles">
<item/>
<item/>
<item/>
</string-array>
<string-array name="news_switch_subtitles">
<item/>
<item/>
<item/>
</string-array>
</resources>

View file

@ -135,6 +135,7 @@
<!-- Altitude chart -->
<dimen name="altitude_chart_container_padding_left">16dp</dimen>
<dimen name="altitude_chart_container_padding_bottom">10dp</dimen>
<dimen name="altitude_chart_margin_bottom">4dp</dimen>
<dimen name="altitude_chart_margin_top">14dp</dimen>
<dimen name="altitude_chart_time_distance_height">20dp</dimen>

View file

@ -967,4 +967,8 @@
<string name="accept">Accept</string>
<!-- For the first routing -->
<string name="decline">Decline</string>
<string name="whats_new_route_profile_title">Better go about than fall into the ditch</string>
<string name="whats_new_route_profile_message">For pedestrian and bike routes we now display the elevation profile.</string>
<string name="whats_new_booking_improve_title">Save when booking hotels</string>
<string name="whats_new_booking_improve_message">Search results for hotels now contain the price category.\nWe also added more than 110,000 hotels.</string>
</resources>

View file

@ -106,17 +106,16 @@
<item name="android:textStyle">bold</item>
</style>
<style name="MwmTextAppearance.RoutingNumber.Navigation">
<item name="android:textSize">@dimen/text_size_nav_number</item>
</style>
<style name="MwmTextAppearance.RoutingDimension">
<item name="android:textSize">@dimen/text_size_routing_dimension</item>
<item name="android:textColor">?android:textColorSecondary</item>
<item name="android:textStyle">bold</item>
</style>
<style name="MwmTextAppearance.RoutingDimension.Inline"
parent="MwmTextAppearance.RoutingNumber">
<item name="android:textSize">@dimen/text_size_routing_dimension_inline</item>
</style>
<style name="MwmTextAppearance.RoutingDetail">
<item name="android:textSize">@dimen/text_size_routing_plan_detail</item>
<item name="android:fontFamily" tools:ignore="NewApi">@string/robotoMedium</item>

View file

@ -17,12 +17,6 @@ import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import com.mapswithme.maps.MwmActivity.MapTask;
import com.mapswithme.maps.MwmActivity.OpenUrlTask;
import com.mapswithme.maps.api.Const;
@ -42,6 +36,12 @@ import com.mapswithme.util.Utils;
import com.mapswithme.util.concurrency.ThreadPool;
import com.mapswithme.util.statistics.Statistics;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
@SuppressLint("StringFormatMatches")
public class DownloadResourcesActivity extends BaseMwmFragmentActivity
{
@ -212,20 +212,24 @@ public class DownloadResourcesActivity extends BaseMwmFragmentActivity
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Utils.keepScreenOn(true, getWindow());
suggestRemoveLiteOrSamsung();
dispatchIntent();
setContentView(R.layout.activity_download_resources);
initViewsAndListeners();
if (prepareFilesDownload())
if (prepareFilesDownload(false))
{
Utils.keepScreenOn(true, getWindow());
suggestRemoveLiteOrSamsung();
setAction(DOWNLOAD);
if (ConnectionState.isWifiConnected())
onDownloadClicked();
return;
}
dispatchIntent();
showMap();
}
@Override
@ -244,7 +248,9 @@ public class DownloadResourcesActivity extends BaseMwmFragmentActivity
protected void onResume()
{
super.onResume();
LocationHelper.INSTANCE.addListener(mLocationListener, true);
if (!isFinishing())
LocationHelper.INSTANCE.addListener(mLocationListener, true);
}
@Override
@ -265,14 +271,15 @@ public class DownloadResourcesActivity extends BaseMwmFragmentActivity
mTvMessage.setText(getString(R.string.download_resources, StringUtils.getFileSizeString(bytesToDownload)));
}
private boolean prepareFilesDownload()
private boolean prepareFilesDownload(boolean showMap)
{
final int bytes = nativeGetBytesToDownload();
if (bytes == 0)
{
mAreResourcesDownloaded = true;
showMap();
if (showMap)
showMap();
return false;
}
@ -383,7 +390,7 @@ public class DownloadResourcesActivity extends BaseMwmFragmentActivity
private void onTryAgainClicked()
{
if (prepareFilesDownload())
if (prepareFilesDownload(true))
{
setAction(PAUSE);
doDownload();
@ -478,11 +485,8 @@ public class DownloadResourcesActivity extends BaseMwmFragmentActivity
return false;
for (final IntentProcessor ip : mIntentProcessors)
if (ip.isSupported(intent))
{
ip.process(intent);
if (ip.isSupported(intent) && ip.process(intent))
return true;
}
return false;
}

View file

@ -59,6 +59,7 @@ public class MapFragment extends BaseMwmFragment
interface MapRenderingListener
{
void onRenderingInitialized();
void onRenderingRestored();
}
private void setupWidgets(int width, int height)
@ -119,6 +120,13 @@ public class MapFragment extends BaseMwmFragment
((MapRenderingListener) activity).onRenderingInitialized();
}
private void onRenderingRestored()
{
final Activity activity = getActivity();
if (isAdded() && activity instanceof MapRenderingListener)
((MapRenderingListener) activity).onRenderingRestored();
}
private void reportUnsupported()
{
new AlertDialog.Builder(getActivity())
@ -181,6 +189,7 @@ public class MapFragment extends BaseMwmFragment
mRequireResize = false;
setupWidgets(width, height);
nativeApplyWidgets();
onRenderingRestored();
}
@Override
@ -280,6 +289,11 @@ public class MapFragment extends BaseMwmFragment
return res;
}
boolean isContextCreated()
{
return mContextCreated;
}
static native void nativeCompassUpdated(double magneticNorth, double trueNorth, boolean forceRedraw);
static native void nativeScalePlus();
static native void nativeScaleMinus();

View file

@ -75,8 +75,6 @@ import com.mapswithme.util.ThemeUtils;
import com.mapswithme.util.UiUtils;
import com.mapswithme.util.Utils;
import com.mapswithme.util.concurrency.UiThread;
import com.mapswithme.util.log.DebugLogger;
import com.mapswithme.util.log.Logger;
import com.mapswithme.util.sharing.ShareOption;
import com.mapswithme.util.sharing.SharingHelper;
import com.mapswithme.util.statistics.AlohaHelper;
@ -149,7 +147,6 @@ public class MwmActivity extends BaseMwmFragmentActivity
// The first launch of application ever - onboarding screen will be shown.
private boolean mFirstStart;
private final Logger mLogger = new DebugLogger(MwmActivity.class.getSimpleName());
public interface LeftAnimationTrackListener
{
@ -183,6 +180,12 @@ public class MwmActivity extends BaseMwmFragmentActivity
runTasks();
}
@Override
public void onRenderingRestored()
{
runTasks();
}
private void runTasks()
{
while (!mTasks.isEmpty())
@ -669,6 +672,13 @@ public class MwmActivity extends BaseMwmFragmentActivity
if (!mIsFragmentContainer && RoutingController.get().isPlanning())
mRoutingPlanInplaceController.onSaveState(outState);
if (mIsFragmentContainer)
{
RoutingPlanFragment fragment = (RoutingPlanFragment) getFragment(RoutingPlanFragment.class);
if (fragment != null)
fragment.saveAltitudeChartState(outState);
}
RoutingController.get().onSaveState();
super.onSaveInstanceState(outState);
}
@ -714,7 +724,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
mTasks.add(mapTask);
intent.removeExtra(EXTRA_TASK);
if (MapFragment.nativeIsEngineCreated())
if (MapFragment.nativeIsEngineCreated() && mMapFragment.isContextCreated())
runTasks();
// mark intent as consumed
@ -725,7 +735,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
private void addTask(MapTask task)
{
mTasks.add(task);
if (MapFragment.nativeIsEngineCreated())
if (MapFragment.nativeIsEngineCreated() && mMapFragment.isContextCreated())
runTasks();
}
@ -1147,10 +1157,12 @@ public class MwmActivity extends BaseMwmFragmentActivity
switch (result)
{
case ParsedUrlMwmRequest.RESULT_INCORRECT:
// TODO handle error
break;
// TODO: Kernel recognizes "mapsme://", "mwm://" and "mapswithme://" schemas only!!!
return MapFragment.nativeShowMapForUrl(mUrl);
case ParsedUrlMwmRequest.RESULT_MAP:
return MapFragment.nativeShowMapForUrl(mUrl);
case ParsedUrlMwmRequest.RESULT_ROUTE:
final ParsedRoutingData data = Framework.nativeGetParsedRoutingData();
RoutingController.get().setRouterType(data.mRouterType);
@ -1285,7 +1297,10 @@ public class MwmActivity extends BaseMwmFragmentActivity
|| RoutingController.get().isErrorEncountered())
{
mMainMenu.showLineFrame(false);
return;
}
mMainMenu.showLineFrame(true);
}
@Override

View file

@ -33,6 +33,8 @@ import com.mapswithme.util.UiUtils;
import com.mapswithme.util.Utils;
import com.mapswithme.util.statistics.PushwooshHelper;
import com.mapswithme.util.statistics.Statistics;
import com.my.tracker.MyTracker;
import com.my.tracker.MyTrackerParams;
import com.pushwoosh.PushManager;
import io.fabric.sdk.android.Fabric;
import net.hockeyapp.android.CrashManager;
@ -105,22 +107,29 @@ public class MwmApplication extends Application
super.onCreate();
mMainLoopHandler = new Handler(getMainLooper());
// Alohalytics generates installation id,
// it should be initialized before Crashlytics.
Statistics s = Statistics.INSTANCE;
initHockeyApp();
initCrashlytics();
final boolean isInstallationIdFound =
setInstallationIdToCrashlytics();
initPushWoosh();
initTracker();
String settingsPath = getSettingsPath();
new File(settingsPath).mkdirs();
new File(getTempPath()).mkdirs();
// First we need initialize paths and platform to have access to settings and other components.
nativePreparePlatform(settingsPath);
nativeInitPlatform(getApkPath(), getStoragePath(settingsPath), getTempPath(), getObbGooglePath(),
BuildConfig.FLAVOR, BuildConfig.BUILD_TYPE, UiUtils.isTablet());
Statistics s = Statistics.INSTANCE;
if (!isInstallationIdFound)
setInstallationIdToCrashlytics();
mPrefs = getSharedPreferences(getString(R.string.pref_file_name), MODE_PRIVATE);
mBackgroundTracker = new AppBackgroundTracker();
TrackRecorder.init();
@ -186,8 +195,18 @@ public class MwmApplication extends Application
Fabric.with(this, new Crashlytics(), new CrashlyticsNdk());
nativeInitCrashlytics();
}
Crashlytics.setString("AlohalyticsInstallationId", Utils.getInstallationId());
private static boolean setInstallationIdToCrashlytics()
{
final String installationId = Utils.getInstallationId();
// If installation id is not found this means id was not
// generated by alohalytics yet and it is a first run.
if (TextUtils.isEmpty(installationId))
return false;
Crashlytics.setString("AlohalyticsInstallationId", installationId);
return true;
}
public boolean isFrameworkInitialized()
@ -287,6 +306,15 @@ public class MwmApplication extends Application
}
}
private void initTracker()
{
MyTracker.setDebugMode(BuildConfig.DEBUG);
MyTracker.createTracker(PrivateVariables.myTrackerKey(), this);
final MyTrackerParams myParams = MyTracker.getTrackerParams();
myParams.setDefaultVendorAppPackage();
MyTracker.initTracker();
}
public void initCounters()
{
if (!mAreCountersInitialized)

View file

@ -8,6 +8,7 @@ import com.mapswithme.util.UiUtils;
import com.mapswithme.util.ViewServer;
import com.mapswithme.util.concurrency.UiThread;
import com.mapswithme.util.statistics.Statistics;
import com.my.tracker.MyTracker;
public class BaseActivityDelegate
{
@ -38,11 +39,13 @@ public class BaseActivityDelegate
public void onStart()
{
Statistics.INSTANCE.startActivity(mActivity.get());
MyTracker.onStartActivity(mActivity.get());
}
public void onStop()
{
Statistics.INSTANCE.stopActivity(mActivity.get());
MyTracker.onStopActivity(mActivity.get());
}
public void onResume()

View file

@ -21,6 +21,9 @@ public class BaseMwmFragmentActivity extends AppCompatActivity
{
private final BaseActivityDelegate mBaseDelegate = new BaseActivityDelegate(this);
@Nullable
private Bundle mSavedInstanceState;
@Override
public Activity get()
{
@ -91,6 +94,19 @@ public class BaseMwmFragmentActivity extends AppCompatActivity
mBaseDelegate.onStop();
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState)
{
super.onRestoreInstanceState(savedInstanceState);
mSavedInstanceState = savedInstanceState;
}
@Nullable
public Bundle getSavedInstanceState()
{
return mSavedInstanceState;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{

View file

@ -22,6 +22,7 @@ import com.mapswithme.maps.bookmarks.data.BookmarkCategory;
import com.mapswithme.maps.bookmarks.data.BookmarkManager;
import com.mapswithme.maps.bookmarks.data.Track;
import com.mapswithme.maps.widget.placepage.EditBookmarkFragment;
import com.mapswithme.maps.widget.placepage.SponsoredHotel;
import com.mapswithme.util.BottomSheetHelper;
import com.mapswithme.util.sharing.ShareOption;
import com.mapswithme.util.sharing.SharingHelper;
@ -161,15 +162,15 @@ public class BookmarksListFragment extends BaseMwmListFragment
switch (menuItem.getItemId())
{
case R.id.share_message:
ShareOption.SMS.shareMapObject(getActivity(), item);
ShareOption.SMS.shareMapObject(getActivity(), item, SponsoredHotel.nativeGetCurrent());
break;
case R.id.share_email:
ShareOption.EMAIL.shareMapObject(getActivity(), item);
ShareOption.EMAIL.shareMapObject(getActivity(), item, SponsoredHotel.nativeGetCurrent());
break;
case R.id.share:
ShareOption.ANY.shareMapObject(getActivity(), item);
ShareOption.ANY.shareMapObject(getActivity(), item, SponsoredHotel.nativeGetCurrent());
break;
case R.id.edit:

View file

@ -1,6 +1,7 @@
package com.mapswithme.maps.editor;
import android.app.Activity;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
@ -13,6 +14,7 @@ import android.view.View;
import android.view.ViewGroup;
import com.mapswithme.maps.MwmActivity;
import com.mapswithme.maps.MwmApplication;
import com.mapswithme.maps.R;
import com.mapswithme.maps.base.BaseMwmToolbarFragment;
import com.mapswithme.maps.base.OnBackPressListener;
@ -55,6 +57,7 @@ public class EditorHostFragment extends BaseMwmToolbarFragment
*/
private int mMandatoryNamesCount = 0;
private static final String NOOB_ALERT_SHOWN = "Alert_for_noob_was_shown";
/**
* Used in MultilanguageAdapter to show, select and remove items.
*/
@ -281,35 +284,52 @@ public class EditorHostFragment extends BaseMwmToolbarFragment
if (note.length() != 0)
Editor.nativeCreateNote(note);
// Save object edits
if (Editor.nativeSaveEditedFeature())
if (!MwmApplication.prefs().contains(NOOB_ALERT_SHOWN))
{
Statistics.INSTANCE.trackEditorSuccess(mIsNewObject);
if (OsmOAuth.isAuthorized() || !ConnectionState.isConnected())
Utils.navigateToParent(getActivity());
else
{
final Activity parent = getActivity();
Intent intent = new Intent(parent, MwmActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
intent.putExtra(MwmActivity.EXTRA_TASK, new MwmActivity.ShowAuthorizationTask());
parent.startActivity(intent);
MwmApplication.prefs().edit()
.putBoolean(NOOB_ALERT_SHOWN, true)
.apply();
if (parent instanceof MwmActivity)
((MwmActivity) parent).customOnNavigateUp();
else
parent.finish();
}
showNoobDialog();
}
else
{
Statistics.INSTANCE.trackEditorError(mIsNewObject);
UiUtils.showAlertDialog(getActivity(), R.string.downloader_no_space_title);
saveMapObjectEdits();
}
break;
}
}
}
private void saveMapObjectEdits()
{
if (Editor.nativeSaveEditedFeature())
{
Statistics.INSTANCE.trackEditorSuccess(mIsNewObject);
if (OsmOAuth.isAuthorized() || !ConnectionState.isConnected())
Utils.navigateToParent(getActivity());
else
{
final Activity parent = getActivity();
Intent intent = new Intent(parent, MwmActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
intent.putExtra(MwmActivity.EXTRA_TASK, new MwmActivity.ShowAuthorizationTask());
parent.startActivity(intent);
if (parent instanceof MwmActivity)
((MwmActivity) parent).customOnNavigateUp();
else
parent.finish();
}
}
else
{
Statistics.INSTANCE.trackEditorError(mIsNewObject);
UiUtils.showAlertDialog(getActivity(), R.string.downloader_no_space_title);
}
}
private void showMistakeDialog(@StringRes int resId)
{
new AlertDialog.Builder(getActivity())
@ -318,6 +338,24 @@ public class EditorHostFragment extends BaseMwmToolbarFragment
.show();
}
private void showNoobDialog()
{
new AlertDialog.Builder(getActivity())
.setTitle(R.string.editor_share_to_all_dialog_title)
.setMessage(getString(R.string.editor_share_to_all_dialog_message_1)
+ " " + getString(R.string.editor_share_to_all_dialog_message_2))
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dlg, int which)
{
saveMapObjectEdits();
}
})
.setNegativeButton(android.R.string.cancel, null)
.show();
}
public void setStreet(LocalizedStreet street)
{
Editor.nativeSetStreet(street);

View file

@ -8,11 +8,15 @@ import android.content.Intent;
import android.location.Location;
import android.os.Environment;
import android.os.SystemClock;
import android.support.annotation.Nullable;
import android.text.TextUtils;
import android.util.Log;
import com.mapswithme.maps.BuildConfig;
import com.mapswithme.maps.MwmApplication;
import com.mapswithme.maps.background.AppBackgroundTracker;
import com.mapswithme.util.Constants;
import com.mapswithme.util.StorageUtils;
import com.mapswithme.util.concurrency.UiThread;
import com.mapswithme.util.log.FileLogger;
import com.mapswithme.util.log.Logger;
@ -38,6 +42,7 @@ public final class TrackRecorder
};
private static Boolean sEnableLogging;
@Nullable
private static Logger sLogger;
private static final LocationListener sLocationListener = new LocationListener.Simple()
@ -205,7 +210,6 @@ public final class TrackRecorder
});
}
@SuppressLint("SdCardPath")
static void log(String message)
{
if (sEnableLogging == null)
@ -217,10 +221,15 @@ public final class TrackRecorder
synchronized (TrackRecorder.class)
{
if (sLogger == null)
sLogger = new FileLogger(Environment.getExternalStorageDirectory().getAbsolutePath() + Constants.MWM_DIR_POSTFIX + "/gps-tracker.log");
sLogger.d(message);
{
String externalDir = StorageUtils.getExternalFilesDir();
if (!TextUtils.isEmpty(externalDir))
sLogger = new FileLogger(externalDir + "/gps-tracker.log");
}
}
if (sLogger != null)
sLogger.d(message);
}
private static native void nativeSetEnabled(boolean enable);

View file

@ -116,7 +116,8 @@ public class RoutingController
mCachedRoutingInfo = Framework.nativeGetRouteFollowingInfo();
setBuildState(BuildState.BUILT);
mLastBuildProgress = 100;
mContainer.onRouteBuilt(mLastRouterType);
if (mContainer != null)
mContainer.onRouteBuilt(mLastRouterType);
}
processRoutingEvent();

View file

@ -3,8 +3,10 @@ package com.mapswithme.maps.routing;
import android.animation.ValueAnimator;
import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.annotation.DrawableRes;
import android.support.annotation.IdRes;
import android.support.annotation.NonNull;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CompoundButton;
@ -27,6 +29,7 @@ import com.mapswithme.util.statistics.Statistics;
public class RoutingPlanController extends ToolbarController
{
static final int ANIM_TOGGLE = MwmApplication.get().getResources().getInteger(R.integer.anim_slots_toggle);
private static final String STATE_ALTITUDE_CHART_SHOWN = "altitude chart shown";
protected final View mFrame;
private final ImageView mToggle;
@ -203,11 +206,6 @@ public class RoutingPlanController extends ToolbarController
mAltitudeChartShown = false;
}
protected boolean isAltitudeChartShown()
{
return mAltitudeChartShown;
}
public void updateBuildProgress(int progress, @Framework.RouterType int router)
{
updateProgressLabels();
@ -327,4 +325,15 @@ public class RoutingPlanController extends ToolbarController
UiUtils.show(altitudeChart);
}
}
public void saveAltitudeChartState(@NonNull Bundle outState)
{
outState.putBoolean(STATE_ALTITUDE_CHART_SHOWN, mAltitudeChartShown);
}
public void restoreAltitudeChartState(@NonNull Bundle state)
{
if (state.getBoolean(STATE_ALTITUDE_CHART_SHOWN))
showRouteAltitudeChart(!isVehicleRouteChecked());
}
}

View file

@ -1,13 +1,12 @@
package com.mapswithme.maps.routing;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import com.mapswithme.maps.Framework;
import com.mapswithme.maps.R;
@ -38,6 +37,10 @@ public class RoutingPlanFragment extends BaseMwmFragment
}
});
Bundle activityState = getMwmActivity().getSavedInstanceState();
if (activityState != null)
restoreAltitudeChartState(activityState);
return res;
}
@ -74,4 +77,14 @@ public class RoutingPlanFragment extends BaseMwmFragment
{
mPlanController.showRouteAltitudeChart(show);
}
public void restoreAltitudeChartState(@NonNull Bundle state)
{
mPlanController.restoreAltitudeChartState(state);
}
public void saveAltitudeChartState(@NonNull Bundle outState)
{
mPlanController.saveAltitudeChartState(outState);
}
}

View file

@ -1,13 +1,12 @@
package com.mapswithme.maps.routing;
import android.graphics.Bitmap;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import com.mapswithme.maps.Framework;
import com.mapswithme.maps.MwmActivity;
import com.mapswithme.maps.R;
import com.mapswithme.maps.bookmarks.data.MapObject;
@ -19,7 +18,6 @@ import com.mapswithme.util.statistics.Statistics;
public class RoutingPlanInplaceController extends RoutingPlanController
{
private static final String STATE_OPEN = "slots panel open";
private static final String STATE_ALTITUDE_CHART_SHOWN = "altitude chart shown";
private Boolean mSlotsRestoredState;
@ -81,19 +79,18 @@ public class RoutingPlanInplaceController extends RoutingPlanController
});
}
public void onSaveState(Bundle outState)
public void onSaveState(@NonNull Bundle outState)
{
outState.putBoolean(STATE_OPEN, isOpen());
outState.putBoolean(STATE_ALTITUDE_CHART_SHOWN, isAltitudeChartShown());
saveAltitudeChartState(outState);
}
public void restoreState(Bundle state)
public void restoreState(@NonNull Bundle state)
{
if (state.containsKey(STATE_OPEN))
mSlotsRestoredState = state.getBoolean(STATE_OPEN);
if (state.getBoolean(STATE_ALTITUDE_CHART_SHOWN))
showRouteAltitudeChart(!isVehicleRouteChecked());
restoreAltitudeChartState(state);
}
@Override
@ -102,5 +99,4 @@ public class RoutingPlanInplaceController extends RoutingPlanController
ImageView altitudeChart = (ImageView) mActivity.findViewById(R.id.altitude_chart);
showRouteAltitudeChartInternal(show, altitudeChart);
}
}

View file

@ -227,6 +227,7 @@ class SearchWheel implements View.OnClickListener
parent.showSearch();
mIsExpanded = false;
refreshSearchVisibility();
UiThread.cancelDelayedTasks(mCloseRunnable);
}
private void startSearch(SearchOption searchOption)

View file

@ -44,7 +44,8 @@ public class ToolbarController
}
}
protected @IdRes int getToolbarId()
@IdRes
private int getToolbarId()
{
return R.id.toolbar;
}

View file

@ -315,7 +315,7 @@ public class PlacePageView extends RelativeLayout
case SHARE:
Statistics.INSTANCE.trackEvent(Statistics.EventName.PP_SHARE);
AlohaHelper.logClick(AlohaHelper.PP_SHARE);
ShareOption.ANY.shareMapObject(getActivity(), mMapObject);
ShareOption.ANY.shareMapObject(getActivity(), mMapObject, mSponsoredHotel);
break;
case BACK:

View file

@ -1,5 +1,6 @@
package com.mapswithme.maps.widget.placepage;
import android.support.annotation.Nullable;
import android.support.annotation.UiThread;
import android.text.TextUtils;
@ -11,7 +12,7 @@ import com.mapswithme.maps.bookmarks.data.MapObject;
import com.mapswithme.maps.bookmarks.data.Metadata;
@UiThread
final class SponsoredHotel
public final class SponsoredHotel
{
private static class Price
{
@ -59,6 +60,26 @@ final class SponsoredHotel
return mId;
}
public String getRating()
{
return rating;
}
public String getPrice()
{
return price;
}
public String getUrlBook()
{
return urlBook;
}
public String getUrlDescription()
{
return urlDescription;
}
public static void setListener(OnPriceReceivedListener listener)
{
sListener = new WeakReference<>(listener);
@ -88,6 +109,7 @@ final class SponsoredHotel
listener.onPriceReceived(id, price, currency);
}
@Nullable
public static native SponsoredHotel nativeGetCurrent();
private static native void nativeRequestPrice(String id, String currencyCode);
}

View file

@ -0,0 +1,47 @@
package com.mapswithme.util;
import android.content.Context;
import android.os.Environment;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import com.mapswithme.maps.MwmApplication;
import com.mapswithme.util.log.Logger;
import com.mapswithme.util.log.SimpleLogger;
import java.io.File;
public class StorageUtils
{
/**
* Checks if external storage is available for read and write
*
* @return true if external storage is mounted and ready for reading/writing
*/
private static boolean isExternalStorageWritable()
{
String state = Environment.getExternalStorageState();
return Environment.MEDIA_MOUNTED.equals(state);
}
/**
* Safely returns the external files directory path with the preliminary
* checking the availability of the mentioned directory
*
* @return the absolute path of external files directory or null if directory can not be obtained
* @see Context#getExternalFilesDir(String)
*/
@Nullable
public static String getExternalFilesDir()
{
if (!isExternalStorageWritable())
return null;
File dir = MwmApplication.get().getExternalFilesDir(null);
if (dir != null)
return dir.getAbsolutePath();
SimpleLogger.get().e("Cannot get the external files directory for some reasons", new Throwable());
return null;
}
}

View file

@ -9,7 +9,7 @@ import android.text.TextUtils;
import com.mapswithme.util.statistics.AlohaHelper;
public abstract class BaseShareable
abstract class BaseShareable
{
private final Activity mActivity;
protected Intent mBaseIntent;

View file

@ -1,32 +1,62 @@
package com.mapswithme.util.sharing;
import android.app.Activity;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.text.TextUtils;
import com.mapswithme.maps.Framework;
import com.mapswithme.maps.R;
import com.mapswithme.maps.bookmarks.data.MapObject;
import com.mapswithme.maps.widget.placepage.SponsoredHotel;
import com.mapswithme.util.statistics.Statistics;
public class MapObjectShareable extends BaseShareable
class MapObjectShareable extends BaseShareable
{
protected final MapObject mMapObject;
public MapObjectShareable(Activity context, MapObject mapObject)
MapObjectShareable(Activity context, @NonNull MapObject mapObject, @Nullable SponsoredHotel sponsoredHotel)
{
super(context);
mMapObject = mapObject;
final Activity activity = getActivity();
final String ge0Url = Framework.nativeGetGe0Url(mMapObject.getLat(), mMapObject.getLon(), mMapObject.getScale(), mMapObject.getTitle());
final String httpUrl = Framework.getHttpGe0Url(mMapObject.getLat(), mMapObject.getLon(), mMapObject.getScale(), mMapObject.getTitle());
final String address = Framework.nativeGetNameAndAddress(mMapObject.getLat(), mMapObject.getLon());
final int textId = MapObject.isOfType(MapObject.MY_POSITION, mMapObject) ? R.string.my_position_share_email
: R.string.bookmark_share_email;
final int subjectId = MapObject.isOfType(MapObject.MY_POSITION, mMapObject) ? R.string.my_position_share_email_subject
: R.string.bookmark_share_email_subject;
final String ge0Url = Framework.nativeGetGe0Url(mapObject.getLat(), mapObject.getLon(), mapObject.getScale(), mapObject.getTitle());
setText(activity.getString(textId, address, ge0Url, httpUrl));
setSubject(activity.getString(subjectId));
final String subject;
String text;
if (MapObject.isOfType(MapObject.MY_POSITION, mapObject))
{
subject = activity.getString(R.string.my_position_share_email_subject);
text = activity.getString(R.string.my_position_share_email,
Framework.nativeGetNameAndAddress(mapObject.getLat(), mapObject.getLon()),
ge0Url,
Framework.getHttpGe0Url(mapObject.getLat(), mapObject.getLon(), mapObject.getScale(), mapObject.getTitle()));
}
else
{
subject = activity.getString(R.string.bookmark_share_email_subject);
text = lineWithBreak(activity.getString(R.string.sharing_call_action_look)) +
lineWithBreak(mapObject.getTitle()) +
lineWithBreak(mapObject.getSubtitle()) +
lineWithBreak(mapObject.getAddress()) +
lineWithBreak(ge0Url);
if (sponsoredHotel != null)
{
text += lineWithBreak(activity.getString(R.string.sharing_booking)) +
sponsoredHotel.getUrlBook();
}
}
setSubject(subject);
setText(text);
}
private String lineWithBreak(String title)
{
if (!TextUtils.isEmpty(title))
return title + "\n";
return "";
}
@Override

View file

@ -3,11 +3,14 @@ package com.mapswithme.util.sharing;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.StringRes;
import com.mapswithme.maps.Framework;
import com.mapswithme.maps.R;
import com.mapswithme.maps.bookmarks.data.MapObject;
import com.mapswithme.maps.widget.placepage.SponsoredHotel;
import com.mapswithme.util.Utils;
import com.mapswithme.util.statistics.Statistics;
@ -32,9 +35,9 @@ public abstract class ShareOption
return Utils.isIntentSupported(context, mBaseIntent);
}
public void shareMapObject(Activity activity, MapObject mapObject)
public void shareMapObject(Activity activity, @NonNull MapObject mapObject, @Nullable SponsoredHotel sponsoredHotel)
{
SharingHelper.shareOutside(new MapObjectShareable(activity, mapObject)
SharingHelper.shareOutside(new MapObjectShareable(activity, mapObject, sponsoredHotel)
.setBaseIntent(new Intent(mBaseIntent)), mNameResId);
}
@ -54,7 +57,7 @@ public abstract class ShareOption
}
@Override
public void shareMapObject(Activity activity, MapObject mapObject)
public void shareMapObject(Activity activity, MapObject mapObject, SponsoredHotel sponsoredHotel)
{
final String ge0Url = Framework.nativeGetGe0Url(mapObject.getLat(), mapObject.getLon(), mapObject.getScale(), "");
final String httpUrl = Framework.getHttpGe0Url(mapObject.getLat(), mapObject.getLon(), mapObject.getScale(), "");

View file

@ -26,8 +26,6 @@ import com.mapswithme.maps.editor.Editor;
import com.mapswithme.maps.editor.OsmOAuth;
import com.mapswithme.util.Config;
import com.mapswithme.util.ConnectionState;
import com.my.tracker.MyTracker;
import com.my.tracker.MyTrackerParams;
public enum Statistics
{
@ -232,13 +230,6 @@ public enum Statistics
FlurryAgent.setVersionName(BuildConfig.VERSION_NAME);
FlurryAgent.setCaptureUncaughtExceptions(false);
FlurryAgent.init(context, PrivateVariables.flurryKey());
MyTracker.setDebugMode(BuildConfig.DEBUG);
MyTracker.createTracker(PrivateVariables.myTrackerKey(), context);
final MyTrackerParams myParams = MyTracker.getTrackerParams();
myParams.setDefaultVendorAppPackage();
myParams.setTrackingLaunchEnabled(true);
MyTracker.initTracker();
}
// At the moment, need to always initialize engine for correct JNI http part reusing.
// Statistics is still enabled/disabled separately and never sent anywhere if turned off.
@ -295,7 +286,6 @@ public enum Statistics
{
FlurryAgent.onStartSession(activity);
AppEventsLogger.activateApp(activity);
MyTracker.onStartActivity(activity);
org.alohalytics.Statistics.onStart(activity);
}
}
@ -306,7 +296,6 @@ public enum Statistics
{
FlurryAgent.onEndSession(activity);
AppEventsLogger.deactivateApp(activity);
MyTracker.onStopActivity(activity);
org.alohalytics.Statistics.onStop(activity);
}
}
@ -377,7 +366,6 @@ public enum Statistics
if (mEnabled)
{
final ParameterBuilder params = params().add(EventParam.COUNT, String.valueOf(MapManager.nativeGetDownloadedCount()));
MyTracker.trackEvent(event, params.get());
trackEvent(event, params);
}
}

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
WorldCoasts.mwm 4631224
WorldCoasts.mwm 4635218
WorldCoasts_obsolete.mwm 4513802
World.mwm 35166831
World.mwm 35208957
01_dejavusans.ttf 633604
02_droidsans-fallback.ttf 4033420
03_jomolhari-id-a3d.ttf 1817160

View file

@ -1,4 +1,4 @@
default|Native for each country
default|Native for the country
en|English
ja|日本語
fr|Français

View file

@ -242,19 +242,19 @@ void BackendRenderer::AcceptMessage(ref_ptr<Message> message)
{
ref_ptr<AddRouteMessage> msg = message;
m_routeBuilder->Build(msg->GetRoutePolyline(), msg->GetTurns(),
msg->GetColor(), msg->GetPattern(), m_texMng);
msg->GetColor(), msg->GetPattern(), m_texMng, msg->GetRecacheId());
break;
}
case Message::CacheRouteSign:
{
ref_ptr<CacheRouteSignMessage> msg = message;
m_routeBuilder->BuildSign(msg->GetPosition(), msg->IsStart(), msg->IsValid(), m_texMng);
m_routeBuilder->BuildSign(msg->GetPosition(), msg->IsStart(), msg->IsValid(), m_texMng, msg->GetRecacheId());
break;
}
case Message::CacheRouteArrows:
{
ref_ptr<CacheRouteArrowsMessage> msg = message;
m_routeBuilder->BuildArrows(msg->GetRouteIndex(), msg->GetBorders(), m_texMng);
m_routeBuilder->BuildArrows(msg->GetRouteIndex(), msg->GetBorders(), m_texMng, msg->GetRecacheId());
break;
}
case Message::RemoveRoute:

View file

@ -476,6 +476,10 @@ void FrontendRenderer::AcceptMessage(ref_ptr<Message> message)
{
ref_ptr<FlushRouteMessage> msg = message;
drape_ptr<RouteData> routeData = msg->AcceptRouteData();
if (routeData->m_recacheId > 0 && routeData->m_recacheId < m_lastRecacheRouteId)
break;
m2::PointD const finishPoint = routeData->m_sourcePolyline.Back();
m_routeRenderer->SetRouteData(move(routeData), make_ref(m_gpuProgramManager));
if (!m_routeRenderer->GetFinishPoint())
@ -499,6 +503,10 @@ void FrontendRenderer::AcceptMessage(ref_ptr<Message> message)
{
ref_ptr<FlushRouteSignMessage> msg = message;
drape_ptr<RouteSignData> routeSignData = msg->AcceptRouteSignData();
if (routeSignData->m_recacheId > 0 && routeSignData->m_recacheId < m_lastRecacheRouteId)
break;
m_routeRenderer->SetRouteSign(move(routeSignData), make_ref(m_gpuProgramManager));
break;
}
@ -507,6 +515,10 @@ void FrontendRenderer::AcceptMessage(ref_ptr<Message> message)
{
ref_ptr<FlushRouteArrowsMessage> msg = message;
drape_ptr<RouteArrowsData> routeArrowsData = msg->AcceptRouteArrowsData();
if (routeArrowsData->m_recacheId > 0 && routeArrowsData->m_recacheId < m_lastRecacheRouteId)
break;
m_routeRenderer->SetRouteArrows(move(routeArrowsData), make_ref(m_gpuProgramManager));
break;
}
@ -515,6 +527,7 @@ void FrontendRenderer::AcceptMessage(ref_ptr<Message> message)
{
ref_ptr<RemoveRouteMessage> msg = message;
m_routeRenderer->Clear();
++m_lastRecacheRouteId;
if (msg->NeedDeactivateFollowing())
{
m_myPositionController->DeactivateRouting();
@ -724,13 +737,15 @@ unique_ptr<threads::IRoutine> FrontendRenderer::CreateRoutine()
void FrontendRenderer::UpdateGLResources()
{
++m_lastRecacheRouteId;
// Invalidate route.
if (m_routeRenderer->GetStartPoint())
{
m2::PointD const & position = m_routeRenderer->GetStartPoint()->m_position;
m_commutator->PostMessage(ThreadsCommutator::ResourceUploadThread,
make_unique_dp<CacheRouteSignMessage>(position, true /* isStart */,
true /* isValid */),
true /* isValid */, m_lastRecacheRouteId),
MessagePriority::High);
}
@ -739,7 +754,7 @@ void FrontendRenderer::UpdateGLResources()
m2::PointD const & position = m_routeRenderer->GetFinishPoint()->m_position;
m_commutator->PostMessage(ThreadsCommutator::ResourceUploadThread,
make_unique_dp<CacheRouteSignMessage>(position, false /* isStart */,
true /* isValid */),
true /* isValid */, m_lastRecacheRouteId),
MessagePriority::High);
}
@ -749,7 +764,8 @@ void FrontendRenderer::UpdateGLResources()
auto recacheRouteMsg = make_unique_dp<AddRouteMessage>(routeData->m_sourcePolyline,
routeData->m_sourceTurns,
routeData->m_color,
routeData->m_pattern);
routeData->m_pattern,
m_lastRecacheRouteId);
m_routeRenderer->ClearGLDependentResources();
m_commutator->PostMessage(ThreadsCommutator::ResourceUploadThread, move(recacheRouteMsg),
MessagePriority::Normal);

View file

@ -309,6 +309,8 @@ private:
uint64_t m_maxGeneration;
int m_mergeBucketsCounter = 0;
int m_lastRecacheRouteId = 0;
struct FollowRouteData
{
FollowRouteData(int preferredZoomLevel,

View file

@ -95,7 +95,9 @@ void GpsTrackRenderer::AddRenderData(ref_ptr<dp::GpuProgramManager> mng,
void GpsTrackRenderer::ClearRenderData()
{
m_renderData.clear();
m_handlesCache.clear();
m_waitForRenderData = false;
m_needUpdate = true;
}
void GpsTrackRenderer::UpdatePoints(vector<GpsTrackPoint> const & toAdd, vector<uint32_t> const & toRemove)

View file

@ -595,10 +595,16 @@ class AddRouteMessage : public Message
public:
AddRouteMessage(m2::PolylineD const & routePolyline, vector<double> const & turns,
df::ColorConstant color, df::RoutePattern const & pattern)
: AddRouteMessage(routePolyline, turns, color, pattern, -1 /* invalid recache id */)
{}
AddRouteMessage(m2::PolylineD const & routePolyline, vector<double> const & turns,
df::ColorConstant color, df::RoutePattern const & pattern, int recacheId)
: m_routePolyline(routePolyline)
, m_color(color)
, m_turns(turns)
, m_pattern(pattern)
, m_recacheId(recacheId)
{}
Type GetType() const override { return Message::AddRoute; }
@ -607,21 +613,28 @@ public:
df::ColorConstant GetColor() const { return m_color; }
vector<double> const & GetTurns() const { return m_turns; }
df::RoutePattern const & GetPattern() const { return m_pattern; }
int GetRecacheId() const { return m_recacheId; }
private:
m2::PolylineD m_routePolyline;
df::ColorConstant m_color;
vector<double> m_turns;
df::RoutePattern m_pattern;
int const m_recacheId;
};
class CacheRouteSignMessage : public Message
{
public:
CacheRouteSignMessage(m2::PointD const & pos, bool isStart, bool isValid)
: CacheRouteSignMessage(pos, isStart, isValid, -1 /* invalid recache id */)
{}
CacheRouteSignMessage(m2::PointD const & pos, bool isStart, bool isValid, int recacheId)
: m_position(pos)
, m_isStart(isStart)
, m_isValid(isValid)
, m_recacheId(recacheId)
{}
Type GetType() const override { return Message::CacheRouteSign; }
@ -629,29 +642,38 @@ public:
m2::PointD const & GetPosition() const { return m_position; }
bool IsStart() const { return m_isStart; }
bool IsValid() const { return m_isValid; }
int GetRecacheId() const { return m_recacheId; }
private:
m2::PointD const m_position;
bool const m_isStart;
bool const m_isValid;
int const m_recacheId;
};
class CacheRouteArrowsMessage : public Message
{
public:
CacheRouteArrowsMessage(int routeIndex, vector<ArrowBorders> const & borders)
: CacheRouteArrowsMessage(routeIndex, borders, -1 /* invalid recache id */)
{}
CacheRouteArrowsMessage(int routeIndex, vector<ArrowBorders> const & borders, int recacheId)
: m_routeIndex(routeIndex)
, m_borders(borders)
, m_recacheId(recacheId)
{}
Type GetType() const override { return Message::CacheRouteArrows; }
int GetRouteIndex() const { return m_routeIndex; }
vector<ArrowBorders> const & GetBorders() const { return m_borders; }
int GetRecacheId() const { return m_recacheId; }
private:
int m_routeIndex;
vector<ArrowBorders> m_borders;
int const m_recacheId;
};
class RemoveRouteMessage : public Message

View file

@ -15,7 +15,7 @@ RouteBuilder::RouteBuilder(TFlushRouteFn const & flushRouteFn,
void RouteBuilder::Build(m2::PolylineD const & routePolyline, vector<double> const & turns,
df::ColorConstant color, df::RoutePattern const & pattern,
ref_ptr<dp::TextureManager> textures)
ref_ptr<dp::TextureManager> textures, int recacheId)
{
drape_ptr<RouteData> routeData = make_unique_dp<RouteData>();
routeData->m_routeIndex = m_routeIndex++;
@ -24,6 +24,7 @@ void RouteBuilder::Build(m2::PolylineD const & routePolyline, vector<double> con
routeData->m_sourceTurns = turns;
routeData->m_pattern = pattern;
routeData->m_pivot = routePolyline.GetLimitRect().Center();
routeData->m_recacheId = recacheId;
RouteShape::CacheRoute(textures, *routeData.get());
m_routeCache.insert(make_pair(routeData->m_routeIndex, routePolyline));
@ -40,12 +41,13 @@ void RouteBuilder::ClearRouteCache()
}
void RouteBuilder::BuildSign(m2::PointD const & pos, bool isStart, bool isValid,
ref_ptr<dp::TextureManager> textures)
ref_ptr<dp::TextureManager> textures, int recacheId)
{
drape_ptr<RouteSignData> routeSignData = make_unique_dp<RouteSignData>();
routeSignData->m_isStart = isStart;
routeSignData->m_position = pos;
routeSignData->m_isValid = isValid;
routeSignData->m_recacheId = recacheId;
if (isValid)
RouteShape::CacheRouteSign(textures, *routeSignData.get());
@ -57,7 +59,7 @@ void RouteBuilder::BuildSign(m2::PointD const & pos, bool isStart, bool isValid,
}
void RouteBuilder::BuildArrows(int routeIndex, vector<ArrowBorders> const & borders,
ref_ptr<dp::TextureManager> textures)
ref_ptr<dp::TextureManager> textures, int recacheId)
{
auto it = m_routeCache.find(routeIndex);
if (it == m_routeCache.end())
@ -65,6 +67,7 @@ void RouteBuilder::BuildArrows(int routeIndex, vector<ArrowBorders> const & bord
drape_ptr<RouteArrowsData> routeArrowsData = make_unique_dp<RouteArrowsData>();
routeArrowsData->m_pivot = it->second.GetLimitRect().Center();
routeArrowsData->m_recacheId = recacheId;
RouteShape::CacheRouteArrows(textures, it->second, borders, *routeArrowsData.get());
// Flush route arrows geometry.

View file

@ -27,13 +27,13 @@ public:
void Build(m2::PolylineD const & routePolyline, vector<double> const & turns,
df::ColorConstant color, df::RoutePattern const & pattern,
ref_ptr<dp::TextureManager> textures);
ref_ptr<dp::TextureManager> textures, int recacheId);
void BuildArrows(int routeIndex, vector<ArrowBorders> const & borders,
ref_ptr<dp::TextureManager> textures);
ref_ptr<dp::TextureManager> textures, int recacheId);
void BuildSign(m2::PointD const & pos, bool isStart, bool isValid,
ref_ptr<dp::TextureManager> textures);
ref_ptr<dp::TextureManager> textures, int recacheId);
void ClearRouteCache();

View file

@ -67,6 +67,7 @@ struct RouteData
double m_length;
RouteRenderProperty m_route;
RoutePattern m_pattern;
int m_recacheId;
};
struct RouteSignData
@ -75,12 +76,14 @@ struct RouteSignData
bool m_isStart;
bool m_isValid;
m2::PointD m_position;
int m_recacheId;
};
struct RouteArrowsData
{
RouteRenderProperty m_arrows;
m2::PointD m_pivot;
int m_recacheId;
};
class RouteShape

View file

@ -225,6 +225,7 @@ CGAffineTransform rotation(UIInterfaceOrientation orientation)
{
[super layoutSubviews];
self.frame = self.superview.bounds;
[super layoutSubviews];
}
@end

View file

@ -121,7 +121,7 @@ static NSString * const kDefaultAlertNibName = @"MWMDefaultAlert";
+ (instancetype)noWiFiAlertWithOkBlock:(TMWMVoidBlock)okBlock
{
kStatisticsEvent = @"No WiFi Alert";
MWMDefaultAlert * alert = [self defaultAlertWithTitle:@"download_over_mobile_header"
MWMDefaultAlert * alert = [self defaultAlertWithTitle:L(@"download_over_mobile_header")
message:L(@"download_over_mobile_message")
rightButtonTitle:L(@"use_cellular_data")
leftButtonTitle:L(@"cancel")

View file

@ -8,6 +8,7 @@
#import "UIButton+RuntimeAttributes.h"
#import "UIColor+MapsMeColor.h"
#import "UIFont+MapsMeFonts.h"
#import "UIImageView+Coloring.h"
#import "UIView+RuntimeAttributes.h"
#include "Framework.h"
@ -84,6 +85,9 @@ CGFloat constexpr kTimeWidthRegular = 128;
@property(weak, nonatomic) IBOutlet UILabel * estimateLabel;
@property(weak, nonatomic) IBOutlet UIView * heightProfileContainer;
@property(weak, nonatomic) IBOutlet UIImageView * heightProfileImage;
@property(weak, nonatomic) IBOutlet UIView * heightProfileElevation;
@property(weak, nonatomic) IBOutlet UIImageView * elevationImage;
@property(weak, nonatomic) IBOutlet UILabel * elevationHeight;
@property(weak, nonatomic) IBOutlet UIPageControl * pageControl;
@property(weak, nonatomic) IBOutlet NSLayoutConstraint * pageControlTopOffset;
@ -112,6 +116,7 @@ CGFloat constexpr kTimeWidthRegular = 128;
self.goButton.hidden = YES;
self.estimateLabel.hidden = YES;
self.heightProfileContainer.hidden = YES;
self.heightProfileElevation.hidden = YES;
self.toggleInfoButton.hidden = YES;
self.speedView.hidden = YES;
self.timeView.hidden = YES;
@ -123,6 +128,7 @@ CGFloat constexpr kTimeWidthRegular = 128;
[self.goButton setBackgroundColor:[UIColor linkBlue] forState:UIControlStateNormal];
[self.goButton setBackgroundColor:[UIColor linkBlueHighlighted]
forState:UIControlStateHighlighted];
self.elevationImage.mwm_coloring = MWMImageColoringBlue;
}
- (void)layoutSubviews
@ -253,8 +259,9 @@ CGFloat constexpr kTimeWidthRegular = 128;
return;
dispatch_async(dispatch_get_main_queue(), ^{
[[MWMRouter router] routeAltitudeImageForSize:self.heightProfileImage.frame.size
completion:^(UIImage * image) {
completion:^(UIImage * image, NSString * altitudeElevation) {
self.heightProfileImage.image = image;
self.elevationHeight.text = altitudeElevation;
}];
});
}
@ -331,6 +338,8 @@ CGFloat constexpr kTimeWidthRegular = 128;
if (isLandscape)
{
self.mainButtonsHeight.constant = kBicyclePlanningMainButtonsHeightLandscape;
if ([MWMRouter hasRouteAltitude])
self.estimateLabelTopOffset.priority = UILayoutPriorityDefaultHigh;
}
else
{
@ -611,6 +620,7 @@ CGFloat constexpr kTimeWidthRegular = 128;
self.goButton.hidden = NO;
self.estimateLabel.hidden = YES;
self.heightProfileContainer.hidden = YES;
self.heightProfileElevation.hidden = YES;
self.toggleInfoButton.hidden = YES;
self.speedView.hidden = YES;
self.timeView.hidden = YES;
@ -620,10 +630,13 @@ CGFloat constexpr kTimeWidthRegular = 128;
self.routingAdditionalView.hidden = YES;
break;
case MWMBottomMenuStateGo:
{
self.goButton.enabled = YES;
self.goButton.hidden = NO;
self.estimateLabel.hidden = NO;
self.heightProfileContainer.hidden = ![MWMRouter hasRouteAltitude];
BOOL const hasAltitude = [MWMRouter hasRouteAltitude];
self.heightProfileContainer.hidden = !hasAltitude;
self.heightProfileElevation.hidden = !hasAltitude;
self.toggleInfoButton.hidden = YES;
self.speedView.hidden = YES;
self.timeView.hidden = YES;
@ -632,11 +645,13 @@ CGFloat constexpr kTimeWidthRegular = 128;
self.routingView.hidden = NO;
self.routingAdditionalView.hidden = YES;
break;
}
case MWMBottomMenuStateRouting:
self.menuButton.hidden = NO;
self.goButton.hidden = YES;
self.estimateLabel.hidden = YES;
self.heightProfileContainer.hidden = YES;
self.heightProfileElevation.hidden = YES;
self.toggleInfoButton.hidden = NO;
self.speedView.hidden = NO;
self.timeView.hidden = NO;
@ -650,6 +665,7 @@ CGFloat constexpr kTimeWidthRegular = 128;
self.goButton.hidden = YES;
self.estimateLabel.hidden = YES;
self.heightProfileContainer.hidden = YES;
self.heightProfileElevation.hidden = YES;
self.toggleInfoButton.hidden = NO;
self.speedView.hidden = NO;
self.timeView.hidden = NO;

View file

@ -1,9 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="10117" systemVersion="15G1004" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="11201" systemVersion="15G1004" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11161"/>
<capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="MWMBottomMenuViewController">
@ -32,11 +33,9 @@
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<view opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="kbJ-If-gUR" userLabel="MainButtons">
<rect key="frame" x="0.0" y="0.0" width="320" height="48"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="249" horizontalCompressionResistancePriority="751" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="IzQ-aQ-aPH" userLabel="Search" customClass="MWMButton">
<rect key="frame" x="0.0" y="0.0" width="60" height="48"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<accessibility key="accessibilityConfiguration" identifier="searchButton"/>
<constraints>
<constraint firstAttribute="width" constant="60" id="J9X-GZ-6tZ"/>
@ -50,8 +49,7 @@
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="xQ0-ZK-UXk" userLabel="P2P" customClass="MWMButton">
<rect key="frame" x="88" y="0.0" width="60" height="48"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<accessibility key="accessibilityConfiguration" identifier="p2pButton"/>
<constraints>
<constraint firstAttribute="width" constant="60" id="paN-sx-04o"/>
@ -65,8 +63,7 @@
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="qVh-dm-DDH" userLabel="Bookmarks" customClass="MWMButton">
<rect key="frame" x="176" y="0.0" width="60" height="48"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<accessibility key="accessibilityConfiguration" identifier="bookmarksButton"/>
<constraints>
<constraint firstAttribute="width" constant="60" id="EmN-5v-BhH"/>
@ -80,22 +77,17 @@
</connections>
</button>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="c75-ZF-hKn">
<rect key="frame" x="0.0" y="0.0" width="320" height="48"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="33 мин • 7.0 км" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="EQy-vz-gyi">
<rect key="frame" x="16" y="14" width="122" height="21"/>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="600" text="33 мин • 7.0 км" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="EQy-vz-gyi">
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4Xc-Kl-hAm">
<rect key="frame" x="154" y="12" width="54" height="24"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="150" verticalHuggingPriority="150" horizontalCompressionResistancePriority="240" verticalCompressionResistancePriority="240" translatesAutoresizingMaskIntoConstraints="NO" id="ViI-p6-hUf">
<rect key="frame" x="0.0" y="0.0" width="54" height="24"/>
</imageView>
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="150" verticalHuggingPriority="150" horizontalCompressionResistancePriority="240" verticalCompressionResistancePriority="240" translatesAutoresizingMaskIntoConstraints="NO" id="ViI-p6-hUf"/>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="ViI-p6-hUf" firstAttribute="leading" secondItem="4Xc-Kl-hAm" secondAttribute="leading" id="4Rl-3k-ej1"/>
<constraint firstAttribute="bottom" secondItem="ViI-p6-hUf" secondAttribute="bottom" id="YtA-RO-fmc"/>
@ -103,8 +95,35 @@
<constraint firstAttribute="trailing" secondItem="ViI-p6-hUf" secondAttribute="trailing" id="tnv-Fq-At9"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nD5-wx-7Ui">
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="ic_elevation" translatesAutoresizingMaskIntoConstraints="NO" id="FpX-u9-FuR">
<constraints>
<constraint firstAttribute="height" constant="12" id="Wup-Xg-5Ce"/>
<constraint firstAttribute="width" constant="10" id="rVv-JG-SyM"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="270" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dVz-cc-LUM">
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="linkBlue"/>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="medium14"/>
</userDefinedRuntimeAttributes>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="FpX-u9-FuR" firstAttribute="leading" secondItem="nD5-wx-7Ui" secondAttribute="leading" id="2as-BP-0az"/>
<constraint firstItem="dVz-cc-LUM" firstAttribute="leading" secondItem="FpX-u9-FuR" secondAttribute="trailing" constant="4" id="Nhd-Y8-dTQ"/>
<constraint firstAttribute="trailing" secondItem="dVz-cc-LUM" secondAttribute="trailing" id="QIw-po-XUM"/>
<constraint firstAttribute="bottom" secondItem="FpX-u9-FuR" secondAttribute="bottom" id="a6A-3c-6yL"/>
<constraint firstItem="FpX-u9-FuR" firstAttribute="top" secondItem="nD5-wx-7Ui" secondAttribute="top" id="lus-SX-O0h"/>
<constraint firstItem="dVz-cc-LUM" firstAttribute="centerY" secondItem="FpX-u9-FuR" secondAttribute="centerY" id="yEP-oH-4ti"/>
</constraints>
</view>
<button hidden="YES" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="tailTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="pLD-sZ-ejH" userLabel="Go" customClass="MWMStartButton">
<rect key="frame" x="224" y="0.0" width="96" height="48"/>
<accessibility key="accessibilityConfiguration" identifier="goButton"/>
<constraints>
<constraint firstAttribute="width" constant="96" id="ZHw-Ha-INX"/>
@ -112,7 +131,7 @@
<inset key="contentEdgeInsets" minX="8" minY="0.0" maxX="8" maxY="0.0"/>
<state key="normal" title="Start"/>
<state key="selected">
<color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="0.26000000000000001" colorSpace="calibratedRGB"/>
<color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="0.26000000000000001" colorSpace="custom" customColorSpace="sRGB"/>
</state>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular17"/>
@ -126,34 +145,30 @@
</connections>
</button>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="UhW-en-7qq">
<rect key="frame" x="0.0" y="0.0" width="72" height="48"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="azs-RS-4KE">
<rect key="frame" x="36" y="4" width="0.0" height="0.0"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="22"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Y2P-la-daO">
<rect key="frame" x="36" y="4" width="0.0" height="0.0"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="22"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackPrimaryText"/>
</userDefinedRuntimeAttributes>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="P9v-a6-EaA">
<rect key="frame" x="36" y="11" width="0.0" height="0.0"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="12"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackSecondaryText"/>
</userDefinedRuntimeAttributes>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="Y2P-la-daO" firstAttribute="centerX" secondItem="UhW-en-7qq" secondAttribute="centerX" priority="750" id="88p-qa-uC4"/>
<constraint firstItem="Y2P-la-daO" firstAttribute="top" secondItem="UhW-en-7qq" secondAttribute="top" constant="4" id="MZ8-us-Rv7"/>
@ -166,25 +181,22 @@
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Z68-6z-5Ph">
<rect key="frame" x="104" y="0.0" width="112" height="48"/>
<subviews>
<pageControl opaque="NO" contentMode="scaleToFill" verticalCompressionResistancePriority="100" contentHorizontalAlignment="center" contentVerticalAlignment="center" numberOfPages="2" translatesAutoresizingMaskIntoConstraints="NO" id="7hO-Gk-BGJ">
<rect key="frame" x="44" y="4" width="23" height="13"/>
<constraints>
<constraint firstAttribute="height" constant="13" id="a7i-03-Hg1"/>
</constraints>
</pageControl>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jSU-Ns-SpQ">
<rect key="frame" x="56" y="4" width="0.0" height="0.0"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="22"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackPrimaryText"/>
</userDefinedRuntimeAttributes>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="jSU-Ns-SpQ" firstAttribute="centerX" secondItem="Z68-6z-5Ph" secondAttribute="centerX" id="DKb-2f-om1"/>
<constraint firstAttribute="width" constant="112" id="GYP-RF-12U"/>
@ -194,34 +206,30 @@
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="mab-rl-ueg">
<rect key="frame" x="248" y="0.0" width="72" height="48"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LOZ-cm-r9V">
<rect key="frame" x="36" y="4" width="0.0" height="0.0"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="22"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LBZ-kD-25J">
<rect key="frame" x="36" y="4" width="0.0" height="0.0"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="22"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackPrimaryText"/>
</userDefinedRuntimeAttributes>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5ad-tg-al9">
<rect key="frame" x="36" y="11" width="0.0" height="0.0"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="12"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackSecondaryText"/>
</userDefinedRuntimeAttributes>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="LBZ-kD-25J" firstAttribute="top" secondItem="mab-rl-ueg" secondAttribute="top" constant="4" id="LHZ-Zi-oiI"/>
<constraint firstItem="5ad-tg-al9" firstAttribute="centerX" secondItem="mab-rl-ueg" secondAttribute="centerX" id="Np5-b9-h9o"/>
@ -233,11 +241,9 @@
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="qvF-jY-5Gi">
<rect key="frame" x="0.0" y="44" width="320" height="4"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="xqD-Zl-BRc">
<rect key="frame" x="0.0" y="0.0" width="0.0" height="4"/>
<color key="backgroundColor" red="0.11764705882352941" green="0.58823529411764708" blue="0.94117647058823528" alpha="1" colorSpace="calibratedRGB"/>
<color key="backgroundColor" red="0.11764705882352941" green="0.58823529411764708" blue="0.94117647058823528" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="width" id="pSf-au-FVR"/>
</constraints>
@ -246,7 +252,7 @@
</userDefinedRuntimeAttributes>
</view>
</subviews>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.12" colorSpace="calibratedRGB"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.12" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="xqD-Zl-BRc" secondAttribute="bottom" id="4PZ-NH-ZvR"/>
<constraint firstItem="xqD-Zl-BRc" firstAttribute="leading" secondItem="qvF-jY-5Gi" secondAttribute="leading" id="Mfi-1F-Szz"/>
@ -255,14 +261,13 @@
</constraints>
</view>
<button contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="3oJ-Rv-JS7" userLabel="ToggleInfo">
<rect key="frame" x="0.0" y="0.0" width="320" height="48"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<connections>
<action selector="toggleInfoTouchUpInside" destination="-1" eventType="touchUpInside" id="kuP-Ue-Syq"/>
</connections>
</button>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="3oJ-Rv-JS7" secondAttribute="trailing" id="3R5-Ud-LdZ"/>
<constraint firstItem="mab-rl-ueg" firstAttribute="top" secondItem="c75-ZF-hKn" secondAttribute="top" id="3xv-Y2-YLW"/>
@ -270,6 +275,7 @@
<constraint firstItem="5ad-tg-al9" firstAttribute="centerY" secondItem="7hO-Gk-BGJ" secondAttribute="centerY" priority="500" id="6Q9-vO-V4W"/>
<constraint firstItem="Z68-6z-5Ph" firstAttribute="centerX" secondItem="c75-ZF-hKn" secondAttribute="centerX" id="AcE-Sk-hhd"/>
<constraint firstAttribute="bottom" secondItem="Z68-6z-5Ph" secondAttribute="bottom" id="BlR-TS-xJa"/>
<constraint firstItem="nD5-wx-7Ui" firstAttribute="trailing" secondItem="4Xc-Kl-hAm" secondAttribute="trailing" priority="250" id="CRC-g9-WLM"/>
<constraint firstAttribute="trailing" secondItem="pLD-sZ-ejH" secondAttribute="trailing" id="E7k-Dh-qE5"/>
<constraint firstAttribute="bottom" secondItem="4Xc-Kl-hAm" secondAttribute="bottom" constant="12" id="IBg-Su-7fT"/>
<constraint firstAttribute="bottom" secondItem="3oJ-Rv-JS7" secondAttribute="bottom" id="QSK-8y-lMm"/>
@ -283,21 +289,23 @@
<constraint firstItem="UhW-en-7qq" firstAttribute="leading" secondItem="c75-ZF-hKn" secondAttribute="leading" id="ZCC-xJ-5Vg"/>
<constraint firstItem="4Xc-Kl-hAm" firstAttribute="top" secondItem="EQy-vz-gyi" secondAttribute="bottom" priority="250" constant="8" id="ZCb-We-WNy"/>
<constraint firstItem="EQy-vz-gyi" firstAttribute="centerY" secondItem="c75-ZF-hKn" secondAttribute="centerY" priority="500" id="ZKG-5z-sra"/>
<constraint firstItem="nD5-wx-7Ui" firstAttribute="leading" secondItem="EQy-vz-gyi" secondAttribute="leading" priority="260" id="b4o-Ke-eqq"/>
<constraint firstItem="Z68-6z-5Ph" firstAttribute="top" secondItem="c75-ZF-hKn" secondAttribute="top" id="cpY-Wy-lyr"/>
<constraint firstItem="EQy-vz-gyi" firstAttribute="leading" secondItem="c75-ZF-hKn" secondAttribute="leading" constant="16" id="fIE-wa-hE8"/>
<constraint firstItem="EQy-vz-gyi" firstAttribute="top" secondItem="c75-ZF-hKn" secondAttribute="top" priority="250" constant="14" id="fOa-qL-A5d"/>
<constraint firstItem="EQy-vz-gyi" firstAttribute="top" secondItem="c75-ZF-hKn" secondAttribute="top" priority="250" constant="12" id="fOa-qL-A5d"/>
<constraint firstItem="pLD-sZ-ejH" firstAttribute="leading" secondItem="4Xc-Kl-hAm" secondAttribute="trailing" constant="16" id="h3c-E6-aX6"/>
<constraint firstItem="nD5-wx-7Ui" firstAttribute="centerY" secondItem="EQy-vz-gyi" secondAttribute="centerY" priority="250" id="h5a-LJ-T8H"/>
<constraint firstItem="P9v-a6-EaA" firstAttribute="centerY" secondItem="7hO-Gk-BGJ" secondAttribute="centerY" priority="500" id="hEB-H2-4WJ"/>
<constraint firstItem="4Xc-Kl-hAm" firstAttribute="leading" secondItem="c75-ZF-hKn" secondAttribute="leading" priority="250" constant="12" id="mac-YL-Cyx"/>
<constraint firstItem="3oJ-Rv-JS7" firstAttribute="top" secondItem="c75-ZF-hKn" secondAttribute="top" id="plc-KQ-Bxg"/>
<constraint firstAttribute="bottom" secondItem="UhW-en-7qq" secondAttribute="bottom" id="tF2-H2-VBe"/>
<constraint firstItem="4Xc-Kl-hAm" firstAttribute="top" secondItem="c75-ZF-hKn" secondAttribute="top" priority="500" constant="12" id="vt3-dc-Ngf"/>
<constraint firstAttribute="trailing" secondItem="mab-rl-ueg" secondAttribute="trailing" id="w4c-fR-znA"/>
<constraint firstItem="nD5-wx-7Ui" firstAttribute="bottom" secondItem="4Xc-Kl-hAm" secondAttribute="bottom" priority="500" id="wq2-oV-MOH"/>
</constraints>
</view>
<button opaque="NO" contentMode="center" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="YLY-C4-SBu" userLabel="Menu" customClass="MWMButton">
<rect key="frame" x="260" y="0.0" width="60" height="48"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<accessibility key="accessibilityConfiguration" identifier="menuButton"/>
<constraints>
<constraint firstAttribute="width" constant="60" id="ams-2s-vhw"/>
@ -311,8 +319,7 @@
</connections>
</button>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="WLn-2O-Ivv" userLabel="DownloadBadge">
<rect key="frame" x="293" y="11" width="10" height="10"/>
<color key="backgroundColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="backgroundColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="width" constant="10" id="ToN-Zr-4oh"/>
<constraint firstAttribute="height" constant="10" id="XeO-2q-gDj"/>
@ -325,7 +332,7 @@
</userDefinedRuntimeAttributes>
</view>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="qvF-jY-5Gi" firstAttribute="leading" secondItem="kbJ-If-gUR" secondAttribute="leading" id="4FM-cc-hga"/>
<constraint firstItem="YLY-C4-SBu" firstAttribute="leading" secondItem="c75-ZF-hKn" secondAttribute="trailing" priority="250" id="4e2-YH-he6"/>
@ -352,8 +359,7 @@
</constraints>
</view>
<view clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nYy-JN-hGA" userLabel="Separator">
<rect key="frame" x="0.0" y="48" width="320" height="1"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.12" colorSpace="calibratedRGB"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.12" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="1" id="Kgm-bO-O6Q"/>
</constraints>
@ -362,8 +368,7 @@
</userDefinedRuntimeAttributes>
</view>
<collectionView clipsSubviews="YES" contentMode="scaleToFill" bounces="NO" scrollEnabled="NO" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" delaysContentTouches="NO" bouncesZoom="NO" dataMode="none" translatesAutoresizingMaskIntoConstraints="NO" id="hSd-fM-qKd" userLabel="AdditionalButtons">
<rect key="frame" x="0.0" y="49" width="320" height="148"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="148" id="fsD-HQ-mF9"/>
</constraints>
@ -374,10 +379,8 @@
</connections>
</collectionView>
<view clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Z8y-bh-6dN">
<rect key="frame" x="0.0" y="48" width="320" height="64"/>
<subviews>
<button opaque="NO" contentMode="center" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="o9v-sB-QHp" customClass="MWMButton">
<rect key="frame" x="0.0" y="0.0" width="64" height="64"/>
<constraints>
<constraint firstAttribute="height" priority="750" constant="64" id="pvz-bi-FpY"/>
<constraint firstAttribute="width" constant="64" id="q3s-yb-6lU"/>
@ -391,7 +394,6 @@
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="q6M-3k-tKX" customClass="MWMButton">
<rect key="frame" x="256" y="0.0" width="64" height="64"/>
<constraints>
<constraint firstAttribute="height" priority="750" constant="64" id="6Us-Z7-JyL"/>
<constraint firstAttribute="width" constant="64" id="GtG-l1-K05"/>
@ -406,14 +408,13 @@
</connections>
</button>
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Kyc-p0-3HI" customClass="MWMStopButton">
<rect key="frame" x="112" y="14" width="96" height="36"/>
<color key="backgroundColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="backgroundColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="96" id="aRk-9J-VLI"/>
<constraint firstAttribute="height" priority="750" constant="36" id="vAX-VM-89C"/>
</constraints>
<state key="normal" title="STOP">
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</state>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular17"/>
@ -430,7 +431,7 @@
</connections>
</button>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="q6M-3k-tKX" secondAttribute="trailing" id="1Zb-qW-cfl"/>
<constraint firstAttribute="height" constant="64" id="7YS-h4-f40"/>
@ -442,7 +443,7 @@
</constraints>
</view>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="0.80000000000000004" colorSpace="calibratedRGB"/>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="hSd-fM-qKd" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="2jm-k3-CLB"/>
<constraint firstItem="kbJ-If-gUR" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="7id-li-IXL"/>
@ -470,11 +471,14 @@
<outlet property="distanceView" destination="mab-rl-ueg" id="wnH-29-JDU"/>
<outlet property="distanceWithLegendLabel" destination="LOZ-cm-r9V" id="Cdx-SJ-kAY"/>
<outlet property="downloadBadge" destination="WLn-2O-Ivv" id="f9u-k6-l9u"/>
<outlet property="elevationHeight" destination="dVz-cc-LUM" id="kBh-29-6zr"/>
<outlet property="elevationImage" destination="FpX-u9-FuR" id="j3J-NH-eKH"/>
<outlet property="estimateLabel" destination="EQy-vz-gyi" id="lVV-FW-8AJ"/>
<outlet property="estimateLabelTopOffset" destination="fOa-qL-A5d" id="7eJ-Go-MBm"/>
<outlet property="goButton" destination="pLD-sZ-ejH" id="Txw-4S-mwR"/>
<outlet property="goButtonWidth" destination="ZHw-Ha-INX" id="H3K-lh-Iyx"/>
<outlet property="heightProfileContainer" destination="4Xc-Kl-hAm" id="ovY-lT-vrD"/>
<outlet property="heightProfileElevation" destination="nD5-wx-7Ui" id="DBa-gs-tSc"/>
<outlet property="heightProfileImage" destination="ViI-p6-hUf" id="8b8-rT-Hpc"/>
<outlet property="mainButtons" destination="kbJ-If-gUR" id="1sk-bi-6xl"/>
<outlet property="mainButtonsHeight" destination="HtR-j8-Qpc" id="eF8-KH-F9n"/>
@ -507,10 +511,13 @@
<outletCollection property="speedDistanceOffset" destination="w4c-fR-znA" id="q0p-e4-syx"/>
<outletCollection property="heightProfileContainerVerticalOrientation" destination="mac-YL-Cyx" id="L7C-H0-A6R"/>
<outletCollection property="heightProfileContainerVerticalOrientation" destination="ZCb-We-WNy" id="uzJ-Eb-Epe"/>
<outletCollection property="heightProfileContainerVerticalOrientation" destination="CRC-g9-WLM" id="Zr9-y7-E9U"/>
<outletCollection property="heightProfileContainerVerticalOrientation" destination="h5a-LJ-T8H" id="89A-IH-XBE"/>
</connections>
</view>
</objects>
<resources>
<image name="ic_elevation" width="10" height="12"/>
<image name="ic_menu" width="48" height="48"/>
<image name="ic_menu_bookmark_list" width="48" height="48"/>
<image name="ic_menu_point_to_point" width="48" height="48"/>

View file

@ -240,8 +240,7 @@ extern NSString * const kAlohalyticsTapEventKey;
{
if (!self.searchHidden)
self.searchManager.state = MWMSearchManagerStateHidden;
else if (MapsAppDelegate.theApp.routingPlaneMode != MWMRoutingPlaneModeNone)
[[MWMRouter router] stop];
[[MWMRouter router] stop];
}
else
{

View file

@ -182,6 +182,7 @@ extern NSString * const kSearchStateKey = @"SearchStateKey";
self.state = MWMSearchManagerStateHidden;
}
- (void)dismissKeyboard { [self.searchTextField resignFirstResponder]; }
- (void)processSearchWithResult:(search::Result const &)result
{
MapsAppDelegate * a = MapsAppDelegate.theApp;

View file

@ -70,6 +70,7 @@ static NSString * const kCellIdentifier = @"MWMSearchCategoryCell";
withParameters:@{kStatValue : string, kStatScreen : kStatCategories}];
[self.delegate searchText:[L(string) stringByAppendingString:@" "]
forInputLocale:[[AppInfo sharedInfo] languageId]];
[self.delegate dismissKeyboard];
}
@end

View file

@ -4,5 +4,6 @@
- (void)searchText:(NSString *)text forInputLocale:(NSString *)locale;
- (void)tapMyPositionFromHistory;
- (void)dismissKeyboard;
@end

View file

@ -0,0 +1,5 @@
#import "MWMWelcomeController.h"
@interface MWMWhatsNewProfileBookingController : MWMWelcomeController
@end

View file

@ -0,0 +1,68 @@
#import "MWMWhatsNewProfileBookingController.h"
#import "MWMPageController.h"
@interface MWMWhatsNewProfileBookingController ()
@property(weak, nonatomic) IBOutlet UIView * containerView;
@property(weak, nonatomic) IBOutlet UIImageView * image;
@property(weak, nonatomic) IBOutlet UILabel * alertTitle;
@property(weak, nonatomic) IBOutlet UILabel * alertText;
@property(weak, nonatomic) IBOutlet UIButton * nextPageButton;
@property(weak, nonatomic) IBOutlet NSLayoutConstraint * containerWidth;
@property(weak, nonatomic) IBOutlet NSLayoutConstraint * containerHeight;
@property(weak, nonatomic) IBOutlet NSLayoutConstraint * imageMinHeight;
@property(weak, nonatomic) IBOutlet NSLayoutConstraint * imageHeight;
@property(weak, nonatomic) IBOutlet NSLayoutConstraint * titleTopOffset;
@property(weak, nonatomic) IBOutlet NSLayoutConstraint * titleImageOffset;
@end
namespace
{
NSArray<TMWMWelcomeConfigBlock> * pagesConfigBlocks = @[
[^(MWMWhatsNewProfileBookingController * controller) {
controller.image.image = [UIImage imageNamed:@"img_whatsnew_route_profile"];
controller.alertTitle.text = L(@"whats_new_route_profile_title");
controller.alertText.text = L(@"whats_new_route_profile_message");
[controller.nextPageButton setTitle:L(@"whats_new_next_button") forState:UIControlStateNormal];
[controller.nextPageButton addTarget:controller.pageController
action:@selector(nextPage)
forControlEvents:UIControlEventTouchUpInside];
} copy],
[^(MWMWhatsNewProfileBookingController * controller) {
controller.image.image = [UIImage imageNamed:@"img_whatsnew_booking_improved"];
controller.alertTitle.text = L(@"whats_new_booking_improve_title");
controller.alertText.text = L(@"whats_new_booking_improve_message");
[controller.nextPageButton setTitle:L(@"done") forState:UIControlStateNormal];
[controller.nextPageButton addTarget:controller.pageController
action:@selector(close)
forControlEvents:UIControlEventTouchUpInside];
} copy]
];
} // namespace
@implementation MWMWhatsNewProfileBookingController
+ (NSString *)udWelcomeWasShownKey { return @"WhatsNewProfileBookingWasShown"; }
+ (NSArray<TMWMWelcomeConfigBlock> *)pagesConfig { return pagesConfigBlocks; }
- (IBAction)close { [self.pageController close]; }
#pragma mark - Properties
- (void)setSize:(CGSize)size
{
super.size = size;
CGSize const newSize = super.size;
CGFloat const width = newSize.width;
CGFloat const height = newSize.height;
BOOL const hideImage = (self.imageHeight.multiplier * height <= self.imageMinHeight.constant);
self.titleImageOffset.priority =
hideImage ? UILayoutPriorityDefaultLow : UILayoutPriorityDefaultHigh;
self.image.hidden = hideImage;
self.containerWidth.constant = width;
self.containerHeight.constant = height;
}
@end

View file

@ -1,20 +1,16 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15G31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="11201" systemVersion="15G1004" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
<dependencies>
<deployment version="2048" identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11161"/>
<capability name="Aspect ratio constraints" minToolsVersion="5.1"/>
<capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<customFonts key="customFonts">
<mutableArray key="HelveticaNeue.ttc">
<array key="HelveticaNeue.ttc">
<string>HelveticaNeue-Medium</string>
<string>HelveticaNeue-Medium</string>
<string>HelveticaNeue-Medium</string>
<string>HelveticaNeue-Medium</string>
<string>HelveticaNeue-Medium</string>
<string>HelveticaNeue-Medium</string>
</mutableArray>
</array>
</customFonts>
<scenes>
<!--Whats New Night Mode Controller-->
@ -26,20 +22,16 @@
<viewControllerLayoutGuide type="bottom" id="jfD-hq-SOU"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="7pp-pP-9ZU" customClass="SolidTouchView">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Aly-IM-2KF" userLabel="Container">
<rect key="frame" x="40" y="0.0" width="520" height="600"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="jh4-I1-edQ" userLabel="BoundsView">
<rect key="frame" x="16" y="40" width="488" height="456"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="KYa-do-R0L" userLabel="CenteredView">
<rect key="frame" x="44" y="59" width="400" height="337"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalCompressionResistancePriority="749" image="ic_placeholder" translatesAutoresizingMaskIntoConstraints="NO" id="9EX-CE-PRs">
<rect key="frame" x="90" y="0.0" width="220" height="220"/>
<constraints>
<constraint firstAttribute="height" relation="greaterThanOrEqual" priority="800" constant="120" id="Vf0-P1-t3t"/>
<constraint firstAttribute="width" secondItem="9EX-CE-PRs" secondAttribute="height" multiplier="1:1" id="pgq-ox-chU"/>
@ -47,9 +39,8 @@
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="MAPS.ME подскажет куда поворачивать" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="geS-K2-Efv" userLabel="Title">
<rect key="frame" x="0.0" y="240" width="400" height="48"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="20"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="medium18"/>
@ -57,9 +48,8 @@
</userDefinedRuntimeAttributes>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Мы разделили большие карты на части. И теперь они будут быстрее загружаться. Попробуйте." textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cK0-L8-zCK" userLabel="Text">
<rect key="frame" x="0.0" y="304" width="400" height="33"/>
<fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="14"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular14"/>
@ -67,7 +57,7 @@
</userDefinedRuntimeAttributes>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<accessibility key="accessibilityConfiguration" identifier="CenteredView"/>
<constraints>
<constraint firstAttribute="width" relation="lessThanOrEqual" constant="400" id="4o0-Yx-Cbo"/>
@ -84,7 +74,7 @@
</constraints>
</view>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<accessibility key="accessibilityConfiguration" identifier="BoundsView"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="KYa-do-R0L" secondAttribute="trailing" priority="999" id="01i-JX-qNi"/>
@ -95,16 +85,15 @@
</constraints>
</view>
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="D1s-fA-Vvv" userLabel="NotNow">
<rect key="frame" x="140" y="516" width="240" height="44"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="width" constant="240" id="2yq-4Q-fEn"/>
<constraint firstAttribute="height" constant="44" id="Jir-CF-Nzd"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="17"/>
<state key="normal" title="Next">
<color key="titleColor" red="0.01176470588" green="0.47843137250000001" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
<color key="titleColor" red="0.01176470588" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</state>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="textColorHighlightedName" value="white"/>
@ -122,7 +111,7 @@
</userDefinedRuntimeAttributes>
</button>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="D1s-fA-Vvv" secondAttribute="bottom" constant="40" id="5x8-vK-Ldc"/>
<constraint firstItem="9EX-CE-PRs" firstAttribute="height" secondItem="Aly-IM-2KF" secondAttribute="height" multiplier="0.3" priority="750" id="Ox3-ge-rJ4"/>
@ -179,20 +168,16 @@
<viewControllerLayoutGuide type="bottom" id="f75-9I-74y"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="RNH-dF-vbJ" customClass="SolidTouchView">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="x7d-CC-QbG" userLabel="Container">
<rect key="frame" x="40" y="0.0" width="520" height="600"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="X71-ep-Kwb" userLabel="BoundsView">
<rect key="frame" x="16" y="40" width="488" height="456"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="y7O-d8-Zqv" userLabel="CenteredView">
<rect key="frame" x="44" y="59" width="400" height="337"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalCompressionResistancePriority="749" image="ic_placeholder" translatesAutoresizingMaskIntoConstraints="NO" id="3yX-3O-NmI">
<rect key="frame" x="90" y="0.0" width="220" height="220"/>
<constraints>
<constraint firstAttribute="height" relation="lessThanOrEqual" priority="800" constant="220" id="0jq-yV-Ew3"/>
<constraint firstAttribute="width" secondItem="3yX-3O-NmI" secondAttribute="height" multiplier="1:1" id="OJT-CV-liK"/>
@ -200,9 +185,8 @@
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="MAPS.ME подскажет куда поворачивать" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dbU-5I-7cc" userLabel="Title">
<rect key="frame" x="0.0" y="240" width="400" height="48"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="20"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="medium18"/>
@ -210,9 +194,8 @@
</userDefinedRuntimeAttributes>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Мы разделили большие карты на части. И теперь они будут быстрее загружаться. Попробуйте." textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qXz-kN-Ik2" userLabel="Text">
<rect key="frame" x="0.0" y="304" width="400" height="33"/>
<fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="14"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular14"/>
@ -220,7 +203,7 @@
</userDefinedRuntimeAttributes>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<accessibility key="accessibilityConfiguration" identifier="CenteredView"/>
<constraints>
<constraint firstAttribute="width" relation="lessThanOrEqual" constant="400" id="7na-4a-yyW"/>
@ -237,7 +220,7 @@
</constraints>
</view>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<accessibility key="accessibilityConfiguration" identifier="BoundsView"/>
<constraints>
<constraint firstItem="y7O-d8-Zqv" firstAttribute="height" relation="lessThanOrEqual" secondItem="X71-ep-Kwb" secondAttribute="height" id="0hu-C0-WoD"/>
@ -248,16 +231,15 @@
</constraints>
</view>
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="UqX-Ni-ms1" userLabel="NotNow">
<rect key="frame" x="140" y="516" width="240" height="44"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="width" constant="240" id="66G-KS-XdJ"/>
<constraint firstAttribute="height" constant="44" id="iFJ-VB-wRd"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="17"/>
<state key="normal" title="Next">
<color key="titleColor" red="0.01176470588" green="0.47843137250000001" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
<color key="titleColor" red="0.01176470588" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</state>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="textColorHighlightedName" value="white"/>
@ -271,7 +253,7 @@
</userDefinedRuntimeAttributes>
</button>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="3yX-3O-NmI" firstAttribute="height" secondItem="x7d-CC-QbG" secondAttribute="height" multiplier="0.3" priority="750" id="1bZ-xW-y9r"/>
<constraint firstAttribute="width" constant="520" id="7CX-xf-4jo"/>
@ -320,20 +302,16 @@
<viewControllerLayoutGuide type="bottom" id="ZGH-fX-kmZ"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="oVB-IG-dvL" customClass="SolidTouchView">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="yss-Sh-6Az" userLabel="Container">
<rect key="frame" x="40" y="0.0" width="520" height="600"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="x7x-NE-mqP" userLabel="BoundsView">
<rect key="frame" x="16" y="40" width="488" height="456"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3e1-HO-MaJ" userLabel="CenteredView">
<rect key="frame" x="44" y="59" width="400" height="337"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalCompressionResistancePriority="749" image="ic_placeholder" translatesAutoresizingMaskIntoConstraints="NO" id="mm5-FP-Hug">
<rect key="frame" x="90" y="0.0" width="220" height="220"/>
<constraints>
<constraint firstAttribute="height" relation="greaterThanOrEqual" priority="800" constant="120" id="bky-HI-LEh"/>
<constraint firstAttribute="height" relation="lessThanOrEqual" priority="800" constant="220" id="dic-5i-JP2"/>
@ -341,9 +319,8 @@
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="MAPS.ME подскажет куда поворачивать" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9lh-sL-HGk" userLabel="Title">
<rect key="frame" x="0.0" y="240" width="400" height="48"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="20"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="medium18"/>
@ -351,9 +328,8 @@
</userDefinedRuntimeAttributes>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Мы разделили большие карты на части. И теперь они будут быстрее загружаться. Попробуйте." textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="FYP-Wb-Mbo" userLabel="Text">
<rect key="frame" x="0.0" y="304" width="400" height="33"/>
<fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="14"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular14"/>
@ -361,7 +337,7 @@
</userDefinedRuntimeAttributes>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<accessibility key="accessibilityConfiguration" identifier="CenteredView"/>
<constraints>
<constraint firstItem="FYP-Wb-Mbo" firstAttribute="top" secondItem="9lh-sL-HGk" secondAttribute="bottom" constant="16" id="0Q8-gv-OIt"/>
@ -378,7 +354,7 @@
</constraints>
</view>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<accessibility key="accessibilityConfiguration" identifier="BoundsView"/>
<constraints>
<constraint firstItem="3e1-HO-MaJ" firstAttribute="centerY" secondItem="x7x-NE-mqP" secondAttribute="centerY" id="4Mm-5L-pn2"/>
@ -389,16 +365,15 @@
</constraints>
</view>
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="lkc-EG-p2i" userLabel="NotNow">
<rect key="frame" x="140" y="516" width="240" height="44"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="44" id="GGc-uG-5F4"/>
<constraint firstAttribute="width" constant="240" id="jn3-7K-EtC"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="17"/>
<state key="normal" title="Next">
<color key="titleColor" red="0.01176470588" green="0.47843137250000001" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
<color key="titleColor" red="0.01176470588" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</state>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="textColorHighlightedName" value="white"/>
@ -412,7 +387,7 @@
</userDefinedRuntimeAttributes>
</button>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="lkc-EG-p2i" secondAttribute="bottom" constant="40" id="2nR-yP-ini"/>
<constraint firstItem="x7x-NE-mqP" firstAttribute="top" secondItem="yss-Sh-6Az" secondAttribute="top" constant="40" id="3Re-Fs-3VQ"/>
@ -461,20 +436,16 @@
<viewControllerLayoutGuide type="bottom" id="gVU-zj-hS0"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="3Yj-pM-DlR" customClass="SolidTouchView">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="rBz-ID-Sy9" userLabel="Container">
<rect key="frame" x="40" y="0.0" width="520" height="600"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="BrI-By-UIb" userLabel="BoundsView">
<rect key="frame" x="16" y="40" width="488" height="396"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="0Gz-UC-6ew" userLabel="CenteredView">
<rect key="frame" x="44" y="29" width="400" height="337"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalCompressionResistancePriority="749" image="ic_placeholder" translatesAutoresizingMaskIntoConstraints="NO" id="eWf-84-GDx">
<rect key="frame" x="90" y="0.0" width="220" height="220"/>
<constraints>
<constraint firstAttribute="height" relation="greaterThanOrEqual" priority="800" constant="148" id="OXy-WB-moM"/>
<constraint firstAttribute="width" secondItem="eWf-84-GDx" secondAttribute="height" multiplier="1:1" id="fOX-NS-jxP"/>
@ -482,9 +453,8 @@
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="MAPS.ME подскажет куда поворачивать" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="96w-J9-bFX" userLabel="Title">
<rect key="frame" x="0.0" y="240" width="400" height="48"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="20"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="medium18"/>
@ -492,9 +462,8 @@
</userDefinedRuntimeAttributes>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Мы разделили большие карты на части. И теперь они будут быстрее загружаться. Попробуйте." textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Gsi-YU-atq" userLabel="Text">
<rect key="frame" x="0.0" y="304" width="400" height="33"/>
<fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="14"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular14"/>
@ -502,7 +471,7 @@
</userDefinedRuntimeAttributes>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<accessibility key="accessibilityConfiguration" identifier="CenteredView"/>
<constraints>
<constraint firstItem="eWf-84-GDx" firstAttribute="top" secondItem="0Gz-UC-6ew" secondAttribute="top" id="60o-zd-ZuM"/>
@ -519,7 +488,7 @@
</constraints>
</view>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<accessibility key="accessibilityConfiguration" identifier="BoundsView"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="0Gz-UC-6ew" secondAttribute="trailing" priority="999" id="HLH-DL-CaP"/>
@ -530,16 +499,15 @@
</constraints>
</view>
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="qHU-Xd-EGJ">
<rect key="frame" x="140" y="456" width="240" height="44"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="width" constant="240" id="YCf-8M-mYT"/>
<constraint firstAttribute="height" constant="44" id="pyV-xm-J00"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="17"/>
<state key="normal" title="Primary Button">
<color key="titleColor" red="0.01176470588" green="0.47843137250000001" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
<color key="titleColor" red="0.01176470588" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</state>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="textColorHighlightedName" value="white"/>
@ -553,16 +521,15 @@
</userDefinedRuntimeAttributes>
</button>
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="4A6-uZ-BH2">
<rect key="frame" x="140" y="516" width="240" height="44"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="44" id="ftd-8e-0Zy"/>
<constraint firstAttribute="width" constant="240" id="p6M-gw-U3P"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="17"/>
<state key="normal" title="SecondaryButton">
<color key="titleColor" red="0.01176470588" green="0.47843137250000001" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
<color key="titleColor" red="0.01176470588" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</state>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular14"/>
@ -571,7 +538,7 @@
</userDefinedRuntimeAttributes>
</button>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="4A6-uZ-BH2" firstAttribute="top" secondItem="qHU-Xd-EGJ" secondAttribute="bottom" priority="950" constant="16" id="0WY-iW-bMe"/>
<constraint firstAttribute="width" constant="520" id="Efn-mX-d9a"/>
@ -633,20 +600,16 @@
<viewControllerLayoutGuide type="bottom" id="G04-nM-BBb"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="ieA-8N-47A" customClass="SolidTouchView">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="6Lu-4U-pEI" userLabel="Container">
<rect key="frame" x="40" y="0.0" width="520" height="600"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Kj0-gQ-Qse" userLabel="BoundsView">
<rect key="frame" x="16" y="40" width="488" height="456"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="JYu-ab-gCF" userLabel="CenteredView">
<rect key="frame" x="44" y="71" width="400" height="313"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalCompressionResistancePriority="749" image="ic_placeholder" translatesAutoresizingMaskIntoConstraints="NO" id="Rmo-sR-xof">
<rect key="frame" x="90" y="0.0" width="220" height="220"/>
<constraints>
<constraint firstAttribute="width" secondItem="Rmo-sR-xof" secondAttribute="height" multiplier="1:1" id="29n-nP-gF1"/>
<constraint firstAttribute="height" relation="lessThanOrEqual" priority="800" constant="220" id="SVq-tV-14M"/>
@ -654,9 +617,8 @@
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Бронируй отель из приложения" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="rkh-Km-3rn" userLabel="Title">
<rect key="frame" x="0.0" y="240" width="400" height="24"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="20"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="medium18"/>
@ -664,9 +626,8 @@
</userDefinedRuntimeAttributes>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="При выборе отелей на карте будут отображаться ценовая категория и рейтинг заведения." textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Tnj-ab-WNV" userLabel="Text">
<rect key="frame" x="0.0" y="280" width="400" height="33"/>
<fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="14"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular14"/>
@ -674,7 +635,7 @@
</userDefinedRuntimeAttributes>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<accessibility key="accessibilityConfiguration" identifier="CenteredView"/>
<constraints>
<constraint firstItem="rkh-Km-3rn" firstAttribute="width" secondItem="JYu-ab-gCF" secondAttribute="width" id="0a4-d1-maV"/>
@ -691,7 +652,7 @@
</constraints>
</view>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<accessibility key="accessibilityConfiguration" identifier="BoundsView"/>
<constraints>
<constraint firstItem="JYu-ab-gCF" firstAttribute="leading" secondItem="Kj0-gQ-Qse" secondAttribute="leading" priority="999" id="9FF-PA-D8J"/>
@ -702,16 +663,15 @@
</constraints>
</view>
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="GIi-E6-KZS" userLabel="NotNow">
<rect key="frame" x="140" y="516" width="240" height="44"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="width" constant="240" id="OJi-1g-t3j"/>
<constraint firstAttribute="height" constant="44" id="Qrh-dE-IE7"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="17"/>
<state key="normal" title="Next">
<color key="titleColor" red="0.01176470588" green="0.47843137250000001" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
<color key="titleColor" red="0.01176470588" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</state>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="textColorHighlightedName" value="white"/>
@ -725,7 +685,7 @@
</userDefinedRuntimeAttributes>
</button>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="GIi-E6-KZS" firstAttribute="top" secondItem="Kj0-gQ-Qse" secondAttribute="bottom" constant="20" id="Avw-5R-pyb"/>
<constraint firstItem="Kj0-gQ-Qse" firstAttribute="leading" secondItem="6Lu-4U-pEI" secondAttribute="leading" constant="16" id="GZu-4x-w0N"/>
@ -739,12 +699,11 @@
</constraints>
</view>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="It2-Pc-pmy">
<rect key="frame" x="556" y="32" width="28" height="28"/>
<constraints>
<constraint firstAttribute="height" constant="28" id="NTX-xi-YHj"/>
<constraint firstAttribute="width" constant="28" id="vUu-hA-NR3"/>
</constraints>
<color key="tintColor" red="0.0" green="0.0" blue="0.0" alpha="0.54000000000000004" colorSpace="calibratedRGB"/>
<color key="tintColor" red="0.0" green="0.0" blue="0.0" alpha="0.54000000000000004" colorSpace="custom" customColorSpace="sRGB"/>
<state key="normal" image="ic_close_spinner"/>
<connections>
<action selector="close" destination="P7f-MJ-gwN" eventType="touchUpInside" id="7tT-eB-g60"/>
@ -788,20 +747,16 @@
<viewControllerLayoutGuide type="bottom" id="nJa-Wo-CTG"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="eTO-jl-C1f" customClass="SolidTouchView">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="vGW-bq-fH5" userLabel="Container">
<rect key="frame" x="40" y="0.0" width="520" height="600"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ITl-q8-Byo" userLabel="BoundsView">
<rect key="frame" x="16" y="40" width="488" height="456"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="tbk-TZ-Cly" userLabel="CenteredView">
<rect key="frame" x="44" y="71" width="400" height="313"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalCompressionResistancePriority="749" image="ic_placeholder" translatesAutoresizingMaskIntoConstraints="NO" id="SZx-R6-NGK">
<rect key="frame" x="90" y="0.0" width="220" height="220"/>
<constraints>
<constraint firstAttribute="height" relation="lessThanOrEqual" priority="800" constant="220" id="3pQ-h3-lDE"/>
<constraint firstAttribute="width" secondItem="SZx-R6-NGK" secondAttribute="height" multiplier="1:1" id="JHG-qN-jGY"/>
@ -809,9 +764,8 @@
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Бронируй отель из приложения" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="snm-YK-UES" userLabel="Title">
<rect key="frame" x="0.0" y="240" width="400" height="24"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="20"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="medium18"/>
@ -819,9 +773,8 @@
</userDefinedRuntimeAttributes>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="При выборе отелей на карте будут отображаться ценовая категория и рейтинг заведения." textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fz1-S6-6eL" userLabel="Text">
<rect key="frame" x="0.0" y="280" width="400" height="33"/>
<fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="14"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular14"/>
@ -829,7 +782,7 @@
</userDefinedRuntimeAttributes>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<accessibility key="accessibilityConfiguration" identifier="CenteredView"/>
<constraints>
<constraint firstItem="snm-YK-UES" firstAttribute="top" secondItem="tbk-TZ-Cly" secondAttribute="top" priority="740" constant="40" id="5yw-bh-sO5"/>
@ -846,7 +799,7 @@
</constraints>
</view>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<accessibility key="accessibilityConfiguration" identifier="BoundsView"/>
<constraints>
<constraint firstItem="tbk-TZ-Cly" firstAttribute="centerX" secondItem="ITl-q8-Byo" secondAttribute="centerX" id="E6w-Lj-l2a"/>
@ -857,16 +810,15 @@
</constraints>
</view>
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="OjW-xF-Iie" userLabel="NotNow">
<rect key="frame" x="140" y="516" width="240" height="44"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="44" id="82z-pQ-KWZ"/>
<constraint firstAttribute="width" constant="240" id="xE7-iY-0ku"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="17"/>
<state key="normal" title="Next">
<color key="titleColor" red="0.01176470588" green="0.47843137250000001" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
<color key="titleColor" red="0.01176470588" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</state>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="textColorHighlightedName" value="white"/>
@ -880,7 +832,7 @@
</userDefinedRuntimeAttributes>
</button>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="600" id="7zL-gy-PCa"/>
<constraint firstItem="ITl-q8-Byo" firstAttribute="top" secondItem="vGW-bq-fH5" secondAttribute="top" constant="40" id="8t4-fD-AEI"/>
@ -894,12 +846,11 @@
</constraints>
</view>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="4ZS-Cx-eDt">
<rect key="frame" x="556" y="32" width="28" height="28"/>
<constraints>
<constraint firstAttribute="width" constant="28" id="AJQ-MR-2Nc"/>
<constraint firstAttribute="height" constant="28" id="SPS-2W-vgR"/>
</constraints>
<color key="tintColor" red="0.0" green="0.0" blue="0.0" alpha="0.54000000000000004" colorSpace="calibratedRGB"/>
<color key="tintColor" red="0.0" green="0.0" blue="0.0" alpha="0.54000000000000004" colorSpace="custom" customColorSpace="sRGB"/>
<state key="normal" image="ic_close_spinner"/>
<connections>
<action selector="close" destination="J6A-Up-KBC" eventType="touchUpInside" id="UNP-oR-xPv"/>
@ -934,6 +885,153 @@
</objects>
<point key="canvasLocation" x="3916" y="1932"/>
</scene>
<!--Whats New Profile Booking Controller-->
<scene sceneID="bvJ-qv-pLh">
<objects>
<viewController storyboardIdentifier="MWMWhatsNewProfileBookingController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="D0Q-aQ-soO" customClass="MWMWhatsNewProfileBookingController" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="ykz-7Y-P5F"/>
<viewControllerLayoutGuide type="bottom" id="HDv-2P-rpo"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="wKa-6r-SbD" customClass="SolidTouchView">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="tEt-Eb-3MY" userLabel="Container">
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ijb-HU-C52" userLabel="BoundsView">
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="TPe-nO-YIS" userLabel="CenteredView">
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalCompressionResistancePriority="749" image="ic_placeholder" translatesAutoresizingMaskIntoConstraints="NO" id="9Kf-gP-xXN">
<constraints>
<constraint firstAttribute="height" relation="greaterThanOrEqual" priority="800" constant="120" id="Hp2-f3-Ba4"/>
<constraint firstAttribute="width" secondItem="9Kf-gP-xXN" secondAttribute="height" multiplier="1:1" id="Tpz-CT-wzN"/>
<constraint firstAttribute="height" relation="lessThanOrEqual" priority="800" constant="220" id="jUo-PM-UZA"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Бронируй отель из приложения" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gQf-dx-QkP" userLabel="Title">
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="20"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="medium18"/>
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackPrimaryText"/>
</userDefinedRuntimeAttributes>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="При выборе отелей на карте будут отображаться ценовая категория и рейтинг заведения." textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="K1V-YA-EyH" userLabel="Text">
<fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="14"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular14"/>
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackSecondaryText"/>
</userDefinedRuntimeAttributes>
</label>
</subviews>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<accessibility key="accessibilityConfiguration" identifier="CenteredView"/>
<constraints>
<constraint firstItem="9Kf-gP-xXN" firstAttribute="top" secondItem="TPe-nO-YIS" secondAttribute="top" id="0t1-iU-vUW"/>
<constraint firstItem="9Kf-gP-xXN" firstAttribute="centerX" secondItem="TPe-nO-YIS" secondAttribute="centerX" id="1Ku-Uf-gka"/>
<constraint firstItem="K1V-YA-EyH" firstAttribute="top" secondItem="gQf-dx-QkP" secondAttribute="bottom" constant="16" id="B22-RU-Du5"/>
<constraint firstItem="K1V-YA-EyH" firstAttribute="width" secondItem="TPe-nO-YIS" secondAttribute="width" id="DKm-6r-nvs"/>
<constraint firstAttribute="width" relation="lessThanOrEqual" constant="400" id="OjB-Dq-4eC"/>
<constraint firstItem="gQf-dx-QkP" firstAttribute="width" secondItem="TPe-nO-YIS" secondAttribute="width" id="QCC-34-Wpl"/>
<constraint firstAttribute="bottom" secondItem="K1V-YA-EyH" secondAttribute="bottom" id="VMN-Oj-FFw"/>
<constraint firstItem="K1V-YA-EyH" firstAttribute="centerX" secondItem="TPe-nO-YIS" secondAttribute="centerX" id="X2u-eu-WOy"/>
<constraint firstItem="gQf-dx-QkP" firstAttribute="top" secondItem="TPe-nO-YIS" secondAttribute="top" priority="740" constant="40" id="b9J-q4-ksP"/>
<constraint firstItem="gQf-dx-QkP" firstAttribute="top" secondItem="9Kf-gP-xXN" secondAttribute="bottom" priority="750" constant="20" id="e8L-B4-IM6"/>
<constraint firstItem="gQf-dx-QkP" firstAttribute="centerX" secondItem="TPe-nO-YIS" secondAttribute="centerX" id="gx2-nU-h1g"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<accessibility key="accessibilityConfiguration" identifier="BoundsView"/>
<constraints>
<constraint firstItem="TPe-nO-YIS" firstAttribute="leading" secondItem="Ijb-HU-C52" secondAttribute="leading" priority="999" id="BCw-2h-SFs"/>
<constraint firstItem="TPe-nO-YIS" firstAttribute="centerY" secondItem="Ijb-HU-C52" secondAttribute="centerY" id="ez4-HU-1M6"/>
<constraint firstAttribute="trailing" secondItem="TPe-nO-YIS" secondAttribute="trailing" priority="999" id="nwk-Ge-uLd"/>
<constraint firstItem="TPe-nO-YIS" firstAttribute="height" relation="lessThanOrEqual" secondItem="Ijb-HU-C52" secondAttribute="height" id="pn8-Y4-KUr"/>
<constraint firstItem="TPe-nO-YIS" firstAttribute="centerX" secondItem="Ijb-HU-C52" secondAttribute="centerX" id="sb1-6l-pkl"/>
</constraints>
</view>
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="DOC-GL-XE3" userLabel="NotNow">
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="44" id="E6P-sq-QNp"/>
<constraint firstAttribute="width" constant="240" id="sF1-aJ-hh9"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="17"/>
<state key="normal" title="Next">
<color key="titleColor" red="0.01176470588" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</state>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="textColorHighlightedName" value="white"/>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular17"/>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<integer key="value" value="8"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="string" keyPath="textColorName" value="white"/>
<userDefinedRuntimeAttribute type="string" keyPath="backgroundColorName" value="linkBlue"/>
<userDefinedRuntimeAttribute type="string" keyPath="backgroundHighlightedColorName" value="linkBlueHighlighted"/>
</userDefinedRuntimeAttributes>
</button>
</subviews>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="DOC-GL-XE3" secondAttribute="bottom" constant="40" id="2Di-cK-wcY"/>
<constraint firstItem="9Kf-gP-xXN" firstAttribute="height" secondItem="tEt-Eb-3MY" secondAttribute="height" multiplier="0.3" priority="750" id="6kI-LR-9t9"/>
<constraint firstItem="DOC-GL-XE3" firstAttribute="top" secondItem="Ijb-HU-C52" secondAttribute="bottom" constant="20" id="IiB-UZ-7sb"/>
<constraint firstAttribute="width" constant="520" id="LhG-2j-IgC"/>
<constraint firstAttribute="height" constant="600" id="QaY-l6-crt"/>
<constraint firstAttribute="trailing" secondItem="Ijb-HU-C52" secondAttribute="trailing" constant="16" id="WM5-se-bnN"/>
<constraint firstItem="Ijb-HU-C52" firstAttribute="leading" secondItem="tEt-Eb-3MY" secondAttribute="leading" constant="16" id="eNl-bG-heb"/>
<constraint firstItem="Ijb-HU-C52" firstAttribute="top" secondItem="tEt-Eb-3MY" secondAttribute="top" constant="40" id="hrO-ye-EyW"/>
<constraint firstItem="DOC-GL-XE3" firstAttribute="centerX" secondItem="tEt-Eb-3MY" secondAttribute="centerX" id="yIm-ju-0St"/>
</constraints>
</view>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="63Z-Dp-kPv">
<constraints>
<constraint firstAttribute="width" constant="28" id="dqY-MR-itL"/>
<constraint firstAttribute="height" constant="28" id="vgo-Ks-ho5"/>
</constraints>
<color key="tintColor" red="0.0" green="0.0" blue="0.0" alpha="0.54000000000000004" colorSpace="custom" customColorSpace="sRGB"/>
<state key="normal" image="ic_close_spinner"/>
<connections>
<action selector="close" destination="D0Q-aQ-soO" eventType="touchUpInside" id="njH-59-dyC"/>
</connections>
</button>
</subviews>
<constraints>
<constraint firstItem="tEt-Eb-3MY" firstAttribute="centerY" secondItem="wKa-6r-SbD" secondAttribute="centerY" id="4SN-fY-s0Z"/>
<constraint firstAttribute="trailing" secondItem="63Z-Dp-kPv" secondAttribute="trailing" constant="16" id="AEC-eh-01G"/>
<constraint firstItem="63Z-Dp-kPv" firstAttribute="top" secondItem="ykz-7Y-P5F" secondAttribute="bottom" constant="12" id="Ewa-1T-I9n"/>
<constraint firstItem="tEt-Eb-3MY" firstAttribute="centerX" secondItem="wKa-6r-SbD" secondAttribute="centerX" id="cRJ-wu-7na"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="backgroundColorName" value="white"/>
</userDefinedRuntimeAttributes>
</view>
<connections>
<outlet property="alertText" destination="K1V-YA-EyH" id="o7a-dS-fiG"/>
<outlet property="alertTitle" destination="gQf-dx-QkP" id="ult-qw-ApT"/>
<outlet property="containerHeight" destination="QaY-l6-crt" id="UWK-bc-KnQ"/>
<outlet property="containerView" destination="tEt-Eb-3MY" id="wCF-U7-rRn"/>
<outlet property="containerWidth" destination="LhG-2j-IgC" id="kp4-Gk-mT7"/>
<outlet property="image" destination="9Kf-gP-xXN" id="F9d-1Q-Cvh"/>
<outlet property="imageHeight" destination="6kI-LR-9t9" id="Q8C-J6-vla"/>
<outlet property="imageMinHeight" destination="Hp2-f3-Ba4" id="Hfw-uv-oro"/>
<outlet property="nextPageButton" destination="DOC-GL-XE3" id="v4G-yf-z2p"/>
<outlet property="titleImageOffset" destination="e8L-B4-IM6" id="qFe-dJ-fzR"/>
<outlet property="titleTopOffset" destination="b9J-q4-ksP" id="mH1-B1-uhq"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="6Uc-f0-gGu" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="2562" y="1932"/>
</scene>
</scenes>
<resources>
<image name="ic_close_spinner" width="28" height="28"/>

View file

@ -7,6 +7,7 @@
#import "MWMRouter.h"
#import "Statistics.h"
#import "UIButton+Orientation.h"
#import "UIImageView+Coloring.h"
static CGFloat constexpr kAdditionalHeight = 20.;
@ -33,6 +34,9 @@ static CGFloat constexpr kAdditionalHeight = 20.;
@property(weak, nonatomic) IBOutlet NSLayoutConstraint * resultsBoxHeight;
@property(weak, nonatomic) IBOutlet NSLayoutConstraint * heightBoxHeight;
@property(weak, nonatomic) IBOutlet UIImageView * heightProfileImage;
@property(weak, nonatomic) IBOutlet UIView * heightProfileElevation;
@property(weak, nonatomic) IBOutlet UIImageView * elevationImage;
@property(weak, nonatomic) IBOutlet UILabel * elevationHeight;
@property(nonatomic) UIImageView * movingCellImage;
@ -57,6 +61,8 @@ static CGFloat constexpr kAdditionalHeight = 20.;
[self setupProgresses];
[self.backButton matchInterfaceOrientation];
self.elevationImage.mwm_coloring = MWMImageColoringBlue;
}
- (void)setupProgresses
@ -111,6 +117,7 @@ static CGFloat constexpr kAdditionalHeight = 20.;
self.statusBox.hidden = YES;
self.resultsBox.hidden = YES;
self.heightBox.hidden = YES;
self.heightProfileElevation.hidden = YES;
self.planningBox.hidden = YES;
self.errorBox.hidden = YES;
}
@ -123,6 +130,7 @@ static CGFloat constexpr kAdditionalHeight = 20.;
self.statusBox.hidden = NO;
self.resultsBox.hidden = YES;
self.heightBox.hidden = YES;
self.heightProfileElevation.hidden = YES;
self.errorBox.hidden = YES;
self.planningBox.hidden = NO;
[self reloadData];
@ -138,6 +146,7 @@ static CGFloat constexpr kAdditionalHeight = 20.;
self.planningBox.hidden = YES;
self.resultsBox.hidden = YES;
self.heightBox.hidden = YES;
self.heightProfileElevation.hidden = YES;
self.errorBox.hidden = NO;
if (IPAD)
[self iPadNotReady];
@ -151,7 +160,9 @@ static CGFloat constexpr kAdditionalHeight = 20.;
self.planningBox.hidden = YES;
self.errorBox.hidden = YES;
self.resultsBox.hidden = NO;
self.heightBox.hidden = ![MWMRouter hasRouteAltitude];
BOOL const hasAltitude = [MWMRouter hasRouteAltitude];
self.heightBox.hidden = !hasAltitude;
self.heightProfileElevation.hidden = !hasAltitude;
if (IPAD)
[self iPadReady];
}
@ -183,8 +194,9 @@ static CGFloat constexpr kAdditionalHeight = 20.;
return;
dispatch_async(dispatch_get_main_queue(), ^{
[[MWMRouter router] routeAltitudeImageForSize:self.heightProfileImage.frame.size
completion:^(UIImage * image) {
completion:^(UIImage * image, NSString * altitudeElevation) {
self.heightProfileImage.image = image;
self.elevationHeight.text = altitudeElevation;
}];
});
}

View file

@ -1,8 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="10117" systemVersion="15G1004" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="11201" systemVersion="15G1004" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11161"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="MWMNavigationDashboardManager">
@ -16,10 +17,8 @@
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<view clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="WqK-Yb-PmP" customClass="SolidTouchView">
<rect key="frame" x="0.0" y="0.0" width="320" height="140"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="wpf-tw-Coz" userLabel="Back">
<rect key="frame" x="0.0" y="0.0" width="44" height="44"/>
<constraints>
<constraint firstAttribute="height" constant="44" id="ELC-D6-uQM"/>
<constraint firstAttribute="width" constant="44" id="e40-iL-uvR"/>
@ -30,34 +29,30 @@
</connections>
</button>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="oQc-l8-sZH" userLabel="Buttons Box">
<rect key="frame" x="81" y="0.0" width="158" height="44"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="cZF-Ha-2tB">
<rect key="frame" x="6" y="3" width="38" height="38"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="width" constant="38" id="m6k-uU-yOl"/>
<constraint firstAttribute="height" constant="38" id="mp7-b4-xot"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="FuO-c6-y9C" userLabel="Bicycle">
<rect key="frame" x="60" y="3" width="38" height="38"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="width" constant="38" id="9fe-fw-05J"/>
<constraint firstAttribute="height" constant="38" id="gbm-NL-zgv"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="6D3-QF-6wm">
<rect key="frame" x="114" y="3" width="38" height="38"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="width" constant="38" id="815-LJ-2tk"/>
<constraint firstAttribute="height" constant="38" id="hXi-E7-GUb"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="FuO-c6-y9C" firstAttribute="centerY" secondItem="oQc-l8-sZH" secondAttribute="centerY" id="1De-4s-V8t"/>
<constraint firstItem="6D3-QF-6wm" firstAttribute="leading" secondItem="FuO-c6-y9C" secondAttribute="trailing" constant="16" id="91z-iC-oKp"/>
@ -70,21 +65,18 @@
</constraints>
</view>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="ic_arrow_up_and_down" translatesAutoresizingMaskIntoConstraints="NO" id="y8P-JL-riK">
<rect key="frame" x="292" y="18" width="13" height="8"/>
<constraints>
<constraint firstAttribute="width" constant="13" id="LtD-Tz-US7"/>
<constraint firstAttribute="height" constant="8" id="uez-1b-JG5"/>
</constraints>
</imageView>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="0YR-3a-ucN">
<rect key="frame" x="276" y="0.0" width="44" height="44"/>
<connections>
<action selector="extendTap" destination="aNH-vh-DPz" eventType="touchUpInside" id="oYh-e3-3Ln"/>
</connections>
</button>
<collectionView multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="none" translatesAutoresizingMaskIntoConstraints="NO" id="DrK-vI-WkO">
<rect key="frame" x="8" y="48" width="304" height="80"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="80" id="3R7-i6-rG1"/>
</constraints>
@ -99,7 +91,7 @@
</connections>
</collectionView>
</subviews>
<color key="backgroundColor" red="0.12156862745098039" green="0.59999999999999998" blue="0.32156862745098036" alpha="1" colorSpace="calibratedRGB"/>
<color key="backgroundColor" red="0.12156862745098039" green="0.59999999999999998" blue="0.32156862745098036" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="140" id="2SX-TZ-tS3"/>
<constraint firstItem="0YR-3a-ucN" firstAttribute="top" secondItem="WqK-Yb-PmP" secondAttribute="top" id="DyS-8t-eoF"/>
@ -121,7 +113,7 @@
</userDefinedRuntimeAttributes>
</view>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="WqK-Yb-PmP" secondAttribute="trailing" id="hui-oa-rbV"/>
<constraint firstItem="WqK-Yb-PmP" firstAttribute="leading" secondItem="aNH-vh-DPz" secondAttribute="leading" id="rQB-KG-9Kg"/>

View file

@ -1,14 +1,15 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="10117" systemVersion="15G1004" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="11201" systemVersion="15G1004" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11161"/>
<capability name="Aspect ratio constraints" minToolsVersion="5.1"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<customFonts key="customFonts">
<mutableArray key="HelveticaNeue.ttc">
<array key="HelveticaNeue.ttc">
<string>HelveticaNeue-Medium</string>
</mutableArray>
</array>
</customFonts>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="MWMNavigationDashboardManager">
@ -22,10 +23,8 @@
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3s2-BV-X5i" customClass="SolidTouchView">
<rect key="frame" x="0.0" y="0.0" width="320" height="140"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="a4n-5I-PN3" userLabel="Back">
<rect key="frame" x="0.0" y="0.0" width="44" height="44"/>
<constraints>
<constraint firstAttribute="height" constant="44" id="huq-Vr-EM5"/>
<constraint firstAttribute="width" constant="44" id="zCn-K4-Ax9"/>
@ -36,31 +35,27 @@
</connections>
</button>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="sXu-tl-a0m" userLabel="Buttons Box">
<rect key="frame" x="75" y="0.0" width="170" height="44"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="jDl-pu-eov">
<rect key="frame" x="6" y="0.0" width="44" height="44"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="width" secondItem="jDl-pu-eov" secondAttribute="height" multiplier="1:1" id="o1x-sd-13z"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="yiM-fM-sSS" userLabel="Bicycle">
<rect key="frame" x="66" y="0.0" width="44" height="44"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="width" secondItem="yiM-fM-sSS" secondAttribute="height" multiplier="1:1" id="rnk-51-Cjg"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="VhE-hA-Leo">
<rect key="frame" x="126" y="3" width="38" height="38"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="width" secondItem="VhE-hA-Leo" secondAttribute="height" multiplier="1:1" id="V4H-0m-WCy"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="jDl-pu-eov" firstAttribute="leading" secondItem="sXu-tl-a0m" secondAttribute="leading" constant="6" id="4B3-wd-Hli"/>
<constraint firstItem="VhE-hA-Leo" firstAttribute="leading" secondItem="yiM-fM-sSS" secondAttribute="trailing" constant="16" id="5aG-G0-kVn"/>
@ -75,8 +70,7 @@
</constraints>
</view>
<collectionView multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="none" translatesAutoresizingMaskIntoConstraints="NO" id="TC0-58-PO9">
<rect key="frame" x="8" y="48" width="304" height="80"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="80" id="exN-o8-Rx8"/>
</constraints>
@ -96,7 +90,7 @@
</connections>
</collectionView>
</subviews>
<color key="backgroundColor" red="0.1215686275" green="0.59999999999999998" blue="0.32156862749999998" alpha="1" colorSpace="calibratedRGB"/>
<color key="backgroundColor" red="0.1215686275" green="0.59999999999999998" blue="0.32156862749999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="sXu-tl-a0m" firstAttribute="bottom" secondItem="a4n-5I-PN3" secondAttribute="bottom" id="4NN-cC-Tsg"/>
<constraint firstAttribute="height" constant="140" id="7e9-gc-Y07"/>
@ -113,15 +107,12 @@
</userDefinedRuntimeAttributes>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="87p-Qg-8f3" userLabel="Status Box">
<rect key="frame" x="0.0" y="176" width="320" height="64"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="tdV-a8-fmG" userLabel="Planning Box">
<rect key="frame" x="0.0" y="0.0" width="320" height="64"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Planning..." lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="14" translatesAutoresizingMaskIntoConstraints="NO" id="a7v-h1-j52">
<rect key="frame" x="120" y="22" width="80" height="20"/>
<fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.26000000000000001" colorSpace="calibratedRGB"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.26000000000000001" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="p2p_planning"/>
@ -130,19 +121,17 @@
</userDefinedRuntimeAttributes>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="a7v-h1-j52" firstAttribute="centerX" secondItem="tdV-a8-fmG" secondAttribute="centerX" id="L9h-b7-iGd"/>
<constraint firstItem="a7v-h1-j52" firstAttribute="centerY" secondItem="tdV-a8-fmG" secondAttribute="centerY" id="PGc-Ph-A2k"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="QEP-6s-YTM" userLabel="Error Box">
<rect key="frame" x="0.0" y="0.0" width="320" height="64"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Planning..." lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="14" translatesAutoresizingMaskIntoConstraints="NO" id="VNi-4g-9gz" userLabel="Error">
<rect key="frame" x="120" y="22" width="80" height="20"/>
<fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="17"/>
<color key="textColor" red="0.95686274510000002" green="0.26274509800000001" blue="0.21176470589999999" alpha="1" colorSpace="calibratedRGB"/>
<color key="textColor" red="0.95686274510000002" green="0.26274509800000001" blue="0.21176470589999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="routing_planning_error"/>
@ -151,19 +140,17 @@
</userDefinedRuntimeAttributes>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="VNi-4g-9gz" firstAttribute="centerY" secondItem="QEP-6s-YTM" secondAttribute="centerY" id="bfa-sc-ifi"/>
<constraint firstItem="VNi-4g-9gz" firstAttribute="centerX" secondItem="QEP-6s-YTM" secondAttribute="centerX" id="iKJ-3u-Al9"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Rqr-bu-crx" userLabel="Results Box">
<rect key="frame" x="0.0" y="0.0" width="320" height="64"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="results" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zml-eW-DsI">
<rect key="frame" x="16" y="14" width="288" height="20"/>
<fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.54000000000000004" colorSpace="calibratedRGB"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.54000000000000004" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackSecondaryText"/>
@ -171,38 +158,63 @@
</userDefinedRuntimeAttributes>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Arrive at 12:24" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oec-Ee-6ha">
<rect key="frame" x="16" y="38" width="288" height="17"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="14"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.54000000000000004" colorSpace="calibratedRGB"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.54000000000000004" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackSecondaryText"/>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="medium14"/>
</userDefinedRuntimeAttributes>
</label>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="rXP-rM-9cx">
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="ic_elevation" translatesAutoresizingMaskIntoConstraints="NO" id="Ac5-gf-3tf">
<constraints>
<constraint firstAttribute="width" constant="10" id="R4J-Uu-52U"/>
<constraint firstAttribute="height" constant="12" id="v5V-2M-Fnx"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="260" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="JtS-om-arD">
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="linkBlue"/>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="medium14"/>
</userDefinedRuntimeAttributes>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="Ac5-gf-3tf" firstAttribute="leading" secondItem="rXP-rM-9cx" secondAttribute="leading" id="2Df-WK-py6"/>
<constraint firstAttribute="trailing" secondItem="JtS-om-arD" secondAttribute="trailing" id="CK8-gu-qaf"/>
<constraint firstAttribute="bottom" secondItem="Ac5-gf-3tf" secondAttribute="bottom" id="ULt-mY-leX"/>
<constraint firstItem="JtS-om-arD" firstAttribute="centerY" secondItem="Ac5-gf-3tf" secondAttribute="centerY" id="mrf-cl-Rte"/>
<constraint firstItem="Ac5-gf-3tf" firstAttribute="top" secondItem="rXP-rM-9cx" secondAttribute="top" id="pUr-w4-lnd"/>
<constraint firstItem="JtS-om-arD" firstAttribute="leading" secondItem="Ac5-gf-3tf" secondAttribute="trailing" constant="4" id="qQ6-yw-n2d"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="oec-Ee-6ha" firstAttribute="leading" secondItem="zml-eW-DsI" secondAttribute="leading" id="Am2-25-Zn9"/>
<constraint firstAttribute="trailing" secondItem="zml-eW-DsI" secondAttribute="trailing" constant="16" id="DRW-GJ-PG9"/>
<constraint firstItem="rXP-rM-9cx" firstAttribute="leading" secondItem="zml-eW-DsI" secondAttribute="trailing" constant="4" id="BCS-il-tys"/>
<constraint firstItem="rXP-rM-9cx" firstAttribute="centerY" secondItem="zml-eW-DsI" secondAttribute="centerY" id="PEx-MA-POC"/>
<constraint firstItem="zml-eW-DsI" firstAttribute="leading" secondItem="Rqr-bu-crx" secondAttribute="leading" constant="16" id="QNo-az-LlD"/>
<constraint firstAttribute="height" constant="64" id="bHW-iR-rAA"/>
<constraint firstItem="zml-eW-DsI" firstAttribute="top" secondItem="Rqr-bu-crx" secondAttribute="top" constant="14" id="c1k-EY-nwQ"/>
<constraint firstItem="oec-Ee-6ha" firstAttribute="top" secondItem="zml-eW-DsI" secondAttribute="bottom" constant="4" id="lV9-S0-yy4"/>
<constraint firstItem="oec-Ee-6ha" firstAttribute="trailing" secondItem="zml-eW-DsI" secondAttribute="trailing" id="rfO-2Z-g12"/>
<constraint firstAttribute="trailing" secondItem="rXP-rM-9cx" secondAttribute="trailing" constant="16" id="xUV-qS-bQc"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="6iM-A6-4JK" userLabel="Height Box">
<rect key="frame" x="0.0" y="64" width="320" height="68"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Apa-nH-KWJ">
<rect key="frame" x="16" y="14" width="288" height="40"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="zhI-92-6JG">
<rect key="frame" x="0.0" y="0.0" width="288" height="40"/>
</imageView>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="zhI-92-6JG"/>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="zhI-92-6JG" firstAttribute="top" secondItem="Apa-nH-KWJ" secondAttribute="top" id="7CP-bg-Id3"/>
<constraint firstAttribute="bottom" secondItem="zhI-92-6JG" secondAttribute="bottom" id="LeB-Rl-mPU"/>
@ -211,7 +223,7 @@
</constraints>
</view>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="Apa-nH-KWJ" secondAttribute="bottom" constant="14" id="8P4-RM-XZb"/>
<constraint firstAttribute="height" constant="68" id="Fl4-Tb-OER"/>
@ -221,7 +233,7 @@
</constraints>
</view>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="tdV-a8-fmG" firstAttribute="leading" secondItem="Rqr-bu-crx" secondAttribute="leading" id="1s7-bh-347"/>
<constraint firstAttribute="height" constant="64" id="4qT-ha-p75"/>
@ -241,7 +253,7 @@
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
<color key="value" red="0.0" green="0.0" blue="0.0" alpha="0.12" colorSpace="calibratedRGB"/>
<color key="value" red="0.0" green="0.0" blue="0.0" alpha="0.12" colorSpace="custom" customColorSpace="sRGB"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
<integer key="value" value="1"/>
@ -250,15 +262,13 @@
</userDefinedRuntimeAttributes>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="gcR-zj-b7P">
<rect key="frame" x="0.0" y="607" width="320" height="48"/>
<subviews>
<button hidden="YES" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="tailTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="4IJ-pR-Ztp" userLabel="Go" customClass="MWMStartButton">
<rect key="frame" x="0.0" y="0.0" width="320" height="48"/>
<accessibility key="accessibilityConfiguration" identifier="goButton"/>
<inset key="contentEdgeInsets" minX="8" minY="0.0" maxX="8" maxY="0.0"/>
<state key="normal" title="Start"/>
<state key="selected">
<color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="0.26000000000000001" colorSpace="calibratedRGB"/>
<color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="0.26000000000000001" colorSpace="custom" customColorSpace="sRGB"/>
</state>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular17"/>
@ -272,7 +282,7 @@
</connections>
</button>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="0.80000000000000004" colorSpace="calibratedRGB"/>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="48" id="5GN-4g-vV1"/>
<constraint firstAttribute="trailing" secondItem="4IJ-pR-Ztp" secondAttribute="trailing" id="ML1-Xc-dlH"/>
@ -282,7 +292,7 @@
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
<color key="value" red="0.0" green="0.0" blue="0.0" alpha="0.12" colorSpace="calibratedRGB"/>
<color key="value" red="0.0" green="0.0" blue="0.0" alpha="0.12" colorSpace="custom" customColorSpace="sRGB"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
<integer key="value" value="1"/>
@ -291,7 +301,7 @@
</userDefinedRuntimeAttributes>
</view>
</subviews>
<color key="backgroundColor" red="0.96078431372549022" green="0.96078431372549022" blue="0.96078431372549022" alpha="1" colorSpace="calibratedRGB"/>
<color key="backgroundColor" red="0.96078431372549022" green="0.96078431372549022" blue="0.96078431372549022" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="gcR-zj-b7P" firstAttribute="leading" secondItem="u2u-Vb-2eH" secondAttribute="leading" id="1RD-kG-W2O"/>
<constraint firstAttribute="trailing" secondItem="87p-Qg-8f3" secondAttribute="trailing" id="5wh-lx-rUz"/>
@ -310,7 +320,7 @@
<integer key="value" value="2"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="color" keyPath="layer.shadowUIColor">
<color key="value" white="0.0" alpha="0.23999999999999999" colorSpace="calibratedWhite"/>
<color key="value" red="0.0" green="0.0" blue="0.0" alpha="0.23999999999999999" colorSpace="custom" customColorSpace="sRGB"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="layer.shadowOpacity">
<integer key="value" value="1"/>
@ -326,10 +336,13 @@
<outlet property="bicycle" destination="yiM-fM-sSS" id="pMf-6J-9Gd"/>
<outlet property="collectionView" destination="TC0-58-PO9" id="Onv-Ld-JPp"/>
<outlet property="contentView" destination="3s2-BV-X5i" id="mp7-Qq-drU"/>
<outlet property="elevationHeight" destination="JtS-om-arD" id="Dah-Ui-zNW"/>
<outlet property="elevationImage" destination="Ac5-gf-3tf" id="Gka-BR-4ZM"/>
<outlet property="errorBox" destination="QEP-6s-YTM" id="kH0-yP-1Gk"/>
<outlet property="goButton" destination="4IJ-pR-Ztp" id="48a-At-Nqq"/>
<outlet property="heightBox" destination="6iM-A6-4JK" id="cav-Cj-Aqr"/>
<outlet property="heightBoxHeight" destination="Fl4-Tb-OER" id="MEr-ms-WF4"/>
<outlet property="heightProfileElevation" destination="rXP-rM-9cx" id="9ME-YW-7qO"/>
<outlet property="heightProfileImage" destination="zhI-92-6JG" id="BAQ-2W-WFu"/>
<outlet property="layout" destination="YwC-vB-4LF" id="Hta-la-OdY"/>
<outlet property="pedestrian" destination="VhE-hA-Leo" id="R3O-th-Jw0"/>
@ -345,6 +358,7 @@
</view>
</objects>
<resources>
<image name="ic_elevation" width="10" height="12"/>
<image name="ic_nav_bar_back" width="14" height="22"/>
</resources>
</document>

View file

@ -1,3 +1,2 @@
typedef void (^TMWMVoidBlock)();
typedef void (^MWMStringBlock)(NSString *);
typedef void (^MWMImageBlock)(UIImage *);

View file

@ -12,6 +12,7 @@
#import "MWMMapDownloaderTableViewCell.h"
#import "MWMMapDownloaderViewController.h"
#import "MWMMyTarget.h"
#import "MWMMigrationViewController.h"
#import "MWMSegue.h"
#import "MWMStorage.h"
#import "MapsAppDelegate.h"
@ -161,6 +162,20 @@ using namespace mwm;
}
- (void)configMyTarget { [MWMMyTarget manager].delegate = self; }
- (void)backTap
{
UINavigationController * navVC = self.navigationController;
NSArray<UIViewController *> * viewControllers = navVC.viewControllers;
NSInteger const viewControllersCount = viewControllers.count;
NSInteger const prevVCIndex = viewControllersCount - 2;
Class const migrationClass = [MWMMigrationViewController class];
if (prevVCIndex < 0 || [viewControllers[prevVCIndex] isKindOfClass:migrationClass])
[navVC popToRootViewControllerAnimated:YES];
else
[super backTap];
}
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
[self.cellHeightCache removeAllObjects];

View file

@ -25,7 +25,7 @@
#import "MWMSettings.h"
#import "MWMStorage.h"
#import "MWMTableViewController.h"
#import "MWMWhatsNewNavigationController.h"
#import "MWMWhatsNewProfileBookingController.h"
#import "MapsAppDelegate.h"
#import "Statistics.h"
#import "UIColor+MapsMeColor.h"
@ -301,7 +301,7 @@ BOOL gIsFirstMyPositionMode = YES;
if (isIOS7)
return;
Class<MWMWelcomeControllerProtocol> whatsNewClass = [MWMWhatsNewNavigationController class];
Class<MWMWelcomeControllerProtocol> whatsNewClass = [MWMWhatsNewProfileBookingController class];
BOOL const isFirstSession = [Alohalytics isFirstSession];
Class<MWMWelcomeControllerProtocol> welcomeClass =
isFirstSession ? [MWMFirstLaunchController class] : whatsNewClass;

Some files were not shown because too many files have changed in this diff Show more