Merge branch 'master' of ssh://github.com/osmandapp/Osmand into profile_settings

This commit is contained in:
Chumva 2019-09-30 10:02:55 +03:00
commit e292945f48
16 changed files with 221 additions and 45 deletions

View file

@ -388,9 +388,14 @@ public class OpeningHoursParser {
ArrayList<OpeningHoursRule> rules = getRules(sequenceIndex); ArrayList<OpeningHoursRule> rules = getRules(sequenceIndex);
for (int i = 0; i < 7; i++) { for (int i = 0; i < 7; i++) {
cal.add(Calendar.DAY_OF_MONTH, 1); cal.add(Calendar.DAY_OF_MONTH, 1);
Calendar openingTimeCal = null;
for (OpeningHoursRule r : rules) { for (OpeningHoursRule r : rules) {
if (r.containsDay(cal) && r.containsMonth(cal)) { if (r.containsDay(cal) && r.containsMonth(cal)) {
openingTime = r.getTime(cal, false, WITHOUT_TIME_LIMIT, true); String time = r.getTime(cal, false, WITHOUT_TIME_LIMIT, true);
if (Algorithms.isEmpty(time) || openingTimeCal == null || cal.before(openingTimeCal)) {
openingTime = time;
}
openingTimeCal = (Calendar) cal.clone();
} }
} }
if (!Algorithms.isEmpty(openingTime)) { if (!Algorithms.isEmpty(openingTime)) {

View file

@ -529,6 +529,11 @@ public class OpeningHoursParserTest {
testInfo("16.02.2018 16:00", hours, "Will open at 17:00"); testInfo("16.02.2018 16:00", hours, "Will open at 17:00");
testInfo("16.02.2018 18:00", hours, "Open till 23:00"); testInfo("16.02.2018 18:00", hours, "Open till 23:00");
hours = parseOpenedHours("Mo-Fr 08:00-12:00, Mo,Tu,Th 15:00-17:00; PH off");
System.out.println(hours);
testOpened("09.08.2019 15:00", hours, false);
testInfo("09.08.2019 15:00", hours, "Will open on 08:00 Mon.");
hours = parseOpenedHours( hours = parseOpenedHours(
"Mo-Fr 10:00-21:00; Sa 12:00-23:00; PH \"Wird auf der Homepage bekannt gegeben.\""); "Mo-Fr 10:00-21:00; Sa 12:00-23:00; PH \"Wird auf der Homepage bekannt gegeben.\"");
testParsedAndAssembledCorrectly( testParsedAndAssembledCorrectly(

View file

@ -28,7 +28,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:gravity="end" android:gravity="end"
android:maxLength="3" android:maxLength="4"
android:maxLines="1" android:maxLines="1"
android:paddingRight="4dp" android:paddingRight="4dp"
android:textColor="?android:textColorPrimary" android:textColor="?android:textColorPrimary"

View file

@ -48,11 +48,13 @@
</LinearLayout> </LinearLayout>
<View <View
android:id="@+id/default_speed_div"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1dp" android:layout_height="1dp"
android:background="?attr/dashboard_divider" /> android:background="?attr/dashboard_divider" />
<LinearLayout <LinearLayout
android:id="@+id/default_speed_container"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical"
@ -68,11 +70,13 @@
</LinearLayout> </LinearLayout>
<View <View
android:id="@+id/max_speed_div"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1dp" android:layout_height="1dp"
android:background="?attr/dashboard_divider" /> android:background="?attr/dashboard_divider" />
<LinearLayout <LinearLayout
android:id="@+id/max_speed_container"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical"

View file

@ -1301,7 +1301,7 @@
\n- Стварэнне групаў; \n- Стварэнне групаў;
\n- Сінхранізацыя групаў і прылад з серверам; \n- Сінхранізацыя групаў і прылад з серверам;
\n- Кіраванне групамі і прыладамі ў асабістым кабінеце.</string> \n- Кіраванне групамі і прыладамі ў асабістым кабінеце.</string>
<string name="configure_map">Налады мапы</string> <string name="configure_map">Наладзіць мапу</string>
<string name="search_radius_proximity">У межах</string> <string name="search_radius_proximity">У межах</string>
<string name="rendering_category_details">Падрабязнасці</string> <string name="rendering_category_details">Падрабязнасці</string>
<string name="rendering_category_transport">Транспарт</string> <string name="rendering_category_transport">Транспарт</string>
@ -2905,7 +2905,7 @@
<string name="quick_action_switch_day_mode">Дзённы рэжым</string> <string name="quick_action_switch_day_mode">Дзённы рэжым</string>
<string name="quick_action_switch_night_mode">Начны рэжым</string> <string name="quick_action_switch_night_mode">Начны рэжым</string>
<string name="quick_action_day_night_switch_mode">Пераключыць дзённы/начны рэжым</string> <string name="quick_action_day_night_switch_mode">Пераключыць дзённы/начны рэжым</string>
<string name="routeInfo_roadClass_name">Клас</string> <string name="routeInfo_roadClass_name">Тып дарогі</string>
<string name="routeInfo_surface_name">Паверхня</string> <string name="routeInfo_surface_name">Паверхня</string>
<string name="routeInfo_smoothness_name">Гладкасць</string> <string name="routeInfo_smoothness_name">Гладкасць</string>
<string name="routeInfo_steepness_name">Пакатасць</string> <string name="routeInfo_steepness_name">Пакатасць</string>
@ -2916,7 +2916,7 @@
<string name="work_button">Праца</string> <string name="work_button">Праца</string>
<string name="time_of_day">Час сутак</string> <string name="time_of_day">Час сутак</string>
<string name="by_transport_type">Ужыта %1$s</string> <string name="by_transport_type">Ужыта %1$s</string>
<string name="step_by_step">Крок за крокам</string> <string name="step_by_step">Падказкі</string>
<string name="routeInfo_road_types_name">Тыпы дарог</string> <string name="routeInfo_road_types_name">Тыпы дарог</string>
<string name="exit_at">Выхад на</string> <string name="exit_at">Выхад на</string>
<string name="sit_on_the_stop">Пасадка на прыпынку</string> <string name="sit_on_the_stop">Пасадка на прыпынку</string>
@ -3168,7 +3168,7 @@
<string name="sett_parrot_ext_input">Parrot</string> <string name="sett_parrot_ext_input">Parrot</string>
<string name="turn_on_profile_desc">Калі ласка, ўключыце па меншай меры адзін профіль праграмы, каб выкарыстоўваць гэты параметр.</string> <string name="turn_on_profile_desc">Калі ласка, ўключыце па меншай меры адзін профіль праграмы, каб выкарыстоўваць гэты параметр.</string>
<string name="gpx_join_gaps">Абраць gaps</string> <string name="gpx_join_gaps">Абраць gaps</string>
<string name="app_mode_camper"/> <string name="app_mode_camper">Прычэп</string>
<string name="rendering_attr_showLez_description">Паказваць на мапе зоны з нізкім узроўнем выкідаў. Не ўплывае на маршрутызацыю.</string> <string name="rendering_attr_showLez_description">Паказваць на мапе зоны з нізкім узроўнем выкідаў. Не ўплывае на маршрутызацыю.</string>
<string name="rendering_attr_showLez_name">Паказваць зоны з нізкім узроўнем выкідаў</string> <string name="rendering_attr_showLez_name">Паказваць зоны з нізкім узроўнем выкідаў</string>
<string name="temporary_conditional_routing">Разглядаць часовыя абмежаванні</string> <string name="temporary_conditional_routing">Разглядаць часовыя абмежаванні</string>
@ -3195,4 +3195,22 @@
<string name="get_discount_second_part">пасля %1$s</string> <string name="get_discount_second_part">пасля %1$s</string>
<string name="cancel_subscription">Скасаваць падпіску</string> <string name="cancel_subscription">Скасаваць падпіску</string>
<string name="price_and_discount">%1$s • Эканомія %2$s</string> <string name="price_and_discount">%1$s • Эканомія %2$s</string>
<string name="configure_profile_info">Усе налады ніжэй тычацца толькі выбранага профілю.</string>
<string name="utm_format_descr">OsmAnd выкарыстоўвае фармат UTM Standard, які падобны, але не ідэнтычны да фармату UTM Nato.</string>
<string name="shared_string_example">Прыклад</string>
<string name="configure_profile">Налады профіля</string>
<string name="switch_profile">Змяніць профіль</string>
<string name="logcat_buffer">Буфер logcat</string>
<string name="navigate_point_format_utm">UTM Standard</string>
<string name="navigate_point_format_olc">Адкрыты код месцазнаходжання (OLC)</string>
<string name="coordinates_format_info">Абраны фармат будзе ужыты да ўсіх мясцін у дадатку.</string>
<string name="pref_selected_by_default_for_profiles">Параметр прадвызначана абраны для профіляў: %s</string>
<string name="change_default_settings">Змяніць прадвызначаныя налады</string>
<string name="discard_changes">Адкінуць змены</string>
<string name="apply_to_current_profile">Ужыць да бягучага профіля %1$s</string>
<string name="apply_to_all_profiles">Ужыць да ўсіх профіляў</string>
<string name="start_up_message_pref">Паведамленне падчас запуску</string>
<string name="analytics_pref_title">Аналітыка</string>
<string name="application_profile_changed">Профіль зменены на \"%s\"</string>
<string name="plugins_settings">Налады ўбудоў</string>
</resources> </resources>

View file

@ -3211,4 +3211,4 @@ Zobrazená oblast: %1$s x %2$s</string>
<string name="voice_announces">Hlasová oznámení</string> <string name="voice_announces">Hlasová oznámení</string>
<string name="route_parameters_descr">Konfigurace parametrů trasy</string> <string name="route_parameters_descr">Konfigurace parametrů trasy</string>
<string name="route_parameters">Parametry trasy</string> <string name="route_parameters">Parametry trasy</string>
</resources> </resources>

View file

@ -1096,7 +1096,7 @@
<string name="edit_tilesource_choose_existing">انتخاب از بین موارد موجود…</string> <string name="edit_tilesource_choose_existing">انتخاب از بین موارد موجود…</string>
<string name="maps_define_edit">تعریف/ویرایش…</string> <string name="maps_define_edit">تعریف/ویرایش…</string>
<string name="driving_region">منطقهٔ رانندگی</string> <string name="driving_region">منطقهٔ رانندگی</string>
<string name="edit_tilesource_elliptic_tile">مرکارتور بیضوی</string> <string name="edit_tilesource_elliptic_tile">مرکاتور بیضوی</string>
<string name="edit_tilesource_url_to_load">نشانی اینترنتی</string> <string name="edit_tilesource_url_to_load">نشانی اینترنتی</string>
<string name="map_magnifier">ذره‌بین نقشه</string> <string name="map_magnifier">ذره‌بین نقشه</string>
<string name="base_world_map">نقشهٔ جهانی پایه</string> <string name="base_world_map">نقشهٔ جهانی پایه</string>

View file

@ -2308,4 +2308,10 @@ Jos pidät OsmAndista ja OSMsta ja haluat tukea niitä, on tämä täydellinen t
<string name="show_more">Näytä lisää</string> <string name="show_more">Näytä lisää</string>
<string name="tracks_on_map">Näytä jäljet</string> <string name="tracks_on_map">Näytä jäljet</string>
<string name="quick_action_show_hide_gpx_tracks">Näytä/piilota GPX jäljet</string> <string name="quick_action_show_hide_gpx_tracks">Näytä/piilota GPX jäljet</string>
</resources> <string name="configure_profile_info">Kaikki alla näkyvät asetukset vaikuttavat vain valittuun profiiliin.</string>
<string name="configure_profile">Määritä profiili</string>
<string name="switch_profile">Vaihda profiilia</string>
<string name="application_profile_changed">Sovellusprofiili muutettiin muotoon \"%s\"</string>
<string name="logcat_buffer">Logcat-puskuri</string>
<string name="plugins_settings">Laajennuksen asetukset</string>
</resources>

View file

@ -246,7 +246,7 @@
<string name="basemap_missing">Last ned basiskartet for verden for å få en oversikt som dekker hele verden ved lave zoomnivåer.</string> <string name="basemap_missing">Last ned basiskartet for verden for å få en oversikt som dekker hele verden ved lave zoomnivåer.</string>
<string name="local_index_gpx_info_show">" <string name="local_index_gpx_info_show">"
\n \n
\nLangt trykk for alternativer"</string> \nTrykk lenge for alternativer"</string>
<string name="local_index_descr_title">Karthåndtering.</string> <string name="local_index_descr_title">Karthåndtering.</string>
<string name="local_index_mi_restore">Aktiver</string> <string name="local_index_mi_restore">Aktiver</string>
<string name="local_index_mi_backup">Deaktiver</string> <string name="local_index_mi_backup">Deaktiver</string>

View file

@ -2943,4 +2943,20 @@ voor Gebied: %1$s x %2$s</string>
<string name="route_way">Weg</string> <string name="route_way">Weg</string>
<string name="searching_gps">GPS aan het zoeken</string> <string name="searching_gps">GPS aan het zoeken</string>
<string name="routing_profile_straightline">Rechte lijn</string> <string name="routing_profile_straightline">Rechte lijn</string>
<string name="configure_profile_info">Alle onderstaande instellingen hebben slechts betrekking op het geselecteerde profiel.</string>
<string name="utm_format_descr">OsmAnd gebruikt het UTM Standard formaat. Dit lijkt sterk op het UTM Nato formaat, maar is niet identiek.</string>
<string name="shared_string_example">Voorbeeld</string>
<string name="navigate_point_format_utm">UTM Standaard</string>
<string name="navigate_point_format_olc">Open Locatie Code</string>
<string name="coordinates_format_info">Het geselecteerde formaat wordt toegepast op alle plekken in de app.</string>
<string name="pref_selected_by_default_for_profiles">Deze instelling is automatisch geselecteerd voor profielen: %s</string>
<string name="change_default_settings">Pas de standaardinstellingen aan</string>
<string name="discard_changes">Negeer aanpassingen</string>
<string name="apply_to_current_profile">Pas toe op het huidige %1$s profiel</string>
<string name="apply_to_all_profiles">Pas toe op alle profielen</string>
<string name="start_up_message_pref">Welkomstbericht</string>
<string name="configure_profile">Stel profiel in</string>
<string name="switch_profile">Verander profiel</string>
<string name="logcat_buffer">Logcat buffer</string>
<string name="plugins_settings">Plugin instellingen</string>
</resources> </resources>

View file

@ -105,7 +105,7 @@
<string name="choose_audio_stream_descr">Wybierz głośnik, aby odtworzyć wskazówki głosowe.</string> <string name="choose_audio_stream_descr">Wybierz głośnik, aby odtworzyć wskazówki głosowe.</string>
<string name="voice_stream_voice_call">Kanał głosowy (przerywa odtwarzanie muzyki z głośników)</string> <string name="voice_stream_voice_call">Kanał głosowy (przerywa odtwarzanie muzyki z głośników)</string>
<string name="voice_stream_notification">Kanał powiadomień</string> <string name="voice_stream_notification">Kanał powiadomień</string>
<string name="voice_stream_music">Media/Nawigacja audio</string> <string name="voice_stream_music">Media/Dźwięk nawigacji</string>
<string name="warning_tile_layer_not_downloadable">Aplikacja nie może pobrać warstwy %1$s, spróbuj ją przeinstalować.</string> <string name="warning_tile_layer_not_downloadable">Aplikacja nie może pobrać warstwy %1$s, spróbuj ją przeinstalować.</string>
<string name="overlay_transparency_descr">Zmień przezroczystość warstwy.</string> <string name="overlay_transparency_descr">Zmień przezroczystość warstwy.</string>
<string name="overlay_transparency">Przezroczystość warstwy</string> <string name="overlay_transparency">Przezroczystość warstwy</string>
@ -3238,11 +3238,11 @@ Reprezentuje obszar: %1$s x %2$s</string>
<string name="get_discount_first_part">%1$s dla pierwszych %2$s</string> <string name="get_discount_first_part">%1$s dla pierwszych %2$s</string>
<string name="cancel_subscription">Anuluj subskrypcję</string> <string name="cancel_subscription">Anuluj subskrypcję</string>
<string name="price_and_discount">%1$s • Zapisz %2$s</string> <string name="price_and_discount">%1$s • Zapisz %2$s</string>
<string name="months_2_4">Miesięcy</string> <string name="months_2_4">Miesiące</string>
<string name="months_5">Miesięcy</string> <string name="months_5">Miesięcy</string>
<string name="years_2_4">Lat</string> <string name="years_2_4">Lata</string>
<string name="years_5">Lata</string> <string name="years_5">Lat</string>
<string name="price_free">Darmowy</string> <string name="price_free">Darmowe</string>
<string name="configure_profile_info">Wszystkie poniższe ustawienia dotyczą tylko wybranego profilu.</string> <string name="configure_profile_info">Wszystkie poniższe ustawienia dotyczą tylko wybranego profilu.</string>
<string name="utm_format_descr">OsmAnd używa formatu UTM Standard, który jest podobny, ale nie taki sam, jak format UTM Nato.</string> <string name="utm_format_descr">OsmAnd używa formatu UTM Standard, który jest podobny, ale nie taki sam, jak format UTM Nato.</string>
<string name="shared_string_example">Przykład</string> <string name="shared_string_example">Przykład</string>
@ -3273,23 +3273,27 @@ Reprezentuje obszar: %1$s x %2$s</string>
<string name="route_parameters">Parametry trasy</string> <string name="route_parameters">Parametry trasy</string>
<string name="manage_profiles_descr">Tworzy, importuje, modyfikuje profile</string> <string name="manage_profiles_descr">Tworzy, importuje, modyfikuje profile</string>
<string name="manage_profiles">Zarządzaj profilami aplikacji…</string> <string name="manage_profiles">Zarządzaj profilami aplikacji…</string>
<string name="new_route_calculated_dist_dbg">Trasa: dystans %s, czas routera %s \nObliczanie: %.1f s, %d dróg, %d płytek)</string> <string name="new_route_calculated_dist_dbg">Trasa: dystans %s, czas routera %s
\nObliczanie: %.1f sek., %d dróg, %d płytek)</string>
<string name="get_discount_first_few_part">%1$s dla pierwszych %2$s</string> <string name="get_discount_first_few_part">%1$s dla pierwszych %2$s</string>
<string name="get_discount_second_part">wtedy %1$s</string> <string name="get_discount_second_part">następnie %1$s</string>
<string name="navigate_point_format_olc">Otwórz kod lokalizacji</string> <string name="navigate_point_format_olc">Otwórz kod lokalizacji</string>
<string name="analytics_pref_title">Analityka</string> <string name="analytics_pref_title">Analityka</string>
<string name="turn_screen_on_info">Pokaż mapę podczas nawigacji nad ekranem blokady.</string> <string name="turn_screen_on_info">Wyświetlaj mapę podczas nawigacji nad ekranem blokady.</string>
<string name="route_parameters_info">Ustawienia te mają wpływ na konstrukcję trasy. Będzie stosowany tylko do wybranego profilu: %1$s.</string> <string name="route_parameters_info">Ustawienia te mają wpływ na konstrukcję trasy. Będzie stosowany tylko do wybranego profilu: %1$s.</string>
<string name="wake_time">Czas przebudzenia</string> <string name="wake_time">Czas wybudzenia</string>
<string name="configure_navigation">Konfiguracja nawigacji</string> <string name="configure_navigation">Konfiguracja nawigacji</string>
<string name="screen_alerts_descr">Alerty będą wyświetlane w lewym dolnym rogu ekranu podczas nawigacji.</string> <string name="screen_alerts_descr">Alerty będą wyświetlane w lewym dolnym rogu ekranu podczas nawigacji.</string>
<string name="reset_to_default">Przywróć ustawienia domyślne</string> <string name="reset_to_default">Przywróć ustawienia domyślne</string>
<string name="osmand_settings_descr">Wpływa na całą aplikację</string> <string name="osmand_settings_descr">Ma wpływ na całą aplikację</string>
<string name="turn_screen_on">Włącz ekran</string> <string name="turn_screen_on">Włącz ekran</string>
<string name="map_during_navigation_info">Mapa podczas nawigacji</string> <string name="map_during_navigation_info">Mapa podczas nawigacji</string>
<string name="map_during_navigation">Mapa podczas nawigacji</string> <string name="map_during_navigation">Mapa podczas nawigacji</string>
<string name="shared_string_other">Pozostałe</string> <string name="shared_string_other">Inne</string>
<string name="voice_announces_descr">Instrukcja nawigacyjna i komunikaty nawigacyjne</string> <string name="voice_announces_descr">Instrukcja nawigacyjna i komunikaty</string>
<string name="route_parameters_descr">Konfigurowanie parametrów trasy</string> <string name="route_parameters_descr">Konfigurowanie parametrów trasy</string>
<string name="logcat_buffer">Bufor Logcat</string> <string name="logcat_buffer">Bufor katalogu dziennika</string>
</resources> <string name="get_discount_title">Uzyskaj %1$d %2$s taniej o %3$s.</string>
<string name="language_and_output">Język i wyjście</string>
<string name="plugins_settings">Ustawienia wtyczki</string>
</resources>

View file

@ -3220,7 +3220,7 @@
<string name="start_up_message_pref">Сообщение при запуске</string> <string name="start_up_message_pref">Сообщение при запуске</string>
<string name="analytics_pref_title">Аналитика</string> <string name="analytics_pref_title">Аналитика</string>
<string name="turn_screen_on_info">Показывать карту на экране блокировки при навигации</string> <string name="turn_screen_on_info">Показывать карту на экране блокировки при навигации</string>
<string name="configure_profile">Настроить профиль</string> <string name="configure_profile">Настройки профиля</string>
<string name="switch_profile">Переключить профиль</string> <string name="switch_profile">Переключить профиль</string>
<string name="application_profile_changed">Профиль изменён на\"%s\"</string> <string name="application_profile_changed">Профиль изменён на\"%s\"</string>
<string name="configure_profile_info">Все приведенные ниже настройки относятся только к выбранному профилю.</string> <string name="configure_profile_info">Все приведенные ниже настройки относятся только к выбранному профилю.</string>
@ -3230,4 +3230,31 @@
<string name="general_settings_profile_descr">Тема приложения, единицы измерения, регион</string> <string name="general_settings_profile_descr">Тема приложения, единицы измерения, регион</string>
<string name="manage_profiles_descr">Создание, импорт и редактирование профилей</string> <string name="manage_profiles_descr">Создание, импорт и редактирование профилей</string>
<string name="manage_profiles">Управление профилями приложения…</string> <string name="manage_profiles">Управление профилями приложения…</string>
<string name="utm_format_descr">OsmAnd использует формат UTM Standard, который похож, но не идентичен формату UTM NATO.</string>
<string name="navigate_point_format_utm">UTM Standard</string>
<string name="navigate_point_format_olc">Open Location Code</string>
<string name="coordinates_format_info">Выбранный формат будет применен ко всему приложению.</string>
<string name="pref_selected_by_default_for_profiles">Параметр выбран по умолчанию для профилей: %s</string>
<string name="route_parameters_info">Эти настройки влияют на построение маршрута. Применяются только к выбранному профилю: %1$s.</string>
<string name="wake_time">Время пробуждения</string>
<string name="appearance">Внешний вид</string>
<string name="configure_navigation">Настроить навигацию</string>
<string name="screen_alerts_descr">Оповещения будут отображаться в левом нижнем углу экрана во время навигации.</string>
<string name="osmand_settings_descr">Влияет на всё приложение</string>
<string name="osmand_settings">Настройки OsmAnd</string>
<string name="copy_from_other_profile">Копировать из другого профиля</string>
<string name="turn_screen_on">Включить экран</string>
<string name="map_during_navigation_info">Карта во время навигации</string>
<string name="map_during_navigation">Карта во время навигации</string>
<string name="vehicle_parameters_descr">Вес, высота, скорость</string>
<string name="vehicle_parameters">Параметры автомобиля</string>
<string name="voice_announces_info">Голосовые объявления воспроизводятся только во время навигации.</string>
<string name="voice_announces_descr">Навигационные инструкции и объявления</string>
<string name="voice_announces">Голосовые объявления</string>
<string name="screen_alerts">Экранные оповещения</string>
<string name="route_parameters_descr">Настройка параметров маршрута</string>
<string name="route_parameters">Параметры маршрута</string>
<string name="logcat_buffer">Буфер Logcat</string>
<string name="plugins_settings">Настройки плагинов</string>
<string name="language_and_output">Язык и вывод</string>
</resources> </resources>

View file

@ -3255,4 +3255,52 @@
<string name="get_discount_second_part">далі %1$s</string> <string name="get_discount_second_part">далі %1$s</string>
<string name="cancel_subscription">Скасувати підписку</string> <string name="cancel_subscription">Скасувати підписку</string>
<string name="price_and_discount">%1$s • Заощадити %2$s</string> <string name="price_and_discount">%1$s • Заощадити %2$s</string>
<string name="configure_profile_info">Всі вказані нижче налаштування відносяться лише до обраного профілю.</string>
<string name="shared_string_example">Приклад</string>
<string name="navigate_point_format_utm">UTM стандарт</string>
<string name="change_default_settings">Змінити типові налаштування</string>
<string name="discard_changes">Відхилити зміни</string>
<string name="apply_to_current_profile">Застосувати до поточного профілю: %1$s</string>
<string name="apply_to_all_profiles">Застосувати до всіх профілів</string>
<string name="start_up_message_pref">Повідомлення при старті</string>
<string name="analytics_pref_title">Аналітика</string>
<string name="units_and_formats">Одиниці виміру та формати</string>
<string name="appearance">Зовнішній вигляд</string>
<string name="map_look_descr">значки, віджети</string>
<string name="map_look">Вигляд карти</string>
<string name="list_of_installed_plugins">Перелік встановлених додатків</string>
<string name="configure_navigation">Конфігурування навігації</string>
<string name="general_settings_profile_descr">Тема додатку, одиниці виміру, регіон</string>
<string name="configure_profile">Налаштувати профіль</string>
<string name="switch_profile">Перемкнути профіль</string>
<string name="reset_to_default">Скинути на типові</string>
<string name="manage_profiles_descr">Створення, імпорт та редагування профілів</string>
<string name="manage_profiles">Керування профілями додатку…</string>
<string name="osmand_settings">Налаштування OsmAnd</string>
<string name="copy_from_other_profile">Копіювати з іншого профілю</string>
<string name="turn_screen_on">Увімкнути екран</string>
<string name="map_during_navigation_info">Карта під час навігації</string>
<string name="map_during_navigation">Карта під час навігації</string>
<string name="shared_string_other">Інше</string>
<string name="vehicle_parameters_descr">Вага, висота, швидкість</string>
<string name="vehicle_parameters">Параметри транспортного засобу</string>
<string name="voice_announces_info">Голосові повідомлення відтворюються лише під час навігації.</string>
<string name="voice_announces">Голосові інструкції</string>
<string name="screen_alerts">Екранні сповіщення</string>
<string name="route_parameters_descr">Налаштування параметрів маршруту</string>
<string name="route_parameters">Параметри маршруту</string>
<string name="application_profile_changed">Профіль додатку змінено на «%s»</string>
<string name="utm_format_descr">OsmAnd використовує формат UTM Standard, який є схожим, але не ідентичним, на формат UTM Nato.</string>
<string name="navigate_point_format_olc">Код Open Location</string>
<string name="coordinates_format_info">Обраний формат буде застосований до усіх місць у додатку.</string>
<string name="pref_selected_by_default_for_profiles">Це налаштування вибране типовим для профілів: %s</string>
<string name="turn_screen_on_info">Показувати мапу під час навігації поверх заблокованого екрану.</string>
<string name="route_parameters_info">Ці налаштування впливають на побудову маршруту. Буде застосовано тільки до обраного профілю: %1$s.</string>
<string name="wake_time">Час пробудження</string>
<string name="screen_alerts_descr">Під час навігації попередження будуть показуватися у лівому нижньому куті екрану.</string>
<string name="language_and_output">Мова і вивід</string>
<string name="osmand_settings_descr">Впливають на весь додаток</string>
<string name="voice_announces_descr">Інструкції і попередження при навігації</string>
<string name="logcat_buffer">Буфер logcat</string>
<string name="plugins_settings">Налаштування втулка</string>
</resources> </resources>

View file

@ -68,6 +68,7 @@ public class SettingsNavigationActivity extends SettingsBaseActivity {
private Preference showAlarms; private Preference showAlarms;
private Preference speakAlarms; private Preference speakAlarms;
private Preference defaultSpeed; private Preference defaultSpeed;
private Preference defaultSpeedOnly;
private ListPreference routerServicePreference; private ListPreference routerServicePreference;
private ListPreference speedLimitExceed; private ListPreference speedLimitExceed;
@ -299,7 +300,15 @@ public class SettingsNavigationActivity extends SettingsBaseActivity {
PreferenceCategory cat = (PreferenceCategory) screen.findPreference("routing_preferences"); PreferenceCategory cat = (PreferenceCategory) screen.findPreference("routing_preferences");
cat.removeAll(); cat.removeAll();
CheckBoxPreference fastRoute = createCheckBoxPreference(settings.FAST_ROUTE_MODE, R.string.fast_route_mode, R.string.fast_route_mode_descr); CheckBoxPreference fastRoute = createCheckBoxPreference(settings.FAST_ROUTE_MODE, R.string.fast_route_mode, R.string.fast_route_mode_descr);
if(settings.getApplicationMode().getRouteService() != RouteService.OSMAND) { RouteService routeService = settings.getApplicationMode().getRouteService();
if (routeService != RouteService.OSMAND) {
if (routeService == RouteService.STRAIGHT) {
defaultSpeedOnly = new Preference(this);
defaultSpeedOnly.setTitle(R.string.default_speed_setting_title);
defaultSpeedOnly.setSummary(R.string.default_speed_setting_descr);
defaultSpeedOnly.setOnPreferenceClickListener(this);
cat.addPreference(defaultSpeedOnly);
}
cat.addPreference(fastRoute); cat.addPreference(fastRoute);
} else { } else {
ApplicationMode am = settings.getApplicationMode(); ApplicationMode am = settings.getApplicationMode();
@ -654,7 +663,9 @@ public class SettingsNavigationActivity extends SettingsBaseActivity {
}); });
return true; return true;
} else if (preference == defaultSpeed) { } else if (preference == defaultSpeed) {
showSeekbarSettingsDialog(this); showSeekbarSettingsDialog(this, false);
} else if (preference == defaultSpeedOnly) {
showSeekbarSettingsDialog(this, true);
} }
return false; return false;
} }
@ -708,7 +719,7 @@ public class SettingsNavigationActivity extends SettingsBaseActivity {
return bld.show(); return bld.show();
} }
public static void showSeekbarSettingsDialog(Activity activity) { public static void showSeekbarSettingsDialog(Activity activity, final boolean defaultSpeedOnly) {
if (activity == null) { if (activity == null) {
return; return;
} }
@ -740,10 +751,21 @@ public class SettingsNavigationActivity extends SettingsBaseActivity {
float settingsMaxSpeed = settings.MAX_SPEED.get(); float settingsMaxSpeed = settings.MAX_SPEED.get();
final int[] defaultValue = {Math.round(mode.getDefaultSpeed() * ratio[0])}; final int[] defaultValue = {Math.round(mode.getDefaultSpeed() * ratio[0])};
final int[] minValue = {Math.round((settingsMinSpeed > 0 ? settingsMinSpeed : router.getMinSpeed()) * ratio[0])}; final int[] minValue = new int[1];
final int[] maxValue = {Math.round((settingsMaxSpeed > 0 ? settingsMaxSpeed : router.getMaxSpeed()) * ratio[0])}; final int[] maxValue = new int[1];
final int min = Math.round(router.getMinSpeed() * ratio[0] / 2f); final int min;
final int max = Math.round(router.getMaxSpeed() * ratio[0] * 1.5f); final int max;
if (defaultSpeedOnly) {
minValue[0] = Math.round(1 * ratio[0]);
maxValue[0] = Math.round(300 * ratio[0]);
min = minValue[0];
max = maxValue[0];
} else {
minValue[0] = Math.round((settingsMinSpeed > 0 ? settingsMinSpeed : router.getMinSpeed()) * ratio[0]);
maxValue[0] = Math.round((settingsMaxSpeed > 0 ? settingsMaxSpeed : router.getMaxSpeed()) * ratio[0]);
min = Math.round(router.getMinSpeed() * ratio[0] / 2f);
max = Math.round(router.getMaxSpeed() * ratio[0] * 1.5f);
}
AlertDialog.Builder builder = new AlertDialog.Builder(activity); AlertDialog.Builder builder = new AlertDialog.Builder(activity);
boolean lightMode = app.getSettings().isLightContent(); boolean lightMode = app.getSettings().isLightContent();
@ -755,8 +777,10 @@ public class SettingsNavigationActivity extends SettingsBaseActivity {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
mode.setDefaultSpeed(app, defaultValue[0] / ratio[0]); mode.setDefaultSpeed(app, defaultValue[0] / ratio[0]);
settings.MIN_SPEED.set(minValue[0] / ratio[0]); if (!defaultSpeedOnly) {
settings.MAX_SPEED.set(maxValue[0] / ratio[0]); settings.MIN_SPEED.set(minValue[0] / ratio[0]);
settings.MAX_SPEED.set(maxValue[0] / ratio[0]);
}
} }
}); });
builder.setNegativeButton(R.string.shared_string_cancel, null); builder.setNegativeButton(R.string.shared_string_cancel, null);
@ -764,32 +788,45 @@ public class SettingsNavigationActivity extends SettingsBaseActivity {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
mode.resetDefaultSpeed(app); mode.resetDefaultSpeed(app);
settings.MIN_SPEED.set(0f); if (!defaultSpeedOnly) {
settings.MAX_SPEED.set(0f); settings.MIN_SPEED.set(0f);
settings.MAX_SPEED.set(0f);
}
} }
}); });
setupSpeedSlider(SpeedSliderType.MIN_SPEED, speedUnits, minValue, defaultValue, maxValue, min, max, seekbarView); if (!defaultSpeedOnly) {
setupSpeedSlider(SpeedSliderType.DEFAULT_SPEED, speedUnits, minValue, defaultValue, maxValue, min, max, seekbarView); setupSpeedSlider(SpeedSliderType.DEFAULT_SPEED, speedUnits, minValue, defaultValue, maxValue, min, max, seekbarView);
setupSpeedSlider(SpeedSliderType.MAX_SPEED, speedUnits, minValue, defaultValue, maxValue, min, max, seekbarView); setupSpeedSlider(SpeedSliderType.MIN_SPEED, speedUnits, minValue, defaultValue, maxValue, min, max, seekbarView);
setupSpeedSlider(SpeedSliderType.MAX_SPEED, speedUnits, minValue, defaultValue, maxValue, min, max, seekbarView);
} else {
setupSpeedSlider(SpeedSliderType.DEFAULT_SPEED_ONLY, speedUnits, minValue, defaultValue, maxValue, min, max, seekbarView);
seekbarView.findViewById(R.id.default_speed_div).setVisibility(View.GONE);
seekbarView.findViewById(R.id.default_speed_container).setVisibility(View.GONE);
seekbarView.findViewById(R.id.max_speed_div).setVisibility(View.GONE);
seekbarView.findViewById(R.id.max_speed_container).setVisibility(View.GONE);
}
builder.show(); builder.show();
} }
private enum SpeedSliderType { private enum SpeedSliderType {
DEFAULT_SPEED_ONLY,
DEFAULT_SPEED, DEFAULT_SPEED,
MIN_SPEED, MIN_SPEED,
MAX_SPEED, MAX_SPEED,
} }
private static void setupSpeedSlider(final SpeedSliderType type, String speedUnits, final int[] minValue, final int[] defaultValue, final int[] maxValue, final int min, final int max, View seekbarView) { private static void setupSpeedSlider(final SpeedSliderType type, String speedUnits,
final int[] minValue, final int[] defaultValue, final int[] maxValue,
final int min, final int max, View seekbarView) {
View seekbarLayout; View seekbarLayout;
int titleId; int titleId;
final int[] speedValue; final int[] speedValue;
switch (type) { switch (type) {
case DEFAULT_SPEED: case DEFAULT_SPEED_ONLY:
speedValue = defaultValue; speedValue = defaultValue;
seekbarLayout = seekbarView.findViewById(R.id.default_speed_layout); seekbarLayout = seekbarView.findViewById(R.id.min_speed_layout);
titleId = R.string.default_speed_setting_title; titleId = R.string.default_speed_setting_title;
break; break;
case MIN_SPEED: case MIN_SPEED:
@ -828,6 +865,7 @@ public class SettingsNavigationActivity extends SettingsBaseActivity {
int value = progress + min; int value = progress + min;
switch (type) { switch (type) {
case DEFAULT_SPEED: case DEFAULT_SPEED:
case DEFAULT_SPEED_ONLY:
if (value > maxValue[0]) { if (value > maxValue[0]) {
value = maxValue[0]; value = maxValue[0];
speedSeekBar.setProgress(Math.max(value - min, 0)); speedSeekBar.setProgress(Math.max(value - min, 0));

View file

@ -313,6 +313,7 @@ public abstract class QuickSearchListFragment extends OsmAndListFragment {
if (listAdapter != null) { if (listAdapter != null) {
List<QuickSearchListItem> list = new ArrayList<>(listItems); List<QuickSearchListItem> list = new ArrayList<>(listItems);
if (list.size() > 0) { if (list.size() > 0) {
showResult = false;
list.add(0, new QuickSearchTopShadowListItem(getMyApplication())); list.add(0, new QuickSearchTopShadowListItem(getMyApplication()));
list.add(new QuickSearchBottomShadowListItem(getMyApplication())); list.add(new QuickSearchBottomShadowListItem(getMyApplication()));
} }

View file

@ -10,7 +10,7 @@ import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandSettings; import net.osmand.plus.OsmandSettings;
import net.osmand.plus.R; import net.osmand.plus.R;
import net.osmand.plus.activities.SettingsBaseActivity; import net.osmand.plus.activities.SettingsBaseActivity;
import net.osmand.plus.routing.RouteProvider; import net.osmand.plus.routing.RouteProvider.RouteService;
import net.osmand.plus.settings.preferences.ListPreferenceEx; import net.osmand.plus.settings.preferences.ListPreferenceEx;
import net.osmand.router.GeneralRouter; import net.osmand.router.GeneralRouter;
@ -64,7 +64,8 @@ public class VehicleParametersFragment extends BaseSettingsFragment {
vehicleParametersInfo.setIcon(getContentIcon(R.drawable.ic_action_info_dark)); vehicleParametersInfo.setIcon(getContentIcon(R.drawable.ic_action_info_dark));
vehicleParametersInfo.setTitle(getString(R.string.route_parameters_info, getSelectedAppMode().toHumanString(getContext()))); vehicleParametersInfo.setTitle(getString(R.string.route_parameters_info, getSelectedAppMode().toHumanString(getContext())));
if (app.getSettings().getApplicationMode().getRouteService() == RouteProvider.RouteService.OSMAND) { RouteService routeService = app.getSettings().getApplicationMode().getRouteService();
if (routeService == RouteService.OSMAND) {
GeneralRouter router = getRouter(app.getRoutingConfig(), getSelectedAppMode()); GeneralRouter router = getRouter(app.getRoutingConfig(), getSelectedAppMode());
if (router != null) { if (router != null) {
Map<String, GeneralRouter.RoutingParameter> parameters = router.getParameters(); Map<String, GeneralRouter.RoutingParameter> parameters = router.getParameters();
@ -81,6 +82,8 @@ public class VehicleParametersFragment extends BaseSettingsFragment {
setupDefaultSpeedPref(); setupDefaultSpeedPref();
} }
} }
} else if (routeService == RouteService.STRAIGHT) {
setupDefaultSpeedPref();
} }
} }
@ -125,7 +128,8 @@ public class VehicleParametersFragment extends BaseSettingsFragment {
@Override @Override
public boolean onPreferenceClick(Preference preference) { public boolean onPreferenceClick(Preference preference) {
if (preference.getKey().equals(GeneralRouter.DEFAULT_SPEED)) { if (preference.getKey().equals(GeneralRouter.DEFAULT_SPEED)) {
showSeekbarSettingsDialog(getActivity()); RouteService routeService = app.getSettings().getApplicationMode().getRouteService();
showSeekbarSettingsDialog(getActivity(), routeService == RouteService.STRAIGHT);
return true; return true;
} }
return super.onPreferenceClick(preference); return super.onPreferenceClick(preference);