|
@ -310,6 +310,9 @@
|
|||
<string name="menu_search">بحث</string>
|
||||
<string name="pref_zoom_title">أزرار التكبير</string>
|
||||
<string name="pref_zoom_summary">عرض على الشاشة</string>
|
||||
<!-- Title for "Other" section in TTS settings. -->
|
||||
<string name="pref_tts_other_section_title">آخر</string>
|
||||
<string name="pref_tts_how_to_set_up_voice">كيفية ضبط الصوت</string>
|
||||
<string name="placepage_distance">المسافة</string>
|
||||
<string name="placepage_coordinates">الإحداثيات</string>
|
||||
<string name="placepage_unsorted">لم يتم فرزها</string>
|
||||
|
|
|
@ -307,6 +307,9 @@
|
|||
<string name="menu_search">Vyhledávání</string>
|
||||
<string name="pref_zoom_title">Tlačítka přiblížení/oddálení</string>
|
||||
<string name="pref_zoom_summary">Zobrazit na obrazovce</string>
|
||||
<!-- Title for "Other" section in TTS settings. -->
|
||||
<string name="pref_tts_other_section_title">Ostatní</string>
|
||||
<string name="pref_tts_how_to_set_up_voice">Jak nastavit hlas</string>
|
||||
<string name="placepage_distance">Vzdálenost</string>
|
||||
<string name="placepage_coordinates">Souřadnice</string>
|
||||
<string name="placepage_unsorted">Nezařazené</string>
|
||||
|
|
|
@ -308,6 +308,9 @@
|
|||
<string name="menu_search">Søg</string>
|
||||
<string name="pref_zoom_title">Zoom knapper</string>
|
||||
<string name="pref_zoom_summary">Vis på skærmen</string>
|
||||
<!-- Title for "Other" section in TTS settings. -->
|
||||
<string name="pref_tts_other_section_title">Andet</string>
|
||||
<string name="pref_tts_how_to_set_up_voice">Sådan indstiller du tale</string>
|
||||
<string name="placepage_distance">Afstand</string>
|
||||
<string name="placepage_coordinates">Koordinater</string>
|
||||
<string name="placepage_unsorted">Usorteret</string>
|
||||
|
|
|
@ -301,6 +301,9 @@
|
|||
<string name="menu_search">Suche</string>
|
||||
<string name="pref_zoom_title">Zoom-Tasten</string>
|
||||
<string name="pref_zoom_summary">Auf dem Bildschirm anzeigen</string>
|
||||
<!-- Title for "Other" section in TTS settings. -->
|
||||
<string name="pref_tts_other_section_title">Weitere</string>
|
||||
<string name="pref_tts_how_to_set_up_voice">Navi-Stimme einstellen</string>
|
||||
<string name="placepage_distance">Distanz</string>
|
||||
<string name="placepage_coordinates">Koordinaten</string>
|
||||
<string name="placepage_unsorted">Unsortiert</string>
|
||||
|
|
|
@ -299,6 +299,9 @@
|
|||
<string name="menu_search">Buscar</string>
|
||||
<string name="pref_zoom_title">Botones de zoom</string>
|
||||
<string name="pref_zoom_summary">Visualización en la pantalla</string>
|
||||
<!-- Title for "Other" section in TTS settings. -->
|
||||
<string name="pref_tts_other_section_title">Otros</string>
|
||||
<string name="pref_tts_how_to_set_up_voice">Cómo configurar la voz</string>
|
||||
<string name="placepage_distance">Distancia</string>
|
||||
<string name="placepage_coordinates">Coordenadas</string>
|
||||
<string name="placepage_unsorted">Sin clasificar</string>
|
||||
|
|
|
@ -306,6 +306,9 @@
|
|||
<string name="menu_search">Haku</string>
|
||||
<string name="pref_zoom_title">Zoomauspainikkeet</string>
|
||||
<string name="pref_zoom_summary">Näytä ruudulla</string>
|
||||
<!-- Title for "Other" section in TTS settings. -->
|
||||
<string name="pref_tts_other_section_title">Egyéb</string>
|
||||
<string name="pref_tts_how_to_set_up_voice">Így állítsd be a hangot</string>
|
||||
<string name="placepage_distance">Etäisyys</string>
|
||||
<string name="placepage_coordinates">Koordinaatit</string>
|
||||
<string name="placepage_unsorted">Järjestelemätön</string>
|
||||
|
|
|
@ -311,6 +311,9 @@
|
|||
<string name="menu_search">Rechercher</string>
|
||||
<string name="pref_zoom_title">Boutons de zoom</string>
|
||||
<string name="pref_zoom_summary">Afficher à l\'écran</string>
|
||||
<!-- Title for "Other" section in TTS settings. -->
|
||||
<string name="pref_tts_other_section_title">Autre</string>
|
||||
<string name="pref_tts_how_to_set_up_voice">Comment configurer la voix</string>
|
||||
<string name="placepage_distance">Distance</string>
|
||||
<string name="placepage_coordinates">Coordonnées</string>
|
||||
<string name="placepage_unsorted">Non trié</string>
|
||||
|
|
|
@ -307,6 +307,9 @@
|
|||
<string name="menu_search">Keresés</string>
|
||||
<string name="pref_zoom_title">Nagyítás/kicsinyítés gombok</string>
|
||||
<string name="pref_zoom_summary">Mutassa a kijelzőn</string>
|
||||
<!-- Title for "Other" section in TTS settings. -->
|
||||
<string name="pref_tts_other_section_title">Egyéb</string>
|
||||
<string name="pref_tts_how_to_set_up_voice">Így állítsd be a hangot</string>
|
||||
<string name="placepage_distance">Távolság</string>
|
||||
<string name="placepage_coordinates">Koordináták</string>
|
||||
<string name="placepage_unsorted">Osztályozatlan</string>
|
||||
|
|
|
@ -306,6 +306,9 @@
|
|||
<string name="menu_search">Cari</string>
|
||||
<string name="pref_zoom_title">Tombol perbesaran</string>
|
||||
<string name="pref_zoom_summary">Tampilkan pada layar</string>
|
||||
<!-- Title for "Other" section in TTS settings. -->
|
||||
<string name="pref_tts_other_section_title">Lainnya</string>
|
||||
<string name="pref_tts_how_to_set_up_voice">Cara mengatur suara</string>
|
||||
<string name="placepage_distance">Jarak</string>
|
||||
<string name="placepage_coordinates">Koordinat</string>
|
||||
<string name="placepage_unsorted">Tidak diurutkan</string>
|
||||
|
|
|
@ -303,6 +303,9 @@
|
|||
<string name="menu_search">Cerca</string>
|
||||
<string name="pref_zoom_title">Pulsanti per lo zoom</string>
|
||||
<string name="pref_zoom_summary">Condividi la mia location</string>
|
||||
<!-- Title for "Other" section in TTS settings. -->
|
||||
<string name="pref_tts_other_section_title">Altro</string>
|
||||
<string name="pref_tts_how_to_set_up_voice">Come impostare la voce</string>
|
||||
<string name="placepage_distance">Distanza</string>
|
||||
<string name="placepage_coordinates">Coordinate</string>
|
||||
<string name="placepage_unsorted">Non classificato</string>
|
||||
|
|
|
@ -297,6 +297,9 @@
|
|||
<string name="menu_search">検索</string>
|
||||
<string name="pref_zoom_title">ズームボタン</string>
|
||||
<string name="pref_zoom_summary">画面上に表示</string>
|
||||
<!-- Title for "Other" section in TTS settings. -->
|
||||
<string name="pref_tts_other_section_title">その他</string>
|
||||
<string name="pref_tts_how_to_set_up_voice">音声設定の仕方</string>
|
||||
<string name="placepage_distance">距離</string>
|
||||
<string name="placepage_coordinates">コーディネート</string>
|
||||
<string name="placepage_unsorted">未分類</string>
|
||||
|
|
|
@ -296,6 +296,9 @@
|
|||
<string name="menu_search">검색</string>
|
||||
<string name="pref_zoom_title">확대/축소 버튼</string>
|
||||
<string name="pref_zoom_summary">화면에 표시</string>
|
||||
<!-- Title for "Other" section in TTS settings. -->
|
||||
<string name="pref_tts_other_section_title">다른 언어</string>
|
||||
<string name="pref_tts_how_to_set_up_voice">음성 설정 방법</string>
|
||||
<string name="placepage_distance">거리</string>
|
||||
<string name="placepage_coordinates">좌표</string>
|
||||
<string name="placepage_unsorted">분류되지 않음</string>
|
||||
|
|
|
@ -306,6 +306,9 @@
|
|||
<string name="menu_search">Søk</string>
|
||||
<string name="pref_zoom_title">Zoom-knapper</string>
|
||||
<string name="pref_zoom_summary">Vis på skjermen</string>
|
||||
<!-- Title for "Other" section in TTS settings. -->
|
||||
<string name="pref_tts_other_section_title">Andre</string>
|
||||
<string name="pref_tts_how_to_set_up_voice">Slik installerer du stemme</string>
|
||||
<string name="placepage_distance">Avstand</string>
|
||||
<string name="placepage_coordinates">Koordinater</string>
|
||||
<string name="placepage_unsorted">Usortert</string>
|
||||
|
|
|
@ -298,6 +298,9 @@
|
|||
<string name="menu_search">Zoek</string>
|
||||
<string name="pref_zoom_title">Zoomknoppen</string>
|
||||
<string name="pref_zoom_summary">Weergave op het scherm</string>
|
||||
<!-- Title for "Other" section in TTS settings. -->
|
||||
<string name="pref_tts_other_section_title">Andere</string>
|
||||
<string name="pref_tts_how_to_set_up_voice">Hoe stel je de stem in</string>
|
||||
<string name="placepage_distance">Afstand</string>
|
||||
<string name="placepage_coordinates">Coördinaten</string>
|
||||
<string name="placepage_unsorted">Ongeclassificeerd</string>
|
||||
|
|
|
@ -307,6 +307,9 @@
|
|||
<string name="menu_search">Szukaj</string>
|
||||
<string name="pref_zoom_title">Przyciski powiększania</string>
|
||||
<string name="pref_zoom_summary">Wyświetl na ekranie</string>
|
||||
<!-- Title for "Other" section in TTS settings. -->
|
||||
<string name="pref_tts_other_section_title">Inny</string>
|
||||
<string name="pref_tts_how_to_set_up_voice">Jak skonfigurować usługę głosową</string>
|
||||
<string name="placepage_distance">Dystans</string>
|
||||
<string name="placepage_coordinates">Współrzędne</string>
|
||||
<string name="placepage_unsorted">Niesklasyfikowane</string>
|
||||
|
|
|
@ -303,6 +303,9 @@
|
|||
<string name="menu_search">Pesquisar</string>
|
||||
<string name="pref_zoom_title">Botões de zoom</string>
|
||||
<string name="pref_zoom_summary">Mostrar no ecrã</string>
|
||||
<!-- Title for "Other" section in TTS settings. -->
|
||||
<string name="pref_tts_other_section_title">Outro</string>
|
||||
<string name="pref_tts_how_to_set_up_voice">Como configurar a voz</string>
|
||||
<string name="placepage_distance">Distância</string>
|
||||
<string name="placepage_coordinates">Coordenadas</string>
|
||||
<string name="placepage_unsorted">Não classificado</string>
|
||||
|
|
|
@ -306,6 +306,9 @@
|
|||
<string name="menu_search">Căutare</string>
|
||||
<string name="pref_zoom_title">Butoane zoom</string>
|
||||
<string name="pref_zoom_summary">Afișare pe ecran</string>
|
||||
<!-- Title for "Other" section in TTS settings. -->
|
||||
<string name="pref_tts_other_section_title">Alta</string>
|
||||
<string name="pref_tts_how_to_set_up_voice">Modalitatea de configurare a vocii</string>
|
||||
<string name="placepage_distance">Distanță</string>
|
||||
<string name="placepage_coordinates">Coordonate</string>
|
||||
<string name="placepage_unsorted">Nesortate</string>
|
||||
|
|
|
@ -335,6 +335,9 @@
|
|||
<string name="pref_tts_language_title">Язык подсказок</string>
|
||||
<!-- Settings «Route» category: «Tts unavailable» subtitle -->
|
||||
<string name="pref_tts_unavailable">Голосовые подсказки недоступны</string>
|
||||
<!-- Title for "Other" section in TTS settings. -->
|
||||
<string name="pref_tts_other_section_title">Другой</string>
|
||||
<string name="pref_tts_how_to_set_up_voice">Как настроить голос</string>
|
||||
<string name="placepage_distance">Расстояние</string>
|
||||
<string name="placepage_coordinates">Координаты</string>
|
||||
<string name="placepage_unsorted">Без категории</string>
|
||||
|
|
|
@ -305,6 +305,9 @@
|
|||
<string name="menu_search">Vyhľadávanie</string>
|
||||
<string name="pref_zoom_title">Tlačítka priblíženia/oddialenia</string>
|
||||
<string name="pref_zoom_summary">Zobraziť na obrazovke</string>
|
||||
<!-- Title for "Other" section in TTS settings. -->
|
||||
<string name="pref_tts_other_section_title">Iný</string>
|
||||
<string name="pref_tts_how_to_set_up_voice">Ako nastaviť hlas</string>
|
||||
<string name="placepage_distance">Vzdialenosť</string>
|
||||
<string name="placepage_coordinates">Súradnice</string>
|
||||
<string name="placepage_unsorted">Nezaradené</string>
|
||||
|
|
|
@ -306,6 +306,9 @@
|
|||
<string name="menu_search">Sök</string>
|
||||
<string name="pref_zoom_title">Zoom-knappar</string>
|
||||
<string name="pref_zoom_summary">Visa på skärmen</string>
|
||||
<!-- Title for "Other" section in TTS settings. -->
|
||||
<string name="pref_tts_other_section_title">Övrigt</string>
|
||||
<string name="pref_tts_how_to_set_up_voice">Hur man ställer in ljud</string>
|
||||
<string name="placepage_distance">Avstånd</string>
|
||||
<string name="placepage_coordinates">Koordinater</string>
|
||||
<string name="placepage_unsorted">Osorterade</string>
|
||||
|
|
|
@ -308,6 +308,9 @@
|
|||
<string name="menu_search">ค้นหา</string>
|
||||
<string name="pref_zoom_title">ปุ่มซูม</string>
|
||||
<string name="pref_zoom_summary">แสดงบนหน้าจอ</string>
|
||||
<!-- Title for "Other" section in TTS settings. -->
|
||||
<string name="pref_tts_other_section_title">อื่น ๆ</string>
|
||||
<string name="pref_tts_how_to_set_up_voice">วิธีตั้งค่าเสียง</string>
|
||||
<string name="placepage_distance">ระยะห่าง</string>
|
||||
<string name="placepage_coordinates">พิกัด</string>
|
||||
<string name="placepage_unsorted">ไม่เรียงลำดับ</string>
|
||||
|
|
|
@ -310,6 +310,9 @@
|
|||
<string name="menu_search">Ara</string>
|
||||
<string name="pref_zoom_title">Yakınlaştırma butonları</string>
|
||||
<string name="pref_zoom_summary">Ekranda göster</string>
|
||||
<!-- Title for "Other" section in TTS settings. -->
|
||||
<string name="pref_tts_other_section_title">Diğer</string>
|
||||
<string name="pref_tts_how_to_set_up_voice">Ses nasıl ayarlanır</string>
|
||||
<string name="placepage_distance">Mesafe</string>
|
||||
<string name="placepage_coordinates">Koordinatlar</string>
|
||||
<string name="placepage_unsorted">Sıralanmamış</string>
|
||||
|
|
|
@ -311,6 +311,9 @@
|
|||
<string name="menu_search">Пошук</string>
|
||||
<string name="pref_zoom_title">Кнопки трансфокації</string>
|
||||
<string name="pref_zoom_summary">Відображення на екрані</string>
|
||||
<!-- Title for "Other" section in TTS settings. -->
|
||||
<string name="pref_tts_other_section_title">Інша</string>
|
||||
<string name="pref_tts_how_to_set_up_voice">Як налаштувати голосовий контроль</string>
|
||||
<string name="placepage_distance">Відстань</string>
|
||||
<string name="placepage_coordinates">Координати</string>
|
||||
<string name="placepage_unsorted">Без категорії</string>
|
||||
|
|
|
@ -306,6 +306,9 @@
|
|||
<string name="menu_search">Tìm kiếm</string>
|
||||
<string name="pref_zoom_title">Nút Phóng to/Thu nhỏ</string>
|
||||
<string name="pref_zoom_summary">Hiển thị trên màn hình</string>
|
||||
<!-- Title for "Other" section in TTS settings. -->
|
||||
<string name="pref_tts_other_section_title">Khác</string>
|
||||
<string name="pref_tts_how_to_set_up_voice">Làm thế nào để thiết lập tiếng nói</string>
|
||||
<string name="placepage_distance">Khoảng cách</string>
|
||||
<string name="placepage_coordinates">Tọa độ</string>
|
||||
<string name="placepage_unsorted">Chưa phân loại</string>
|
||||
|
|
|
@ -290,6 +290,9 @@
|
|||
<string name="menu_search">搜尋</string>
|
||||
<string name="pref_zoom_title">縮放按鈕</string>
|
||||
<string name="pref_zoom_summary">在螢幕上顯示</string>
|
||||
<!-- Title for "Other" section in TTS settings. -->
|
||||
<string name="pref_tts_other_section_title">其他</string>
|
||||
<string name="pref_tts_how_to_set_up_voice">如何設置語音</string>
|
||||
<string name="placepage_distance">距离</string>
|
||||
<string name="placepage_coordinates">坐标</string>
|
||||
<string name="placepage_unsorted">未分类的</string>
|
||||
|
|
|
@ -306,6 +306,9 @@
|
|||
<string name="menu_search">搜索</string>
|
||||
<string name="pref_zoom_title">缩放按钮</string>
|
||||
<string name="pref_zoom_summary">在屏幕上显示</string>
|
||||
<!-- Title for "Other" section in TTS settings. -->
|
||||
<string name="pref_tts_other_section_title">其他</string>
|
||||
<string name="pref_tts_how_to_set_up_voice">如何设置语音</string>
|
||||
<string name="placepage_distance">距离</string>
|
||||
<string name="placepage_coordinates">坐标</string>
|
||||
<string name="placepage_unsorted">未分类</string>
|
||||
|
|
|
@ -337,6 +337,9 @@
|
|||
<string name="pref_tts_language_title">Voice language</string>
|
||||
<!-- Settings «Route» category: «Tts unavailable» subtitle -->
|
||||
<string name="pref_tts_unavailable">TTS unavailable</string>
|
||||
<!-- Title for "Other" section in TTS settings. -->
|
||||
<string name="pref_tts_other_section_title">Other</string>
|
||||
<string name="pref_tts_how_to_set_up_voice">How to set up voice</string>
|
||||
<string name="placepage_distance">Distance</string>
|
||||
<string name="placepage_coordinates">Coordinates</string>
|
||||
<string name="placepage_unsorted">Unsorted</string>
|
||||
|
|
|
@ -72,24 +72,6 @@ static inline NSString * formattedSize(uint64_t size)
|
|||
return [sizeString uppercaseString];
|
||||
}
|
||||
|
||||
static inline NSString * bcp47ToTwineLanguage(NSString const * bcp47LangName)
|
||||
{
|
||||
if (bcp47LangName == nil || [bcp47LangName length] < 2)
|
||||
return nil;
|
||||
|
||||
if ([bcp47LangName isEqualToString:@"zh-CN"] || [bcp47LangName isEqualToString:@"zh-CHS"]
|
||||
|| [bcp47LangName isEqualToString:@"zh-SG"])
|
||||
{
|
||||
return @"zh-Hans"; // Chinese simplified
|
||||
}
|
||||
|
||||
if ([bcp47LangName hasPrefix:@"zh"])
|
||||
return @"zh-Hant"; // Chinese traditional
|
||||
|
||||
// Taking two first symbols of a language name. For example ru-RU -> ru
|
||||
return [bcp47LangName substringToIndex:2];
|
||||
}
|
||||
|
||||
// Use only for screen dimensions CGFloat comparison
|
||||
static inline BOOL equalScreenDimensions(CGFloat left, CGFloat right)
|
||||
{
|
||||
|
|
|
@ -37,7 +37,6 @@
|
|||
#pragma mark - MWMNavigationDashboardManager
|
||||
|
||||
- (void)setupRoutingDashboard:(location::FollowingInfo const &)info;
|
||||
- (void)playTurnNotifications;
|
||||
- (void)routingHidden;
|
||||
- (void)routingReady;
|
||||
- (void)routingPrepare;
|
||||
|
|
|
@ -322,11 +322,6 @@ extern NSString * const kAlohalyticsTapEventKey;
|
|||
[self.menuController setStreetName:@(info.m_sourceName.c_str())];
|
||||
}
|
||||
|
||||
- (void)playTurnNotifications
|
||||
{
|
||||
[self.navigationManager playTurnNotifications];
|
||||
}
|
||||
|
||||
- (void)handleRoutingError
|
||||
{
|
||||
self.navigationManager.state = MWMNavigationDashboardStateError;
|
||||
|
|
|
@ -3,9 +3,6 @@
|
|||
|
||||
#include "Framework.h"
|
||||
|
||||
extern NSString * const kMwmTextToSpeechEnable;
|
||||
extern NSString * const kMwmTextToSpeechDisable;
|
||||
|
||||
@implementation MWMConsole
|
||||
|
||||
+ (BOOL)performCommand:(NSString *)cmd
|
||||
|
@ -13,9 +10,6 @@ extern NSString * const kMwmTextToSpeechDisable;
|
|||
if ([self performMapStyle:cmd])
|
||||
return YES;
|
||||
|
||||
if ([self performSound:cmd])
|
||||
return YES;
|
||||
|
||||
return NO;
|
||||
}
|
||||
|
||||
|
@ -35,21 +29,4 @@ extern NSString * const kMwmTextToSpeechDisable;
|
|||
return YES;
|
||||
}
|
||||
|
||||
+ (BOOL)performSound:(NSString *)cmd
|
||||
{
|
||||
// Hook for shell command on change map style
|
||||
BOOL const sound = [cmd isEqualToString:@"?sound"];
|
||||
BOOL const nosound = sound ? NO : [cmd isEqualToString:@"?nosound"];
|
||||
|
||||
if (!sound && !nosound)
|
||||
return NO;
|
||||
|
||||
if (sound)
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:kMwmTextToSpeechEnable object:nil];
|
||||
if (nosound)
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:kMwmTextToSpeechDisable object:nil];
|
||||
|
||||
return YES;
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
@ -51,8 +51,13 @@ using namespace routing::turns;
|
|||
// _lanes = info.m_lanes;
|
||||
_nextTurnImage = image(info.m_nextTurn, true);
|
||||
}
|
||||
_turnImage = image(info.m_turn, false);
|
||||
if (info.m_turn == TurnDirection::EnterRoundAbout || info.m_turn == TurnDirection::LeaveRoundAbout)
|
||||
|
||||
TurnDirection const turn = info.m_turn;
|
||||
_turnImage = image(turn, false);
|
||||
BOOL const isRound = turn == TurnDirection::EnterRoundAbout ||
|
||||
turn == TurnDirection::StayOnRoundAbout ||
|
||||
turn == TurnDirection::LeaveRoundAbout;
|
||||
if (isRound)
|
||||
_roundExitNumber = info.m_exitNum;
|
||||
else
|
||||
_roundExitNumber = 0;
|
||||
|
|
|
@ -43,7 +43,6 @@ typedef NS_ENUM(NSUInteger, MWMNavigationDashboardState)
|
|||
- (instancetype)initWithParentView:(UIView *)view delegate:(id<MWMNavigationDashboardManagerProtocol, MWMRoutePreviewDataSource>)delegate;
|
||||
- (void)setupDashboard:(location::FollowingInfo const &)info;
|
||||
- (void)updateDashboard;
|
||||
- (void)playTurnNotifications;
|
||||
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)orientation;
|
||||
- (void)viewWillTransitionToSize:(CGSize)size
|
||||
withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator;
|
||||
|
|
|
@ -32,7 +32,6 @@ static NSString * const kNavigationDashboardIPADXibName = @"MWMNiPadNavigationDa
|
|||
@property (weak, nonatomic) UIView * ownerView;
|
||||
|
||||
@property (nonatomic) MWMNavigationDashboardEntity * entity;
|
||||
@property (nonatomic) MWMTextToSpeech * tts;
|
||||
//@property (nonatomic) MWMLanesPanel * lanesPanel;
|
||||
@property (nonatomic) MWMNextTurnPanel * nextTurnPanel;
|
||||
@property (nonatomic) MWMRouteHelperPanelsDrawer * drawer;
|
||||
|
@ -78,12 +77,26 @@ static NSString * const kNavigationDashboardIPADXibName = @"MWMNiPadNavigationDa
|
|||
_navigationDashboard = isPortrait ? _navigationDashboardPortrait : _navigationDashboardLandscape;
|
||||
_navigationDashboardPortrait.delegate = _navigationDashboardLandscape.delegate = delegate;
|
||||
}
|
||||
_tts = [[MWMTextToSpeech alloc] init];
|
||||
_helperPanels = [NSMutableArray array];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)changedTTSStatus:(NSNotification *)notification
|
||||
{
|
||||
if (self.state != MWMNavigationDashboardStateNavigation)
|
||||
return;
|
||||
NSDictionary<NSString *, NSNumber *> * userInfo = notification.userInfo;
|
||||
BOOL const enabled = userInfo[@"on"].boolValue;
|
||||
self.navigationDashboardPortrait.soundButton.selected = enabled;
|
||||
self.navigationDashboardLandscape.soundButton.selected = enabled;
|
||||
}
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
||||
}
|
||||
|
||||
#pragma mark - Layout
|
||||
|
||||
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)orientation
|
||||
|
@ -142,12 +155,6 @@ static NSString * const kNavigationDashboardIPADXibName = @"MWMNiPadNavigationDa
|
|||
[self updateDashboard];
|
||||
}
|
||||
|
||||
- (void)playTurnNotifications
|
||||
{
|
||||
if (self.state == MWMNavigationDashboardStateNavigation)
|
||||
[self.tts playTurnNotifications];
|
||||
}
|
||||
|
||||
- (void)handleError
|
||||
{
|
||||
[self.routePreview stateError];
|
||||
|
@ -192,10 +199,7 @@ static NSString * const kNavigationDashboardIPADXibName = @"MWMNiPadNavigationDa
|
|||
return;
|
||||
case 1:
|
||||
if (![self.helperPanels.firstObject isKindOfClass:panel.class])
|
||||
{
|
||||
[self.helperPanels addObject:panel];
|
||||
return;
|
||||
}
|
||||
return;
|
||||
case 2:
|
||||
for (MWMRouteHelperPanel * p in self.helperPanels)
|
||||
|
@ -272,6 +276,17 @@ static NSString * const kNavigationDashboardIPADXibName = @"MWMNiPadNavigationDa
|
|||
[self.delegate didCancelRouting];
|
||||
}
|
||||
|
||||
- (IBAction)soundTap:(UIButton *)sender
|
||||
{
|
||||
BOOL const isEnable = !sender.selected;
|
||||
MWMTextToSpeech * tts = [MWMTextToSpeech tts];
|
||||
if (isEnable)
|
||||
[tts enable];
|
||||
else
|
||||
[tts disable];
|
||||
sender.selected = isEnable;
|
||||
}
|
||||
|
||||
#pragma mark - MWMNavigationGo
|
||||
|
||||
- (IBAction)navigationGoPressed:(UIButton *)sender
|
||||
|
@ -316,6 +331,13 @@ static NSString * const kNavigationDashboardIPADXibName = @"MWMNiPadNavigationDa
|
|||
- (void)showStateNavigation
|
||||
{
|
||||
[self.routePreview remove];
|
||||
MWMTextToSpeech * tts = [MWMTextToSpeech tts];
|
||||
BOOL const isNeedToEnable = tts.isNeedToEnable;
|
||||
self.navigationDashboardPortrait.soundButton.selected = isNeedToEnable;
|
||||
self.navigationDashboardLandscape.soundButton.selected = isNeedToEnable;
|
||||
if (isNeedToEnable)
|
||||
[tts enable];
|
||||
|
||||
[self.navigationDashboard addToView:self.ownerView];
|
||||
}
|
||||
|
||||
|
@ -324,13 +346,9 @@ static NSString * const kNavigationDashboardIPADXibName = @"MWMNiPadNavigationDa
|
|||
switch (GetFramework().GetRouter())
|
||||
{
|
||||
case routing::RouterType::Pedestrian:
|
||||
// self.routePreview.pedestrianProgressView.state = MWMCircularProgressStateSelected;
|
||||
// self.routePreview.vehicleProgressView.state = MWMCircularProgressStateNormal;
|
||||
self.activeRouteTypeButton = self.routePreview.pedestrianProgressView;
|
||||
break;
|
||||
case routing::RouterType::Vehicle:
|
||||
// self.routePreview.vehicleProgressView.state = MWMCircularProgressStateSelected;
|
||||
// self.routePreview.pedestrianProgressView.state = MWMCircularProgressStateNormal;
|
||||
self.activeRouteTypeButton = self.routePreview.vehicleProgressView;
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -1,14 +1,33 @@
|
|||
#import <Foundation/Foundation.h>
|
||||
|
||||
#include "std/string.hpp"
|
||||
#include "std/vector.hpp"
|
||||
|
||||
@interface MWMTextToSpeech : NSObject
|
||||
|
||||
- (instancetype)init;
|
||||
+ (instancetype)tts;
|
||||
+ (void)activateAudioSession;
|
||||
- (vector<std::pair<string, string>>)availableLanguages;
|
||||
- (NSString *)savedLanguage;
|
||||
- (void)setNotificationsLocale:(NSString *)locale;
|
||||
- (BOOL)isNeedToEnable;
|
||||
- (void)setNeedToEnable:(BOOL)need;
|
||||
- (BOOL)isEnable;
|
||||
- (void)enable;
|
||||
- (void)disable;
|
||||
- (void)playTurnNotifications;
|
||||
|
||||
- (instancetype)init __attribute__((unavailable("call tts instead")));
|
||||
- (instancetype)copy __attribute__((unavailable("call tts instead")));
|
||||
- (instancetype)copyWithZone:(NSZone *)zone __attribute__((unavailable("call tts instead")));
|
||||
+ (instancetype)alloc __attribute__((unavailable("call tts instead")));
|
||||
+ (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((unavailable("call tts instead")));
|
||||
+ (instancetype)new __attribute__((unavailable("call tts instead")));
|
||||
|
||||
@end
|
||||
|
||||
namespace tts
|
||||
{
|
||||
|
||||
string bcp47ToTwineLanguage(NSString const * bcp47LangName);
|
||||
string translatedTwine(string const & twine);
|
||||
|
||||
} // namespace tts
|
||||
|
|
|
@ -1,53 +1,87 @@
|
|||
#import <AVFoundation/AVFoundation.h>
|
||||
#import "Common.h"
|
||||
#import <AVFoundation/AVFoundation.h>
|
||||
#import "MWMTextToSpeech.h"
|
||||
|
||||
#include "Framework.h"
|
||||
#include "sound/tts/languages.hpp"
|
||||
|
||||
extern NSString * const kMwmTextToSpeechEnable = @"MWMTEXTTOSPEECH_ENABLE";
|
||||
extern NSString * const kMwmTextToSpeechDisable = @"MWMTEXTTOSPEECH_DISABLE";
|
||||
extern NSString * const kUserDefaultsTTSLanguage = @"UserDefaultsTTSLanguage";
|
||||
extern NSString * const kUserDafaultsNeedToEnableTTS = @"UserDefaultsNeedToEnableTTS";
|
||||
|
||||
@interface MWMTextToSpeech()
|
||||
{
|
||||
vector<pair<string, string>> _availableLanguages;
|
||||
}
|
||||
|
||||
@property (nonatomic) AVSpeechSynthesizer * speechSynthesizer;
|
||||
@property (nonatomic) AVSpeechSynthesisVoice * speechVoice;
|
||||
@property (nonatomic) float speechRate;
|
||||
|
||||
@end
|
||||
|
||||
@implementation MWMTextToSpeech
|
||||
|
||||
- (instancetype)init
|
||||
+ (instancetype)tts
|
||||
{
|
||||
static dispatch_once_t onceToken;
|
||||
static MWMTextToSpeech * tts = nil;
|
||||
dispatch_once(&onceToken, ^
|
||||
{
|
||||
tts = [[super alloc] initTTS];
|
||||
});
|
||||
return tts;
|
||||
}
|
||||
|
||||
- (instancetype)initTTS
|
||||
{
|
||||
self = [super init];
|
||||
if (self)
|
||||
{
|
||||
// Activating audio session.
|
||||
NSError * err = nil;
|
||||
AVAudioSession * audioSession = [AVAudioSession sharedInstance];
|
||||
if (![audioSession setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionMixWithOthers error:&err])
|
||||
LOG(LWARNING, ("[ setCategory]] error.", [err localizedDescription]));
|
||||
if (![audioSession setActive:YES error:&err])
|
||||
LOG(LWARNING, ("[[AVAudioSession sharedInstance] setActive]] error.", [err localizedDescription]));
|
||||
|
||||
_availableLanguages = availableLanguages();
|
||||
|
||||
NSString * saved = self.savedLanguage;
|
||||
string preferedLanguage;
|
||||
if (saved.length)
|
||||
preferedLanguage = saved.UTF8String;
|
||||
else
|
||||
preferedLanguage = tts::bcp47ToTwineLanguage([AVSpeechSynthesisVoice currentLanguageCode]);
|
||||
|
||||
pair<string, string> const lan {preferedLanguage, tts::translatedTwine(preferedLanguage)};
|
||||
if (find(_availableLanguages.begin(), _availableLanguages.end(), lan) != _availableLanguages.end())
|
||||
[self setNotificationsLocale:@(preferedLanguage.c_str())];
|
||||
else
|
||||
[self setNotificationsLocale:@"en"];
|
||||
// Before 9.0 version iOS has an issue with speechRate. AVSpeechUtteranceDefaultSpeechRate does not work correctly.
|
||||
// It's a work around for iOS 7.x and 8.x.
|
||||
self.speechRate = isIOSVersionLessThan(@"7.1.1") ? 0.3 : (isIOSVersionLessThan(@"9.0.0") ? 0.15 : AVSpeechUtteranceDefaultSpeechRate);
|
||||
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(enable)
|
||||
name:kMwmTextToSpeechEnable
|
||||
object:nil];
|
||||
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(disable)
|
||||
name:kMwmTextToSpeechDisable
|
||||
object:nil];
|
||||
_speechRate = isIOSVersionLessThan(@"7.1.1") ? 0.3 : (isIOSVersionLessThan(@"9.0.0") ? 0.15 : AVSpeechUtteranceDefaultSpeechRate);
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
-(void)dealloc
|
||||
+ (void)activateAudioSession
|
||||
{
|
||||
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
||||
NSError * err = nil;
|
||||
AVAudioSession * audioSession = [AVAudioSession sharedInstance];
|
||||
if (![audioSession setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionMixWithOthers error:&err])
|
||||
{
|
||||
LOG(LWARNING, ("[ setCategory]] error.", [err localizedDescription]));
|
||||
return;
|
||||
}
|
||||
if (![audioSession setActive:YES error:&err])
|
||||
LOG(LWARNING, ("[[AVAudioSession sharedInstance] setActive]] error.", [err localizedDescription]));
|
||||
}
|
||||
|
||||
- (vector<pair<string, string>>)availableLanguages
|
||||
{
|
||||
return _availableLanguages;
|
||||
}
|
||||
|
||||
- (void)setNotificationsLocale:(NSString *)locale
|
||||
{
|
||||
NSUserDefaults * ud = [NSUserDefaults standardUserDefaults];
|
||||
[ud setObject:locale forKey:kUserDefaultsTTSLanguage];
|
||||
[ud synchronize];
|
||||
[self createVoice:locale];
|
||||
}
|
||||
|
||||
- (BOOL)isValid
|
||||
|
@ -55,16 +89,29 @@ extern NSString * const kMwmTextToSpeechDisable = @"MWMTEXTTOSPEECH_DISABLE";
|
|||
return _speechSynthesizer != nil && _speechVoice != nil;
|
||||
}
|
||||
|
||||
- (BOOL)isNeedToEnable
|
||||
{
|
||||
return [[NSUserDefaults standardUserDefaults] boolForKey:kUserDafaultsNeedToEnableTTS];
|
||||
}
|
||||
|
||||
- (void)setNeedToEnable:(BOOL)need
|
||||
{
|
||||
NSUserDefaults * ud = [NSUserDefaults standardUserDefaults];
|
||||
[ud setBool:need forKey:kUserDafaultsNeedToEnableTTS];
|
||||
[ud synchronize];
|
||||
}
|
||||
|
||||
- (void)enable
|
||||
{
|
||||
[self setNeedToEnable:YES];
|
||||
if (![self isValid])
|
||||
[self createSynthesizer];
|
||||
|
||||
GetFramework().EnableTurnNotifications(true);
|
||||
}
|
||||
|
||||
- (void)disable
|
||||
{
|
||||
[self setNeedToEnable:NO];
|
||||
GetFramework().EnableTurnNotifications(false);
|
||||
}
|
||||
|
||||
|
@ -73,13 +120,20 @@ extern NSString * const kMwmTextToSpeechDisable = @"MWMTEXTTOSPEECH_DISABLE";
|
|||
return GetFramework().AreTurnNotificationsEnabled() ? YES : NO;
|
||||
}
|
||||
|
||||
- (NSString *)savedLanguage
|
||||
{
|
||||
return [[NSUserDefaults standardUserDefaults] stringForKey:kUserDefaultsTTSLanguage];
|
||||
}
|
||||
|
||||
- (void)createSynthesizer
|
||||
{
|
||||
self.speechSynthesizer = [[AVSpeechSynthesizer alloc] init];
|
||||
|
||||
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^
|
||||
{
|
||||
self.speechSynthesizer = [[AVSpeechSynthesizer alloc] init];
|
||||
[self createVoice:self.savedLanguage];
|
||||
});
|
||||
// TODO(vbykoianko) Use [NSLocale preferredLanguages] instead of [AVSpeechSynthesisVoice currentLanguageCode].
|
||||
// [AVSpeechSynthesisVoice currentLanguageCode] is used now because of we need a language code in BCP-47.
|
||||
[self createVoice:[AVSpeechSynthesisVoice currentLanguageCode]];
|
||||
}
|
||||
|
||||
- (void)createVoice:(NSString *)locale
|
||||
|
@ -113,13 +167,13 @@ extern NSString * const kMwmTextToSpeechDisable = @"MWMTEXTTOSPEECH_DISABLE";
|
|||
}
|
||||
|
||||
self.speechVoice = [AVSpeechSynthesisVoice voiceWithLanguage:locale];
|
||||
NSString const * twineLang = bcp47ToTwineLanguage(locale);
|
||||
if (twineLang == nil)
|
||||
string const twineLang = tts::bcp47ToTwineLanguage(locale);
|
||||
if (twineLang.empty())
|
||||
{
|
||||
LOG(LERROR, ("Cannot convert UI locale or default locale to twine language. MWMTestToSpeech is invalid."));
|
||||
return; // self is not valid.
|
||||
}
|
||||
GetFramework().SetTurnNotificationsLocale([twineLang UTF8String]);
|
||||
GetFramework().SetTurnNotificationsLocale(twineLang);
|
||||
}
|
||||
|
||||
- (void)speakOneString:(NSString *)textToSpeak
|
||||
|
@ -150,4 +204,59 @@ extern NSString * const kMwmTextToSpeechDisable = @"MWMTEXTTOSPEECH_DISABLE";
|
|||
[self speakOneString:@(text.c_str())];
|
||||
}
|
||||
|
||||
static vector<pair<string, string>> availableLanguages()
|
||||
{
|
||||
NSArray<AVSpeechSynthesisVoice *> * voices = [AVSpeechSynthesisVoice speechVoices];
|
||||
vector<string> native(voices.count);
|
||||
for (AVSpeechSynthesisVoice * v in voices)
|
||||
native.push_back(tts::bcp47ToTwineLanguage(v.language));
|
||||
|
||||
sort(native.begin(), native.end());
|
||||
using namespace routing::turns::sound;
|
||||
vector<pair<string, string>> result;
|
||||
for (auto const & p : kLanguageList)
|
||||
{
|
||||
if (find(native.begin(), native.end(), p.first) != native.end())
|
||||
result.push_back(p);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
namespace tts
|
||||
{
|
||||
|
||||
string bcp47ToTwineLanguage(NSString const * bcp47LangName)
|
||||
{
|
||||
if (bcp47LangName == nil || [bcp47LangName length] < 2)
|
||||
return string("");
|
||||
|
||||
if ([bcp47LangName isEqualToString:@"zh-CN"] || [bcp47LangName isEqualToString:@"zh-CHS"]
|
||||
|| [bcp47LangName isEqualToString:@"zh-SG"])
|
||||
{
|
||||
return string("zh-Hans"); // Chinese simplified
|
||||
}
|
||||
|
||||
if ([bcp47LangName hasPrefix:@"zh"])
|
||||
return string("zh-Hant"); // Chinese traditional
|
||||
|
||||
// Taking two first symbols of a language name. For example ru-RU -> ru
|
||||
return [[bcp47LangName substringToIndex:2] UTF8String];
|
||||
}
|
||||
|
||||
string translatedTwine(string const & twine)
|
||||
{
|
||||
auto const & list = routing::turns::sound::kLanguageList;
|
||||
auto const it = find_if(list.begin(), list.end(), [&twine](pair<string, string> const & pair)
|
||||
{
|
||||
return pair.first == twine;
|
||||
});
|
||||
|
||||
if (it != list.end())
|
||||
return it->second;
|
||||
else
|
||||
return "";
|
||||
}
|
||||
|
||||
} // namespace tts
|
|
@ -50,8 +50,69 @@
|
|||
<constraint firstAttribute="height" constant="30" id="7Y8-Wb-stp"/>
|
||||
</constraints>
|
||||
</slider>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="UPF-5v-zhS" userLabel="Distance Box">
|
||||
<rect key="frame" x="536" y="8" width="152" height="44"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="10 min" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="e1o-3M-J3b">
|
||||
<rect key="frame" x="0.0" y="0.0" width="152" height="20"/>
|
||||
<animations/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="20" id="ocR-64-jZf"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="17"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.54000000000000004" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackSecondaryText"/>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="bold17"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" verticalHuggingPriority="251" text="00:00" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="F95-AG-2uX">
|
||||
<rect key="frame" x="108" y="24" width="44" height="20"/>
|
||||
<animations/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="20" id="KUh-HY-Mub"/>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="44" id="ctu-76-aWf"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="17"/>
|
||||
<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="bold17"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="10 km" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="SdK-Ad-rnt">
|
||||
<rect key="frame" x="46" y="24" width="50" height="20.5"/>
|
||||
<animations/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="20.5" id="EZs-14-596"/>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="50" id="x1u-Qg-Hig"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="17"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.54000000000000004" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackSecondaryText"/>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="bold17"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</label>
|
||||
</subviews>
|
||||
<animations/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
<constraints>
|
||||
<constraint firstItem="F95-AG-2uX" firstAttribute="top" secondItem="e1o-3M-J3b" secondAttribute="bottom" constant="4" id="05i-w7-UH7"/>
|
||||
<constraint firstAttribute="trailing" secondItem="e1o-3M-J3b" secondAttribute="trailing" id="87Y-MO-kyQ"/>
|
||||
<constraint firstAttribute="width" constant="152" id="G6x-cE-7Zw"/>
|
||||
<constraint firstAttribute="trailing" secondItem="F95-AG-2uX" secondAttribute="trailing" id="aEs-Do-FXa"/>
|
||||
<constraint firstItem="e1o-3M-J3b" firstAttribute="top" secondItem="UPF-5v-zhS" secondAttribute="top" id="bOw-XB-QWR"/>
|
||||
<constraint firstItem="F95-AG-2uX" firstAttribute="leading" secondItem="SdK-Ad-rnt" secondAttribute="trailing" constant="12" id="nrV-GH-2A1"/>
|
||||
<constraint firstItem="SdK-Ad-rnt" firstAttribute="top" secondItem="e1o-3M-J3b" secondAttribute="bottom" constant="4" id="p3s-lB-7Kd"/>
|
||||
<constraint firstItem="e1o-3M-J3b" firstAttribute="leading" secondItem="UPF-5v-zhS" secondAttribute="leading" id="uuc-Gx-OSU"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Kth-rd-TPo" userLabel="Azimut Box">
|
||||
<rect key="frame" x="52" y="0.0" width="539" height="90"/>
|
||||
<rect key="frame" x="52" y="0.0" width="484" height="90"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="SKb-P8-fcu" userLabel="exit">
|
||||
<rect key="frame" x="0.0" y="32" width="64" height="21"/>
|
||||
|
@ -95,7 +156,7 @@
|
|||
</userDefinedRuntimeAttributes>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Овчинниковская наб." lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="M9V-Kt-LIt">
|
||||
<rect key="frame" x="80" y="60" width="459" height="20"/>
|
||||
<rect key="frame" x="80" y="60" width="404" height="20"/>
|
||||
<animations/>
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="17"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.54000000000000004" colorSpace="calibratedRGB"/>
|
||||
|
@ -123,84 +184,23 @@
|
|||
<constraint firstAttribute="trailing" secondItem="M9V-Kt-LIt" secondAttribute="trailing" id="itL-f9-gDA"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="UPF-5v-zhS" userLabel="Distance Box">
|
||||
<rect key="frame" x="596" y="0.0" width="132" height="90"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="10 km" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="SdK-Ad-rnt">
|
||||
<rect key="frame" x="84" y="10" width="48" height="20"/>
|
||||
<animations/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="47" id="gVc-eW-TLR"/>
|
||||
<constraint firstAttribute="height" constant="20" id="uu2-wU-UQO"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="17"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.54000000000000004" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackSecondaryText"/>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="bold17"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="00:00" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="F95-AG-2uX">
|
||||
<rect key="frame" x="0.0" y="60" width="132" height="20"/>
|
||||
<animations/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="20" id="dhj-lT-vwd"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="17"/>
|
||||
<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="bold17"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="10 min" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="e1o-3M-J3b">
|
||||
<rect key="frame" x="0.0" y="10" width="53" height="20"/>
|
||||
<animations/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="20" id="6QY-Oq-Yhp"/>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="52" id="XHJ-J8-7YZ"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="17"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.54000000000000004" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackSecondaryText"/>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="bold17"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</label>
|
||||
</subviews>
|
||||
<animations/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
<constraints>
|
||||
<constraint firstItem="SdK-Ad-rnt" firstAttribute="top" secondItem="UPF-5v-zhS" secondAttribute="top" constant="10" id="2nY-Rd-Fdm"/>
|
||||
<constraint firstItem="SdK-Ad-rnt" firstAttribute="leading" secondItem="e1o-3M-J3b" secondAttribute="trailing" constant="31.5" id="C6J-OD-6d5"/>
|
||||
<constraint firstAttribute="trailing" secondItem="F95-AG-2uX" secondAttribute="trailing" id="SWJ-hI-r3f"/>
|
||||
<constraint firstItem="SdK-Ad-rnt" firstAttribute="baseline" secondItem="e1o-3M-J3b" secondAttribute="baseline" id="cIm-DD-F5s"/>
|
||||
<constraint firstItem="e1o-3M-J3b" firstAttribute="leading" secondItem="UPF-5v-zhS" secondAttribute="leading" id="lQ6-Oe-e43"/>
|
||||
<constraint firstAttribute="trailing" secondItem="SdK-Ad-rnt" secondAttribute="trailing" id="qa4-cj-UU5"/>
|
||||
<constraint firstItem="F95-AG-2uX" firstAttribute="leading" secondItem="UPF-5v-zhS" secondAttribute="leading" id="ucb-cA-HW5"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</subviews>
|
||||
<animations/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="bottom" secondItem="Kth-rd-TPo" secondAttribute="bottom" id="1pX-f2-Neu"/>
|
||||
<constraint firstItem="UPF-5v-zhS" firstAttribute="leading" secondItem="Kth-rd-TPo" secondAttribute="trailing" constant="5" id="1rL-Gb-G4e"/>
|
||||
<constraint firstAttribute="centerY" secondItem="qvD-ft-rlE" secondAttribute="centerY" id="6tk-qf-Wce"/>
|
||||
<constraint firstItem="jmt-cn-uun" firstAttribute="top" secondItem="iZT-dR-FZ0" secondAttribute="top" constant="-12" id="CHY-YV-Tec"/>
|
||||
<constraint firstItem="Kth-rd-TPo" firstAttribute="leading" secondItem="qvD-ft-rlE" secondAttribute="trailing" constant="8" id="Jgn-Lf-0wx"/>
|
||||
<constraint firstAttribute="bottom" secondItem="UPF-5v-zhS" secondAttribute="bottom" id="Mz2-K5-7k8"/>
|
||||
<constraint firstAttribute="trailing" secondItem="UPF-5v-zhS" secondAttribute="trailing" constant="48" id="Ulg-vs-6Lq"/>
|
||||
<constraint firstAttribute="height" constant="90" id="Uxs-v3-ZmZ"/>
|
||||
<constraint firstItem="qvD-ft-rlE" firstAttribute="leading" secondItem="iZT-dR-FZ0" secondAttribute="leading" id="W1d-ek-qDB"/>
|
||||
<constraint firstItem="jmt-cn-uun" firstAttribute="leading" secondItem="iZT-dR-FZ0" secondAttribute="leading" id="aFw-Pb-4UH"/>
|
||||
<constraint firstItem="UPF-5v-zhS" firstAttribute="top" secondItem="iZT-dR-FZ0" secondAttribute="top" id="d6y-pz-KFQ"/>
|
||||
<constraint firstAttribute="trailing" secondItem="UPF-5v-zhS" secondAttribute="trailing" constant="8" id="iPx-T3-lqz"/>
|
||||
<constraint firstAttribute="trailing" secondItem="jmt-cn-uun" secondAttribute="trailing" id="nXj-Qu-PVE"/>
|
||||
<constraint firstItem="F95-AG-2uX" firstAttribute="baseline" secondItem="M9V-Kt-LIt" secondAttribute="baseline" id="qJz-jC-YP7"/>
|
||||
<constraint firstAttribute="bottom" secondItem="UPF-5v-zhS" secondAttribute="bottom" constant="38" id="rm8-qZ-PTO"/>
|
||||
<constraint firstItem="Kth-rd-TPo" firstAttribute="top" secondItem="iZT-dR-FZ0" secondAttribute="top" id="udQ-PI-fyC"/>
|
||||
<constraint firstItem="UPF-5v-zhS" firstAttribute="top" secondItem="iZT-dR-FZ0" secondAttribute="top" constant="8" id="xpL-Fj-yiD"/>
|
||||
<constraint firstItem="UPF-5v-zhS" firstAttribute="leading" secondItem="Kth-rd-TPo" secondAttribute="trailing" id="z7r-Ia-yYs"/>
|
||||
</constraints>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.shadowRadius">
|
||||
|
@ -217,6 +217,20 @@
|
|||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</view>
|
||||
<button opaque="NO" contentMode="scaleToFill" selected="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ULL-In-aAg">
|
||||
<rect key="frame" x="692" y="22" width="44" height="44"/>
|
||||
<animations/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="44" id="MB8-2E-wAL"/>
|
||||
<constraint firstAttribute="height" constant="44" id="e81-Yl-6wc"/>
|
||||
</constraints>
|
||||
<state key="normal" image="ic_voice_off"/>
|
||||
<state key="selected" image="ic_voice_on"/>
|
||||
<state key="highlighted" image="ic_voice_off_press"/>
|
||||
<connections>
|
||||
<action selector="soundTap:" destination="-1" eventType="touchUpInside" id="WA3-uq-qo0"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<animations/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
|
@ -224,6 +238,8 @@
|
|||
<constraint firstAttribute="trailing" secondItem="iZT-dR-FZ0" secondAttribute="trailing" id="FjX-ex-8Um"/>
|
||||
<constraint firstItem="iZT-dR-FZ0" firstAttribute="leading" secondItem="e3c-EN-9M6" secondAttribute="leading" id="U47-TB-4Wm"/>
|
||||
<constraint firstItem="iZT-dR-FZ0" firstAttribute="top" secondItem="e3c-EN-9M6" secondAttribute="top" id="cVw-eZ-FjA"/>
|
||||
<constraint firstItem="ULL-In-aAg" firstAttribute="top" secondItem="e3c-EN-9M6" secondAttribute="top" constant="22" id="jgI-5T-YNO"/>
|
||||
<constraint firstAttribute="trailing" secondItem="ULL-In-aAg" secondAttribute="trailing" id="oco-ih-4xM"/>
|
||||
</constraints>
|
||||
<nil key="simulatedStatusBarMetrics"/>
|
||||
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
|
||||
|
@ -237,6 +253,7 @@
|
|||
<outlet property="eta" destination="e1o-3M-J3b" id="Noc-jA-c24"/>
|
||||
<outlet property="progress" destination="jmt-cn-uun" id="3N9-YL-PJt"/>
|
||||
<outlet property="roundRoadLabel" destination="SKb-P8-fcu" id="8TZ-c3-tij"/>
|
||||
<outlet property="soundButton" destination="ULL-In-aAg" id="ep9-Zf-w9p"/>
|
||||
<outlet property="streetLabel" destination="M9V-Kt-LIt" id="Yh6-Dn-Z4L"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="369" y="261"/>
|
||||
|
@ -245,5 +262,8 @@
|
|||
<resources>
|
||||
<image name="ic_direction" width="96" height="96"/>
|
||||
<image name="ic_nav_bar_close_light" width="44" height="44"/>
|
||||
<image name="ic_voice_off" width="44" height="44"/>
|
||||
<image name="ic_voice_off_press" width="44" height="44"/>
|
||||
<image name="ic_voice_on" width="28" height="28"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
@property (weak, nonatomic) IBOutlet UILabel * arrivalsTimeLabel;
|
||||
@property (weak, nonatomic) IBOutlet UILabel * roundRoadLabel;
|
||||
@property (weak, nonatomic) IBOutlet UILabel * streetLabel;
|
||||
@property (weak, nonatomic) IBOutlet UIButton * soundButton;
|
||||
@property (weak, nonatomic) IBOutlet UISlider * progress;
|
||||
|
||||
- (void)configureWithEntity:(MWMNavigationDashboardEntity *)entity;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
|
||||
<dependencies>
|
||||
<deployment version="2048" identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/>
|
||||
|
@ -31,6 +31,7 @@
|
|||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="xLk-1L-mbP" userLabel="Cancel">
|
||||
<rect key="frame" x="6" y="6" width="44" height="44"/>
|
||||
<animations/>
|
||||
<state key="normal" image="ic_nav_bar_close_light">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
|
@ -42,7 +43,8 @@
|
|||
<rect key="frame" x="50" y="0.0" width="262" height="56"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="10 min" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="79d-Oo-yBr">
|
||||
<rect key="frame" x="104" y="18" width="53" height="21"/>
|
||||
<rect key="frame" x="104.5" y="18.5" width="52.5" height="20.5"/>
|
||||
<animations/>
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="17"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.54000000000000004" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
|
@ -52,7 +54,8 @@
|
|||
</userDefinedRuntimeAttributes>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="12:24" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="QMy-7M-aoF" userLabel="12:24">
|
||||
<rect key="frame" x="196" y="18" width="43" height="21"/>
|
||||
<rect key="frame" x="196" y="18.5" width="43" height="20.5"/>
|
||||
<animations/>
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="17"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.54000000000000004" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
|
@ -62,7 +65,8 @@
|
|||
</userDefinedRuntimeAttributes>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="10 km" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="AZa-ok-2IV">
|
||||
<rect key="frame" x="19" y="18" width="48" height="21"/>
|
||||
<rect key="frame" x="19.5" y="18.5" width="48" height="20.5"/>
|
||||
<animations/>
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="17"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.54000000000000004" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
|
@ -72,6 +76,7 @@
|
|||
</userDefinedRuntimeAttributes>
|
||||
</label>
|
||||
</subviews>
|
||||
<animations/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="centerX" secondItem="QMy-7M-aoF" secondAttribute="centerX" multiplier="3:5" id="8ys-Ye-XAu"/>
|
||||
|
@ -84,8 +89,23 @@
|
|||
<constraint firstAttribute="centerX" secondItem="AZa-ok-2IV" secondAttribute="centerX" multiplier="3:1" id="sVn-sG-v3Q"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<button opaque="NO" contentMode="scaleToFill" selected="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="aqb-lr-tzL">
|
||||
<rect key="frame" x="312" y="6" width="44" height="44"/>
|
||||
<animations/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="44" id="UqN-lJ-bXU"/>
|
||||
<constraint firstAttribute="width" constant="44" id="dIf-ht-BU5"/>
|
||||
</constraints>
|
||||
<state key="normal" image="ic_voice_off"/>
|
||||
<state key="selected" image="ic_voice_on"/>
|
||||
<state key="highlighted" image="ic_voice_off_press"/>
|
||||
<connections>
|
||||
<action selector="soundTap:" destination="-1" eventType="touchUpInside" id="aqG-hG-ebJ"/>
|
||||
</connections>
|
||||
</button>
|
||||
<slider opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="0.0" maxValue="100" translatesAutoresizingMaskIntoConstraints="NO" id="Kup-95-EXj">
|
||||
<rect key="frame" x="-3" y="42" width="366" height="31"/>
|
||||
<animations/>
|
||||
<color key="tintColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="30" id="fxr-ir-Wwz"/>
|
||||
|
@ -96,7 +116,8 @@
|
|||
<rect key="frame" x="0.0" y="58" width="360" height="128"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4si-G5-bxC">
|
||||
<rect key="frame" x="120" y="8" width="23" height="53"/>
|
||||
<rect key="frame" x="120" y="8" width="22.5" height="53"/>
|
||||
<animations/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="53" id="7ro-YL-TGI"/>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="22" id="iwD-qu-xpb"/>
|
||||
|
@ -110,7 +131,8 @@
|
|||
</userDefinedRuntimeAttributes>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="km" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9ue-Ra-INo">
|
||||
<rect key="frame" x="150" y="29" width="34" height="28"/>
|
||||
<rect key="frame" x="149.5" y="29" width="34" height="28"/>
|
||||
<animations/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="34" id="Ktk-eK-oxD"/>
|
||||
<constraint firstAttribute="height" constant="28" id="nYU-QS-ods"/>
|
||||
|
@ -125,9 +147,11 @@
|
|||
</label>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="slight_left" translatesAutoresizingMaskIntoConstraints="NO" id="t9X-xe-M4K" customClass="MWMImageView">
|
||||
<rect key="frame" x="16" y="16" width="96" height="96"/>
|
||||
<animations/>
|
||||
</imageView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oPs-Pe-p41" userLabel="exit">
|
||||
<rect key="frame" x="49" y="49" width="30" height="30"/>
|
||||
<animations/>
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue-Bold" family="Helvetica Neue" pointSize="17"/>
|
||||
<color key="textColor" red="0.12549019610000001" green="0.58823529409999997" blue="0.95294117649999999" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
|
@ -137,7 +161,8 @@
|
|||
</userDefinedRuntimeAttributes>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="top" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Овчинниковская наб." lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fV0-mJ-yGN">
|
||||
<rect key="frame" x="120" y="59" width="232" height="21"/>
|
||||
<rect key="frame" x="120" y="59" width="232" height="20.5"/>
|
||||
<animations/>
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="17"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.54000000000000004" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
|
@ -147,6 +172,7 @@
|
|||
</userDefinedRuntimeAttributes>
|
||||
</label>
|
||||
</subviews>
|
||||
<animations/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
<constraints>
|
||||
<constraint firstItem="9ue-Ra-INo" firstAttribute="leading" secondItem="4si-G5-bxC" secondAttribute="trailing" constant="7.5" id="87L-8C-oDt"/>
|
||||
|
@ -161,6 +187,7 @@
|
|||
</constraints>
|
||||
</view>
|
||||
</subviews>
|
||||
<animations/>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="Kup-95-EXj" secondAttribute="trailing" constant="-1" id="04U-qJ-FUs"/>
|
||||
|
@ -169,7 +196,9 @@
|
|||
<constraint firstItem="aSt-Xc-ReH" firstAttribute="top" secondItem="9Ou-1e-eFR" secondAttribute="top" id="Iab-dC-K0N"/>
|
||||
<constraint firstItem="Kup-95-EXj" firstAttribute="leading" secondItem="9Ou-1e-eFR" secondAttribute="leading" constant="-1" id="MVR-4t-kSn"/>
|
||||
<constraint firstItem="Zlu-3F-Lws" firstAttribute="leading" secondItem="9Ou-1e-eFR" secondAttribute="leading" id="UYi-Uv-hcL"/>
|
||||
<constraint firstItem="aqb-lr-tzL" firstAttribute="top" secondItem="9Ou-1e-eFR" secondAttribute="top" constant="6" id="VlR-rs-YMX"/>
|
||||
<constraint firstAttribute="height" constant="186" id="gxT-i0-grl"/>
|
||||
<constraint firstAttribute="trailing" secondItem="aqb-lr-tzL" secondAttribute="trailing" constant="4" id="mMx-Tx-10B"/>
|
||||
<constraint firstItem="Kup-95-EXj" firstAttribute="top" secondItem="9Ou-1e-eFR" secondAttribute="top" constant="42" id="qa0-jI-boa"/>
|
||||
<constraint firstItem="Zlu-3F-Lws" firstAttribute="top" secondItem="aSt-Xc-ReH" secondAttribute="bottom" constant="2" id="r0d-tK-79C"/>
|
||||
<constraint firstAttribute="bottom" secondItem="Zlu-3F-Lws" secondAttribute="bottom" id="uDF-PO-xXf"/>
|
||||
|
@ -190,6 +219,7 @@
|
|||
</userDefinedRuntimeAttributes>
|
||||
</view>
|
||||
</subviews>
|
||||
<animations/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
<constraints>
|
||||
<constraint firstItem="9Ou-1e-eFR" firstAttribute="top" secondItem="zx5-8Q-rUK" secondAttribute="top" id="e8M-4E-Yc5"/>
|
||||
|
@ -207,6 +237,7 @@
|
|||
<outlet property="eta" destination="79d-Oo-yBr" id="P9I-aa-8oC"/>
|
||||
<outlet property="progress" destination="Kup-95-EXj" id="hh3-qY-ll2"/>
|
||||
<outlet property="roundRoadLabel" destination="oPs-Pe-p41" id="hAe-GQ-oHd"/>
|
||||
<outlet property="soundButton" destination="aqb-lr-tzL" id="Twe-20-K3t"/>
|
||||
<outlet property="streetLabel" destination="fV0-mJ-yGN" id="bw9-9h-2dA"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="957" y="243"/>
|
||||
|
@ -214,6 +245,9 @@
|
|||
</objects>
|
||||
<resources>
|
||||
<image name="ic_nav_bar_close_light" width="44" height="44"/>
|
||||
<image name="ic_voice_off" width="44" height="44"/>
|
||||
<image name="ic_voice_off_press" width="44" height="44"/>
|
||||
<image name="ic_voice_on" width="28" height="28"/>
|
||||
<image name="slight_left" width="96" height="96"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/>
|
||||
|
@ -31,6 +31,7 @@
|
|||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="CJi-qt-H0B" userLabel="Cancel">
|
||||
<rect key="frame" x="0.0" y="0.0" width="44" height="44"/>
|
||||
<animations/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="44" id="Ok9-eV-7ac"/>
|
||||
<constraint firstAttribute="height" constant="44" id="TNH-gl-jy5"/>
|
||||
|
@ -47,6 +48,7 @@
|
|||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="10 km" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="w2P-mo-JWt">
|
||||
<rect key="frame" x="16" y="12" width="45" height="19.5"/>
|
||||
<animations/>
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="16"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.54000000000000004" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
|
@ -57,6 +59,7 @@
|
|||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="10 min" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fLt-4z-zaW">
|
||||
<rect key="frame" x="91" y="12" width="49.5" height="19.5"/>
|
||||
<animations/>
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="16"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.54000000000000004" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
|
@ -67,6 +70,7 @@
|
|||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="12:24" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yG6-pM-WjM" userLabel="12:24">
|
||||
<rect key="frame" x="172" y="12" width="40.5" height="19.5"/>
|
||||
<animations/>
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="16"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.54000000000000004" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
|
@ -76,6 +80,7 @@
|
|||
</userDefinedRuntimeAttributes>
|
||||
</label>
|
||||
</subviews>
|
||||
<animations/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="centerY" secondItem="yG6-pM-WjM" secondAttribute="centerY" id="I3I-Z7-hE1"/>
|
||||
|
@ -92,6 +97,7 @@
|
|||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Tmo-Mk-HBF" userLabel="exit">
|
||||
<rect key="frame" x="4" y="21.5" width="64" height="21"/>
|
||||
<animations/>
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue-Bold" family="Helvetica Neue" pointSize="17"/>
|
||||
<color key="textColor" red="0.12549019610000001" green="0.58823529409999997" blue="0.95294117649999999" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
|
@ -101,7 +107,8 @@
|
|||
</userDefinedRuntimeAttributes>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="w7a-mi-GxC">
|
||||
<rect key="frame" x="80" y="0.0" width="23" height="48"/>
|
||||
<rect key="frame" x="80" y="0.0" width="22.5" height="48"/>
|
||||
<animations/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="48" id="ESA-SR-dUT"/>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="20" id="ttG-eK-Cdv"/>
|
||||
|
@ -115,7 +122,8 @@
|
|||
</userDefinedRuntimeAttributes>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="km" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vQs-gj-DUL">
|
||||
<rect key="frame" x="108" y="22" width="26" height="22"/>
|
||||
<rect key="frame" x="108" y="21" width="26" height="21.5"/>
|
||||
<animations/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="26" id="JFu-EH-q55"/>
|
||||
</constraints>
|
||||
|
@ -129,6 +137,7 @@
|
|||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Овчинниковская наб." lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="FKF-bV-YL5">
|
||||
<rect key="frame" x="80" y="46" width="228" height="19"/>
|
||||
<animations/>
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="17"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.54000000000000004" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
|
@ -139,8 +148,10 @@
|
|||
</label>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="ic_direction" translatesAutoresizingMaskIntoConstraints="NO" id="vcg-Bu-8CX" customClass="MWMImageView">
|
||||
<rect key="frame" x="4" y="0.0" width="64" height="64"/>
|
||||
<animations/>
|
||||
</imageView>
|
||||
</subviews>
|
||||
<animations/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
<constraints>
|
||||
<constraint firstItem="FKF-bV-YL5" firstAttribute="top" secondItem="vQs-gj-DUL" secondAttribute="bottom" constant="3" id="Hdz-8J-buM"/>
|
||||
|
@ -156,6 +167,7 @@
|
|||
</view>
|
||||
<slider opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="50" minValue="0.0" maxValue="100" translatesAutoresizingMaskIntoConstraints="NO" id="Ik8-WE-G9H">
|
||||
<rect key="frame" x="-2" y="30" width="324" height="31"/>
|
||||
<animations/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
<color key="tintColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
<constraints>
|
||||
|
@ -164,7 +176,22 @@
|
|||
<color key="minimumTrackTintColor" red="0.0" green="0.0" blue="0.0" alpha="0.56000000000000005" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color key="maximumTrackTintColor" red="0.0" green="0.0" blue="0.0" alpha="0.080000000000000002" colorSpace="calibratedRGB"/>
|
||||
</slider>
|
||||
<button opaque="NO" contentMode="scaleToFill" selected="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="YYH-DO-DXQ">
|
||||
<rect key="frame" x="276" y="2" width="44" height="44"/>
|
||||
<animations/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="44" id="g60-zB-ibp"/>
|
||||
<constraint firstAttribute="width" constant="44" id="zOC-d6-xfc"/>
|
||||
</constraints>
|
||||
<state key="normal" image="ic_voice_off"/>
|
||||
<state key="selected" image="ic_voice_on"/>
|
||||
<state key="highlighted" image="ic_voice_off_press"/>
|
||||
<connections>
|
||||
<action selector="soundTap:" destination="-1" eventType="touchUpInside" id="mDK-P2-VpS"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<animations/>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<constraints>
|
||||
<constraint firstItem="BLc-UX-Tny" firstAttribute="top" secondItem="9t0-Kj-KTa" secondAttribute="top" id="01q-QQ-V0Z"/>
|
||||
|
@ -172,6 +199,7 @@
|
|||
<constraint firstAttribute="trailing" secondItem="Ik8-WE-G9H" secondAttribute="trailing" id="5yS-Lq-qD4"/>
|
||||
<constraint firstItem="BLc-UX-Tny" firstAttribute="leading" secondItem="CJi-qt-H0B" secondAttribute="trailing" id="DmZ-bp-xAO"/>
|
||||
<constraint firstAttribute="bottom" secondItem="Ik8-WE-G9H" secondAttribute="bottom" constant="72" id="KLJ-AI-XSH"/>
|
||||
<constraint firstAttribute="trailing" secondItem="YYH-DO-DXQ" secondAttribute="trailing" id="SYd-n9-M54"/>
|
||||
<constraint firstItem="CJi-qt-H0B" firstAttribute="top" secondItem="9t0-Kj-KTa" secondAttribute="top" id="Vjp-9R-fvx"/>
|
||||
<constraint firstAttribute="height" constant="132" id="WMw-Bg-kQl"/>
|
||||
<constraint firstItem="Ik8-WE-G9H" firstAttribute="leading" secondItem="9t0-Kj-KTa" secondAttribute="leading" id="d3u-OI-Wu8"/>
|
||||
|
@ -179,6 +207,7 @@
|
|||
<constraint firstAttribute="bottom" secondItem="8Zr-ul-QD4" secondAttribute="bottom" constant="8" id="leE-2g-Q1m"/>
|
||||
<constraint firstAttribute="centerX" secondItem="8Zr-ul-QD4" secondAttribute="centerX" id="oSW-At-b0b"/>
|
||||
<constraint firstItem="8Zr-ul-QD4" firstAttribute="top" secondItem="BLc-UX-Tny" secondAttribute="bottom" constant="11" id="od5-8S-wS0"/>
|
||||
<constraint firstItem="YYH-DO-DXQ" firstAttribute="top" secondItem="9t0-Kj-KTa" secondAttribute="top" constant="2" id="qeI-AI-qi0"/>
|
||||
<constraint firstItem="Ik8-WE-G9H" firstAttribute="top" secondItem="9t0-Kj-KTa" secondAttribute="top" constant="30" id="xRo-Yi-yYb"/>
|
||||
</constraints>
|
||||
<userDefinedRuntimeAttributes>
|
||||
|
@ -197,6 +226,7 @@
|
|||
</userDefinedRuntimeAttributes>
|
||||
</view>
|
||||
</subviews>
|
||||
<animations/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
<constraints>
|
||||
<constraint firstItem="9t0-Kj-KTa" firstAttribute="leading" secondItem="wul-fx-3xk" secondAttribute="leading" id="P5E-A4-wvE"/>
|
||||
|
@ -215,6 +245,7 @@
|
|||
<outlet property="eta" destination="fLt-4z-zaW" id="C1L-bX-xd5"/>
|
||||
<outlet property="progress" destination="Ik8-WE-G9H" id="7RN-KS-cn3"/>
|
||||
<outlet property="roundRoadLabel" destination="Tmo-Mk-HBF" id="K74-y4-vwk"/>
|
||||
<outlet property="soundButton" destination="YYH-DO-DXQ" id="Uqw-J0-sZW"/>
|
||||
<outlet property="streetLabel" destination="FKF-bV-YL5" id="tIi-aG-G0v"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="436" y="288"/>
|
||||
|
@ -223,5 +254,8 @@
|
|||
<resources>
|
||||
<image name="ic_direction" width="96" height="96"/>
|
||||
<image name="ic_nav_bar_close_light" width="44" height="44"/>
|
||||
<image name="ic_voice_off" width="44" height="44"/>
|
||||
<image name="ic_voice_off_press" width="44" height="44"/>
|
||||
<image name="ic_voice_on" width="28" height="28"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
#import "MWMAPIBar.h"
|
||||
#import "MWMMapViewControlsManager.h"
|
||||
#import "RouteState.h"
|
||||
#import "MWMTextToSpeech.h"
|
||||
#import "UIFont+MapsMeFonts.h"
|
||||
#import "UIViewController+Navigation.h"
|
||||
|
||||
|
@ -142,8 +143,9 @@ typedef NS_ENUM(NSUInteger, UserTouchesAction)
|
|||
|
||||
if (res.IsValid())
|
||||
[self.controlsManager setupRoutingDashboard:res];
|
||||
|
||||
[self.controlsManager playTurnNotifications];
|
||||
|
||||
if (frm.IsOnRoute())
|
||||
[[MWMTextToSpeech tts] playTurnNotifications];
|
||||
}
|
||||
|
||||
- (void)onCompassUpdate:(location::CompassInfo const &)info
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
#import "MapsAppDelegate.h"
|
||||
#import "MapViewController.h"
|
||||
#import "MWMAlertViewController.h"
|
||||
#import "MWMTextToSpeech.h"
|
||||
#import "MWMWatchEventInfo.h"
|
||||
#import "Preferences.h"
|
||||
#import "RouteState.h"
|
||||
|
@ -47,6 +48,8 @@ static NSString * const kBundleVersion = @"BundleVersion";
|
|||
extern string const kCountryCodeKey;
|
||||
extern string const kUniqueIdKey;
|
||||
extern string const kLanguageKey;
|
||||
extern NSString * const kUserDefaultsTTSLanguage;
|
||||
extern NSString * const kUserDafaultsNeedToEnableTTS;
|
||||
|
||||
/// Adds needed localized strings to C++ code
|
||||
/// @TODO Refactor localization mechanism to make it simpler
|
||||
|
@ -202,11 +205,14 @@ void InitLocalizedStrings()
|
|||
[self incrementSessionCount];
|
||||
[self showAlertIfRequired];
|
||||
}
|
||||
|
||||
|
||||
Framework & f = GetFramework();
|
||||
application.applicationIconBadgeNumber = f.GetCountryTree().GetActiveMapLayout().GetOutOfDateCount();
|
||||
f.GetLocationState()->InvalidatePosition();
|
||||
|
||||
[self enableTTSForTheFirstTime];
|
||||
[MWMTextToSpeech activateAudioSession];
|
||||
|
||||
return returnValue;
|
||||
}
|
||||
|
||||
|
@ -529,6 +535,17 @@ void InitLocalizedStrings()
|
|||
[RouteState remove];
|
||||
}
|
||||
|
||||
#pragma mark - TTS
|
||||
|
||||
- (void)enableTTSForTheFirstTime
|
||||
{
|
||||
NSUserDefaults * ud = [NSUserDefaults standardUserDefaults];
|
||||
if ([ud stringForKey:kUserDefaultsTTSLanguage].length)
|
||||
return;
|
||||
[ud setBool:YES forKey:kUserDafaultsNeedToEnableTTS];
|
||||
[ud synchronize];
|
||||
}
|
||||
|
||||
#pragma mark - Standby
|
||||
|
||||
- (void)enableStandby
|
||||
|
|
23
iphone/Maps/Images.xcassets/NavigationDashboard/ic_voice_off.imageset/Contents.json
vendored
Normal file
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "ic_voice_off.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "ic_voice_off@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "ic_voice_off@3x.png",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
BIN
iphone/Maps/Images.xcassets/NavigationDashboard/ic_voice_off.imageset/ic_voice_off.png
vendored
Normal file
After Width: | Height: | Size: 507 B |
BIN
iphone/Maps/Images.xcassets/NavigationDashboard/ic_voice_off.imageset/ic_voice_off@2x.png
vendored
Normal file
After Width: | Height: | Size: 968 B |
BIN
iphone/Maps/Images.xcassets/NavigationDashboard/ic_voice_off.imageset/ic_voice_off@3x.png
vendored
Normal file
After Width: | Height: | Size: 1.5 KiB |
23
iphone/Maps/Images.xcassets/NavigationDashboard/ic_voice_off_press.imageset/Contents.json
vendored
Normal file
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "ic_voice_off_press.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "ic_voice_off_press@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "ic_voice_off_press@3x.png",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
BIN
iphone/Maps/Images.xcassets/NavigationDashboard/ic_voice_off_press.imageset/ic_voice_off_press.png
vendored
Normal file
After Width: | Height: | Size: 469 B |
After Width: | Height: | Size: 888 B |
After Width: | Height: | Size: 1.4 KiB |
23
iphone/Maps/Images.xcassets/NavigationDashboard/ic_voice_on.imageset/Contents.json
vendored
Normal file
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "ic_voice_on.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "ic_voice_on@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "ic_voice_on@3x.png",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
BIN
iphone/Maps/Images.xcassets/NavigationDashboard/ic_voice_on.imageset/ic_voice_on.png
vendored
Normal file
After Width: | Height: | Size: 731 B |
BIN
iphone/Maps/Images.xcassets/NavigationDashboard/ic_voice_on.imageset/ic_voice_on@2x.png
vendored
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
iphone/Maps/Images.xcassets/NavigationDashboard/ic_voice_on.imageset/ic_voice_on@3x.png
vendored
Normal file
After Width: | Height: | Size: 2.2 KiB |
5
iphone/Maps/MWMTTSLanguageViewController.h
Normal file
|
@ -0,0 +1,5 @@
|
|||
#import "TableViewController.h"
|
||||
|
||||
@interface MWMTTSLanguageViewController : TableViewController
|
||||
|
||||
@end
|
39
iphone/Maps/MWMTTSLanguageViewController.mm
Normal file
|
@ -0,0 +1,39 @@
|
|||
#import "MWMTextToSpeech.h"
|
||||
#import "MWMTTSLanguageViewController.h"
|
||||
#import "MWMTTSSettingsViewController.h"
|
||||
#import "SelectableCell.h"
|
||||
|
||||
static NSString * const kUnwingSegueIdentifier = @"UnwindToTTSSettings";
|
||||
|
||||
@implementation MWMTTSLanguageViewController
|
||||
|
||||
- (void)viewDidLoad
|
||||
{
|
||||
[super viewDidLoad];
|
||||
self.title = L(@"pref_tts_other_section_title");
|
||||
}
|
||||
|
||||
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(SelectableCell *)sender
|
||||
{
|
||||
if (![segue.identifier isEqualToString:kUnwingSegueIdentifier])
|
||||
return;
|
||||
MWMTTSSettingsViewController * dest = segue.destinationViewController;
|
||||
NSUInteger const row = [self.tableView indexPathForCell:sender].row;
|
||||
[dest setAdditionalTTSLanguage:[[MWMTextToSpeech tts] availableLanguages][row]];
|
||||
}
|
||||
|
||||
#pragma mark - UITableViewDataSource && UITableViewDelegate
|
||||
|
||||
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
|
||||
{
|
||||
return [[MWMTextToSpeech tts] availableLanguages].size();
|
||||
}
|
||||
|
||||
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
|
||||
{
|
||||
SelectableCell * cell = (SelectableCell *)[tableView dequeueReusableCellWithIdentifier:[SelectableCell className]];
|
||||
cell.titleLabel.text = @([[MWMTextToSpeech tts] availableLanguages][indexPath.row].second.c_str());
|
||||
return cell;
|
||||
}
|
||||
|
||||
@end
|
7
iphone/Maps/MWMTTSSettingsViewController.h
Normal file
|
@ -0,0 +1,7 @@
|
|||
#import "TableViewController.h"
|
||||
|
||||
@interface MWMTTSSettingsViewController : TableViewController
|
||||
|
||||
- (void)setAdditionalTTSLanguage:(std::pair<string, string> const &)l;
|
||||
|
||||
@end
|
135
iphone/Maps/MWMTTSSettingsViewController.mm
Normal file
|
@ -0,0 +1,135 @@
|
|||
#import <AVFoundation/AVFoundation.h>
|
||||
#import "LinkCell.h"
|
||||
#import "MWMTextToSpeech.h"
|
||||
#import "MWMTTSSettingsViewController.h"
|
||||
#import "SelectableCell.h"
|
||||
|
||||
static NSString * kSelectTTSLanguageSegueName = @"TTSLanguage";
|
||||
|
||||
using namespace std;
|
||||
|
||||
@interface MWMTTSSettingsViewController ()
|
||||
{
|
||||
pair<string, string> _additionalTTSLanguage;
|
||||
vector<pair<string, string>> _languages;
|
||||
}
|
||||
|
||||
@property (nonatomic) BOOL isLocaleLanguageAbsent;
|
||||
|
||||
@end
|
||||
|
||||
@implementation MWMTTSSettingsViewController
|
||||
|
||||
- (void)viewDidLoad
|
||||
{
|
||||
[super viewDidLoad];
|
||||
self.title = L(@"pref_tts_language_title");
|
||||
MWMTextToSpeech * tts = [MWMTextToSpeech tts];
|
||||
|
||||
_languages.reserve(3);
|
||||
auto const & v = tts.availableLanguages;
|
||||
NSAssert(!v.empty(), @"Vector can't be empty!");
|
||||
pair<string, string> const standart = v.front();
|
||||
_languages.push_back(standart);
|
||||
|
||||
using namespace tts;
|
||||
string const current = bcp47ToTwineLanguage([AVSpeechSynthesisVoice currentLanguageCode]);
|
||||
if (current != standart.first && !current.empty())
|
||||
{
|
||||
string const translated = translatedTwine(current);
|
||||
pair<string, string> const cur {current, translated};
|
||||
if (translated.empty() || find(v.begin(), v.end(), cur) != v.end())
|
||||
_languages.push_back(cur);
|
||||
else
|
||||
self.isLocaleLanguageAbsent = YES;
|
||||
}
|
||||
string const savedLanguage = tts.savedLanguage.UTF8String;
|
||||
if (savedLanguage != current && savedLanguage != standart.first && !savedLanguage.empty())
|
||||
_languages.push_back({savedLanguage, translatedTwine(savedLanguage)});
|
||||
}
|
||||
|
||||
- (IBAction)unwind:(id)sender
|
||||
{
|
||||
size_t const size = _languages.size();
|
||||
switch (size)
|
||||
{
|
||||
case 1:
|
||||
_languages.push_back(_additionalTTSLanguage);
|
||||
break;
|
||||
case 2:
|
||||
if (self.isLocaleLanguageAbsent)
|
||||
_languages[size - 1] = _additionalTTSLanguage;
|
||||
else
|
||||
_languages.push_back(_additionalTTSLanguage);
|
||||
break;
|
||||
case 3:
|
||||
_languages[size - 1] = _additionalTTSLanguage;
|
||||
break;
|
||||
default:
|
||||
NSAssert(false, @"Incorrect language's count");
|
||||
break;
|
||||
}
|
||||
[self.tableView reloadData];
|
||||
}
|
||||
|
||||
- (void)setAdditionalTTSLanguage:(pair<string, string> const &)l
|
||||
{
|
||||
[[MWMTextToSpeech tts] setNotificationsLocale:@(l.first.c_str())];
|
||||
_additionalTTSLanguage = l;
|
||||
}
|
||||
|
||||
#pragma mark - UITableViewDataSource
|
||||
|
||||
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
|
||||
{
|
||||
if (section == 0)
|
||||
return _languages.size() + 1;
|
||||
else
|
||||
return 1;
|
||||
}
|
||||
|
||||
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
|
||||
{
|
||||
if (indexPath.section == 0 && indexPath.row != _languages.size())
|
||||
{
|
||||
SelectableCell * cell = (SelectableCell *)[tableView dequeueReusableCellWithIdentifier:[SelectableCell className]];
|
||||
pair<string, string> const p = _languages[indexPath.row];
|
||||
cell.titleLabel.text = @(p.second.c_str());
|
||||
BOOL const isSelected = [@(p.first.c_str()) isEqualToString:[[MWMTextToSpeech tts] savedLanguage]];
|
||||
cell.accessoryType = isSelected ? UITableViewCellAccessoryCheckmark : UITableViewCellAccessoryNone;
|
||||
return cell;
|
||||
}
|
||||
else
|
||||
{
|
||||
LinkCell * cell = (LinkCell *)[tableView dequeueReusableCellWithIdentifier:[LinkCell className]];
|
||||
cell.titleLabel.text = indexPath.section == 0 ? L(@"pref_tts_other_section_title") : L(@"pref_tts_how_to_set_up_voice");
|
||||
return cell;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
|
||||
{
|
||||
if (indexPath.section == 0)
|
||||
{
|
||||
if (indexPath.row == _languages.size())
|
||||
{
|
||||
[self performSegueWithIdentifier:kSelectTTSLanguageSegueName sender:nil];
|
||||
}
|
||||
else
|
||||
{
|
||||
[[MWMTextToSpeech tts] setNotificationsLocale:@(_languages[indexPath.row].first.c_str())];
|
||||
[tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationFade];
|
||||
}
|
||||
}
|
||||
#warning need to add help
|
||||
// else
|
||||
// {
|
||||
// }
|
||||
}
|
||||
|
||||
@end
|
|
@ -243,6 +243,7 @@
|
|||
F63732961AE9431E00A03764 /* MWMBasePlacePageView.mm in Sources */ = {isa = PBXBuildFile; fileRef = F63732951AE9431E00A03764 /* MWMBasePlacePageView.mm */; };
|
||||
F63774E71B59375E00BCF54D /* MWMRoutingDisclaimerAlert.xib in Resources */ = {isa = PBXBuildFile; fileRef = F63774E61B59375E00BCF54D /* MWMRoutingDisclaimerAlert.xib */; };
|
||||
F63774EA1B59376F00BCF54D /* MWMRoutingDisclaimerAlert.mm in Sources */ = {isa = PBXBuildFile; fileRef = F63774E91B59376F00BCF54D /* MWMRoutingDisclaimerAlert.mm */; };
|
||||
F63BA3711BCD5B520044C504 /* MWMTTSLanguageViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = F63BA3701BCD5B520044C504 /* MWMTTSLanguageViewController.mm */; };
|
||||
F64A37D01B9EE24C00180464 /* MWMRouteHelperPanelsDrawer.mm in Sources */ = {isa = PBXBuildFile; fileRef = F64A37CF1B9EE24C00180464 /* MWMRouteHelperPanelsDrawer.mm */; };
|
||||
F64F19991AB81A00006EAF7E /* MWMAlertViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = F64F19821AB81A00006EAF7E /* MWMAlertViewController.mm */; };
|
||||
F64F199A1AB81A00006EAF7E /* MWMAlertViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = F64F19831AB81A00006EAF7E /* MWMAlertViewController.xib */; };
|
||||
|
@ -263,6 +264,7 @@
|
|||
F6588E371B15D87A00EE1E58 /* MWMBookmarkColorCell.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6588E351B15D87A00EE1E58 /* MWMBookmarkColorCell.mm */; };
|
||||
F6588E381B15D87A00EE1E58 /* MWMBookmarkColorCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6588E361B15D87A00EE1E58 /* MWMBookmarkColorCell.xib */; };
|
||||
F6671C6B1BA2EFD500548008 /* libFlurry_7.1.0.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F6671C6A1BA2EFD500548008 /* libFlurry_7.1.0.a */; };
|
||||
F668F6561BCD4507002D6FFC /* MWMTTSSettingsViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = F668F6551BCD4507002D6FFC /* MWMTTSSettingsViewController.mm */; };
|
||||
F66A8FA81B09F052001B9C97 /* MWMiPhoneLandscapePlacePage.mm in Sources */ = {isa = PBXBuildFile; fileRef = F66A8FA71B09F052001B9C97 /* MWMiPhoneLandscapePlacePage.mm */; };
|
||||
F66A8FAC1B09F137001B9C97 /* MWMiPadPlacePage.mm in Sources */ = {isa = PBXBuildFile; fileRef = F66A8FAB1B09F137001B9C97 /* MWMiPadPlacePage.mm */; };
|
||||
F66A8FB01B09F268001B9C97 /* MWMPlacePage.mm in Sources */ = {isa = PBXBuildFile; fileRef = F66A8FAF1B09F268001B9C97 /* MWMPlacePage.mm */; };
|
||||
|
@ -729,6 +731,8 @@
|
|||
F63774E61B59375E00BCF54D /* MWMRoutingDisclaimerAlert.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMRoutingDisclaimerAlert.xib; sourceTree = "<group>"; };
|
||||
F63774E81B59376F00BCF54D /* MWMRoutingDisclaimerAlert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMRoutingDisclaimerAlert.h; sourceTree = "<group>"; };
|
||||
F63774E91B59376F00BCF54D /* MWMRoutingDisclaimerAlert.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMRoutingDisclaimerAlert.mm; sourceTree = "<group>"; };
|
||||
F63BA36F1BCD5B520044C504 /* MWMTTSLanguageViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMTTSLanguageViewController.h; sourceTree = "<group>"; };
|
||||
F63BA3701BCD5B520044C504 /* MWMTTSLanguageViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMTTSLanguageViewController.mm; sourceTree = "<group>"; };
|
||||
F63BA3721BCE6F770044C504 /* MWMRoutePoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MWMRoutePoint.h; path = APIBar/MWMRoutePoint.h; sourceTree = "<group>"; };
|
||||
F63BA3731BCE70D60044C504 /* MWMRoutingProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMRoutingProtocol.h; sourceTree = "<group>"; };
|
||||
F64A37CE1B9EE24C00180464 /* MWMRouteHelperPanelsDrawer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMRouteHelperPanelsDrawer.h; sourceTree = "<group>"; };
|
||||
|
@ -763,6 +767,8 @@
|
|||
F6588E351B15D87A00EE1E58 /* MWMBookmarkColorCell.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMBookmarkColorCell.mm; sourceTree = "<group>"; };
|
||||
F6588E361B15D87A00EE1E58 /* MWMBookmarkColorCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMBookmarkColorCell.xib; sourceTree = "<group>"; };
|
||||
F6671C6A1BA2EFD500548008 /* libFlurry_7.1.0.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libFlurry_7.1.0.a; path = Statistics/libFlurry_7.1.0.a; sourceTree = "<group>"; };
|
||||
F668F6541BCD4507002D6FFC /* MWMTTSSettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMTTSSettingsViewController.h; sourceTree = "<group>"; };
|
||||
F668F6551BCD4507002D6FFC /* MWMTTSSettingsViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMTTSSettingsViewController.mm; sourceTree = "<group>"; };
|
||||
F66A8FA61B09F052001B9C97 /* MWMiPhoneLandscapePlacePage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMiPhoneLandscapePlacePage.h; sourceTree = "<group>"; };
|
||||
F66A8FA71B09F052001B9C97 /* MWMiPhoneLandscapePlacePage.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMiPhoneLandscapePlacePage.mm; sourceTree = "<group>"; };
|
||||
F66A8FAA1B09F137001B9C97 /* MWMiPadPlacePage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMiPadPlacePage.h; sourceTree = "<group>"; };
|
||||
|
@ -2138,6 +2144,10 @@
|
|||
978F924D183BB5D6000D6C7C /* Cells */,
|
||||
978F923F183B660F000D6C7C /* SettingsViewController.h */,
|
||||
978F9239183B660F000D6C7C /* SettingsViewController.mm */,
|
||||
F668F6541BCD4507002D6FFC /* MWMTTSSettingsViewController.h */,
|
||||
F668F6551BCD4507002D6FFC /* MWMTTSSettingsViewController.mm */,
|
||||
F63BA36F1BCD5B520044C504 /* MWMTTSLanguageViewController.h */,
|
||||
F63BA3701BCD5B520044C504 /* MWMTTSLanguageViewController.mm */,
|
||||
97508421199522D300A7457D /* SettingsAndMoreVC.h */,
|
||||
97508422199522D300A7457D /* SettingsAndMoreVC.mm */,
|
||||
978D4A231996B0EC00D72CA7 /* CommunityVC.h */,
|
||||
|
@ -2542,6 +2552,7 @@
|
|||
349A35851B53E967009677EE /* MWMDownloadMapRequestView.mm in Sources */,
|
||||
F64F19991AB81A00006EAF7E /* MWMAlertViewController.mm in Sources */,
|
||||
FAFCB63613366E78001A5C59 /* WebViewController.mm in Sources */,
|
||||
F63BA3711BCD5B520044C504 /* MWMTTSLanguageViewController.mm in Sources */,
|
||||
F6FE2C0F1B03A006009814AA /* MWMPlacePageNavigationBar.mm in Sources */,
|
||||
F64A37D01B9EE24C00180464 /* MWMRouteHelperPanelsDrawer.mm in Sources */,
|
||||
340F24631B14910500F874CD /* RouteState.mm in Sources */,
|
||||
|
@ -2574,6 +2585,7 @@
|
|||
340E10601B944DAB00D975D5 /* MWMSearchHistoryManager.mm in Sources */,
|
||||
F6DBF9B61AA8779300F2EC2C /* CALayer+RuntimeAttributes.mm in Sources */,
|
||||
FA36B80D15403A4F004560CC /* BookmarksVC.mm in Sources */,
|
||||
F668F6561BCD4507002D6FFC /* MWMTTSSettingsViewController.mm in Sources */,
|
||||
F6ED135B1B18AA930095C6DE /* MWMExtendedPlacePageView.mm in Sources */,
|
||||
34B16C451B72655D000D3A0D /* MWMPedestrianShareAlert.mm in Sources */,
|
||||
347BAC6E1B736BA70010FF78 /* MWMSharePedestrianRoutesToastActivityItem.mm in Sources */,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="14F27" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="Wns-nH-AQU">
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="Wns-nH-AQU">
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/>
|
||||
|
@ -17,6 +17,7 @@
|
|||
<view key="view" clearsContextBeforeDrawing="NO" multipleTouchEnabled="YES" contentMode="scaleToFill" id="USG-6L-Uhw" customClass="EAGLView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<animations/>
|
||||
<color key="backgroundColor" red="0.8666666666666667" green="0.8666666666666667" blue="0.80000000000000004" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</view>
|
||||
<navigationItem key="navigationItem" id="8E8-0f-UV9"/>
|
||||
|
@ -33,6 +34,7 @@
|
|||
<navigationBar key="navigationBar" contentMode="scaleToFill" id="OK2-RC-YDq">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<animations/>
|
||||
</navigationBar>
|
||||
<nil name="viewControllers"/>
|
||||
<connections>
|
||||
|
@ -50,7 +52,8 @@
|
|||
<tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="10" sectionFooterHeight="10" id="zyF-i7-Uoj">
|
||||
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<animations/>
|
||||
<color key="backgroundColor" red="0.96078431372549022" green="0.96078431372549022" blue="0.95686274509803915" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<prototypes>
|
||||
<tableViewCell contentMode="scaleToFill" selectionStyle="default" accessoryType="checkmark" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="SelectableCell" id="6zO-4O-plh" customClass="SelectableCell">
|
||||
<rect key="frame" x="0.0" y="113.5" width="600" height="44"/>
|
||||
|
@ -61,11 +64,13 @@
|
|||
<subviews>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Metrics" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fhF-kM-tcR">
|
||||
<rect key="frame" x="16" y="11" width="477" height="21"/>
|
||||
<animations/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<animations/>
|
||||
<constraints>
|
||||
<constraint firstItem="fhF-kM-tcR" firstAttribute="leading" secondItem="9W6-2l-MFB" secondAttribute="leadingMargin" constant="8" id="9dS-im-XYl"/>
|
||||
<constraint firstItem="fhF-kM-tcR" firstAttribute="top" secondItem="9W6-2l-MFB" secondAttribute="topMargin" constant="3" id="JIL-dK-S7R"/>
|
||||
|
@ -73,6 +78,7 @@
|
|||
<constraint firstAttribute="trailingMargin" secondItem="fhF-kM-tcR" secondAttribute="trailing" constant="60" id="u5b-BA-GNg"/>
|
||||
</constraints>
|
||||
</tableViewCellContentView>
|
||||
<animations/>
|
||||
<connections>
|
||||
<outlet property="titleLabel" destination="fhF-kM-tcR" id="ivW-qB-zd1"/>
|
||||
</connections>
|
||||
|
@ -86,6 +92,7 @@
|
|||
<subviews>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Statistics" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HGH-S1-QeY">
|
||||
<rect key="frame" x="16" y="11" width="462" height="21"/>
|
||||
<animations/>
|
||||
<inset key="insetFor6xAndEarlier" minX="0.0" minY="0.0" maxX="-25" maxY="0.0"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
|
||||
|
@ -93,6 +100,7 @@
|
|||
</label>
|
||||
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="up5-BH-6Ii">
|
||||
<rect key="frame" x="538" y="6.5" width="51" height="31"/>
|
||||
<animations/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="31" id="o1b-KZ-fJq"/>
|
||||
<constraint firstAttribute="width" constant="49" id="uJQ-7d-3iY"/>
|
||||
|
@ -101,6 +109,7 @@
|
|||
<color key="onTintColor" red="0.11764705882352941" green="0.58823529411764708" blue="0.94117647058823528" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</switch>
|
||||
</subviews>
|
||||
<animations/>
|
||||
<constraints>
|
||||
<constraint firstItem="up5-BH-6Ii" firstAttribute="leading" secondItem="HGH-S1-QeY" secondAttribute="trailing" constant="60" id="NGB-9m-bOa"/>
|
||||
<constraint firstAttribute="trailingMargin" secondItem="up5-BH-6Ii" secondAttribute="trailing" constant="5" id="QWk-8C-bAG"/>
|
||||
|
@ -110,6 +119,7 @@
|
|||
<constraint firstItem="up5-BH-6Ii" firstAttribute="top" secondItem="egv-pz-GkJ" secondAttribute="topMargin" constant="-1.5" id="nQx-6e-sWH"/>
|
||||
</constraints>
|
||||
</tableViewCellContentView>
|
||||
<animations/>
|
||||
<connections>
|
||||
<outlet property="switchButton" destination="up5-BH-6Ii" id="P6t-pI-JJm"/>
|
||||
<outlet property="titleLabel" destination="HGH-S1-QeY" id="QBW-d4-TKD"/>
|
||||
|
@ -124,11 +134,13 @@
|
|||
<subviews>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="About" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="8jb-wX-P4h">
|
||||
<rect key="frame" x="16" y="11" width="483" height="21"/>
|
||||
<animations/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<animations/>
|
||||
<constraints>
|
||||
<constraint firstItem="8jb-wX-P4h" firstAttribute="top" secondItem="MYm-HI-oOR" secondAttribute="topMargin" constant="3" id="8Jt-on-XAZ"/>
|
||||
<constraint firstItem="8jb-wX-P4h" firstAttribute="leading" secondItem="MYm-HI-oOR" secondAttribute="leadingMargin" constant="8" id="Zy7-xE-yIy"/>
|
||||
|
@ -136,8 +148,10 @@
|
|||
<constraint firstAttribute="bottomMargin" secondItem="8jb-wX-P4h" secondAttribute="bottom" constant="3.5" id="ox3-NV-T2v"/>
|
||||
</constraints>
|
||||
</tableViewCellContentView>
|
||||
<animations/>
|
||||
<connections>
|
||||
<outlet property="titleLabel" destination="8jb-wX-P4h" id="swZ-rt-c36"/>
|
||||
<segue destination="XDU-iY-yV9" kind="show" id="6P4-k0-wZ3"/>
|
||||
</connections>
|
||||
</tableViewCell>
|
||||
</prototypes>
|
||||
|
@ -154,5 +168,149 @@
|
|||
</objects>
|
||||
<point key="canvasLocation" x="1143" y="-338"/>
|
||||
</scene>
|
||||
<!--Settings View Controller-->
|
||||
<scene sceneID="9aS-r5-1zA">
|
||||
<objects>
|
||||
<tableViewController id="XDU-iY-yV9" customClass="MWMTTSSettingsViewController" sceneMemberID="viewController">
|
||||
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="18" sectionFooterHeight="18" id="UXT-6R-4is">
|
||||
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<animations/>
|
||||
<color key="backgroundColor" red="0.96078431372549022" green="0.96078431372549022" blue="0.96078431372549022" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<prototypes>
|
||||
<tableViewCell contentMode="scaleToFill" selectionStyle="default" accessoryType="checkmark" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="SelectableCell" id="79I-kz-hl4" customClass="SelectableCell">
|
||||
<rect key="frame" x="0.0" y="113.5" width="600" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="79I-kz-hl4" id="gBB-ji-big">
|
||||
<rect key="frame" x="0.0" y="0.0" width="561" height="43.5"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Русский" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="FSn-fP-n3e">
|
||||
<rect key="frame" x="16" y="11" width="477" height="21"/>
|
||||
<animations/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackPrimaryText"/>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular17"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</label>
|
||||
</subviews>
|
||||
<animations/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="bottomMargin" secondItem="FSn-fP-n3e" secondAttribute="bottom" constant="3.5" id="0gT-qS-OJP"/>
|
||||
<constraint firstAttribute="trailingMargin" secondItem="FSn-fP-n3e" secondAttribute="trailing" constant="60" id="9tn-Wo-rsJ"/>
|
||||
<constraint firstItem="FSn-fP-n3e" firstAttribute="top" secondItem="gBB-ji-big" secondAttribute="topMargin" constant="3" id="DiX-RQ-foa"/>
|
||||
<constraint firstItem="FSn-fP-n3e" firstAttribute="leading" secondItem="gBB-ji-big" secondAttribute="leadingMargin" constant="8" id="KXd-hd-5in"/>
|
||||
</constraints>
|
||||
</tableViewCellContentView>
|
||||
<animations/>
|
||||
<connections>
|
||||
<outlet property="titleLabel" destination="FSn-fP-n3e" id="CKZ-Gb-7Wa"/>
|
||||
</connections>
|
||||
</tableViewCell>
|
||||
<tableViewCell contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="LinkCell" id="lO6-zb-qb8" customClass="LinkCell">
|
||||
<rect key="frame" x="0.0" y="157.5" width="600" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="lO6-zb-qb8" id="35k-Nb-XSD">
|
||||
<rect key="frame" x="0.0" y="0.0" width="567" height="43.5"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Other" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="arm-Sx-diY">
|
||||
<rect key="frame" x="16" y="11" width="483" height="21"/>
|
||||
<animations/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackPrimaryText"/>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular17"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</label>
|
||||
</subviews>
|
||||
<animations/>
|
||||
<constraints>
|
||||
<constraint firstItem="arm-Sx-diY" firstAttribute="leading" secondItem="35k-Nb-XSD" secondAttribute="leadingMargin" constant="8" id="8xX-eo-OZI"/>
|
||||
<constraint firstItem="arm-Sx-diY" firstAttribute="top" secondItem="35k-Nb-XSD" secondAttribute="topMargin" constant="3" id="9Jx-Qg-8qw"/>
|
||||
<constraint firstAttribute="bottomMargin" secondItem="arm-Sx-diY" secondAttribute="bottom" constant="3.5" id="WH3-ny-wEN"/>
|
||||
<constraint firstAttribute="trailingMargin" secondItem="arm-Sx-diY" secondAttribute="trailing" constant="60" id="xT2-p0-snO"/>
|
||||
</constraints>
|
||||
</tableViewCellContentView>
|
||||
<animations/>
|
||||
<connections>
|
||||
<outlet property="titleLabel" destination="arm-Sx-diY" id="yow-av-5HT"/>
|
||||
</connections>
|
||||
</tableViewCell>
|
||||
</prototypes>
|
||||
<sections/>
|
||||
<connections>
|
||||
<outlet property="dataSource" destination="XDU-iY-yV9" id="gTR-kW-qWB"/>
|
||||
<outlet property="delegate" destination="XDU-iY-yV9" id="jFV-ti-w00"/>
|
||||
</connections>
|
||||
</tableView>
|
||||
<connections>
|
||||
<segue destination="13e-Bs-Dwh" kind="show" identifier="TTSLanguage" id="Shk-sp-8OS"/>
|
||||
</connections>
|
||||
</tableViewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="374-fn-hNn" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="1881" y="-338"/>
|
||||
</scene>
|
||||
<!--Language View Controller-->
|
||||
<scene sceneID="Fml-K3-2gi">
|
||||
<objects>
|
||||
<tableViewController id="13e-Bs-Dwh" customClass="MWMTTSLanguageViewController" sceneMemberID="viewController">
|
||||
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="18" sectionFooterHeight="18" id="3eG-G0-XZP">
|
||||
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<animations/>
|
||||
<color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
|
||||
<prototypes>
|
||||
<tableViewCell contentMode="scaleToFill" selectionStyle="default" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="SelectableCell" id="6Px-TO-sMc" customClass="SelectableCell">
|
||||
<rect key="frame" x="0.0" y="113.5" width="600" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="6Px-TO-sMc" id="aqp-aV-B3y">
|
||||
<rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Русский" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wBg-nH-SXL">
|
||||
<rect key="frame" x="16" y="11" width="516" height="21"/>
|
||||
<animations/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="colorName" value="blackPrimaryText"/>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="fontName" value="regular17"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</label>
|
||||
</subviews>
|
||||
<animations/>
|
||||
<constraints>
|
||||
<constraint firstItem="wBg-nH-SXL" firstAttribute="top" secondItem="aqp-aV-B3y" secondAttribute="topMargin" constant="3" id="2dD-fi-Iy3"/>
|
||||
<constraint firstItem="wBg-nH-SXL" firstAttribute="leading" secondItem="aqp-aV-B3y" secondAttribute="leadingMargin" constant="8" id="C97-Rv-8b2"/>
|
||||
<constraint firstAttribute="trailingMargin" secondItem="wBg-nH-SXL" secondAttribute="trailing" constant="60" id="jJO-v9-RNP"/>
|
||||
<constraint firstAttribute="bottomMargin" secondItem="wBg-nH-SXL" secondAttribute="bottom" constant="3.5" id="yh9-ce-ftK"/>
|
||||
</constraints>
|
||||
</tableViewCellContentView>
|
||||
<animations/>
|
||||
<connections>
|
||||
<outlet property="titleLabel" destination="wBg-nH-SXL" id="MCZ-tX-MGv"/>
|
||||
<segue destination="SWt-Am-yp4" kind="unwind" identifier="UnwindToTTSSettings" unwindAction="unwind:" id="bpg-7g-3lb"/>
|
||||
</connections>
|
||||
</tableViewCell>
|
||||
</prototypes>
|
||||
<connections>
|
||||
<outlet property="dataSource" destination="13e-Bs-Dwh" id="usg-YD-GvD"/>
|
||||
<outlet property="delegate" destination="13e-Bs-Dwh" id="yy5-Cx-ZaD"/>
|
||||
</connections>
|
||||
</tableView>
|
||||
</tableViewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="qSX-mz-m27" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
<exit id="SWt-Am-yp4" userLabel="Exit" sceneMemberID="exit"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="2577" y="-338"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
</document>
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
|
||||
#import "SettingsViewController.h"
|
||||
#import "SwitchCell.h"
|
||||
#import "MapsAppDelegate.h"
|
||||
#import "MapViewController.h"
|
||||
#import "MWMMapViewControlsManager.h"
|
||||
#import "MWMTextToSpeech.h"
|
||||
#import "SelectableCell.h"
|
||||
#import "SettingsViewController.h"
|
||||
#import "Statistics.h"
|
||||
#import "SwitchCell.h"
|
||||
#import "LinkCell.h"
|
||||
#import "WebViewController.h"
|
||||
#import "MapViewController.h"
|
||||
#import "MapsAppDelegate.h"
|
||||
#import "Statistics.h"
|
||||
#import "MWMMapViewControlsManager.h"
|
||||
|
||||
#include "Framework.h"
|
||||
|
||||
|
@ -16,14 +16,16 @@
|
|||
#include "platform/preferred_languages.hpp"
|
||||
|
||||
extern char const * kStatisticsEnabledSettingsKey;
|
||||
extern NSString * const kTTSStatusWasChangedNotification = @"TTFStatusWasChangedFromSettingsNotification";
|
||||
|
||||
typedef NS_ENUM(NSUInteger, Section)
|
||||
{
|
||||
SectionMetrics,
|
||||
SectionZoomButtons,
|
||||
SectionRouting,
|
||||
SectionCalibration,
|
||||
SectionStatistics,
|
||||
SectionCount
|
||||
SectionCount // Must be the latest value!
|
||||
};
|
||||
|
||||
@interface SettingsViewController () <SwitchCellDelegate>
|
||||
|
@ -60,7 +62,7 @@ typedef NS_ENUM(NSUInteger, Section)
|
|||
|
||||
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
|
||||
{
|
||||
if (section == SectionMetrics)
|
||||
if (section == SectionMetrics || section == SectionRouting)
|
||||
return 2;
|
||||
else
|
||||
return 1;
|
||||
|
@ -110,7 +112,23 @@ typedef NS_ENUM(NSUInteger, Section)
|
|||
customCell.titleLabel.text = L(@"pref_calibration_title");
|
||||
customCell.delegate = self;
|
||||
}
|
||||
|
||||
else if (indexPath.section == SectionRouting)
|
||||
{
|
||||
if (indexPath.row == 0)
|
||||
{
|
||||
cell = [tableView dequeueReusableCellWithIdentifier:[SwitchCell className]];
|
||||
SwitchCell * customCell = (SwitchCell *)cell;
|
||||
customCell.switchButton.on = [[MWMTextToSpeech tts] isNeedToEnable];
|
||||
customCell.titleLabel.text = L(@"pref_tts_enable_title");
|
||||
customCell.delegate = self;
|
||||
}
|
||||
else
|
||||
{
|
||||
cell = [tableView dequeueReusableCellWithIdentifier:[LinkCell className]];
|
||||
LinkCell * customCell = (LinkCell *)cell;
|
||||
customCell.titleLabel.text = L(@"pref_tts_language_title");
|
||||
}
|
||||
}
|
||||
return cell;
|
||||
}
|
||||
|
||||
|
@ -144,6 +162,13 @@ typedef NS_ENUM(NSUInteger, Section)
|
|||
{
|
||||
Settings::Set("CompassCalibrationEnabled", (bool)value);
|
||||
}
|
||||
else if (indexPath.section == SectionRouting)
|
||||
{
|
||||
[[MWMTextToSpeech tts] setNeedToEnable:value];
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:kTTSStatusWasChangedNotification
|
||||
object:nil
|
||||
userInfo:@{@"on" : @(value)}];
|
||||
}
|
||||
}
|
||||
|
||||
Settings::Units unitsForIndex(NSInteger index)
|
||||
|
@ -166,6 +191,8 @@ Settings::Units unitsForIndex(NSInteger index)
|
|||
{
|
||||
if (section == SectionMetrics)
|
||||
return L(@"measurement_units");
|
||||
else if (section == SectionRouting)
|
||||
return L(@"prefs_group_route");
|
||||
else
|
||||
return nil;
|
||||
}
|
||||
|
|
|
@ -508,6 +508,23 @@
|
|||
/* «Map style» entry value */
|
||||
"pref_map_style_modern_light" = "Modern light";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» title */
|
||||
"pref_tts_enable_title" = "Voice instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» summary */
|
||||
"pref_tts_enable_summary" = "Turn instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts language» title */
|
||||
"pref_tts_language_title" = "Voice language";
|
||||
|
||||
/* Settings «Route» category: «Tts unavailable» subtitle */
|
||||
"pref_tts_unavailable" = "TTS unavailable";
|
||||
|
||||
/* Title for "Other" section in TTS settings. */
|
||||
"pref_tts_other_section_title" = "آخر";
|
||||
|
||||
"pref_tts_how_to_set_up_voice" = "كيفية ضبط الصوت";
|
||||
|
||||
"placepage_distance" = "المسافة";
|
||||
|
||||
"placepage_coordinates" = "الإحداثيات";
|
||||
|
|
|
@ -508,6 +508,23 @@
|
|||
/* «Map style» entry value */
|
||||
"pref_map_style_modern_light" = "Modern light";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» title */
|
||||
"pref_tts_enable_title" = "Voice instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» summary */
|
||||
"pref_tts_enable_summary" = "Turn instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts language» title */
|
||||
"pref_tts_language_title" = "Voice language";
|
||||
|
||||
/* Settings «Route» category: «Tts unavailable» subtitle */
|
||||
"pref_tts_unavailable" = "TTS unavailable";
|
||||
|
||||
/* Title for "Other" section in TTS settings. */
|
||||
"pref_tts_other_section_title" = "Ostatní";
|
||||
|
||||
"pref_tts_how_to_set_up_voice" = "Jak nastavit hlas";
|
||||
|
||||
"placepage_distance" = "Vzdálenost";
|
||||
|
||||
"placepage_coordinates" = "Souřadnice";
|
||||
|
|
|
@ -508,6 +508,23 @@
|
|||
/* «Map style» entry value */
|
||||
"pref_map_style_modern_light" = "Modern light";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» title */
|
||||
"pref_tts_enable_title" = "Voice instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» summary */
|
||||
"pref_tts_enable_summary" = "Turn instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts language» title */
|
||||
"pref_tts_language_title" = "Voice language";
|
||||
|
||||
/* Settings «Route» category: «Tts unavailable» subtitle */
|
||||
"pref_tts_unavailable" = "TTS unavailable";
|
||||
|
||||
/* Title for "Other" section in TTS settings. */
|
||||
"pref_tts_other_section_title" = "Andet";
|
||||
|
||||
"pref_tts_how_to_set_up_voice" = "Sådan indstiller du tale";
|
||||
|
||||
"placepage_distance" = "Afstand";
|
||||
|
||||
"placepage_coordinates" = "Koordinater";
|
||||
|
|
|
@ -508,6 +508,23 @@
|
|||
/* «Map style» entry value */
|
||||
"pref_map_style_modern_light" = "Modern light";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» title */
|
||||
"pref_tts_enable_title" = "Voice instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» summary */
|
||||
"pref_tts_enable_summary" = "Turn instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts language» title */
|
||||
"pref_tts_language_title" = "Voice language";
|
||||
|
||||
/* Settings «Route» category: «Tts unavailable» subtitle */
|
||||
"pref_tts_unavailable" = "TTS unavailable";
|
||||
|
||||
/* Title for "Other" section in TTS settings. */
|
||||
"pref_tts_other_section_title" = "Weitere";
|
||||
|
||||
"pref_tts_how_to_set_up_voice" = "Navi-Stimme einstellen";
|
||||
|
||||
"placepage_distance" = "Distanz";
|
||||
|
||||
"placepage_coordinates" = "Koordinaten";
|
||||
|
|
|
@ -520,6 +520,11 @@
|
|||
/* Settings «Route» category: «Tts unavailable» subtitle */
|
||||
"pref_tts_unavailable" = "TTS unavailable";
|
||||
|
||||
/* Title for "Other" section in TTS settings. */
|
||||
"pref_tts_other_section_title" = "Other";
|
||||
|
||||
"pref_tts_how_to_set_up_voice" = "How to set up voice";
|
||||
|
||||
"placepage_distance" = "Distance";
|
||||
|
||||
"placepage_coordinates" = "Coordinates";
|
||||
|
|
|
@ -508,6 +508,23 @@
|
|||
/* «Map style» entry value */
|
||||
"pref_map_style_modern_light" = "Modern light";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» title */
|
||||
"pref_tts_enable_title" = "Voice instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» summary */
|
||||
"pref_tts_enable_summary" = "Turn instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts language» title */
|
||||
"pref_tts_language_title" = "Voice language";
|
||||
|
||||
/* Settings «Route» category: «Tts unavailable» subtitle */
|
||||
"pref_tts_unavailable" = "TTS unavailable";
|
||||
|
||||
/* Title for "Other" section in TTS settings. */
|
||||
"pref_tts_other_section_title" = "Otros";
|
||||
|
||||
"pref_tts_how_to_set_up_voice" = "Cómo configurar la voz";
|
||||
|
||||
"placepage_distance" = "Distancia";
|
||||
|
||||
"placepage_coordinates" = "Coordenadas";
|
||||
|
|
|
@ -508,6 +508,23 @@
|
|||
/* «Map style» entry value */
|
||||
"pref_map_style_modern_light" = "Modern light";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» title */
|
||||
"pref_tts_enable_title" = "Voice instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» summary */
|
||||
"pref_tts_enable_summary" = "Turn instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts language» title */
|
||||
"pref_tts_language_title" = "Voice language";
|
||||
|
||||
/* Settings «Route» category: «Tts unavailable» subtitle */
|
||||
"pref_tts_unavailable" = "TTS unavailable";
|
||||
|
||||
/* Title for "Other" section in TTS settings. */
|
||||
"pref_tts_other_section_title" = "Egyéb";
|
||||
|
||||
"pref_tts_how_to_set_up_voice" = "Így állítsd be a hangot";
|
||||
|
||||
"placepage_distance" = "Etäisyys";
|
||||
|
||||
"placepage_coordinates" = "Koordinaatit";
|
||||
|
|
|
@ -508,6 +508,23 @@
|
|||
/* «Map style» entry value */
|
||||
"pref_map_style_modern_light" = "Modern light";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» title */
|
||||
"pref_tts_enable_title" = "Voice instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» summary */
|
||||
"pref_tts_enable_summary" = "Turn instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts language» title */
|
||||
"pref_tts_language_title" = "Voice language";
|
||||
|
||||
/* Settings «Route» category: «Tts unavailable» subtitle */
|
||||
"pref_tts_unavailable" = "TTS unavailable";
|
||||
|
||||
/* Title for "Other" section in TTS settings. */
|
||||
"pref_tts_other_section_title" = "Autre";
|
||||
|
||||
"pref_tts_how_to_set_up_voice" = "Comment configurer la voix";
|
||||
|
||||
"placepage_distance" = "Distance";
|
||||
|
||||
"placepage_coordinates" = "Coordonnées";
|
||||
|
|
|
@ -508,6 +508,23 @@
|
|||
/* «Map style» entry value */
|
||||
"pref_map_style_modern_light" = "Modern light";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» title */
|
||||
"pref_tts_enable_title" = "Voice instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» summary */
|
||||
"pref_tts_enable_summary" = "Turn instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts language» title */
|
||||
"pref_tts_language_title" = "Voice language";
|
||||
|
||||
/* Settings «Route» category: «Tts unavailable» subtitle */
|
||||
"pref_tts_unavailable" = "TTS unavailable";
|
||||
|
||||
/* Title for "Other" section in TTS settings. */
|
||||
"pref_tts_other_section_title" = "Egyéb";
|
||||
|
||||
"pref_tts_how_to_set_up_voice" = "Így állítsd be a hangot";
|
||||
|
||||
"placepage_distance" = "Távolság";
|
||||
|
||||
"placepage_coordinates" = "Koordináták";
|
||||
|
|
|
@ -508,6 +508,23 @@
|
|||
/* «Map style» entry value */
|
||||
"pref_map_style_modern_light" = "Modern light";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» title */
|
||||
"pref_tts_enable_title" = "Voice instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» summary */
|
||||
"pref_tts_enable_summary" = "Turn instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts language» title */
|
||||
"pref_tts_language_title" = "Voice language";
|
||||
|
||||
/* Settings «Route» category: «Tts unavailable» subtitle */
|
||||
"pref_tts_unavailable" = "TTS unavailable";
|
||||
|
||||
/* Title for "Other" section in TTS settings. */
|
||||
"pref_tts_other_section_title" = "Lainnya";
|
||||
|
||||
"pref_tts_how_to_set_up_voice" = "Cara mengatur suara";
|
||||
|
||||
"placepage_distance" = "Jarak";
|
||||
|
||||
"placepage_coordinates" = "Koordinat";
|
||||
|
|
|
@ -508,6 +508,23 @@
|
|||
/* «Map style» entry value */
|
||||
"pref_map_style_modern_light" = "Modern light";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» title */
|
||||
"pref_tts_enable_title" = "Voice instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» summary */
|
||||
"pref_tts_enable_summary" = "Turn instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts language» title */
|
||||
"pref_tts_language_title" = "Voice language";
|
||||
|
||||
/* Settings «Route» category: «Tts unavailable» subtitle */
|
||||
"pref_tts_unavailable" = "TTS unavailable";
|
||||
|
||||
/* Title for "Other" section in TTS settings. */
|
||||
"pref_tts_other_section_title" = "Altro";
|
||||
|
||||
"pref_tts_how_to_set_up_voice" = "Come impostare la voce";
|
||||
|
||||
"placepage_distance" = "Distanza";
|
||||
|
||||
"placepage_coordinates" = "Coordinate";
|
||||
|
|
|
@ -508,6 +508,23 @@
|
|||
/* «Map style» entry value */
|
||||
"pref_map_style_modern_light" = "Modern light";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» title */
|
||||
"pref_tts_enable_title" = "Voice instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» summary */
|
||||
"pref_tts_enable_summary" = "Turn instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts language» title */
|
||||
"pref_tts_language_title" = "Voice language";
|
||||
|
||||
/* Settings «Route» category: «Tts unavailable» subtitle */
|
||||
"pref_tts_unavailable" = "TTS unavailable";
|
||||
|
||||
/* Title for "Other" section in TTS settings. */
|
||||
"pref_tts_other_section_title" = "その他";
|
||||
|
||||
"pref_tts_how_to_set_up_voice" = "音声設定の仕方";
|
||||
|
||||
"placepage_distance" = "距離";
|
||||
|
||||
"placepage_coordinates" = "コーディネート";
|
||||
|
|
|
@ -508,6 +508,23 @@
|
|||
/* «Map style» entry value */
|
||||
"pref_map_style_modern_light" = "Modern light";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» title */
|
||||
"pref_tts_enable_title" = "Voice instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» summary */
|
||||
"pref_tts_enable_summary" = "Turn instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts language» title */
|
||||
"pref_tts_language_title" = "Voice language";
|
||||
|
||||
/* Settings «Route» category: «Tts unavailable» subtitle */
|
||||
"pref_tts_unavailable" = "TTS unavailable";
|
||||
|
||||
/* Title for "Other" section in TTS settings. */
|
||||
"pref_tts_other_section_title" = "다른 언어";
|
||||
|
||||
"pref_tts_how_to_set_up_voice" = "음성 설정 방법";
|
||||
|
||||
"placepage_distance" = "거리";
|
||||
|
||||
"placepage_coordinates" = "좌표";
|
||||
|
|
|
@ -508,6 +508,23 @@
|
|||
/* «Map style» entry value */
|
||||
"pref_map_style_modern_light" = "Modern light";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» title */
|
||||
"pref_tts_enable_title" = "Voice instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» summary */
|
||||
"pref_tts_enable_summary" = "Turn instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts language» title */
|
||||
"pref_tts_language_title" = "Voice language";
|
||||
|
||||
/* Settings «Route» category: «Tts unavailable» subtitle */
|
||||
"pref_tts_unavailable" = "TTS unavailable";
|
||||
|
||||
/* Title for "Other" section in TTS settings. */
|
||||
"pref_tts_other_section_title" = "Andre";
|
||||
|
||||
"pref_tts_how_to_set_up_voice" = "Slik installerer du stemme";
|
||||
|
||||
"placepage_distance" = "Avstand";
|
||||
|
||||
"placepage_coordinates" = "Koordinater";
|
||||
|
|
|
@ -508,6 +508,23 @@
|
|||
/* «Map style» entry value */
|
||||
"pref_map_style_modern_light" = "Modern light";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» title */
|
||||
"pref_tts_enable_title" = "Voice instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» summary */
|
||||
"pref_tts_enable_summary" = "Turn instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts language» title */
|
||||
"pref_tts_language_title" = "Voice language";
|
||||
|
||||
/* Settings «Route» category: «Tts unavailable» subtitle */
|
||||
"pref_tts_unavailable" = "TTS unavailable";
|
||||
|
||||
/* Title for "Other" section in TTS settings. */
|
||||
"pref_tts_other_section_title" = "Andere";
|
||||
|
||||
"pref_tts_how_to_set_up_voice" = "Hoe stel je de stem in";
|
||||
|
||||
"placepage_distance" = "Afstand";
|
||||
|
||||
"placepage_coordinates" = "Coördinaten";
|
||||
|
|
|
@ -508,6 +508,23 @@
|
|||
/* «Map style» entry value */
|
||||
"pref_map_style_modern_light" = "Modern light";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» title */
|
||||
"pref_tts_enable_title" = "Voice instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» summary */
|
||||
"pref_tts_enable_summary" = "Turn instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts language» title */
|
||||
"pref_tts_language_title" = "Voice language";
|
||||
|
||||
/* Settings «Route» category: «Tts unavailable» subtitle */
|
||||
"pref_tts_unavailable" = "TTS unavailable";
|
||||
|
||||
/* Title for "Other" section in TTS settings. */
|
||||
"pref_tts_other_section_title" = "Inny";
|
||||
|
||||
"pref_tts_how_to_set_up_voice" = "Jak skonfigurować usługę głosową";
|
||||
|
||||
"placepage_distance" = "Dystans";
|
||||
|
||||
"placepage_coordinates" = "Współrzędne";
|
||||
|
|
|
@ -508,6 +508,23 @@
|
|||
/* «Map style» entry value */
|
||||
"pref_map_style_modern_light" = "Modern light";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» title */
|
||||
"pref_tts_enable_title" = "Voice instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» summary */
|
||||
"pref_tts_enable_summary" = "Turn instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts language» title */
|
||||
"pref_tts_language_title" = "Voice language";
|
||||
|
||||
/* Settings «Route» category: «Tts unavailable» subtitle */
|
||||
"pref_tts_unavailable" = "TTS unavailable";
|
||||
|
||||
/* Title for "Other" section in TTS settings. */
|
||||
"pref_tts_other_section_title" = "Outro";
|
||||
|
||||
"pref_tts_how_to_set_up_voice" = "Como configurar a voz";
|
||||
|
||||
"placepage_distance" = "Distância";
|
||||
|
||||
"placepage_coordinates" = "Coordenadas";
|
||||
|
|
|
@ -508,6 +508,23 @@
|
|||
/* «Map style» entry value */
|
||||
"pref_map_style_modern_light" = "Modern light";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» title */
|
||||
"pref_tts_enable_title" = "Voice instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» summary */
|
||||
"pref_tts_enable_summary" = "Turn instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts language» title */
|
||||
"pref_tts_language_title" = "Voice language";
|
||||
|
||||
/* Settings «Route» category: «Tts unavailable» subtitle */
|
||||
"pref_tts_unavailable" = "TTS unavailable";
|
||||
|
||||
/* Title for "Other" section in TTS settings. */
|
||||
"pref_tts_other_section_title" = "Alta";
|
||||
|
||||
"pref_tts_how_to_set_up_voice" = "Modalitatea de configurare a vocii";
|
||||
|
||||
"placepage_distance" = "Distanță";
|
||||
|
||||
"placepage_coordinates" = "Coordonate";
|
||||
|
|
|
@ -520,6 +520,11 @@
|
|||
/* Settings «Route» category: «Tts unavailable» subtitle */
|
||||
"pref_tts_unavailable" = "Голосовые подсказки недоступны";
|
||||
|
||||
/* Title for "Other" section in TTS settings. */
|
||||
"pref_tts_other_section_title" = "Другой";
|
||||
|
||||
"pref_tts_how_to_set_up_voice" = "Как настроить голос";
|
||||
|
||||
"placepage_distance" = "Расстояние";
|
||||
|
||||
"placepage_coordinates" = "Координаты";
|
||||
|
|
|
@ -508,6 +508,23 @@
|
|||
/* «Map style» entry value */
|
||||
"pref_map_style_modern_light" = "Modern light";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» title */
|
||||
"pref_tts_enable_title" = "Voice instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» summary */
|
||||
"pref_tts_enable_summary" = "Turn instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts language» title */
|
||||
"pref_tts_language_title" = "Voice language";
|
||||
|
||||
/* Settings «Route» category: «Tts unavailable» subtitle */
|
||||
"pref_tts_unavailable" = "TTS unavailable";
|
||||
|
||||
/* Title for "Other" section in TTS settings. */
|
||||
"pref_tts_other_section_title" = "Iný";
|
||||
|
||||
"pref_tts_how_to_set_up_voice" = "Ako nastaviť hlas";
|
||||
|
||||
"placepage_distance" = "Vzdialenosť";
|
||||
|
||||
"placepage_coordinates" = "Súradnice";
|
||||
|
|
|
@ -508,6 +508,23 @@
|
|||
/* «Map style» entry value */
|
||||
"pref_map_style_modern_light" = "Modern light";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» title */
|
||||
"pref_tts_enable_title" = "Voice instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» summary */
|
||||
"pref_tts_enable_summary" = "Turn instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts language» title */
|
||||
"pref_tts_language_title" = "Voice language";
|
||||
|
||||
/* Settings «Route» category: «Tts unavailable» subtitle */
|
||||
"pref_tts_unavailable" = "TTS unavailable";
|
||||
|
||||
/* Title for "Other" section in TTS settings. */
|
||||
"pref_tts_other_section_title" = "Övrigt";
|
||||
|
||||
"pref_tts_how_to_set_up_voice" = "Hur man ställer in ljud";
|
||||
|
||||
"placepage_distance" = "Avstånd";
|
||||
|
||||
"placepage_coordinates" = "Koordinater";
|
||||
|
|
|
@ -508,6 +508,23 @@
|
|||
/* «Map style» entry value */
|
||||
"pref_map_style_modern_light" = "Modern light";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» title */
|
||||
"pref_tts_enable_title" = "Voice instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» summary */
|
||||
"pref_tts_enable_summary" = "Turn instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts language» title */
|
||||
"pref_tts_language_title" = "Voice language";
|
||||
|
||||
/* Settings «Route» category: «Tts unavailable» subtitle */
|
||||
"pref_tts_unavailable" = "TTS unavailable";
|
||||
|
||||
/* Title for "Other" section in TTS settings. */
|
||||
"pref_tts_other_section_title" = "อื่น ๆ";
|
||||
|
||||
"pref_tts_how_to_set_up_voice" = "วิธีตั้งค่าเสียง";
|
||||
|
||||
"placepage_distance" = "ระยะห่าง";
|
||||
|
||||
"placepage_coordinates" = "พิกัด";
|
||||
|
|
|
@ -508,6 +508,23 @@
|
|||
/* «Map style» entry value */
|
||||
"pref_map_style_modern_light" = "Modern light";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» title */
|
||||
"pref_tts_enable_title" = "Voice instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» summary */
|
||||
"pref_tts_enable_summary" = "Turn instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts language» title */
|
||||
"pref_tts_language_title" = "Voice language";
|
||||
|
||||
/* Settings «Route» category: «Tts unavailable» subtitle */
|
||||
"pref_tts_unavailable" = "TTS unavailable";
|
||||
|
||||
/* Title for "Other" section in TTS settings. */
|
||||
"pref_tts_other_section_title" = "Diğer";
|
||||
|
||||
"pref_tts_how_to_set_up_voice" = "Ses nasıl ayarlanır";
|
||||
|
||||
"placepage_distance" = "Mesafe";
|
||||
|
||||
"placepage_coordinates" = "Koordinatlar";
|
||||
|
|
|
@ -508,6 +508,23 @@
|
|||
/* «Map style» entry value */
|
||||
"pref_map_style_modern_light" = "Modern light";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» title */
|
||||
"pref_tts_enable_title" = "Voice instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» summary */
|
||||
"pref_tts_enable_summary" = "Turn instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts language» title */
|
||||
"pref_tts_language_title" = "Voice language";
|
||||
|
||||
/* Settings «Route» category: «Tts unavailable» subtitle */
|
||||
"pref_tts_unavailable" = "TTS unavailable";
|
||||
|
||||
/* Title for "Other" section in TTS settings. */
|
||||
"pref_tts_other_section_title" = "Інша";
|
||||
|
||||
"pref_tts_how_to_set_up_voice" = "Як налаштувати голосовий контроль";
|
||||
|
||||
"placepage_distance" = "Відстань";
|
||||
|
||||
"placepage_coordinates" = "Координати";
|
||||
|
|
|
@ -508,6 +508,23 @@
|
|||
/* «Map style» entry value */
|
||||
"pref_map_style_modern_light" = "Modern light";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» title */
|
||||
"pref_tts_enable_title" = "Voice instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» summary */
|
||||
"pref_tts_enable_summary" = "Turn instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts language» title */
|
||||
"pref_tts_language_title" = "Voice language";
|
||||
|
||||
/* Settings «Route» category: «Tts unavailable» subtitle */
|
||||
"pref_tts_unavailable" = "TTS unavailable";
|
||||
|
||||
/* Title for "Other" section in TTS settings. */
|
||||
"pref_tts_other_section_title" = "Khác";
|
||||
|
||||
"pref_tts_how_to_set_up_voice" = "Làm thế nào để thiết lập tiếng nói";
|
||||
|
||||
"placepage_distance" = "Khoảng cách";
|
||||
|
||||
"placepage_coordinates" = "Tọa độ";
|
||||
|
|
|
@ -508,6 +508,23 @@
|
|||
/* «Map style» entry value */
|
||||
"pref_map_style_modern_light" = "Modern light";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» title */
|
||||
"pref_tts_enable_title" = "Voice instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» summary */
|
||||
"pref_tts_enable_summary" = "Turn instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts language» title */
|
||||
"pref_tts_language_title" = "Voice language";
|
||||
|
||||
/* Settings «Route» category: «Tts unavailable» subtitle */
|
||||
"pref_tts_unavailable" = "TTS unavailable";
|
||||
|
||||
/* Title for "Other" section in TTS settings. */
|
||||
"pref_tts_other_section_title" = "其他";
|
||||
|
||||
"pref_tts_how_to_set_up_voice" = "如何设置语音";
|
||||
|
||||
"placepage_distance" = "距离";
|
||||
|
||||
"placepage_coordinates" = "坐标";
|
||||
|
|
|
@ -508,6 +508,23 @@
|
|||
/* «Map style» entry value */
|
||||
"pref_map_style_modern_light" = "Modern light";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» title */
|
||||
"pref_tts_enable_title" = "Voice instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts enabled» summary */
|
||||
"pref_tts_enable_summary" = "Turn instructions";
|
||||
|
||||
/* Settings «Route» category: «Tts language» title */
|
||||
"pref_tts_language_title" = "Voice language";
|
||||
|
||||
/* Settings «Route» category: «Tts unavailable» subtitle */
|
||||
"pref_tts_unavailable" = "TTS unavailable";
|
||||
|
||||
/* Title for "Other" section in TTS settings. */
|
||||
"pref_tts_other_section_title" = "其他";
|
||||
|
||||
"pref_tts_how_to_set_up_voice" = "如何設置語音";
|
||||
|
||||
"placepage_distance" = "距离";
|
||||
|
||||
"placepage_coordinates" = "坐标";
|
||||
|
|
|
@ -13,37 +13,38 @@ namespace turns
|
|||
{
|
||||
namespace sound
|
||||
{
|
||||
array<string, 28> const kLanguageList =
|
||||
array<pair<string, string>, 28> const kLanguageList =
|
||||
{{
|
||||
"ar",
|
||||
"cs",
|
||||
"da",
|
||||
"de",
|
||||
"el",
|
||||
"en",
|
||||
"es",
|
||||
"fi",
|
||||
"fr",
|
||||
"hi",
|
||||
"hr",
|
||||
"hu",
|
||||
"id",
|
||||
"it",
|
||||
"ja",
|
||||
"ko",
|
||||
"nl",
|
||||
"pl",
|
||||
"pt",
|
||||
"ro",
|
||||
"ru",
|
||||
"sk",
|
||||
"sv",
|
||||
"sw",
|
||||
"th",
|
||||
"tr",
|
||||
"zh-Hans",
|
||||
"zh-Hant"
|
||||
{"en", "English"},
|
||||
{"ru", "Русский"},
|
||||
{"es", "Español"},
|
||||
{"de", "Deutsch"},
|
||||
{"fr", "Français"},
|
||||
{"zh-Hant", "中文繁體"},
|
||||
{"zh-Hans", "中文简体"},
|
||||
{"pt", "Português"},
|
||||
{"th", "ภาษาไทย"},
|
||||
{"tr", "Türkçe"},
|
||||
{"ar", "العربية"},
|
||||
{"cs", "Čeština"},
|
||||
{"da", "Dansk"},
|
||||
{"el", "Ελληνικά"},
|
||||
{"fi", "Suomi"},
|
||||
{"hi", "हिंदी"},
|
||||
{"hr", "Hrvatski"},
|
||||
{"hu", "Magyar"},
|
||||
{"id", "Indonesia"},
|
||||
{"it", "Italiano"},
|
||||
{"ja", "日本語"},
|
||||
{"ko", "한국어"},
|
||||
{"nl", "Nederlands"},
|
||||
{"pl", "Polski"},
|
||||
{"ro", "Română"},
|
||||
{"sk", "Slovenčina"},
|
||||
{"sv", "Svenska"},
|
||||
{"sw", "Kiswahili"}
|
||||
}};
|
||||
} // namespace sound
|
||||
} // namespace turns
|
||||
} // namespace routing
|
||||
|
||||
|
|
61
strings.txt
|
@ -5248,6 +5248,67 @@
|
|||
en = TTS unavailable
|
||||
ru = Голосовые подсказки недоступны
|
||||
|
||||
[pref_tts_other_section_title]
|
||||
tags = ios
|
||||
comment = Title for "Other" section in TTS settings.
|
||||
en = Other
|
||||
ru = Другой
|
||||
fr = Autre
|
||||
da = Andet
|
||||
id = Lainnya
|
||||
ko = 다른 언어
|
||||
sv = Övrigt
|
||||
tr = Diğer
|
||||
uk = Інша
|
||||
vi = Khác
|
||||
hu = Egyéb
|
||||
de = Weitere
|
||||
fi = Egyéb
|
||||
cs = Ostatní
|
||||
it = Altro
|
||||
nb = Andre
|
||||
zh-Hant = 其他
|
||||
zh-Hans = 其他
|
||||
th = อื่น ๆ
|
||||
ja = その他
|
||||
ro = Alta
|
||||
ar = آخر
|
||||
sk = Iný
|
||||
es = Otros
|
||||
pl = Inny
|
||||
nl = Andere
|
||||
pt = Outro
|
||||
|
||||
[pref_tts_how_to_set_up_voice]
|
||||
tags = ios
|
||||
en = How to set up voice
|
||||
ru = Как настроить голос
|
||||
fr = Comment configurer la voix
|
||||
da = Sådan indstiller du tale
|
||||
id = Cara mengatur suara
|
||||
ko = 음성 설정 방법
|
||||
sv = Hur man ställer in ljud
|
||||
tr = Ses nasıl ayarlanır
|
||||
uk = Як налаштувати голосовий контроль
|
||||
vi = Làm thế nào để thiết lập tiếng nói
|
||||
hu = Így állítsd be a hangot
|
||||
de = Navi-Stimme einstellen
|
||||
fi = Így állítsd be a hangot
|
||||
cs = Jak nastavit hlas
|
||||
it = Come impostare la voce
|
||||
nb = Slik installerer du stemme
|
||||
zh-Hant = 如何設置語音
|
||||
zh-Hans = 如何设置语音
|
||||
th = วิธีตั้งค่าเสียง
|
||||
ja = 音声設定の仕方
|
||||
ro = Modalitatea de configurare a vocii
|
||||
ar = كيفية ضبط الصوت
|
||||
sk = Ako nastaviť hlas
|
||||
es = Cómo configurar la voz
|
||||
pl = Jak skonfigurować usługę głosową
|
||||
nl = Hoe stel je de stem in
|
||||
pt = Como configurar a voz
|
||||
|
||||
[placepage_distance]
|
||||
en = Distance
|
||||
fr = Distance
|
||||
|
|