Merge branch 'master' into avoid_roads_points
# Conflicts: # OsmAnd/res/values/strings.xml
BIN
OsmAnd-telegram/res/drawable-hdpi/ic_action_ruler_unit.png
Executable file
After Width: | Height: | Size: 336 B |
BIN
OsmAnd-telegram/res/drawable-hdpi/ic_action_speed.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
OsmAnd-telegram/res/drawable-hdpi/ic_world_globe_dark.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
OsmAnd-telegram/res/drawable-mdpi/ic_action_ruler_unit.png
Executable file
After Width: | Height: | Size: 186 B |
BIN
OsmAnd-telegram/res/drawable-mdpi/ic_action_speed.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
OsmAnd-telegram/res/drawable-mdpi/ic_world_globe_dark.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
OsmAnd-telegram/res/drawable-xhdpi/ic_action_ruler_unit.png
Executable file
After Width: | Height: | Size: 294 B |
BIN
OsmAnd-telegram/res/drawable-xhdpi/ic_action_speed.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
OsmAnd-telegram/res/drawable-xhdpi/ic_world_globe_dark.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
OsmAnd-telegram/res/drawable-xxhdpi/ic_action_ruler_unit.png
Executable file
After Width: | Height: | Size: 417 B |
BIN
OsmAnd-telegram/res/drawable-xxhdpi/ic_action_speed.png
Normal file
After Width: | Height: | Size: 2.2 KiB |
BIN
OsmAnd-telegram/res/drawable-xxhdpi/ic_world_globe_dark.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
OsmAnd-telegram/res/drawable-xxxhdpi/ic_action_ruler_unit.png
Executable file
After Width: | Height: | Size: 681 B |
|
@ -75,6 +75,35 @@
|
|||
|
||||
<include layout="@layout/list_item_divider"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?attr/card_bg_color"
|
||||
android:orientation="vertical">
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/list_header_height"
|
||||
android:ellipsize="end"
|
||||
android:gravity="center_vertical"
|
||||
android:maxLines="1"
|
||||
android:paddingLeft="@dimen/content_padding_standard"
|
||||
android:paddingRight="@dimen/content_padding_standard"
|
||||
android:text="@string/units_and_formats"
|
||||
android:textColor="?android:textColorPrimary"
|
||||
android:textSize="@dimen/list_item_title_text_size"
|
||||
app:typeface="@string/font_roboto_medium"/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/units_and_formats_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<include layout="@layout/list_item_divider"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="km_h">كم/س</string>
|
||||
<string name="shared_string_ok">حسناً</string>
|
||||
<string name="shared_string_ok">موافق</string>
|
||||
<string name="timeline_available_for_free_now">الجدول الزمني ميزة متوفرة الآن مجانا.</string>
|
||||
<string name="disable_monitoring">تعطيل العرض</string>
|
||||
<string name="location_recording_enabled">تسجيل الموقع ممكن</string>
|
||||
|
@ -10,10 +10,60 @@
|
|||
<string name="shared_string_telegram">تيليجرام</string>
|
||||
<string name="privacy_policy_use_telegram">يستخدم تيليجرام (تطبيق المراسلة) للاتصال والتواصل مع الأشخاص.</string>
|
||||
<string name="shared_string_later">لاحقا</string>
|
||||
<string name="osmand_service">وضع الخلفية</string>
|
||||
<string name="osmand_service">حالة وضع السكون</string>
|
||||
<string name="nm_h">م.بح/س</string>
|
||||
<string name="si_nm_h">ميل بحري في الساعة (عقدة)</string>
|
||||
<string name="si_km_m">كم/م</string>
|
||||
<string name="si_km_m">كم ، متر</string>
|
||||
<string name="shared_string_end">نهاية</string>
|
||||
<string name="saved_messages">الرسائل المحفوظة</string>
|
||||
<string name="shared_string_update">تحديث</string>
|
||||
<string name="average_altitude">متوسط الارتفاع</string>
|
||||
<string name="average_speed">متوسط السرعة</string>
|
||||
<string name="shared_string_map">إدارة الخرائط</string>
|
||||
<string name="shared_string_add">إضافة</string>
|
||||
<string name="shared_string_hide">إخفاء</string>
|
||||
<string name="shared_string_status">الحالة</string>
|
||||
<string name="shared_string_disable">تعطيل</string>
|
||||
<string name="shared_string_save">حفظ</string>
|
||||
<string name="shared_string_name">الاسم</string>
|
||||
<string name="by_name">بالاسم</string>
|
||||
<string name="shared_string_sort">فرز</string>
|
||||
<string name="shared_string_exit">مخرج</string>
|
||||
<string name="shared_string_close">إغلاق</string>
|
||||
<string name="shared_string_all">الكل</string>
|
||||
<string name="shared_string_off">إيقاف</string>
|
||||
<string name="shared_string_install">تثبيت</string>
|
||||
<string name="shared_string_share">مشاركة</string>
|
||||
<string name="shared_string_back">العودة</string>
|
||||
<string name="shared_string_password">كلمة المرور</string>
|
||||
<string name="shared_string_continue">استمرار</string>
|
||||
<string name="shared_string_cancel">إلغاء</string>
|
||||
<string name="shared_string_settings">الإعدادات</string>
|
||||
<string name="shared_string_distance">المسافة</string>
|
||||
<string name="yard">ياردة</string>
|
||||
<string name="foot">قدم</string>
|
||||
<string name="mile">ميل</string>
|
||||
<string name="km">كلم</string>
|
||||
<string name="m">م</string>
|
||||
<string name="nm">ميل بحري</string>
|
||||
<string name="min_mile">د/م</string>
|
||||
<string name="min_km">د/كم</string>
|
||||
<string name="m_s">م/ث</string>
|
||||
<string name="mile_per_hour">ميل ساعة</string>
|
||||
<string name="si_kmh">كم/س</string>
|
||||
<string name="si_mph">ميل ساعة</string>
|
||||
<string name="si_m_s">م/ث</string>
|
||||
<string name="si_min_km">دقيقة/كم</string>
|
||||
<string name="si_min_m">دقيقة/ميل</string>
|
||||
<string name="si_mi_feet">ميل ، قدم</string>
|
||||
<string name="si_mi_yard">ميل ، ياردة</string>
|
||||
<string name="si_nm">ميل بحري</string>
|
||||
<string name="si_mi_meters">ميل ، متر</string>
|
||||
<string name="shared_string_search">بحث</string>
|
||||
<string name="altitude">الارتفاع</string>
|
||||
<string name="shared_string_enable">تفعيل</string>
|
||||
<string name="shared_string_select">تحديد</string>
|
||||
<string name="shared_string_start">بدء</string>
|
||||
<string name="shared_string_apply">تطبيق</string>
|
||||
<string name="shared_string_enabled">مفعل</string>
|
||||
</resources>
|
|
@ -251,4 +251,9 @@
|
|||
<string name="shared_string_apply">Anwenden</string>
|
||||
<string name="set_time_timeline_descr">Dauer der Anzeige auswählen</string>
|
||||
<string name="saved_messages">Gespeicherte Nachrichten</string>
|
||||
<string name="time_zone">Zeitzone</string>
|
||||
<string name="units_and_formats">Einheiten & Formate</string>
|
||||
<string name="unit_of_length">Längeneinheiten</string>
|
||||
<string name="unit_of_speed_system_descr">Geschwindigkeitseinheit festlegen.</string>
|
||||
<string name="unit_of_speed_system">Geschwindigkeitseinheit</string>
|
||||
</resources>
|
|
@ -197,7 +197,7 @@
|
|||
<string name="shared_string_telegram">Telegram</string>
|
||||
<string name="privacy_policy_use_telegram">Telegram (la aplicación de mensajería) se utiliza para conectar y comunicar a las personas.</string>
|
||||
<string name="privacy_policy_telegram_client">El rastreador de OsmAnd (en inglés como «OsmAnd Tracker»), es uno de los clientes que utiliza la plataforma abierta de Telegram. Sus contactos pueden utilizar cualquier otro cliente de Telegram.</string>
|
||||
<string name="privacy_policy_agree">Al pulsar en continuar, acepta las Políticas de Privacidad de Telegram y de OsmAnd.</string>
|
||||
<string name="privacy_policy_agree">Al pulsar en «Continuar», acepta las Políticas de Privacidad de Telegram y de OsmAnd.</string>
|
||||
<string name="shared_string_accept">Aceptar</string>
|
||||
<string name="telegram_privacy_policy">Política de privacidad de Telegram</string>
|
||||
<string name="osmand_privacy_policy">Política de privacidad de OsmAnd</string>
|
||||
|
@ -249,4 +249,5 @@
|
|||
<string name="shared_string_apply">Aplicar</string>
|
||||
<string name="set_time_timeline_descr">Elige la hora de visualización</string>
|
||||
<string name="start_end_date">Fecha de inicio — fin</string>
|
||||
<string name="saved_messages">Mensajes guardados</string>
|
||||
</resources>
|
2
OsmAnd-telegram/res/values-fi/strings.xml
Normal file
|
@ -0,0 +1,2 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
|
@ -162,7 +162,7 @@
|
|||
<string name="get_telegram_account_first">現在地の共有をおこなうには、Telegramアカウントが必要です。</string>
|
||||
<string name="get_telegram_description_continue">Telegramをインストールしてアカウントを設定してください。</string>
|
||||
<string name="get_telegram_after_creating_account">その後、このアプリを使用できます。</string>
|
||||
<string name="shared_string_all">すべて</string>
|
||||
<string name="shared_string_all">全て</string>
|
||||
<string name="shared_string_off">OFF</string>
|
||||
<string name="already_registered_in_telegram">登録済みのTelegramアカウントと電話番号が必要です。</string>
|
||||
<string name="do_not_have_telegram">私はTelegramアカウントを持っていません</string>
|
||||
|
@ -226,7 +226,7 @@
|
|||
<string name="nm">海里</string>
|
||||
<string name="min_mile">min/m</string>
|
||||
<string name="min_km">min/km</string>
|
||||
<string name="nm_h">海里/h</string>
|
||||
<string name="nm_h">ノット</string>
|
||||
<string name="m_s">m/s</string>
|
||||
<string name="km_h">km/h</string>
|
||||
<string name="mile_per_hour">mph</string>
|
||||
|
@ -246,4 +246,5 @@
|
|||
<string name="my_location">現在地</string>
|
||||
<string name="live_now">今現在</string>
|
||||
<string name="timeline">タイムライン</string>
|
||||
<string name="si_min_km">分/キロメートル</string>
|
||||
</resources>
|
|
@ -213,4 +213,41 @@
|
|||
<string name="my_location">Mijn locatie</string>
|
||||
<string name="live_now">Nu live</string>
|
||||
<string name="timeline">Tijdlijn</string>
|
||||
<string name="sharing_time">Tijd van delen</string>
|
||||
<string name="set_visible_time_for_all">Zet zichtbare tijd voor iedereen</string>
|
||||
<string name="visible_time_for_all">Zichtbare tijd voor iedereen</string>
|
||||
<string name="direction">Richting</string>
|
||||
<string name="precision">Nauwkeurigheid</string>
|
||||
<string name="altitude">Hoogte</string>
|
||||
<string name="bearing">Richting</string>
|
||||
<string name="proxy_key">Sleutel</string>
|
||||
<string name="proxy_password">Wachtwoord</string>
|
||||
<string name="proxy_username">Gebruikersnaam</string>
|
||||
<string name="proxy_credentials">(Gebruiker)gegevens</string>
|
||||
<string name="proxy_port">Poort</string>
|
||||
<string name="proxy_server">Server</string>
|
||||
<string name="shared_string_connection">Verbinding</string>
|
||||
<string name="shared_string_enable">Activeer</string>
|
||||
<string name="proxy_type">Proxy soort</string>
|
||||
<string name="proxy_connected">Verbonden</string>
|
||||
<string name="proxy_disconnected">Niet verbonden</string>
|
||||
<string name="proxy_settings">Proxy instellingen</string>
|
||||
<string name="proxy">Proxy</string>
|
||||
<string name="privacy">Privacy</string>
|
||||
<string name="shared_string_select">Kies</string>
|
||||
<string name="min_logging_distance">Minimale logging-afstand</string>
|
||||
<string name="min_logging_distance_descr">Filter: minimale afstand voordat een nieuw punt gelogd wordt</string>
|
||||
<string name="min_logging_accuracy">Minimale logging-nauwkeurigheid</string>
|
||||
<string name="min_logging_accuracy_descr">Filter: geen logging tenzij de nauwkeurigheid bereikt is</string>
|
||||
<string name="min_logging_speed">Minimale logging-snelheid</string>
|
||||
<string name="min_logging_speed_descr">Filter: geen logging beneden geselecteerde snelheid</string>
|
||||
<string name="gpx_settings">GPX instellingen</string>
|
||||
<string name="timeline_no_data_descr">We hebben geen data verzameld op de geselecteerde dag</string>
|
||||
<string name="timeline_no_data">Geen data</string>
|
||||
<string name="shared_string_end">Eind</string>
|
||||
<string name="shared_string_start">Start</string>
|
||||
<string name="shared_string_apply">Pas toe</string>
|
||||
<string name="set_time_timeline_descr">Kies te tonen tijd</string>
|
||||
<string name="start_end_date">Start — Eind datum</string>
|
||||
<string name="saved_messages">Bewaarde gesprekken</string>
|
||||
</resources>
|
|
@ -203,7 +203,7 @@
|
|||
<string name="shared_string_telegram">Telegram</string>
|
||||
<string name="privacy_policy_use_telegram">Telegram (aplikacji do wysyłania wiadomości) jest używana do łączenia i komunikowania się z ludźmi.</string>
|
||||
<string name="privacy_policy_telegram_client">OsmAnd Tracker to jeden z klientów używających otwartej platformy Telegramu. Twoje kontrakty mogą używać innych klientów Telegramu.</string>
|
||||
<string name="privacy_policy_agree">Klikając \"Kontynuuj\" zgadzam się z warunkami Polityki Prywatności Telegramu i Polityki Prywatności OsmAnd.</string>
|
||||
<string name="privacy_policy_agree">Klikając \"Kontynuuj\" zgadzasz się na warunki polityki prywatności Telegramu i OsmAnd.</string>
|
||||
<string name="shared_string_accept">Akceptuj</string>
|
||||
<string name="telegram_privacy_policy">Polityka prywatności Telegramu</string>
|
||||
<string name="osmand_privacy_policy">Polityka prywatności OsmAnd</string>
|
||||
|
@ -250,4 +250,5 @@
|
|||
<string name="shared_string_start">Start</string>
|
||||
<string name="set_time_timeline_descr">Wybierz czas wyświetlania</string>
|
||||
<string name="start_end_date">Daty rozpoczęcia i zakończenia</string>
|
||||
<string name="saved_messages">Zapisane wiadomości</string>
|
||||
</resources>
|
|
@ -198,7 +198,7 @@
|
|||
<string name="shared_string_telegram">Telegram</string>
|
||||
<string name="privacy_policy_use_telegram">Telegrama (o aplicativo de mensagens) é usado para conectar e se comunicar com as pessoas.</string>
|
||||
<string name="privacy_policy_telegram_client">OsmAnd tracker é um dos clientes que usam a Plataforma aberta do Telegram . Seus contatos podem usar qualquer outro cliente Telegram.</string>
|
||||
<string name="privacy_policy_agree">Ao clicar em continuar, você concorda com as condições da política de privacidade do Telegram e da política de privacidade da OsmAnd.</string>
|
||||
<string name="privacy_policy_agree">Ao clicar em \"Continuar\", você concorda com as condições da política de privacidade do Telegram- e OsmAnd.</string>
|
||||
<string name="shared_string_accept">Aceitar</string>
|
||||
<string name="telegram_privacy_policy">Política de privacidade do Telegram</string>
|
||||
<string name="osmand_privacy_policy">"Política de privacidade do OsmAnd "</string>
|
||||
|
@ -250,4 +250,5 @@
|
|||
<string name="shared_string_apply">Aplicar</string>
|
||||
<string name="set_time_timeline_descr">Selecionar a hora para exibir</string>
|
||||
<string name="start_end_date">Data de início - fim</string>
|
||||
<string name="saved_messages">Mensagens salvas</string>
|
||||
</resources>
|
|
@ -1,5 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="time_zone_descr">Select time zone to show in your location messages.</string>
|
||||
<string name="time_zone">Time zone</string>
|
||||
<string name="units_and_formats">Units & formats</string>
|
||||
<string name="unit_of_length_descr">Change what distance is measured in.</string>
|
||||
<string name="unit_of_length">Units of length</string>
|
||||
<string name="unit_of_speed_system_descr">Define unit of speed.</string>
|
||||
<string name="unit_of_speed_system">Unit of speed</string>
|
||||
<string name="saved_messages">Saved messages</string>
|
||||
<string name="shared_string_end">End</string>
|
||||
<string name="shared_string_start">Start</string>
|
||||
|
|
|
@ -11,9 +11,7 @@ import net.osmand.PlatformUtil
|
|||
import net.osmand.telegram.helpers.OsmandAidlHelper
|
||||
import net.osmand.telegram.helpers.ShowLocationHelper
|
||||
import net.osmand.telegram.helpers.TelegramHelper
|
||||
import net.osmand.telegram.utils.AndroidUtils
|
||||
import net.osmand.telegram.utils.OsmandApiUtils
|
||||
import net.osmand.telegram.utils.OsmandFormatter
|
||||
import net.osmand.telegram.utils.*
|
||||
import net.osmand.telegram.utils.OsmandFormatter.MetricsConstants
|
||||
import net.osmand.telegram.utils.OsmandFormatter.SpeedConstants
|
||||
import net.osmand.telegram.utils.OsmandLocationUtils
|
||||
|
@ -72,6 +70,7 @@ private const val SHARING_MODE_KEY = "current_sharing_mode"
|
|||
|
||||
private const val METRICS_CONSTANTS_KEY = "metrics_constants"
|
||||
private const val SPEED_CONSTANTS_KEY = "speed_constants"
|
||||
private const val UTC_OFFSET_CONSTANTS_KEY = "utc_offset_constants"
|
||||
|
||||
private const val SEND_MY_LOC_INTERVAL_KEY = "send_my_loc_interval"
|
||||
private const val STALE_LOC_TIME_KEY = "stale_loc_time"
|
||||
|
@ -125,6 +124,7 @@ class TelegramSettings(private val app: TelegramApplication) {
|
|||
|
||||
var metricsConstants = MetricsConstants.KILOMETERS_AND_METERS
|
||||
var speedConstants = SpeedConstants.KILOMETERS_PER_HOUR
|
||||
var utcOffset = DataConstants.UTC_FORMAT
|
||||
|
||||
var sendMyLocInterval = SEND_MY_LOC_VALUES_SEC[SEND_MY_LOC_DEFAULT_INDEX]
|
||||
var staleLocTime = STALE_LOC_VALUES_SEC[STALE_LOC_DEFAULT_INDEX]
|
||||
|
@ -142,6 +142,7 @@ class TelegramSettings(private val app: TelegramApplication) {
|
|||
|
||||
val gpsAndLocPrefs = listOf(SendMyLocPref(), StaleLocPref(), LocHistoryPref(), ShareTypePref())
|
||||
val gpxLoggingPrefs = listOf(MinLocationDistance(), MinLocationAccuracy(), MinLocationSpeed())
|
||||
val unitsAndFormatsPrefs = listOf(UnitsOfSpeed(), UnitsOfLength(), UtcOffset())
|
||||
|
||||
var batteryOptimisationAsked = false
|
||||
|
||||
|
@ -606,6 +607,7 @@ class TelegramSettings(private val app: TelegramApplication) {
|
|||
|
||||
edit.putString(METRICS_CONSTANTS_KEY, metricsConstants.name)
|
||||
edit.putString(SPEED_CONSTANTS_KEY, speedConstants.name)
|
||||
edit.putString(UTC_OFFSET_CONSTANTS_KEY, utcOffset)
|
||||
|
||||
edit.putLong(SEND_MY_LOC_INTERVAL_KEY, sendMyLocInterval)
|
||||
edit.putLong(STALE_LOC_TIME_KEY, staleLocTime)
|
||||
|
@ -668,6 +670,7 @@ class TelegramSettings(private val app: TelegramApplication) {
|
|||
speedConstants = SpeedConstants.valueOf(
|
||||
prefs.getString(SPEED_CONSTANTS_KEY, SpeedConstants.KILOMETERS_PER_HOUR.name)
|
||||
)
|
||||
utcOffset = prefs.getString(UTC_OFFSET_CONSTANTS_KEY, DataConstants.UTC_FORMAT)
|
||||
|
||||
try {
|
||||
parseShareChatsInfo(JSONArray(prefs.getString(SHARE_CHATS_INFO_KEY, "")))
|
||||
|
@ -895,68 +898,64 @@ class TelegramSettings(private val app: TelegramApplication) {
|
|||
}
|
||||
}
|
||||
|
||||
inner class SendMyLocPref : NumericPref(
|
||||
inner class SendMyLocPref : ListPreference(
|
||||
R.drawable.ic_action_share_location,
|
||||
R.string.send_my_location,
|
||||
R.string.send_my_location_desc,
|
||||
SEND_MY_LOC_VALUES_SEC
|
||||
R.string.send_my_location_desc
|
||||
) {
|
||||
|
||||
override fun getCurrentValue() =
|
||||
OsmandFormatter.getFormattedDuration(app, sendMyLocInterval)
|
||||
|
||||
override fun setCurrentValue(index: Int) {
|
||||
sendMyLocInterval = values[index].toLong()
|
||||
sendMyLocInterval = SEND_MY_LOC_VALUES_SEC[index]
|
||||
app.updateSendLocationInterval()
|
||||
}
|
||||
|
||||
override fun getMenuItems() =
|
||||
values.map { OsmandFormatter.getFormattedDuration(app, it.toLong()) }
|
||||
SEND_MY_LOC_VALUES_SEC.map { OsmandFormatter.getFormattedDuration(app, it) }
|
||||
}
|
||||
|
||||
inner class StaleLocPref : NumericPref(
|
||||
inner class StaleLocPref : ListPreference(
|
||||
R.drawable.ic_action_time_span,
|
||||
R.string.stale_location,
|
||||
R.string.stale_location_desc,
|
||||
STALE_LOC_VALUES_SEC
|
||||
R.string.stale_location_desc
|
||||
) {
|
||||
|
||||
override fun getCurrentValue() =
|
||||
OsmandFormatter.getFormattedDuration(app, staleLocTime)
|
||||
|
||||
override fun setCurrentValue(index: Int) {
|
||||
staleLocTime = values[index].toLong()
|
||||
staleLocTime = STALE_LOC_VALUES_SEC[index]
|
||||
}
|
||||
|
||||
override fun getMenuItems() =
|
||||
values.map { OsmandFormatter.getFormattedDuration(app, it.toLong()) }
|
||||
STALE_LOC_VALUES_SEC.map { OsmandFormatter.getFormattedDuration(app, it) }
|
||||
}
|
||||
|
||||
inner class LocHistoryPref : NumericPref(
|
||||
inner class LocHistoryPref : ListPreference(
|
||||
R.drawable.ic_action_location_history,
|
||||
R.string.location_history,
|
||||
R.string.location_history_desc,
|
||||
LOC_HISTORY_VALUES_SEC
|
||||
R.string.location_history_desc
|
||||
) {
|
||||
|
||||
override fun getCurrentValue() =
|
||||
OsmandFormatter.getFormattedDuration(app, locHistoryTime)
|
||||
|
||||
override fun setCurrentValue(index: Int) {
|
||||
val value = values[index]
|
||||
locHistoryTime = value.toLong()
|
||||
app.telegramHelper.messageActiveTimeSec = value.toLong()
|
||||
val value = LOC_HISTORY_VALUES_SEC[index]
|
||||
locHistoryTime = value
|
||||
app.telegramHelper.messageActiveTimeSec = value
|
||||
}
|
||||
|
||||
override fun getMenuItems() =
|
||||
values.map { OsmandFormatter.getFormattedDuration(app, it.toLong()) }
|
||||
LOC_HISTORY_VALUES_SEC.map { OsmandFormatter.getFormattedDuration(app, it) }
|
||||
}
|
||||
|
||||
inner class ShareTypePref : NumericPref(
|
||||
inner class ShareTypePref : ListPreference(
|
||||
R.drawable.ic_action_location_history,
|
||||
R.string.send_location_as,
|
||||
R.string.send_location_as_descr,
|
||||
emptyList()
|
||||
R.string.send_location_as_descr
|
||||
) {
|
||||
|
||||
override fun getCurrentValue(): String {
|
||||
|
@ -988,20 +987,16 @@ class TelegramSettings(private val app: TelegramApplication) {
|
|||
}
|
||||
}
|
||||
|
||||
inner class MinLocationDistance : NumericPref(
|
||||
0, R.string.min_logging_distance,
|
||||
R.string.min_logging_distance_descr,
|
||||
MIN_LOCATION_DISTANCE
|
||||
) {
|
||||
inner class MinLocationDistance :
|
||||
ListPreference(0, R.string.min_logging_distance, R.string.min_logging_distance_descr) {
|
||||
|
||||
override fun getCurrentValue() = getFormattedValue(minLocationDistance)
|
||||
|
||||
override fun setCurrentValue(index: Int) {
|
||||
val value = values[index]
|
||||
minLocationDistance = value.toFloat()
|
||||
minLocationDistance = MIN_LOCATION_DISTANCE[index]
|
||||
}
|
||||
|
||||
override fun getMenuItems() = values.map { getFormattedValue(it.toFloat()) }
|
||||
override fun getMenuItems() = MIN_LOCATION_DISTANCE.map { getFormattedValue(it) }
|
||||
|
||||
private fun getFormattedValue(value: Float): String {
|
||||
return if (value == 0f) app.getString(R.string.shared_string_select)
|
||||
|
@ -1009,20 +1004,16 @@ class TelegramSettings(private val app: TelegramApplication) {
|
|||
}
|
||||
}
|
||||
|
||||
inner class MinLocationAccuracy : NumericPref(
|
||||
0, R.string.min_logging_accuracy,
|
||||
R.string.min_logging_accuracy_descr,
|
||||
MIN_LOCATION_ACCURACY
|
||||
) {
|
||||
inner class MinLocationAccuracy :
|
||||
ListPreference(0, R.string.min_logging_accuracy, R.string.min_logging_accuracy_descr) {
|
||||
|
||||
override fun getCurrentValue() = getFormattedValue(minLocationAccuracy)
|
||||
|
||||
override fun setCurrentValue(index: Int) {
|
||||
val value = values[index]
|
||||
minLocationAccuracy = value.toFloat()
|
||||
minLocationAccuracy = MIN_LOCATION_ACCURACY[index]
|
||||
}
|
||||
|
||||
override fun getMenuItems() = values.map { getFormattedValue(it.toFloat()) }
|
||||
override fun getMenuItems() = MIN_LOCATION_ACCURACY.map { getFormattedValue(it) }
|
||||
|
||||
private fun getFormattedValue(value: Float): String {
|
||||
return if (value == 0f) app.getString(R.string.shared_string_select)
|
||||
|
@ -1030,20 +1021,16 @@ class TelegramSettings(private val app: TelegramApplication) {
|
|||
}
|
||||
}
|
||||
|
||||
inner class MinLocationSpeed : NumericPref(
|
||||
0, R.string.min_logging_speed,
|
||||
R.string.min_logging_speed_descr,
|
||||
MIN_LOCATION_SPEED
|
||||
) {
|
||||
inner class MinLocationSpeed :
|
||||
ListPreference(0, R.string.min_logging_speed, R.string.min_logging_speed_descr) {
|
||||
|
||||
override fun getCurrentValue() = getFormattedValue(minLocationSpeed)
|
||||
|
||||
override fun setCurrentValue(index: Int) {
|
||||
val value = values[index]
|
||||
minLocationSpeed = value.toFloat()
|
||||
minLocationSpeed = MIN_LOCATION_SPEED[index]
|
||||
}
|
||||
|
||||
override fun getMenuItems() = values.map { getFormattedValue(it.toFloat()) }
|
||||
override fun getMenuItems() = MIN_LOCATION_SPEED.map { getFormattedValue(it) }
|
||||
|
||||
private fun getFormattedValue(value: Float): String {
|
||||
return when (value) {
|
||||
|
@ -1054,11 +1041,54 @@ class TelegramSettings(private val app: TelegramApplication) {
|
|||
}
|
||||
}
|
||||
|
||||
abstract inner class NumericPref(
|
||||
inner class UnitsOfSpeed : ListPreference(
|
||||
R.drawable.ic_action_speed,
|
||||
R.string.unit_of_speed_system,
|
||||
R.string.unit_of_speed_system_descr
|
||||
) {
|
||||
|
||||
override fun getCurrentValue() = speedConstants.toShortString(app)
|
||||
|
||||
override fun setCurrentValue(index: Int) {
|
||||
speedConstants = SpeedConstants.values()[index]
|
||||
}
|
||||
|
||||
override fun getMenuItems() = SpeedConstants.values().map { it.toShortString(app) }
|
||||
}
|
||||
|
||||
inner class UnitsOfLength : ListPreference(
|
||||
R.drawable.ic_action_ruler_unit, R.string.unit_of_length,
|
||||
R.string.unit_of_length_descr
|
||||
) {
|
||||
|
||||
override fun getCurrentValue() = metricsConstants.toHumanString(app)
|
||||
|
||||
override fun setCurrentValue(index: Int) {
|
||||
metricsConstants = MetricsConstants.values()[index]
|
||||
}
|
||||
|
||||
override fun getMenuItems() = MetricsConstants.values().map { it.toHumanString(app) }
|
||||
}
|
||||
|
||||
inner class UtcOffset : ListPreference(
|
||||
R.drawable.ic_world_globe_dark, R.string.time_zone,
|
||||
R.string.time_zone_descr
|
||||
) {
|
||||
private val formattedUtcOffsets = DataConstants.utcOffsets.keys.toList()
|
||||
|
||||
override fun getCurrentValue() = utcOffset
|
||||
|
||||
override fun setCurrentValue(index: Int) {
|
||||
utcOffset = formattedUtcOffsets[index]
|
||||
}
|
||||
|
||||
override fun getMenuItems() = formattedUtcOffsets
|
||||
}
|
||||
|
||||
abstract inner class ListPreference(
|
||||
@DrawableRes val iconId: Int,
|
||||
@StringRes val titleId: Int,
|
||||
@StringRes val descriptionId: Int,
|
||||
val values: List<Number>
|
||||
@StringRes val descriptionId: Int
|
||||
) {
|
||||
|
||||
abstract fun getCurrentValue(): String
|
||||
|
|
|
@ -7,6 +7,7 @@ import net.osmand.telegram.helpers.LocationMessages.BufferMessage
|
|||
import net.osmand.telegram.notifications.TelegramNotification.NotificationType
|
||||
import net.osmand.telegram.utils.AndroidNetworkUtils
|
||||
import net.osmand.telegram.utils.BASE_URL
|
||||
import net.osmand.telegram.utils.OsmandLocationUtils
|
||||
import net.osmand.util.MapUtils
|
||||
import org.drinkless.td.libcore.telegram.TdApi
|
||||
import org.json.JSONException
|
||||
|
@ -14,8 +15,6 @@ import org.json.JSONObject
|
|||
|
||||
private const val USER_SET_LIVE_PERIOD_DELAY_MS = 5000 // 5 sec
|
||||
|
||||
private const val UPDATE_LOCATION_ACCURACY = 150 // 150 meters
|
||||
|
||||
private const val SENT_LOCATIONS_INTERVAL_TIME_MS = 4000 // 4 sec
|
||||
|
||||
class ShareLocationHelper(private val app: TelegramApplication) {
|
||||
|
@ -142,7 +141,8 @@ class ShareLocationHelper(private val app: TelegramApplication) {
|
|||
if (it.deviceName.isEmpty()) {
|
||||
if (!shareInfo.pendingTextMessage && shareInfo.currentTextMessageId != -1L) {
|
||||
lastLocationSentTime = System.currentTimeMillis()
|
||||
app.telegramHelper.editTextLocation(shareInfo, it)
|
||||
val content = OsmandLocationUtils.getTextMessageContent(shareInfo.updateTextMessageId, it, app)
|
||||
app.telegramHelper.editTextLocation(shareInfo, content)
|
||||
app.locationMessages.removeBufferedMessage(it)
|
||||
}
|
||||
} else {
|
||||
|
@ -263,7 +263,8 @@ class ShareLocationHelper(private val app: TelegramApplication) {
|
|||
sendLocationToBot(message, shareInfo, SHARE_TYPE_TEXT)
|
||||
} else {
|
||||
lastLocationSentTime = System.currentTimeMillis()
|
||||
app.telegramHelper.sendNewTextLocation(shareInfo, message)
|
||||
val content = OsmandLocationUtils.getTextMessageContent(shareInfo.updateTextMessageId, message, app)
|
||||
app.telegramHelper.sendNewTextLocation(shareInfo, content)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -276,7 +277,8 @@ class ShareLocationHelper(private val app: TelegramApplication) {
|
|||
} else {
|
||||
if (shareInfo.pendingTdLibText < MAX_MESSAGES_IN_TDLIB_PER_CHAT) {
|
||||
lastLocationSentTime = System.currentTimeMillis()
|
||||
app.telegramHelper.editTextLocation(shareInfo, message)
|
||||
val content = OsmandLocationUtils.getTextMessageContent(shareInfo.updateTextMessageId, message, app)
|
||||
app.telegramHelper.editTextLocation(shareInfo, content)
|
||||
} else {
|
||||
app.locationMessages.addBufferedMessage(message)
|
||||
}
|
||||
|
|
|
@ -926,9 +926,8 @@ class TelegramHelper private constructor() {
|
|||
}
|
||||
}
|
||||
|
||||
fun sendNewTextLocation(shareInfo: TelegramSettings.ShareChatInfo, location: LocationMessages.BufferMessage) {
|
||||
fun sendNewTextLocation(shareInfo: TelegramSettings.ShareChatInfo, content: TdApi.InputMessageText) {
|
||||
shareInfo.updateTextMessageId = 1
|
||||
val content = OsmandLocationUtils.getTextMessageContent(shareInfo.updateTextMessageId, location)
|
||||
if (!shareInfo.pendingTextMessage) {
|
||||
shareInfo.pendingTextMessage = true
|
||||
shareInfo.pendingTdLibText++
|
||||
|
@ -940,8 +939,7 @@ class TelegramHelper private constructor() {
|
|||
}
|
||||
}
|
||||
|
||||
fun editTextLocation(shareInfo: TelegramSettings.ShareChatInfo, location: LocationMessages.BufferMessage) {
|
||||
val content = OsmandLocationUtils.getTextMessageContent(shareInfo.updateTextMessageId, location)
|
||||
fun editTextLocation(shareInfo: TelegramSettings.ShareChatInfo, content: TdApi.InputMessageText) {
|
||||
if (shareInfo.currentTextMessageId!=-1L) {
|
||||
shareInfo.pendingTdLibText++
|
||||
shareInfo.lastSendTextMessageTime = (System.currentTimeMillis() / 1000).toInt()
|
||||
|
|
|
@ -17,7 +17,7 @@ import android.view.ViewGroup
|
|||
import android.widget.*
|
||||
import net.osmand.telegram.R
|
||||
import net.osmand.telegram.TelegramSettings
|
||||
import net.osmand.telegram.TelegramSettings.NumericPref
|
||||
import net.osmand.telegram.TelegramSettings.ListPreference
|
||||
import net.osmand.telegram.helpers.TelegramHelper.Companion.OSMAND_BOT_USERNAME
|
||||
import net.osmand.telegram.helpers.TelegramUiHelper
|
||||
import net.osmand.telegram.utils.AndroidUtils
|
||||
|
@ -50,7 +50,7 @@ class SettingsDialogFragment : BaseDialogFragment() {
|
|||
}
|
||||
var container = mainView.findViewById<ViewGroup>(R.id.gps_and_loc_container)
|
||||
settings.gpsAndLocPrefs.forEach {
|
||||
createNumericPref(inflater, container, it)
|
||||
createListPref(inflater, container, it)
|
||||
}
|
||||
|
||||
if (Build.VERSION.SDK_INT >= 26) {
|
||||
|
@ -66,6 +66,11 @@ class SettingsDialogFragment : BaseDialogFragment() {
|
|||
}
|
||||
}
|
||||
|
||||
container = mainView.findViewById<ViewGroup>(R.id.units_and_formats_container)
|
||||
settings.unitsAndFormatsPrefs.forEach {
|
||||
createListPref(inflater, container, it)
|
||||
}
|
||||
|
||||
container = mainView.findViewById<ViewGroup>(R.id.gps_points_container)
|
||||
inflater.inflate(R.layout.item_with_descr_and_right_switch, container, false).apply {
|
||||
findViewById<ImageView>(R.id.icon).setImageDrawable(uiUtils.getThemedIcon(R.drawable.ic_action_connect))
|
||||
|
@ -139,7 +144,7 @@ class SettingsDialogFragment : BaseDialogFragment() {
|
|||
|
||||
container = mainView.findViewById<ViewGroup>(R.id.gpx_settings_container)
|
||||
settings.gpxLoggingPrefs.forEach {
|
||||
createNumericPref(inflater, container, it)
|
||||
createListPref(inflater, container, it)
|
||||
}
|
||||
|
||||
container = mainView.findViewById(R.id.osmand_connect_container)
|
||||
|
@ -243,7 +248,7 @@ class SettingsDialogFragment : BaseDialogFragment() {
|
|||
}
|
||||
}
|
||||
|
||||
private fun createNumericPref(inflater: LayoutInflater, container: ViewGroup, pref: NumericPref) {
|
||||
private fun createListPref(inflater: LayoutInflater, container: ViewGroup, pref: ListPreference) {
|
||||
inflater.inflate(R.layout.item_with_desc_and_right_value, container, false).apply {
|
||||
findViewById<ImageView>(R.id.icon).apply {
|
||||
if (pref.iconId != 0) {
|
||||
|
@ -284,14 +289,14 @@ class SettingsDialogFragment : BaseDialogFragment() {
|
|||
}
|
||||
}
|
||||
|
||||
private fun showPopupMenu(pref: NumericPref, valueView: TextView) {
|
||||
private fun showPopupMenu(pref: ListPreference, valueView: TextView) {
|
||||
val menuList = pref.getMenuItems()
|
||||
val ctx = valueView.context
|
||||
ListPopupWindow(ctx).apply {
|
||||
isModal = true
|
||||
anchorView = valueView
|
||||
setContentWidth(AndroidUtils.getPopupMenuWidth(ctx, menuList))
|
||||
height = if (menuList.size < 6) {
|
||||
height = if (menuList.size <= 6) {
|
||||
ListPopupWindow.WRAP_CONTENT
|
||||
} else {
|
||||
AndroidUtils.getPopupMenuHeight(ctx)
|
||||
|
|
|
@ -2,6 +2,8 @@ package net.osmand.telegram.utils
|
|||
|
||||
object DataConstants {
|
||||
|
||||
const val UTC_FORMAT = "UTC"
|
||||
|
||||
val countryPhoneCodes = mapOf("AB" to "+7840,+7940,+99544", "AF" to "+93", "AX" to "+35818",
|
||||
"AL" to "+355","DZ" to "+213", "AS" to "+1684", "AD" to "+376", "AO" to "+244","AI" to "+1264",
|
||||
"AG" to "+1268", "AR" to "+54", "AM" to "+374","AW" to "+297", "SH" to "+247", "AU" to "+61",
|
||||
|
@ -44,4 +46,46 @@ object DataConstants {
|
|||
"TM" to "+993", "TC" to "+1649", "TV" to "+688", "UG" to "+256","UA" to "+380", "AE" to "+971",
|
||||
"UK" to "+44", "US" to "+1","UY" to "+598", "VI" to "+1340", "UZ" to "+998", "VU" to "+678", "VE" to "+58",
|
||||
"VA" to "+3906698,+379", "VN" to "+84", "WF" to "+681","YE" to "+967", "ZM" to "+260", "ZW" to "+263")
|
||||
|
||||
val utcOffsets = mapOf(
|
||||
"$UTC_FORMAT-12" to -12f,
|
||||
"$UTC_FORMAT-11" to -11f,
|
||||
"$UTC_FORMAT-10" to -10f,
|
||||
"$UTC_FORMAT-09:30" to -9.5f,
|
||||
"$UTC_FORMAT-9" to -9f,
|
||||
"$UTC_FORMAT-8" to -8f,
|
||||
"$UTC_FORMAT-7" to -7f,
|
||||
"$UTC_FORMAT-6" to -6f,
|
||||
"$UTC_FORMAT-5" to -5f,
|
||||
"$UTC_FORMAT-4" to -4f,
|
||||
"$UTC_FORMAT-03:30" to -3.5f,
|
||||
"$UTC_FORMAT-3" to -3f,
|
||||
"$UTC_FORMAT-2" to -2f,
|
||||
"$UTC_FORMAT-1" to -1f,
|
||||
UTC_FORMAT to 0f,
|
||||
"$UTC_FORMAT+1" to 1f,
|
||||
"$UTC_FORMAT+2" to 2f,
|
||||
"$UTC_FORMAT+3" to 3f,
|
||||
"$UTC_FORMAT+03:30" to 3.5f,
|
||||
"$UTC_FORMAT+4" to 4f,
|
||||
"$UTC_FORMAT+04:30" to 4.5f,
|
||||
"$UTC_FORMAT+5" to 5f,
|
||||
"$UTC_FORMAT+05:30" to 5.5f,
|
||||
"$UTC_FORMAT+05:45" to 5.75f,
|
||||
"$UTC_FORMAT+6" to 6f,
|
||||
"$UTC_FORMAT+06:30" to 6.5f,
|
||||
"$UTC_FORMAT+7" to 7f,
|
||||
"$UTC_FORMAT+8" to 8f,
|
||||
"$UTC_FORMAT+08:45" to 8.75f,
|
||||
"$UTC_FORMAT+9" to 9f,
|
||||
"$UTC_FORMAT+09:30" to 9.5f,
|
||||
"$UTC_FORMAT+10" to 10f,
|
||||
"$UTC_FORMAT+10:30" to 10.5f,
|
||||
"$UTC_FORMAT+11" to 11f,
|
||||
"$UTC_FORMAT+12" to 12f,
|
||||
"$UTC_FORMAT+12:45" to 12.75f,
|
||||
"$UTC_FORMAT+13" to 13f,
|
||||
"$UTC_FORMAT+13:45" to 13.75f,
|
||||
"$UTC_FORMAT+14" to 14f
|
||||
)
|
||||
}
|
|
@ -17,6 +17,14 @@ object OsmandFormatter {
|
|||
|
||||
val YARDS_IN_ONE_METER = 1.0936f
|
||||
val FEET_IN_ONE_METER = YARDS_IN_ONE_METER * 3f
|
||||
|
||||
val FORMAT_METERS_KEY = "m"
|
||||
val FORMAT_FEET_KEY = "ft"
|
||||
val FORMAT_YARDS_KEY = "yd"
|
||||
val FORMAT_KILOMETERS_KEY = "km"
|
||||
val FORMAT_NAUTICALMILES_KEY = "nmi"
|
||||
val FORMAT_MILES_KEY = "mi"
|
||||
|
||||
private val fixed2 = DecimalFormat("0.00")
|
||||
private val fixed1 = DecimalFormat("0.0")
|
||||
|
||||
|
@ -166,118 +174,94 @@ object OsmandFormatter {
|
|||
}
|
||||
|
||||
@JvmOverloads
|
||||
fun getFormattedDistance(meters: Float, ctx: TelegramApplication, forceTrailingZeros: Boolean = true): String {
|
||||
fun getFormattedDistance(meters: Float, ctx: TelegramApplication, forceTrailingZeros: Boolean = true, useLocalizedString: Boolean = true): String {
|
||||
val format1 = if (forceTrailingZeros) "{0,number,0.0} " else "{0,number,0.#} "
|
||||
val format2 = if (forceTrailingZeros) "{0,number,0.00} " else "{0,number,0.##} "
|
||||
|
||||
val mc = ctx.settings.metricsConstants
|
||||
val mainUnitStr: Int
|
||||
val mainUnitStr: String
|
||||
val mainUnitInMeters: Float
|
||||
if (mc == MetricsConstants.KILOMETERS_AND_METERS) {
|
||||
mainUnitStr = R.string.km
|
||||
mainUnitInMeters = METERS_IN_KILOMETER
|
||||
} else if (mc == MetricsConstants.NAUTICAL_MILES) {
|
||||
mainUnitStr = R.string.nm
|
||||
mainUnitInMeters = METERS_IN_ONE_NAUTICALMILE
|
||||
} else {
|
||||
mainUnitStr = R.string.mile
|
||||
mainUnitInMeters = METERS_IN_ONE_MILE
|
||||
when (mc) {
|
||||
MetricsConstants.KILOMETERS_AND_METERS -> {
|
||||
mainUnitStr = if (useLocalizedString) ctx.getString(R.string.km) else FORMAT_KILOMETERS_KEY
|
||||
mainUnitInMeters = METERS_IN_KILOMETER
|
||||
}
|
||||
MetricsConstants.NAUTICAL_MILES -> {
|
||||
mainUnitStr = if (useLocalizedString) ctx.getString(R.string.nm) else FORMAT_NAUTICALMILES_KEY
|
||||
mainUnitInMeters = METERS_IN_ONE_NAUTICALMILE
|
||||
}
|
||||
else -> {
|
||||
mainUnitStr = if (useLocalizedString) ctx.getString(R.string.mile) else FORMAT_MILES_KEY
|
||||
mainUnitInMeters = METERS_IN_ONE_MILE
|
||||
}
|
||||
}
|
||||
|
||||
if (meters >= 100 * mainUnitInMeters) {
|
||||
return (meters / mainUnitInMeters + 0.5).toInt().toString() + " " + ctx.getString(mainUnitStr) //$NON-NLS-1$
|
||||
return (meters / mainUnitInMeters + 0.5).toInt().toString() + " " + mainUnitStr //$NON-NLS-1$
|
||||
} else if (meters > 9.99f * mainUnitInMeters) {
|
||||
return MessageFormat.format(format1 + ctx.getString(mainUnitStr), meters / mainUnitInMeters).replace('\n', ' ') //$NON-NLS-1$
|
||||
return MessageFormat.format(format1 + mainUnitStr, meters / mainUnitInMeters).replace('\n', ' ') //$NON-NLS-1$
|
||||
} else if (meters > 0.999f * mainUnitInMeters) {
|
||||
return MessageFormat.format(format2 + ctx.getString(mainUnitStr), meters / mainUnitInMeters).replace('\n', ' ') //$NON-NLS-1$
|
||||
return MessageFormat.format(format2 + mainUnitStr, meters / mainUnitInMeters).replace('\n', ' ') //$NON-NLS-1$
|
||||
} else if (mc == MetricsConstants.MILES_AND_FEET && meters > 0.249f * mainUnitInMeters) {
|
||||
return MessageFormat.format(format2 + ctx.getString(mainUnitStr), meters / mainUnitInMeters).replace('\n', ' ') //$NON-NLS-1$
|
||||
return MessageFormat.format(format2 + mainUnitStr, meters / mainUnitInMeters).replace('\n', ' ') //$NON-NLS-1$
|
||||
} else if (mc == MetricsConstants.MILES_AND_METERS && meters > 0.249f * mainUnitInMeters) {
|
||||
return MessageFormat.format(format2 + ctx.getString(mainUnitStr), meters / mainUnitInMeters).replace('\n', ' ') //$NON-NLS-1$
|
||||
return MessageFormat.format(format2 + mainUnitStr, meters / mainUnitInMeters).replace('\n', ' ') //$NON-NLS-1$
|
||||
} else if (mc == MetricsConstants.MILES_AND_YARDS && meters > 0.249f * mainUnitInMeters) {
|
||||
return MessageFormat.format(format2 + ctx.getString(mainUnitStr), meters / mainUnitInMeters).replace('\n', ' ') //$NON-NLS-1$
|
||||
return MessageFormat.format(format2 + mainUnitStr, meters / mainUnitInMeters).replace('\n', ' ') //$NON-NLS-1$
|
||||
} else if (mc == MetricsConstants.NAUTICAL_MILES && meters > 0.99f * mainUnitInMeters) {
|
||||
return MessageFormat.format(format2 + ctx.getString(mainUnitStr), meters / mainUnitInMeters).replace('\n', ' ') //$NON-NLS-1$
|
||||
return MessageFormat.format(format2 + mainUnitStr, meters / mainUnitInMeters).replace('\n', ' ') //$NON-NLS-1$
|
||||
} else {
|
||||
if (mc == MetricsConstants.KILOMETERS_AND_METERS || mc == MetricsConstants.MILES_AND_METERS) {
|
||||
return (meters + 0.5).toInt().toString() + " " + ctx.getString(R.string.m) //$NON-NLS-1$
|
||||
return (meters + 0.5).toInt().toString() + if (useLocalizedString) " " + ctx.getString(R.string.m) else " $FORMAT_METERS_KEY" //$NON-NLS-1$
|
||||
} else if (mc == MetricsConstants.MILES_AND_FEET) {
|
||||
val feet = (meters * FEET_IN_ONE_METER + 0.5).toInt()
|
||||
return feet.toString() + " " + ctx.getString(R.string.foot) //$NON-NLS-1$
|
||||
return feet.toString() + if (useLocalizedString) " " + ctx.getString(R.string.foot) else " $FORMAT_FEET_KEY" //$NON-NLS-1$
|
||||
} else if (mc == MetricsConstants.MILES_AND_YARDS) {
|
||||
val yards = (meters * YARDS_IN_ONE_METER + 0.5).toInt()
|
||||
return yards.toString() + " " + ctx.getString(R.string.yard) //$NON-NLS-1$
|
||||
return yards.toString() + if (useLocalizedString) " " + ctx.getString(R.string.yard) else " $FORMAT_YARDS_KEY" //$NON-NLS-1$
|
||||
}
|
||||
return (meters + 0.5).toInt().toString() + " " + ctx.getString(R.string.m) //$NON-NLS-1$
|
||||
return (meters + 0.5).toInt().toString() + if (useLocalizedString) " " + ctx.getString(R.string.m) else " $FORMAT_METERS_KEY" //$NON-NLS-1$
|
||||
}
|
||||
}
|
||||
|
||||
fun getFormattedAlt(alt: Double, ctx: TelegramApplication): String {
|
||||
fun getFormattedAlt(alt: Double, ctx: TelegramApplication, useLocalizedString: Boolean = true): String {
|
||||
val mc = ctx.settings.metricsConstants
|
||||
return if (mc == MetricsConstants.KILOMETERS_AND_METERS) {
|
||||
(alt + 0.5).toInt().toString() + " " + ctx.getString(R.string.m)
|
||||
val useFeet = mc == MetricsConstants.MILES_AND_FEET || mc == MetricsConstants.MILES_AND_YARDS
|
||||
return if (!useFeet) {
|
||||
(alt + 0.5).toInt().toString() + if (useLocalizedString) " " + ctx.getString(R.string.m) else " $FORMAT_METERS_KEY"
|
||||
} else {
|
||||
(alt * FEET_IN_ONE_METER + 0.5).toInt().toString() + " " + ctx.getString(R.string.foot)
|
||||
(alt * FEET_IN_ONE_METER + 0.5).toInt().toString() + if (useLocalizedString) " " + ctx.getString(R.string.foot) else " $FORMAT_FEET_KEY"
|
||||
}
|
||||
}
|
||||
|
||||
fun getFormattedSpeed(metersperseconds: Float, ctx: TelegramApplication): String {
|
||||
fun getFormattedSpeed(metersPerSeconds: Float, ctx: TelegramApplication, useLocalizedString: Boolean = true): String {
|
||||
val mc = ctx.settings.speedConstants
|
||||
val kmh = metersperseconds * 3.6f
|
||||
if (mc == SpeedConstants.KILOMETERS_PER_HOUR) {
|
||||
val kmh = metersPerSeconds * 3.6f
|
||||
val convertedSpeed: Float = when (mc) {
|
||||
SpeedConstants.KILOMETERS_PER_HOUR -> kmh
|
||||
SpeedConstants.MILES_PER_HOUR -> kmh * METERS_IN_KILOMETER / METERS_IN_ONE_MILE
|
||||
SpeedConstants.NAUTICALMILES_PER_HOUR -> kmh * METERS_IN_KILOMETER / METERS_IN_ONE_NAUTICALMILE
|
||||
SpeedConstants.MINUTES_PER_KILOMETER -> {
|
||||
if (metersPerSeconds < 0.111111111) {
|
||||
return "-" + if (useLocalizedString) mc.toShortString(ctx) else mc.getDefaultString()
|
||||
}
|
||||
METERS_IN_KILOMETER / (metersPerSeconds * 60)
|
||||
}
|
||||
SpeedConstants.MINUTES_PER_MILE -> {
|
||||
if (metersPerSeconds < 0.111111111) {
|
||||
return "-" + if (useLocalizedString) mc.toShortString(ctx) else mc.getDefaultString()
|
||||
}
|
||||
METERS_IN_ONE_MILE / (metersPerSeconds * 60)
|
||||
}
|
||||
else -> metersPerSeconds /*if (mc == SpeedConstants.METERS_PER_SECOND) */
|
||||
}
|
||||
|
||||
return if (convertedSpeed >= mc.speedThreshold) {
|
||||
// e.g. car case and for high-speeds: Display rounded to 1 km/h (5% precision at 20 km/h)
|
||||
if (kmh >= 20) {
|
||||
return Math.round(kmh).toString() + " " + mc.toShortString(ctx)
|
||||
}
|
||||
"${Math.round(convertedSpeed)} " + if (useLocalizedString) mc.toShortString(ctx) else mc.getDefaultString()
|
||||
} else {
|
||||
// for smaller values display 1 decimal digit x.y km/h, (0.5% precision at 20 km/h)
|
||||
val kmh10 = Math.round(kmh * 10f)
|
||||
return (kmh10 / 10f).toString() + " " + mc.toShortString(ctx)
|
||||
} else if (mc == SpeedConstants.MILES_PER_HOUR) {
|
||||
val mph = kmh * METERS_IN_KILOMETER / METERS_IN_ONE_MILE
|
||||
if (mph >= 20) {
|
||||
return Math.round(mph).toString() + " " + mc.toShortString(ctx)
|
||||
} else {
|
||||
val mph10 = Math.round(mph * 10f)
|
||||
return (mph10 / 10f).toString() + " " + mc.toShortString(ctx)
|
||||
}
|
||||
} else if (mc == SpeedConstants.NAUTICALMILES_PER_HOUR) {
|
||||
val mph = kmh * METERS_IN_KILOMETER / METERS_IN_ONE_NAUTICALMILE
|
||||
if (mph >= 20) {
|
||||
return Math.round(mph).toString() + " " + mc.toShortString(ctx)
|
||||
} else {
|
||||
val mph10 = Math.round(mph * 10f)
|
||||
return (mph10 / 10f).toString() + " " + mc.toShortString(ctx)
|
||||
}
|
||||
} else if (mc == SpeedConstants.MINUTES_PER_KILOMETER) {
|
||||
if (metersperseconds < 0.111111111) {
|
||||
return "-" + mc.toShortString(ctx)
|
||||
}
|
||||
val minperkm = METERS_IN_KILOMETER / (metersperseconds * 60)
|
||||
if (minperkm >= 10) {
|
||||
return Math.round(minperkm).toString() + " " + mc.toShortString(ctx)
|
||||
} else {
|
||||
val mph10 = Math.round(minperkm * 10f)
|
||||
return (mph10 / 10f).toString() + " " + mc.toShortString(ctx)
|
||||
}
|
||||
} else if (mc == SpeedConstants.MINUTES_PER_MILE) {
|
||||
if (metersperseconds < 0.111111111) {
|
||||
return "-" + mc.toShortString(ctx)
|
||||
}
|
||||
val minperm = METERS_IN_ONE_MILE / (metersperseconds * 60)
|
||||
if (minperm >= 10) {
|
||||
return Math.round(minperm).toString() + " " + mc.toShortString(ctx)
|
||||
} else {
|
||||
val mph10 = Math.round(minperm * 10f)
|
||||
return (mph10 / 10f).toString() + " " + mc.toShortString(ctx)
|
||||
}
|
||||
} else
|
||||
/*if (mc == SpeedConstants.METERS_PER_SECOND) */ {
|
||||
if (metersperseconds >= 10) {
|
||||
return Math.round(metersperseconds).toString() + " " + SpeedConstants.METERS_PER_SECOND.toShortString(ctx)
|
||||
}
|
||||
// for smaller values display 1 decimal digit x.y km/h, (0.5% precision at 20 km/h)
|
||||
val kmh10 = Math.round(metersperseconds * 10f)
|
||||
return (kmh10 / 10f).toString() + " " + SpeedConstants.METERS_PER_SECOND.toShortString(ctx)
|
||||
"${Math.round(convertedSpeed * 10f) / 10f} " + if (useLocalizedString) mc.toShortString(ctx) else mc.getDefaultString()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -311,20 +295,27 @@ object OsmandFormatter {
|
|||
}
|
||||
}
|
||||
|
||||
enum class SpeedConstants private constructor(private val key: Int, private val descr: Int) {
|
||||
KILOMETERS_PER_HOUR(R.string.km_h, R.string.si_kmh),
|
||||
MILES_PER_HOUR(R.string.mile_per_hour, R.string.si_mph),
|
||||
METERS_PER_SECOND(R.string.m_s, R.string.si_m_s),
|
||||
MINUTES_PER_MILE(R.string.min_mile, R.string.si_min_m),
|
||||
MINUTES_PER_KILOMETER(R.string.min_km, R.string.si_min_km),
|
||||
NAUTICALMILES_PER_HOUR(R.string.nm_h, R.string.si_nm_h);
|
||||
enum class SpeedConstants private constructor(
|
||||
private val key: String,
|
||||
private val title: Int,
|
||||
private val descr: Int,
|
||||
val speedThreshold: Int
|
||||
) {
|
||||
KILOMETERS_PER_HOUR("km/h", R.string.km_h, R.string.si_kmh, 20),
|
||||
MILES_PER_HOUR("mph", R.string.mile_per_hour, R.string.si_mph, 20),
|
||||
METERS_PER_SECOND("m/s", R.string.m_s, R.string.si_m_s, 10),
|
||||
MINUTES_PER_MILE("min/m", R.string.min_mile, R.string.si_min_m, 10),
|
||||
MINUTES_PER_KILOMETER("min/km", R.string.min_km, R.string.si_min_km, 10),
|
||||
NAUTICALMILES_PER_HOUR("nmi/h", R.string.nm_h, R.string.si_nm_h, 20);
|
||||
|
||||
fun toHumanString(ctx: Context): String {
|
||||
return ctx.getString(descr)
|
||||
}
|
||||
|
||||
fun toShortString(ctx: Context): String {
|
||||
return ctx.getString(key)
|
||||
return ctx.getString(title)
|
||||
}
|
||||
|
||||
fun getDefaultString() = key
|
||||
}
|
||||
}
|
||||
|
|
|
@ -42,7 +42,9 @@ object OsmandLocationUtils {
|
|||
const val SECONDS_AGO_SUFFIX = " seconds ago"
|
||||
const val MINUTES_AGO_SUFFIX = " minutes ago"
|
||||
const val HOURS_AGO_SUFFIX = " hours ago"
|
||||
const val UTC_FORMAT_SUFFIX = " UTC"
|
||||
const val UTC_FORMAT_PATTERN = "yyyy-MM-dd HH:mm:ss"
|
||||
|
||||
const val ONE_HOUR_TIME_MS = 60 * 60 * 1000 // 1 hour
|
||||
|
||||
val UTC_DATE_FORMAT = SimpleDateFormat("yyyy-MM-dd", Locale.US).apply {
|
||||
timeZone = TimeZone.getTimeZone("UTC")
|
||||
|
@ -163,9 +165,17 @@ object OsmandLocationUtils {
|
|||
return String.format(Locale.US, "%.5f, %.5f", sig.lat, sig.lon)
|
||||
}
|
||||
|
||||
fun formatFullTime(ti: Long): String {
|
||||
fun formatFullTime(ti: Long, app: TelegramApplication): String {
|
||||
val dt = Date(ti)
|
||||
return UTC_DATE_FORMAT.format(dt) + " " + UTC_TIME_FORMAT.format(dt) + " UTC"
|
||||
val offsetKey = app.settings.utcOffset
|
||||
val utcOffset = DataConstants.utcOffsets[offsetKey] ?: 0f
|
||||
val simpleDateFormat = SimpleDateFormat(UTC_FORMAT_PATTERN, Locale.US)
|
||||
|
||||
simpleDateFormat.timeZone = TimeZone.getTimeZone(DataConstants.UTC_FORMAT).apply {
|
||||
rawOffset = (utcOffset * ONE_HOUR_TIME_MS).toInt()
|
||||
}
|
||||
|
||||
return "${simpleDateFormat.format(dt)} $offsetKey"
|
||||
}
|
||||
|
||||
fun parseOsmAndBotLocationContent(oldContent: MessageOsmAndBotLocation, content: TdApi.MessageContent): MessageOsmAndBotLocation {
|
||||
|
@ -242,21 +252,11 @@ object OsmandLocationUtils {
|
|||
}
|
||||
s.startsWith(ALTITUDE_PREFIX) -> {
|
||||
val altStr = s.removePrefix(ALTITUDE_PREFIX)
|
||||
try {
|
||||
val alt = altStr.split(" ").first()
|
||||
res.altitude = alt.toDouble()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
res.altitude = parseDistance(altStr)
|
||||
}
|
||||
s.startsWith(SPEED_PREFIX) -> {
|
||||
val speedStr = s.removePrefix(SPEED_PREFIX)
|
||||
try {
|
||||
val speed = speedStr.split(" ").first()
|
||||
res.speed = speed.toDouble()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
res.speed = parseSpeed(speedStr)
|
||||
}
|
||||
s.startsWith(BEARING_PREFIX) -> {
|
||||
val bearingStr = s.removePrefix(BEARING_PREFIX)
|
||||
|
@ -269,12 +269,7 @@ object OsmandLocationUtils {
|
|||
}
|
||||
s.startsWith(HDOP_PREFIX) -> {
|
||||
val hdopStr = s.removePrefix(HDOP_PREFIX)
|
||||
try {
|
||||
val hdop = hdopStr.split(" ").first()
|
||||
res.hdop = hdop.toDouble()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
res.hdop = parseDistance(hdopStr)
|
||||
}
|
||||
s.startsWith(UPDATED_PREFIX) -> {
|
||||
if (res.lastUpdated == 0) {
|
||||
|
@ -314,13 +309,19 @@ object OsmandLocationUtils {
|
|||
val hours = locStr.toLong()
|
||||
return (System.currentTimeMillis() - hours * 60 * 60 * 1000)
|
||||
}
|
||||
timeS.endsWith(UTC_FORMAT_SUFFIX) -> {
|
||||
val locStr = timeS.removeSuffix(UTC_FORMAT_SUFFIX)
|
||||
val (latS, lonS) = locStr.split(" ")
|
||||
val date = UTC_DATE_FORMAT.parse(latS)
|
||||
val time = UTC_TIME_FORMAT.parse(lonS)
|
||||
val res = date.time + time.time
|
||||
return res
|
||||
timeS.contains(DataConstants.UTC_FORMAT) -> {
|
||||
val utcIndex = timeS.indexOf(DataConstants.UTC_FORMAT)
|
||||
if (utcIndex != -1) {
|
||||
val locStr = timeS.substring(0, utcIndex)
|
||||
val utcOffset = timeS.substring(utcIndex)
|
||||
val utcTimeOffset = DataConstants.utcOffsets[utcOffset] ?: 0f
|
||||
val simpleDateFormat = SimpleDateFormat(UTC_FORMAT_PATTERN, Locale.US)
|
||||
simpleDateFormat.timeZone = TimeZone.getTimeZone(DataConstants.UTC_FORMAT).apply {
|
||||
rawOffset = (utcTimeOffset * ONE_HOUR_TIME_MS).toInt()
|
||||
}
|
||||
val res = simpleDateFormat.parse(locStr)
|
||||
return res.time
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
|
@ -329,50 +330,48 @@ object OsmandLocationUtils {
|
|||
return 0
|
||||
}
|
||||
|
||||
fun getTextMessageContent(updateId: Int, location: LocationMessage): TdApi.InputMessageText {
|
||||
val entities = mutableListOf<TdApi.TextEntity>()
|
||||
val builder = StringBuilder()
|
||||
val locationMessage = formatLocation(location)
|
||||
|
||||
val firstSpace = USER_TEXT_LOCATION_TITLE.indexOf(' ')
|
||||
val secondSpace = USER_TEXT_LOCATION_TITLE.indexOf(' ', firstSpace + 1)
|
||||
entities.add(TdApi.TextEntity(builder.length + firstSpace + 1, secondSpace - firstSpace, TdApi.TextEntityTypeTextUrl(SHARING_LINK)))
|
||||
builder.append("$USER_TEXT_LOCATION_TITLE\n")
|
||||
|
||||
entities.add(TdApi.TextEntity(builder.lastIndex, LOCATION_PREFIX.length, TdApi.TextEntityTypeBold()))
|
||||
builder.append(LOCATION_PREFIX)
|
||||
|
||||
entities.add(TdApi.TextEntity(builder.length, locationMessage.length,
|
||||
TdApi.TextEntityTypeTextUrl("$BASE_SHARING_URL?lat=${location.lat}&lon=${location.lon}")))
|
||||
builder.append("$locationMessage\n")
|
||||
|
||||
if (location.altitude != 0.0) {
|
||||
entities.add(TdApi.TextEntity(builder.lastIndex, ALTITUDE_PREFIX.length, TdApi.TextEntityTypeBold()))
|
||||
builder.append(String.format(Locale.US, "$ALTITUDE_PREFIX%.1f m\n", location.altitude))
|
||||
fun parseSpeed(speedS: String): Double {
|
||||
try {
|
||||
if (!speedS.contains(" ")) {
|
||||
return 0.0
|
||||
}
|
||||
val speedSplit = speedS.split(" ")
|
||||
val speedVal = speedSplit.first().toDouble()
|
||||
val speedFormat = OsmandFormatter.SpeedConstants.values().firstOrNull { it.getDefaultString() == speedSplit.last() }
|
||||
return when (speedFormat) {
|
||||
OsmandFormatter.SpeedConstants.KILOMETERS_PER_HOUR -> speedVal / 3.6f
|
||||
OsmandFormatter.SpeedConstants.MILES_PER_HOUR -> (speedVal / 3.6f) / (OsmandFormatter.METERS_IN_KILOMETER / OsmandFormatter.METERS_IN_ONE_MILE)
|
||||
OsmandFormatter.SpeedConstants.NAUTICALMILES_PER_HOUR -> (speedVal / 3.6f) / (OsmandFormatter.METERS_IN_KILOMETER / OsmandFormatter.METERS_IN_ONE_NAUTICALMILE)
|
||||
OsmandFormatter.SpeedConstants.MINUTES_PER_KILOMETER -> (OsmandFormatter.METERS_IN_KILOMETER / speedVal) / 60
|
||||
OsmandFormatter.SpeedConstants.MINUTES_PER_MILE -> (OsmandFormatter.METERS_IN_ONE_MILE / speedVal) / 60
|
||||
else -> speedVal
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
if (location.speed > 0) {
|
||||
entities.add(TdApi.TextEntity(builder.lastIndex, SPEED_PREFIX.length, TdApi.TextEntityTypeBold()))
|
||||
builder.append(String.format(Locale.US, "$SPEED_PREFIX%.1f m/s\n", location.speed))
|
||||
}
|
||||
if (location.bearing > 0) {
|
||||
entities.add(TdApi.TextEntity(builder.lastIndex, BEARING_PREFIX.length, TdApi.TextEntityTypeBold()))
|
||||
builder.append(String.format(Locale.US, "$BEARING_PREFIX%.1f$BEARING_SUFFIX\n", location.bearing))
|
||||
}
|
||||
if (location.hdop != 0.0 && location.speed == 0.0) {
|
||||
entities.add(TdApi.TextEntity(builder.lastIndex, HDOP_PREFIX.length, TdApi.TextEntityTypeBold()))
|
||||
builder.append(String.format(Locale.US, "$HDOP_PREFIX%d m\n", location.hdop.toInt()))
|
||||
}
|
||||
if (updateId == 0) {
|
||||
builder.append(String.format("$UPDATED_PREFIX%s\n", formatFullTime(location.time)))
|
||||
} else {
|
||||
builder.append(String.format("$UPDATED_PREFIX%s (%d)\n", formatFullTime(location.time), updateId))
|
||||
}
|
||||
val textMessage = builder.toString().trim()
|
||||
|
||||
return TdApi.InputMessageText(TdApi.FormattedText(textMessage, entities.toTypedArray()), true, true)
|
||||
return 0.0
|
||||
}
|
||||
|
||||
fun getTextMessageContent(updateId: Int, location: BufferMessage): TdApi.InputMessageText {
|
||||
fun parseDistance(distanceS: String): Double {
|
||||
try {
|
||||
val distanceSplit = distanceS.split(" ")
|
||||
val distanceVal = distanceSplit.first().toDouble()
|
||||
return when (distanceSplit.last()) {
|
||||
OsmandFormatter.FORMAT_METERS_KEY -> return distanceVal
|
||||
OsmandFormatter.FORMAT_FEET_KEY -> return distanceVal / OsmandFormatter.FEET_IN_ONE_METER
|
||||
OsmandFormatter.FORMAT_YARDS_KEY -> return distanceVal / OsmandFormatter.YARDS_IN_ONE_METER
|
||||
OsmandFormatter.FORMAT_KILOMETERS_KEY -> return distanceVal * OsmandFormatter.METERS_IN_KILOMETER
|
||||
OsmandFormatter.FORMAT_NAUTICALMILES_KEY -> return distanceVal * OsmandFormatter.METERS_IN_ONE_NAUTICALMILE
|
||||
OsmandFormatter.FORMAT_MILES_KEY -> return distanceVal * OsmandFormatter.METERS_IN_ONE_MILE
|
||||
else -> distanceVal
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
return 0.0
|
||||
}
|
||||
|
||||
fun getTextMessageContent(updateId: Int, location: BufferMessage, app: TelegramApplication): TdApi.InputMessageText {
|
||||
val entities = mutableListOf<TdApi.TextEntity>()
|
||||
val builder = StringBuilder()
|
||||
val locationMessage = formatLocation(location)
|
||||
|
@ -391,11 +390,13 @@ object OsmandLocationUtils {
|
|||
|
||||
if (location.altitude != 0.0) {
|
||||
entities.add(TdApi.TextEntity(builder.lastIndex, ALTITUDE_PREFIX.length, TdApi.TextEntityTypeBold()))
|
||||
builder.append(String.format(Locale.US, "$ALTITUDE_PREFIX%.1f m\n", location.altitude))
|
||||
val formattedAltitude = OsmandFormatter.getFormattedAlt(location.altitude, app, false)
|
||||
builder.append(String.format(Locale.US, "$ALTITUDE_PREFIX%s\n", formattedAltitude))
|
||||
}
|
||||
if (location.speed > 0) {
|
||||
entities.add(TdApi.TextEntity(builder.lastIndex, SPEED_PREFIX.length, TdApi.TextEntityTypeBold()))
|
||||
builder.append(String.format(Locale.US, "$SPEED_PREFIX%.1f m/s\n", location.speed))
|
||||
val formattedSpeed = OsmandFormatter.getFormattedSpeed(location.speed.toFloat(), app, false)
|
||||
builder.append(String.format(Locale.US, "$SPEED_PREFIX%s\n", formattedSpeed))
|
||||
}
|
||||
if (location.bearing > 0) {
|
||||
entities.add(TdApi.TextEntity(builder.lastIndex, BEARING_PREFIX.length, TdApi.TextEntityTypeBold()))
|
||||
|
@ -403,12 +404,13 @@ object OsmandLocationUtils {
|
|||
}
|
||||
if (location.hdop != 0.0 && location.speed == 0.0) {
|
||||
entities.add(TdApi.TextEntity(builder.lastIndex, HDOP_PREFIX.length, TdApi.TextEntityTypeBold()))
|
||||
builder.append(String.format(Locale.US, "$HDOP_PREFIX%d m\n", location.hdop.toInt()))
|
||||
val formattedHdop = OsmandFormatter.getFormattedDistance(location.hdop.toFloat(), app, false, false)
|
||||
builder.append(String.format(Locale.US, "$HDOP_PREFIX%s\n", formattedHdop))
|
||||
}
|
||||
if (updateId == 0) {
|
||||
builder.append(String.format("$UPDATED_PREFIX%s\n", formatFullTime(location.time)))
|
||||
builder.append(String.format("$UPDATED_PREFIX%s\n", formatFullTime(location.time, app)))
|
||||
} else {
|
||||
builder.append(String.format("$UPDATED_PREFIX%s (%d)\n", formatFullTime(location.time), updateId))
|
||||
builder.append(String.format("$UPDATED_PREFIX%s (%d)\n", formatFullTime(location.time, app), updateId))
|
||||
}
|
||||
val textMessage = builder.toString().trim()
|
||||
|
||||
|
|
25
OsmAnd/AndroidManifest-freehuawei.xml
Normal file
|
@ -0,0 +1,25 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<application>
|
||||
<activity android:name="com.huawei.android.sdk.drm.DrmDialogActivity"
|
||||
android:configChanges="screenSize|orientation|keyboardHidden"
|
||||
android:exported="false"
|
||||
android:theme="@android:style/Theme.Translucent">
|
||||
<meta-data
|
||||
android:name="hwc-theme"
|
||||
android:value="androidhwext:style/Theme.Emui.Translucent" />
|
||||
</activity>
|
||||
|
||||
<provider
|
||||
android:name="android.support.v4.content.FileProvider"
|
||||
android:authorities="net.osmand.huawei.fileprovider"
|
||||
tools:replace="android:authorities" />
|
||||
<service
|
||||
android:name="net.osmand.plus.NavigationService"
|
||||
android:process="net.osmand.huawei"
|
||||
tools:replace="android:process" />
|
||||
</application>
|
||||
|
||||
</manifest>
|
|
@ -189,6 +189,10 @@ android {
|
|||
dimension "version"
|
||||
applicationId "net.osmand.plus.huawei"
|
||||
}
|
||||
freehuawei {
|
||||
dimension "version"
|
||||
applicationId "net.osmand.huawei"
|
||||
}
|
||||
|
||||
// CoreVersion
|
||||
legacy {
|
||||
|
|
|
@ -1622,4 +1622,5 @@
|
|||
<string name="poi_park_ride_tram">ترام</string>
|
||||
<string name="poi_park_ride_ferry">عبّارة</string>
|
||||
<string name="poi_generator_source_biomass">مصدر الطاقة: الكتلة الحيوية</string>
|
||||
<string name="reddit">موقع Reddit</string>
|
||||
</resources>
|
|
@ -696,8 +696,8 @@
|
|||
<string name="osm_live_payment_month_cost_descr_ex">%1$.2f %2$s/mes</string>
|
||||
<string name="osm_live_payment_current_subscription">La soscripción actual</string>
|
||||
<string name="default_price_currency_format">%1$.2f %2$s</string>
|
||||
<string name="osm_live_payment_header">Esbilla\'l periodu de pagu más afayadizu pa ti:</string>
|
||||
<string name="osm_live_payment_contribute_descr">Parte de los ingresos van pa los collaboradores d\'OpenStreetMap.</string>
|
||||
<string name="osm_live_payment_header">Intervalu de pagu:</string>
|
||||
<string name="osm_live_payment_contribute_descr">Les donaciones ayuden a financiar la cartografía d\'OpenStreetMap</string>
|
||||
<string name="markers_remove_dialog_msg">¿Desaniciar el marcador «%s» del mapa\?</string>
|
||||
<string name="third_party_application">Aplicación de terceros</string>
|
||||
<string name="error_notification_desc">Unvia una captura d\'esti avisu a support@osmand.net, por favor</string>
|
||||
|
@ -1394,4 +1394,6 @@
|
|||
<string name="configure_profile_info">Tolos axustes qu\'apaecen darréu afeuten únicamente al perfil escoyíu.</string>
|
||||
<string name="shared_string_example">Exemplu</string>
|
||||
<string name="wake_time">Hora d\'activamientu</string>
|
||||
<string name="descendingly">Z-A</string>
|
||||
<string name="ascendingly">A-Z</string>
|
||||
</resources>
|
|
@ -3397,4 +3397,10 @@ Abasta l\'àrea: %1$s x %2$s</string>
|
|||
<string name="clear_confirmation_msg">Voleu netejar %1$s\?</string>
|
||||
<string name="dialogs_and_notifications_title">Diàlegs i notificacions</string>
|
||||
<string name="dialogs_and_notifications_descr">Emergents de control, diàlegs i notificacions que surten a OsmAnd mentre s\'utilitza.</string>
|
||||
<string name="join_segments">Uneix segments</string>
|
||||
<string name="add_new_profile_q">Voleu afegir el perfil nou \'%1$s\'\?</string>
|
||||
<string name="distance_and_address">%1$s • %2$s</string>
|
||||
<string name="street_city">%1$s, %2$s</string>
|
||||
<string name="personal_category_name">Personal</string>
|
||||
<string name="shared_string_downloading_formatted">S\'està baixant %s</string>
|
||||
</resources>
|
|
@ -3007,17 +3007,17 @@ Zobrazená oblast: %1$s x %2$s</string>
|
|||
<string name="public_transport_type">Druh dopravy</string>
|
||||
<string name="searching_gps">Vyhledávání GPS</string>
|
||||
<string name="coordinates_widget">Nástroj souřadnic</string>
|
||||
<string name="button_rate">Ohodnotit</string>
|
||||
<string name="button_rate">OK</string>
|
||||
<string name="shared_string_privacy_policy">Zásady soukromí</string>
|
||||
<string name="help_us_make_osmand_better">Pomozte nám vylepšit OsmAnd!</string>
|
||||
<string name="help_us_make_osmand_better">Pomozte nám OsmAnd vylepšit</string>
|
||||
<string name="choose_data_to_share">Zvolte typ dat, který chcete sdílet:</string>
|
||||
<string name="downloaded_maps">Stažené mapy</string>
|
||||
<string name="visited_screens">Navštívené obrazovky</string>
|
||||
<string name="collected_data_descr">Určete, která data dovolíte aplikaci OsmAnd sdílet.</string>
|
||||
<string name="privacy_and_security_change_descr">Klepnutím na \"Povolit\", souhlasíte s našimi %1$s</string>
|
||||
<string name="privacy_and_security_change_descr">Klepněte na „Povolit“, pokud souhlasíte s našimi %1$s</string>
|
||||
<string name="settings_privacy_and_security">Soukromí a zabezpečení</string>
|
||||
<string name="settings_privacy_and_security_desc">Zvolte, které údaje s námi sdílíte</string>
|
||||
<string name="shared_string_no_thank_you">Ne, děkuji</string>
|
||||
<string name="shared_string_no_thank_you">Ne, díky</string>
|
||||
<string name="shared_string_allow">Povolit</string>
|
||||
<string name="profile_name_hint">Název profilu</string>
|
||||
<string name="nav_type_hint">Typ navigace</string>
|
||||
|
@ -3037,20 +3037,20 @@ Zobrazená oblast: %1$s x %2$s</string>
|
|||
<string name="profile_type_descr_string">Typ: %s</string>
|
||||
<string name="profile_type_base_string">Základní profil</string>
|
||||
<string name="profile_alert_need_routing_type_title">Vyberte typ navigace</string>
|
||||
<string name="profile_alert_need_routing_type_msg">Prosíme, vyberte typ navigace pro nový profil aplikace</string>
|
||||
<string name="profile_alert_need_routing_type_msg">Vyberte typ navigace pro nový profil aplikace</string>
|
||||
<string name="process_downloading_service">OsmAnd služba pro stahování</string>
|
||||
<string name="shared_string_color_magenta">Purpurová</string>
|
||||
<string name="shared_string_icon">Ikona</string>
|
||||
<string name="collected_data">Shromážděné údaje</string>
|
||||
<string name="profile_alert_need_profile_name_title">Zadejte název profilu</string>
|
||||
<string name="profile_alert_need_profile_name_msg">Název profilu by neměl být prázdný!</string>
|
||||
<string name="profile_alert_need_profile_name_msg">Zadejte název profilu.</string>
|
||||
<string name="profile_alert_duplicate_name_title">Duplicitní název</string>
|
||||
<string name="profile_alert_duplicate_name_msg">Profil s tímto názvem již existuje</string>
|
||||
<string name="profile_alert_cant_delete_base">Nelze smazat základní profily aplikace OsmAnd</string>
|
||||
<string name="profile_alert_need_save_title">Uložit změny</string>
|
||||
<string name="profile_alert_need_save_msg">Před pokračováním je třeba uložit změny profilu</string>
|
||||
<string name="profile_alert_need_save_msg">Nejprve je třeba uložit změny profilu</string>
|
||||
<string name="profile_alert_delete_title">Odstranit profil</string>
|
||||
<string name="profile_alert_delete_msg">Opravdu chcete odstranit profil %s</string>
|
||||
<string name="profile_alert_delete_msg">Opravdu chcete odstranit profil „%s“</string>
|
||||
<string name="select_base_profile_dialog_title">Zvolte základní profil</string>
|
||||
<string name="select_nav_profile_dialog_title">Vyberte typ navigace</string>
|
||||
<string name="base_profile_descr_car">Auto, nákladní auto, motocykl</string>
|
||||
|
@ -3087,7 +3087,7 @@ Zobrazená oblast: %1$s x %2$s</string>
|
|||
<string name="routing_attr_allow_classic_only_name">Povolit trasy pro klasické lyžování</string>
|
||||
<string name="routing_attr_difficulty_preference_name">Preferovaná obtížnost</string>
|
||||
<string name="routing_attr_freeride_policy_name">Mimo sjezdovky</string>
|
||||
<string name="rate_dialog_descr">Prosíme, darujte nám 30 sekund sdílením vaší zpětné vazby a hodnocením naší práce na Google Play.</string>
|
||||
<string name="rate_dialog_descr">Prosím, dejte nám zpětnou vazbu a ohodnoťte naši práci na Google Play.</string>
|
||||
<string name="make_osmand_better_descr">Povolit aplikaci OsmAnd sbírat a zpracovávat anonymní data využívání aplikace. Nesbíráme ani neukládáme data o vaší poloze nebo jakýchkoli polohách zobrazených na mapě.
|
||||
\n
|
||||
\nKdykoliv můžete změnit vaši volbu v Nastavení > Soukromí a zabezpečení.</string>
|
||||
|
@ -3102,7 +3102,7 @@ Zobrazená oblast: %1$s x %2$s</string>
|
|||
<string name="minmax_speed_dialog_title">Nastavit min/max rychlost</string>
|
||||
<string name="new_profile">Nový profil</string>
|
||||
<string name="shared_string_crash">Pád</string>
|
||||
<string name="last_launch_crashed">Poslední spuštění OsmAnd se nezdařilo. Prosíme, pomozte nám zlepšit OsmAnd sdílením chybové zprávy.</string>
|
||||
<string name="last_launch_crashed">Posledně se aplikace OsmAnd zhroutila. Prosíme, pomozte nám zlepšit OsmAnd sdílením chybové zprávy.</string>
|
||||
<string name="app_mode_personal_transporter">Osobní přepravník</string>
|
||||
<string name="app_mode_monowheel">Jednokolka</string>
|
||||
<string name="app_mode_scooter">Skútr</string>
|
||||
|
@ -3177,16 +3177,16 @@ Zobrazená oblast: %1$s x %2$s</string>
|
|||
<string name="get_discount_second_part">potom %1$s</string>
|
||||
<string name="cancel_subscription">Zrušit předplatné</string>
|
||||
<string name="price_and_discount">%1$s • Ušetřete %2$s</string>
|
||||
<string name="list_of_installed_plugins">Seznam instalovaných modulů</string>
|
||||
<string name="list_of_installed_plugins">Nainstalované moduly</string>
|
||||
<string name="configure_navigation">Nastavení navigace</string>
|
||||
<string name="general_settings_profile_descr">Vzhled aplikace, jednotky, oblast</string>
|
||||
<string name="screen_alerts_descr">Upozornění budou zobrazena v levém dolním rohu obrazovky během navigace.</string>
|
||||
<string name="screen_alerts_descr">Upozornění jsou zobrazena vlevo dole během navigace.</string>
|
||||
<string name="language_and_output">Jazyk a výstup</string>
|
||||
<string name="reset_to_default">Obnovit do základního nastavení</string>
|
||||
<string name="manage_profiles">Spravovat profily aplikace…</string>
|
||||
<string name="osmand_settings_descr">Ovlivní celou aplikaci</string>
|
||||
<string name="osmand_settings">Nastavení OsmAnd</string>
|
||||
<string name="copy_from_other_profile">Kopírovat z jiného profilu</string>
|
||||
<string name="copy_from_other_profile">Kopírovat z jiného profilu</string>
|
||||
<string name="turn_screen_on">Zapnout obrazovku</string>
|
||||
<string name="map_during_navigation_info">Mapa během navigace</string>
|
||||
<string name="map_during_navigation">Mapa během navigace</string>
|
||||
|
@ -3194,8 +3194,97 @@ Zobrazená oblast: %1$s x %2$s</string>
|
|||
<string name="vehicle_parameters_descr">Hmotnost, výška, rychlost</string>
|
||||
<string name="vehicle_parameters">Parametry vozidla</string>
|
||||
<string name="voice_announces_info">Hlasová oznámení se přehrávají pouze během navigace.</string>
|
||||
<string name="voice_announces_descr">Navigační pokyny a oznámení</string>
|
||||
<string name="voice_announces_descr">Navigační pokyny a oznámení</string>
|
||||
<string name="voice_announces">Hlasová oznámení</string>
|
||||
<string name="route_parameters_descr">Konfigurace parametrů trasy</string>
|
||||
<string name="route_parameters">Parametry trasy</string>
|
||||
<string name="default_speed_dialog_msg">Použito pro odhadnutí času příjezdu u cest s neznámým povrchem a pro omezení rychlosti u všech cest (může ovlivnit trasu)</string>
|
||||
<string name="configure_profile_info">Nastavení profilu:</string>
|
||||
<string name="utm_format_descr">OsmAnd používá UTM Standard, který je podobný, ale nikoliv identický s UTM NATO formátem.</string>
|
||||
<string name="shared_string_example">Příklad</string>
|
||||
<string name="navigate_point_format_utm">UTM Standard</string>
|
||||
<string name="pref_selected_by_default_for_profiles">Toto nastavení je vybráno jako výchozí pro profily: %s</string>
|
||||
<string name="change_default_settings">Změnit nastavení</string>
|
||||
<string name="discard_changes">Zahodit změny</string>
|
||||
<string name="apply_to_current_profile">Použít pouze na „%1$s“</string>
|
||||
<string name="apply_to_all_profiles">Použít na všechny profily</string>
|
||||
<string name="start_up_message_pref">Úvodní zpráva</string>
|
||||
<string name="analytics_pref_title">Analytika</string>
|
||||
<string name="turn_screen_on_info">Zobrazit mapu na uzamčené obrazovce během navigace.</string>
|
||||
<string name="route_parameters_info">Nastavení navádění pro zvolený profil „%1$s“.</string>
|
||||
<string name="units_and_formats">Jednotky a formát</string>
|
||||
<string name="appearance">Vzhled</string>
|
||||
<string name="map_look_descr">Vzhled mapy</string>
|
||||
<string name="configure_profile">Upravit profil</string>
|
||||
<string name="switch_profile">Přepnout profil</string>
|
||||
<string name="manage_profiles_descr">Vytváření, import a úprava profilů</string>
|
||||
<string name="screen_alerts">Upozornění na displeji</string>
|
||||
<string name="application_profile_changed">Profil aplikace změněn na „%s“</string>
|
||||
<string name="plugins_settings">Nastavení modulů</string>
|
||||
<string name="download_detailed_map">Stáhněte detailní mapu %s pro zobrazení této oblasti.</string>
|
||||
<string name="change_data_storage_full_description">Přesunout OsmAnd soubory do nového umístění\?
|
||||
\n%1$s → %2$s</string>
|
||||
<string name="data_storage_preference_summary">%1$s • %2$s</string>
|
||||
<string name="data_storage_space_description">Volno %1$s GB (z %2$s GB)</string>
|
||||
<string name="enter_path_to_folder">Zadejte cestu k adresáři</string>
|
||||
<string name="shared_string_select_folder">Adresář…</string>
|
||||
<string name="paste_Osmand_data_folder_path">Zadejte cestu ke adresáři s OsmAnd daty</string>
|
||||
<string name="change_osmand_data_folder_question">Změnit adresář pro OsmAnd data\?</string>
|
||||
<string name="move_maps_to_new_destination">Přesunout do nového umístění</string>
|
||||
<string name="internal_app_storage_description">Vnitřní úložiště, skryté před uživateli a aplikacemi, přístupné výhradně pro OsmAnd</string>
|
||||
<string name="change_data_storage_folder">Změnit adresář úložiště dat</string>
|
||||
<string name="routeInfo_piste_type_name">Typ sjezdovky</string>
|
||||
<string name="rendering_attr_piste_difficulty_novice_name">Nováček</string>
|
||||
<string name="rendering_attr_piste_difficulty_easy_name">Začátečník</string>
|
||||
<string name="rendering_attr_piste_difficulty_intermediate_name">Středně pokročilý</string>
|
||||
<string name="rendering_attr_piste_difficulty_advanced_name">Pokročilý</string>
|
||||
<string name="rendering_attr_piste_difficulty_expert_name">Expert</string>
|
||||
<string name="rendering_attr_piste_difficulty_freeride_name">Volná jízda</string>
|
||||
<string name="rendering_attr_piste_difficulty_extreme_name">Extrém</string>
|
||||
<string name="routeInfo_piste_difficulty_name">Obtížnost sjezdovky</string>
|
||||
<string name="rendering_attr_piste_difficulty_connection_name">Připojení</string>
|
||||
<string name="shared_string_calculate">Vypočítat</string>
|
||||
<string name="shared_string_osmand_usage">OsmAnd využití</string>
|
||||
<string name="shared_sting_tiles">Dlaždice</string>
|
||||
<string name="shared_string_maps">Mapy</string>
|
||||
<string name="shared_string_memory_tb_desc">%1$s TB</string>
|
||||
<string name="shared_string_memory_gb_desc">%1$s GB</string>
|
||||
<string name="shared_string_memory_mb_desc">%1$s MB</string>
|
||||
<string name="shared_string_memory_kb_desc">%1$s kB</string>
|
||||
<string name="shared_string_memory_used_tb_desc">Využito %1$s TB</string>
|
||||
<string name="shared_string_memory_used_gb_desc">Využito %1$s GB</string>
|
||||
<string name="shared_string_memory_used_mb_desc">Využito %1$s MB</string>
|
||||
<string name="shared_string_memory_used_kb_desc">Využito %1$s kB</string>
|
||||
<string name="routing_attr_prefer_unpaved_name">Upřednostňovat nezpevněné cesty</string>
|
||||
<string name="routing_attr_prefer_unpaved_description">Upřednostňovat nezpevněné cesty.</string>
|
||||
<string name="update_all_maps">Aktualizovat všechny mapy</string>
|
||||
<string name="update_all_maps_q">Opravdu chcete aktualizovat všechny mapy (%1$d)\?</string>
|
||||
<string name="shared_preference">Sdíleno</string>
|
||||
<string name="routing_attr_driving_style_prefer_unpaved_name">Upřednostňovat nezpevněné cesty</string>
|
||||
<string name="routing_attr_driving_style_prefer_unpaved_description">Upřednostňovat nezpevněné cesty.</string>
|
||||
<string name="layer_osm_edits">OSM úpravy</string>
|
||||
<string name="export_profile">Exportovat profil</string>
|
||||
<string name="exported_osmand_profile">OsmAnd profil: %1$s</string>
|
||||
<string name="overwrite_profile_q">Profil „%1$s“ již existuje. Přepsat\?</string>
|
||||
<string name="export_profile_failed">Profil nelze exportovat.</string>
|
||||
<string name="profile_import">Import profilu:</string>
|
||||
<string name="profile_import_descr">Pro import profilu, vyberte soubor profilu ze zařízení a otevřete ho pomocí OsmAnd.</string>
|
||||
<string name="file_import_error">%1$s chyba importu: %2$s</string>
|
||||
<string name="file_imported_successfully">Úspěšně importováno: %1$s</string>
|
||||
<string name="swap_two_places">Prohodit %1$s a %2$s</string>
|
||||
<string name="route_start_point">Počáteční bod</string>
|
||||
<string name="track_saved">Trasa uložena</string>
|
||||
<string name="empty_filename">Název souboru je prázdný</string>
|
||||
<string name="shared_string_revert">Vrátit zpět</string>
|
||||
<string name="clear_confirmation_msg">Vyčistit %1$s\?</string>
|
||||
<string name="download_map_dialog">Dialog stahování map</string>
|
||||
<string name="dialogs_and_notifications_title">Dialogy a oznámení</string>
|
||||
<string name="dialogs_and_notifications_descr">Správa vyskakovacích upozornění, oznámení a dialogů zobrazovaných aplikací OsmAnd.</string>
|
||||
<string name="suggested_maps">Navrhované mapy</string>
|
||||
<string name="suggested_maps_descr">Tyto mapy je třeba používat s modulem</string>
|
||||
<string name="added_profiles">Přidané profily</string>
|
||||
<string name="added_profiles_descr">Nový profil přidaný do OsmAnd modulem</string>
|
||||
<string name="shared_string_turn_off">Vypnout</string>
|
||||
<string name="new_plugin_added">Přidán nový modul</string>
|
||||
<string name="add_new_profile_q">Přidat nový profil „%1$s“\?</string>
|
||||
</resources>
|
|
@ -1337,7 +1337,7 @@
|
|||
<string name="poi_rescue_station">Rettungsstation</string>
|
||||
<string name="poi_mini_roundabout">Mini-Kreisverkehr</string>
|
||||
<string name="poi_railway_crossing">Bahnübergang</string>
|
||||
<string name="poi_bird_hide">Vögelbeobachtungspunkt</string>
|
||||
<string name="poi_bird_hide">Vogelbeobachtungspunkt</string>
|
||||
<string name="poi_garden">Garten</string>
|
||||
<string name="poi_heath">Heide</string>
|
||||
<string name="poi_grass">Gras</string>
|
||||
|
@ -3764,7 +3764,7 @@
|
|||
<string name="poi_bath_open_air">Freibad</string>
|
||||
<string name="poi_monastery_type_convent">Klostertyp: Konvent</string>
|
||||
<string name="poi_monastery_type_canonry">Klostertyp: Kanoniker</string>
|
||||
<string name="poi_monastery_type_clerks_regular">Klostertyp: Regularkleriker</string>
|
||||
<string name="poi_monastery_type_clerks_regular">Klostertyp: Ordenspriester</string>
|
||||
<string name="poi_tourist_camp">Freizeit- und Erholungsheim</string>
|
||||
<string name="poi_community_gender_female">Geschlecht der Gemeinschaft: weiblich</string>
|
||||
<string name="poi_community_gender_male">Geschlecht der Gemeinschaft: männlich</string>
|
||||
|
|
|
@ -3087,7 +3087,7 @@
|
|||
<string name="shared_string_track_is_saved">Το %s του ίχνους είναι αποθηκευμένο</string>
|
||||
<string name="gpx_join_gaps">Ένωση κενών</string>
|
||||
<string name="app_mode_camper">Τροχόσπιτο</string>
|
||||
<string name="app_mode_campervan">Τροχόσπιτο</string>
|
||||
<string name="app_mode_campervan">Τροχόσπιτο (RV)</string>
|
||||
<string name="rendering_attr_showLez_description">Να εμφανίζονται οι ζώνες χαμηλής εκπομπής στον χάρτη. Δεν επηρεάζει τη διαδρομή.</string>
|
||||
<string name="rendering_attr_showLez_name">Να εμφανίζονται οι ζώνες χαμηλής εκπομπής</string>
|
||||
<string name="temporary_conditional_routing">Λάβετε υπόψη τους προσωρινούς περιορισμούς</string>
|
||||
|
@ -3107,8 +3107,8 @@
|
|||
<string name="years_5">Έτη</string>
|
||||
<string name="months_3">Τρεις μήνες</string>
|
||||
<string name="price_free">Δωρεάν</string>
|
||||
<string name="get_discount_first_part">%1$s για τους πρώτους %2$s</string>
|
||||
<string name="get_discount_first_few_part">%1$s για τους πρώτους %2$s</string>
|
||||
<string name="get_discount_first_part">%1$s για τον πρώτο %2$s</string>
|
||||
<string name="get_discount_first_few_part">%1$s για τον πρώτο %2$s</string>
|
||||
<string name="get_discount_second_part">έπειτα %1$s</string>
|
||||
<string name="cancel_subscription">Ακύρωση συνδρομής</string>
|
||||
<string name="price_and_discount">%1$s • Εξοικονομήστε %2$s</string>
|
||||
|
@ -3224,37 +3224,37 @@
|
|||
<string name="routing_attr_difficulty_preference_description">Προτιμήστε διαδρομές αυτής της δυσκολίας, αν και η διαδρομή σε πιο δύσκολες ή εύκολες πίστες είναι ακόμα εφικτές, εάν είναι πιο σύντομες.</string>
|
||||
<string name="routing_attr_freeride_policy_name">Εκτός πίστας</string>
|
||||
<string name="routing_attr_freeride_policy_description">Ελεύθερες καθώς και εκτός πίστας διαδρομές είναι ανεπίσημες και περάσματα. Συνήθως ακαθάριστες, ασυντήρητες από τους υπεύθυνους και μη ελεγμένες το πρωί. Μπαίνετε με δικό σας κίνδυνο.</string>
|
||||
<string name="configure_profile_info">Όλες οι παρακάτω ρυθμίσεις επηρεάζουν μόνο το επιλεγμένο προφίλ.</string>
|
||||
<string name="utm_format_descr">Το OsmAnd χρησιμοποιεί το πρότυπο UTM, το οποίο είναι παρόμοιο αλλά όχι ίδιο με το UTM NATO πρότυπο.</string>
|
||||
<string name="configure_profile_info">Ρυθμίσεις για την κατατομή (προφίλ):</string>
|
||||
<string name="utm_format_descr">Το OsmAnd χρησιμοποιεί το πρότυπο UTM, το οποίο είναι παρόμοιο αλλά όχι ίδιο με τη μορφή UTM NATO.</string>
|
||||
<string name="shared_string_example">Παράδειγμα</string>
|
||||
<string name="navigate_point_format_utm">Πρότυπο UTM</string>
|
||||
<string name="navigate_point_format_olc">Άνοιγμα κωδικού θέσης</string>
|
||||
<string name="coordinates_format_info">Το επιλεγμένο πρότυπο θα εφαρμοστεί σε όλες τις τοποθεσίες στην εφαρμογή.</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="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="start_up_message_pref">Μήνυμα έναρξης</string>
|
||||
<string name="analytics_pref_title">Αναλυτικά στοιχεία</string>
|
||||
<string name="turn_screen_on_info">Εμφάνιση χάρτη κατά την πλοήγηση πάνω από την οθόνη κλειδώματος.</string>
|
||||
<string name="route_parameters_info">Αυτές οι ρυθμίσεις επηρεάζουν την δημιουργία της διαδρομής. Θα εφαρμοστεί μόνο στο επιλεγμένο προφίλ: %1$s.</string>
|
||||
<string name="turn_screen_on_info">"Εμφάνιση χάρτη στην οθόνη κλειδώματος κατά την πλοήγηση."</string>
|
||||
<string name="route_parameters_info">Ρυθμίσεις δρομολόγησης στο επιλεγμένο προφίλ \"%1$s\".</string>
|
||||
<string name="wake_time">Ώρα αφύπνισης</string>
|
||||
<string name="units_and_formats">Μονάδες μέτρησης και φορμά</string>
|
||||
<string name="appearance">Εμφάνιση</string>
|
||||
<string name="map_look_descr">εικονίδια, widgets</string>
|
||||
<string name="map_look_descr">Εμφάνιση χάρτη</string>
|
||||
<string name="map_look">Εμφάνιση χάρτη</string>
|
||||
<string name="list_of_installed_plugins">Λίστα εγκατεστημένων πρόσθετων</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="screen_alerts_descr">Οι προειδοποιήσεις θα εμφανίζονται στην αριστερή κάτω γωνία της οθόνης κατά τη διάρκεια της πλοήγησης.</string>
|
||||
<string name="screen_alerts_descr">Οι προειδοποιήσεις εμφανίζονται κάτω αριστερά κατά την πλοήγηση.</string>
|
||||
<string name="switch_profile">Εναλλαγή προφίλ</string>
|
||||
<string name="language_and_output">Γλώσσα και έξοδος</string>
|
||||
<string name="reset_to_default">Επαναφορά προεπιλογών</string>
|
||||
<string name="manage_profiles_descr">Δημιουργία, εισαγωγή, επεξεργασία προφίλ</string>
|
||||
<string name="manage_profiles">Διαχείριση προφίλ εφαρμογής…</string>
|
||||
<string name="osmand_settings_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>
|
||||
|
@ -3263,10 +3263,136 @@
|
|||
<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_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="default_speed_dialog_msg">Θα χρησιμοποιηθεί για την εκτίμηση του χρόνου άφιξης για άγνωστο τύπο δρόμων και για περιορισμό της ταχύτητας όλων των δρόμων (θα μπορούσε να αλλάξει η διαδρομή)</string>
|
||||
<string name="application_profile_changed">Η κατατομή (προφίλ) της εφαρμογής άλλαξε σε \"%s\"</string>
|
||||
<string name="logcat_buffer">Ενδιάμεση μνήμη του Logcat</string>
|
||||
<string name="plugins_settings">Ρυθμίσεις προσθέτου</string>
|
||||
<string name="shared_string_by_default">Από προεπιλογή</string>
|
||||
<string name="download_detailed_map">Λήψη λεπτομερούς %s χάρτη, για προβολή αυτής της περιοχής.</string>
|
||||
<string name="change_data_storage_full_description">Μετακίνηση των αρχείων δεδομένων του OsmAnd σε νέο προορισμό;
|
||||
\n%1$s > %2$s</string>
|
||||
<string name="data_storage_preference_summary">%1$s • %2$s</string>
|
||||
<string name="data_storage_space_description">%1$s GB ελεύθερα (από %2$s GB)</string>
|
||||
<string name="enter_path_to_folder">Εισαγωγή διαδρομής στον φάκελο</string>
|
||||
<string name="shared_string_select_folder">Φάκελος…</string>
|
||||
<string name="paste_Osmand_data_folder_path">Επικόλληση διαδρομής στον φάκελο με τα δεδομένα OsmAnd</string>
|
||||
<string name="change_osmand_data_folder_question">Αλλαγή του φακέλου δεδομένων του OsmAnd;</string>
|
||||
<string name="move_maps_to_new_destination">Μετακίνηση στον νέο προορισμό</string>
|
||||
<string name="internal_app_storage_description">Εσωτερική αποθήκευση, κρυφή από τον χρήστη και άλλες εφαρμογές, αποκλειστικά προσπελάσιμη στο OsmAnd</string>
|
||||
<string name="change_data_storage_folder">Αλλαγή φακέλου αποθήκευσης δεδομένων</string>
|
||||
<string name="rendering_attr_piste_type_snow_park_name">Χιονοδρομικό πάρκο</string>
|
||||
<string name="rendering_attr_piste_type_sleigh_name">Έλκηθρο</string>
|
||||
<string name="rendering_attr_piste_type_sled_name">Έλκηθρο</string>
|
||||
<string name="rendering_attr_piste_type_hike_name">Πεζοπορία</string>
|
||||
<string name="rendering_attr_piste_type_connection_name">Σύνδεση</string>
|
||||
<string name="rendering_attr_piste_type_skitour_name">Γύρος με σκι</string>
|
||||
<string name="rendering_attr_piste_type_downhill_name">Κατάβαση</string>
|
||||
<string name="rendering_attr_piste_type_nordic_name">Σκανδιναβικός</string>
|
||||
<string name="routeInfo_piste_type_name">Τύπος πίστας</string>
|
||||
<string name="rendering_attr_piste_difficulty_novice_name">Αρχάριος</string>
|
||||
<string name="rendering_attr_piste_difficulty_easy_name">Εύκολη</string>
|
||||
<string name="rendering_attr_piste_difficulty_intermediate_name">Ενδιάμεση</string>
|
||||
<string name="rendering_attr_piste_difficulty_advanced_name">Προχωρημένη</string>
|
||||
<string name="rendering_attr_piste_difficulty_expert_name">Ειδική</string>
|
||||
<string name="rendering_attr_piste_difficulty_freeride_name">Ελεύθερη διαδρομή</string>
|
||||
<string name="rendering_attr_piste_difficulty_extreme_name">Ακραία</string>
|
||||
<string name="rendering_attr_piste_difficulty_undefined_name">Ακαθόριστη</string>
|
||||
<string name="routeInfo_piste_difficulty_name">Δυσκολία πίστας</string>
|
||||
<string name="routing_attr_width_name">Όριο πλάτους</string>
|
||||
<string name="routing_attr_width_description">Καθορίστε το επιτρεπόμενο όριο πλάτους οχήματος στους δρόμους.</string>
|
||||
<string name="avoid_in_routing_descr_">Αποφυγή συγκεκριμένων διαδρομών και τύπων δρόμων</string>
|
||||
<string name="app_mode_utv">Δίπλα-δίπλα</string>
|
||||
<string name="rendering_attr_piste_difficulty_aerialway_name">Εναέριος</string>
|
||||
<string name="rendering_attr_piste_difficulty_connection_name">Σύνδεση</string>
|
||||
<string name="shared_string_calculate">Υπολογισμός</string>
|
||||
<string name="shared_string_osmand_usage">Χρήση OsmAnd</string>
|
||||
<string name="shared_sting_tiles">Πλακίδια</string>
|
||||
<string name="shared_string_maps">Χάρτες</string>
|
||||
<string name="shared_string_memory_tb_desc">%1$s TB</string>
|
||||
<string name="shared_string_memory_gb_desc">%1$s GB</string>
|
||||
<string name="shared_string_memory_mb_desc">%1$s MB</string>
|
||||
<string name="shared_string_memory_kb_desc">%1$s kB</string>
|
||||
<string name="track_storage_directory">Φάκελος αποθήκευσης ιχνών</string>
|
||||
<string name="track_storage_directory_descrp">Τα ίχνη (διαδρομές) μπορούν να αποθηκευτούν στον φάκελο \'rec\', μηνιαίως, ή σε ημερήσιους φακέλους.</string>
|
||||
<string name="store_tracks_in_rec_directory">Καταγραφή ιχνών (διαδρομών) στον φάκελο \'rec\'</string>
|
||||
<string name="store_tracks_in_daily_directories">Καταγραφή ιχνών (διαδρομών) σε ημερήσιους φακέλους</string>
|
||||
<string name="store_tracks_in_daily_directories_descrp">Καταγραφή ιχνών (διαδρομών) σε υποφακέλους ανά ημέρα καταγραφής (όπως 01-01-2018).</string>
|
||||
<string name="shared_string_memory_used_tb_desc">Χρησιμοποιήθηκαν %1$s TB</string>
|
||||
<string name="shared_string_memory_used_gb_desc">Χρησιμοποιήθηκαν %1$s GB</string>
|
||||
<string name="shared_string_memory_used_mb_desc">Χρησιμοποιήθηκαν %1$s MB</string>
|
||||
<string name="shared_string_memory_used_kb_desc">Χρησιμοποιήθηκαν %1$s kB</string>
|
||||
<string name="contour_lines_and_hillshade">Ισοϋψείς γραμμές και σκίαση αναγλύφου</string>
|
||||
<string name="routing_attr_prefer_unpaved_name">Να προτιμώνται μη ασφαλτοστρωμένοι δρόμοι</string>
|
||||
<string name="routing_attr_prefer_unpaved_description">Να προτιμώνται μη ασφαλτοστρωμένοι δρόμοι.</string>
|
||||
<string name="update_all_maps">Ενημέρωση όλων των χαρτών</string>
|
||||
<string name="update_all_maps_q">Είσαστε σίγουροι ότι θέλετε να ενημερώσετε όλους τους (%1$d) χάρτες;</string>
|
||||
<string name="release_3_5">• Ενημερώθηκαν εφαρμογές και ρυθμίσεις κατατομής (προφίλ): Οι ρυθμίσεις τακτοποιούνται τώρα κατά τύπο. Κάθε κατατομή μπορεί να προσαρμοστεί ξεχωριστά.
|
||||
\n
|
||||
\n • Νέος διάλογος λήψης χάρτη που προτείνει χάρτη για λήψη κατά την πλοήγηση
|
||||
\n
|
||||
\n • Διορθώθηκαν νυκτερινά θέματα
|
||||
\n
|
||||
\n • Διορθώθηκαν αρκετά προβλήματα διαδρομών στον κόσμο
|
||||
\n
|
||||
\n • Ενημερώθηκαν χάρτες βάσης με περισσότερο λεπτομερές οδικό δίκτυο
|
||||
\n
|
||||
\n • Διορθώθηκαν πλημμυρισμένες περιοχές παγκοσμίως
|
||||
\n
|
||||
\n • Διαδρομές χιονοδρομίας: Προστέθηκαν κατατομές (προφίλ) ανύψωσης και πολυπλοκότητα διαδρομών στις λεπτομέρειες διαδρομών
|
||||
\n
|
||||
\n • Άλλες διορθώσεις σφαλμάτων
|
||||
\n
|
||||
\n</string>
|
||||
<string name="apply_preference_to_all_profiles">Μπορείτε να εφαρμόσετε αυτήν την αλλαγή σε όλες τις κατατομές (προφίλ) ή μόνο στην τελευταία επιλεγμένη.</string>
|
||||
<string name="shared_preference">Κοινόχρηστο</string>
|
||||
<string name="routing_attr_driving_style_prefer_unpaved_name">Να προτιμώνται οι μη ασφαλτοστρωμένοι δρόμοι</string>
|
||||
<string name="routing_attr_driving_style_prefer_unpaved_description">Να προτιμώνται οι μη ασφαλτοστρωμένοι δρόμοι.</string>
|
||||
<string name="layer_osm_edits">Επεξεργασίες OSM</string>
|
||||
<string name="quick_action_contour_lines_descr">Εναλλαγή εμφάνισης ή απόκρυψης ισοϋψών γραμμών στον χάρτη.</string>
|
||||
<string name="quick_action_contour_lines_show">Εμφάνιση γραμμών ισοϋψών</string>
|
||||
<string name="quick_action_contour_lines_hide">Απόκρυψη ισοϋψών γραμμών</string>
|
||||
<string name="quick_action_show_hide_contour_lines">Εμφάνιση/Απόκρυψη ισοϋψών γραμμών</string>
|
||||
<string name="quick_action_hillshade_descr">Εναλλαγή εμφάνισης ή απόκρυψης σκίασης αναγλύφου στον χάρτη.</string>
|
||||
<string name="quick_action_hillshade_show">Εμφάνιση σκίασης ανάγλυφου</string>
|
||||
<string name="quick_action_hillshade_hide">Απόκρυψη σκίασης ανάγλυφου</string>
|
||||
<string name="quick_action_show_hide_hillshade">Εμφάνιση/Απόκρυψη σκίασης ανάγλυφου</string>
|
||||
<string name="tts_initialization_error">Αδυναμία εκκίνησης μηχανής κείμενο σε ομιλία</string>
|
||||
<string name="simulate_your_location_gpx_descr">Προσομοίωση της θέσης σας χρησιμοποιώντας καταγεγραμμένη διαδρομή GPX.</string>
|
||||
<string name="export_profile">Εξαγωγή κατατομής (προφίλ)</string>
|
||||
<string name="exported_osmand_profile">Κατατομή (προφίλ) OsmAnd: %1$s</string>
|
||||
<string name="overwrite_profile_q">Η κατατομή (προφίλ) \'%1$s\' υπάρχει ήδη. Να αντικατασταθεί;</string>
|
||||
<string name="export_profile_failed">Αδυναμία εξαγωγής κατατομής (προφίλ).</string>
|
||||
<string name="profile_import">Εισαγωγή κατατομής (προφίλ):</string>
|
||||
<string name="profile_import_descr">Για εισαγωγή κατατομής (προφίλ), επιλέξετε το αρχείο της στη συσκευή και ανοίξτε το με το OsmAnd.</string>
|
||||
<string name="file_import_error">%1$s σφάλμα εισαγωγής: %2$s</string>
|
||||
<string name="file_imported_successfully">Το %1$s εισήχθη επιτυχώς.</string>
|
||||
<string name="rendering_value_white_name">Λευκό</string>
|
||||
<string name="swap_two_places">Εναλλαγή %1$s και %2$s</string>
|
||||
<string name="route_start_point">Σημείο εκκίνησης</string>
|
||||
<string name="track_saved">Αποθηκεύτηκε το ίχνος</string>
|
||||
<string name="empty_filename">Το όνομα του αρχείου είναι κενό</string>
|
||||
<string name="shared_string_revert">Επαναφορά</string>
|
||||
<string name="quick_action_directions_from_desc">Ένα πλήκτρο που κάνει το κέντρο της οθόνης το σημείο αναχώρησης και υπολογισμού της διαδρομής προς τον προορισμό ή ανοίγει διάλογο επιλογής προορισμού, εάν ο σημειωτής διαδρομής δεν είναι στον χάρτη.</string>
|
||||
<string name="rendering_attr_showCycleNodeNetworkRoutes_name">Εμφάνιση δικτύου κόμβων διαδρομών ποδηλάτων</string>
|
||||
<string name="clear_confirmation_msg">Καθαρισμός του %1$s;</string>
|
||||
<string name="download_map_dialog">Λήψη διαλόγου χαρτών</string>
|
||||
<string name="dialogs_and_notifications_title">Διάλογοι και ειδοποιήσεις</string>
|
||||
<string name="dialogs_and_notifications_descr">Αναδυόμενοι έλεγχοι, διάλογοι και ειδοποιήσεις που το OsmAnd εμφανίζει κατά τη χρήση.</string>
|
||||
<string name="rendering_value_walkingRoutesOSMCNodes_name">Δίκτυα κόμβων</string>
|
||||
<string name="suggested_maps">Προτεινόμενοι χάρτες</string>
|
||||
<string name="suggested_maps_descr">Αυτοί οι χάρτες απαιτούνται για χρήση με το πρόσθετο</string>
|
||||
<string name="added_profiles">Κατατομές (προφίλ) που προστέθηκαν</string>
|
||||
<string name="added_profiles_descr">Το πρόσθετο προσθέτει νέα κατατομή (προφίλ) στο OsmAnd</string>
|
||||
<string name="shared_string_turn_off">Απενεργοποίηση</string>
|
||||
<string name="new_plugin_added">Προστέθηκε νέο πρόσθετο</string>
|
||||
<string name="join_segments">Ένωση τμημάτων</string>
|
||||
<string name="add_new_profile_q">Προσθήκη νέας κατατομής (προφίλ) \'%1$s\';</string>
|
||||
<string name="save_heading">Να συμπεριλαμβάνεται η επικεφαλίδα</string>
|
||||
<string name="save_heading_descr">Αποθήκευση επικεφαλίδας για κάθε σημείο ίχνους κατά την εγγραφή.</string>
|
||||
</resources>
|
|
@ -1,95 +1,95 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><resources>
|
||||
<!--
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<!--
|
||||
Our app defaults to American English with default strings in res/values
|
||||
This file is manually maintained in res/values-en-rGB and should ONLY contain strings where a different spelling should be used for English as used in the United Kingdom
|
||||
-->
|
||||
|
||||
<string name="rendering_attr_currentTrackColor_name">GPX colour</string>
|
||||
<string name="rendering_attr_currentTrackColor_description">GPX colour</string>
|
||||
<string name="shared_string_color">Colour</string>
|
||||
<string name="mapnik_render_descr">Old \'Mapnik\'-style default rendering style. Key features: colours are similar to \'Mapnik\' style.</string>
|
||||
<string name="touring_view_render_descr">High detail style for touring purposes. Includes all configuration options of default style, in addition: Displays as much detail as possible, in particular all roads, paths, and other ways to travel. Clear visual distinction between all different road types, reminiscent of many touring atlases. High contrast colour scheme for outdoor use, day and night mode.</string>
|
||||
<string name="unirs_render_descr">Modification of the default style to increase contrast of pedestrian and bicycle roads. Uses legacy Mapnik colours.</string>
|
||||
<string name="add_favourites_group_to_markers_descr">Select a Favourite category to add to the markers.</string>
|
||||
<string name="favourites_group">Favourites category</string>
|
||||
<string name="add_group_descr">You can import groups from favourites or track waypoints.</string>
|
||||
<string name="empty_state_markers_groups_desc">You can import favourite groups or track waypoints as markers.</string>
|
||||
<string name="empty_state_favourites">Add Favourites</string>
|
||||
<string name="empty_state_favourites_desc">Add favourites on the map or import them from a file.</string>
|
||||
<string name="import_gpx_file_description">can be imported as Favourites points, or as track file.</string>
|
||||
<string name="import_as_favorites">Import as Favourites</string>
|
||||
<string name="search_favorites">Search favourites</string>
|
||||
<string name="favourites_edit_dialog_title">Favourite information</string>
|
||||
<string name="save_as_favorites_points">Save as group of favourites</string>
|
||||
<string name="quick_action_add_favorite">Add favourite</string>
|
||||
<string name="change_color">Change colour</string>
|
||||
<string name="srtm_color_scheme">Colour scheme</string>
|
||||
<string name="towards">towards</string>
|
||||
<string name="access_default_color">Default colour</string>
|
||||
<string name="rendering_value_walkingRoutesScopeOSMC_name">Colouring according to route scope</string>
|
||||
<string name="rendering_value_walkingRoutesOSMC_name">Colouring according to OSMC</string>
|
||||
<string name="shared_string_favorite">Favourite</string>
|
||||
<string name="shared_string_favorites">Favourites</string>
|
||||
<string name="shared_string_add_to_favorites">Add to Favourites</string>
|
||||
<string name="shared_string_my_favorites">My Favourites</string>
|
||||
<string name="traffic_warning_railways">Railway crossing</string>
|
||||
<string name="traffic_warning_pedestrian">Pedestrian crossing</string>
|
||||
<string name="show_railway_warnings">Railway crossings</string>
|
||||
<string name="show_pedestrian_warnings">Pedestrian crossings</string>
|
||||
<string name="rendering_attr_subwayMode_name">Underground routes</string>
|
||||
<string name="fav_point_emoticons_message">The favourite point name has been modified to %1$s to facilitate properly saving the string with emoticons to a file.</string>
|
||||
<string name="fav_point_dublicate">Favourite point name duplicate</string>
|
||||
<string name="fav_point_dublicate_message">Specified favourite name already in use, was changed to %1$s to avoid duplication.</string>
|
||||
<string name="speak_favorites">Nearby Favourites</string>
|
||||
<string name="rendering_attr_coloredBuildings_name">Colour-code buildings by type</string>
|
||||
<string name="osmo_edit_color">Display colour</string>
|
||||
<string name="favourites_list_activity">Select favourite</string>
|
||||
<string name="rendering_attr_roadColors_description">Select a road colour scheme:</string>
|
||||
<string name="rendering_attr_roadColors_name">Road colour scheme</string>
|
||||
<string name="favourites_search_desc">Favourites search</string>
|
||||
<string name="fav_export_confirmation">File with previously exported favourites already exists. Do you want to replace it?</string>
|
||||
<string name="search_position_favorites">Favourites…</string>
|
||||
<string name="favourites_delete_multiple_succesful">Favourite point(s) deleted successfully.</string>
|
||||
<string name="favorite_delete_multiple">You are going to delete %1$d favourite(s) and %2$d favourite group(s). Are you sure?</string>
|
||||
<string name="fav_imported_sucessfully">Favourites successfully imported</string>
|
||||
<string name="fav_saved_sucessfully">Favourites successfully saved to {0}</string>
|
||||
<string name="no_fav_to_save">No favourite points to save</string>
|
||||
<string name="share_fav_subject">Favourites shared via OsmAnd</string>
|
||||
<string name="fav_points_edited">Favourite point was edited</string>
|
||||
<string name="fav_points_not_exist">No favourite points exist</string>
|
||||
<string name="add_favorite_dialog_top_text">Enter favourite name</string>
|
||||
<string name="add_favorite_dialog_default_favourite_name">Favourite</string>
|
||||
<string name="add_favorite_dialog_favourite_added_template">Favourite point \'\'{0}\'\' was added successfully.</string>
|
||||
<string name="favourites_context_menu_add">Add favourite</string>
|
||||
<string name="favourites_context_menu_edit">Edit favourite</string>
|
||||
<string name="favourites_context_menu_delete">Delete favourite</string>
|
||||
<string name="favourites_remove_dialog_msg">Delete favourite point \'%s\'?</string>
|
||||
<string name="favourites_remove_dialog_success">Favourite point {0} was successfully deleted.</string>
|
||||
<string name="replace_favorite_confirmation">Are you sure you want to replace favourite %1$s?</string>
|
||||
|
||||
<string name="always_center_position_on_map">Display position always in centre</string>
|
||||
<string name="choose_auto_follow_route">Auto-centre map view</string>
|
||||
<string name="auto_follow_route_navigation">Auto-centre nav only</string>
|
||||
<string name="auto_follow_route_navigation_descr">Auto-centre map view only while navigating.</string>
|
||||
<string name="auto_follow_location_enabled">Auto-centre map view in use.</string>
|
||||
<string name="search_position_map_view">Current map centre</string>
|
||||
<string name="search_near_map">Search near current map centre</string>
|
||||
<string name="position_on_map_center">Centre</string>
|
||||
<string name="route_general_information">Total distance %1$s, travelling time %2$d h %3$d m.</string>
|
||||
<string name="rendering_attr_contourColorScheme_name">Contour lines colour scheme</string>
|
||||
<string name="quick_action_add_destination_desc">Tapping the action button will add a destination at the screen centre location.</string>
|
||||
<string name="quick_action_replace_destination_desc">Tapping the action button will replace the destination with the screen centre location.</string>
|
||||
<string name="quick_action_add_first_intermediate_desc">Tapping the action button will add a first intermediate point at the screen centre location.</string>
|
||||
<string name="quick_action_add_parking_descr">Tapping the action button will add a parking place at the screen centre location.</string>
|
||||
<string name="quick_action_add_osm_bug_descr">Tapping the action button will add an OSM note at the screen centre location.</string>
|
||||
<string name="quick_action_add_poi_descr">Tapping the action button will add a POI at the screen centre location.</string>
|
||||
<string name="quick_action_add_marker_descr">Tapping the action button will add a map marker at the screen centre location.</string>
|
||||
<string name="quick_action_add_gpx_descr">Tapping the action button will add a GPX waypoint at the screen centre location.</string>
|
||||
<string name="quick_action_showhide_favorites_descr">Tapping the action button will show or hide the favourite points on the map.</string>
|
||||
<string name="quick_action_showhide_favorites_title">Show/hide favourites</string>
|
||||
<string name="quick_action_favorites_show">Show Favourites</string>
|
||||
<string name="quick_action_favorites_hide">Hide Favourites</string>
|
||||
<string name="quick_action_category_descr">Select the category to save the favourite in.</string>
|
||||
<string name="analyze_on_map">Analyse on map</string>
|
||||
<string name="purchase_cancelled_dialog_title">You have cancelled your OsmAnd Live subscription</string>
|
||||
</resources>
|
||||
<string name="rendering_attr_currentTrackColor_name">GPX colour</string>
|
||||
<string name="rendering_attr_currentTrackColor_description">GPX colour</string>
|
||||
<string name="shared_string_color">Colour</string>
|
||||
<string name="mapnik_render_descr">Old \'Mapnik\'-style default rendering style. Key features: colours are similar to \'Mapnik\' style.</string>
|
||||
<string name="touring_view_render_descr">High detail style for touring purposes. Includes all configuration options of default style, in addition: Displays as much detail as possible, in particular all roads, paths, and other ways to travel. Clear visual distinction between all different road types, reminiscent of many touring atlases. High contrast colour scheme for outdoor use, day and night mode.</string>
|
||||
<string name="unirs_render_descr">Modification of the default style to increase contrast of pedestrian and bicycle roads. Uses legacy Mapnik colours.</string>
|
||||
<string name="add_favourites_group_to_markers_descr">Select a Favourite category to add to the markers.</string>
|
||||
<string name="favourites_group">Favourites category</string>
|
||||
<string name="add_group_descr">You can import groups from favourites or track waypoints.</string>
|
||||
<string name="empty_state_markers_groups_desc">You can import favourite groups or track waypoints as markers.</string>
|
||||
<string name="empty_state_favourites">Add Favourites</string>
|
||||
<string name="empty_state_favourites_desc">Add favourites on the map or import them from a file.</string>
|
||||
<string name="import_gpx_file_description">can be imported as Favourites points, or as track file.</string>
|
||||
<string name="import_as_favorites">Import as Favourites</string>
|
||||
<string name="search_favorites">Search favourites</string>
|
||||
<string name="favourites_edit_dialog_title">Favourite information</string>
|
||||
<string name="save_as_favorites_points">Save as group of favourites</string>
|
||||
<string name="quick_action_add_favorite">Add favourite</string>
|
||||
<string name="change_color">Change colour</string>
|
||||
<string name="srtm_color_scheme">Colour scheme</string>
|
||||
<string name="towards">towards</string>
|
||||
<string name="access_default_color">Default colour</string>
|
||||
<string name="rendering_value_walkingRoutesScopeOSMC_name">Colouring according to route scope</string>
|
||||
<string name="rendering_value_walkingRoutesOSMC_name">Colouring according to OSMC</string>
|
||||
<string name="shared_string_favorite">Favourite</string>
|
||||
<string name="shared_string_favorites">Favourites</string>
|
||||
<string name="shared_string_add_to_favorites">Add to Favourites</string>
|
||||
<string name="shared_string_my_favorites">My Favourites</string>
|
||||
<string name="traffic_warning_railways">Railway crossing</string>
|
||||
<string name="traffic_warning_pedestrian">Pedestrian crossing</string>
|
||||
<string name="show_railway_warnings">Railway crossings</string>
|
||||
<string name="show_pedestrian_warnings">Pedestrian crossings</string>
|
||||
<string name="rendering_attr_subwayMode_name">Underground routes</string>
|
||||
<string name="fav_point_emoticons_message">The favourite point name has been modified to %1$s to facilitate properly saving the string with emoticons to a file.</string>
|
||||
<string name="fav_point_dublicate">Favourite point name duplicate</string>
|
||||
<string name="fav_point_dublicate_message">Specified favourite name already in use, was changed to %1$s to avoid duplication.</string>
|
||||
<string name="speak_favorites">Nearby Favourites</string>
|
||||
<string name="rendering_attr_coloredBuildings_name">Colour-code buildings by type</string>
|
||||
<string name="osmo_edit_color">Display colour</string>
|
||||
<string name="favourites_list_activity">Select favourite</string>
|
||||
<string name="rendering_attr_roadColors_description">Select a road colour scheme:</string>
|
||||
<string name="rendering_attr_roadColors_name">Road colour scheme</string>
|
||||
<string name="favourites_search_desc">Favourites search</string>
|
||||
<string name="fav_export_confirmation">File with previously exported favourites already exists. Do you want to replace it?</string>
|
||||
<string name="search_position_favorites">Favourites…</string>
|
||||
<string name="favourites_delete_multiple_succesful">Favourite point(s) deleted successfully.</string>
|
||||
<string name="favorite_delete_multiple">You are going to delete %1$d favourite(s) and %2$d favourite group(s). Are you sure?</string>
|
||||
<string name="fav_imported_sucessfully">Favourites successfully imported</string>
|
||||
<string name="fav_saved_sucessfully">Favourites successfully saved to {0}</string>
|
||||
<string name="no_fav_to_save">No favourite points to save</string>
|
||||
<string name="share_fav_subject">Favourites shared via OsmAnd</string>
|
||||
<string name="fav_points_edited">Favourite point was edited</string>
|
||||
<string name="fav_points_not_exist">No favourite points exist</string>
|
||||
<string name="add_favorite_dialog_top_text">Enter favourite name</string>
|
||||
<string name="add_favorite_dialog_default_favourite_name">Favourite</string>
|
||||
<string name="add_favorite_dialog_favourite_added_template">Favourite point \'\'{0}\'\' was added successfully.</string>
|
||||
<string name="favourites_context_menu_add">Add favourite</string>
|
||||
<string name="favourites_context_menu_edit">Edit favourite</string>
|
||||
<string name="favourites_context_menu_delete">Delete favourite</string>
|
||||
<string name="favourites_remove_dialog_msg">Delete favourite point \'%s\'?</string>
|
||||
<string name="favourites_remove_dialog_success">Favourite point {0} was successfully deleted.</string>
|
||||
<string name="replace_favorite_confirmation">Are you sure you want to replace favourite %1$s?</string>
|
||||
<string name="always_center_position_on_map">Display position always in centre</string>
|
||||
<string name="choose_auto_follow_route">Auto-centre map view</string>
|
||||
<string name="auto_follow_route_navigation">Auto-centre nav only</string>
|
||||
<string name="auto_follow_route_navigation_descr">Auto-centre map view only while navigating.</string>
|
||||
<string name="auto_follow_location_enabled">Auto-centre map view in use.</string>
|
||||
<string name="search_position_map_view">Current map centre</string>
|
||||
<string name="search_near_map">Search near current map centre</string>
|
||||
<string name="position_on_map_center">Centre</string>
|
||||
<string name="route_general_information">Total distance %1$s, travelling time %2$d h %3$d m.</string>
|
||||
<string name="rendering_attr_contourColorScheme_name">Contour lines colour scheme</string>
|
||||
<string name="quick_action_add_destination_desc">Tapping the action button will add a destination at the screen centre location.</string>
|
||||
<string name="quick_action_replace_destination_desc">Tapping the action button will replace the destination with the screen centre location.</string>
|
||||
<string name="quick_action_add_first_intermediate_desc">Tapping the action button will add a first intermediate point at the screen centre location.</string>
|
||||
<string name="quick_action_add_parking_descr">Tapping the action button will add a parking place at the screen centre location.</string>
|
||||
<string name="quick_action_add_osm_bug_descr">Tapping the action button will add an OSM note at the screen centre location.</string>
|
||||
<string name="quick_action_add_poi_descr">Tapping the action button will add a POI at the screen centre location.</string>
|
||||
<string name="quick_action_add_marker_descr">Tapping the action button will add a map marker at the screen centre location.</string>
|
||||
<string name="quick_action_add_gpx_descr">Tapping the action button will add a GPX waypoint at the screen centre location.</string>
|
||||
<string name="quick_action_showhide_favorites_descr">Tapping the action button will show or hide the favourite points on the map.</string>
|
||||
<string name="quick_action_showhide_favorites_title">Show/hide favourites</string>
|
||||
<string name="quick_action_favorites_show">Show Favourites</string>
|
||||
<string name="quick_action_favorites_hide">Hide Favourites</string>
|
||||
<string name="quick_action_category_descr">Select the category to save the favourite in.</string>
|
||||
<string name="analyze_on_map">Analyse on map</string>
|
||||
<string name="purchase_cancelled_dialog_title">You have cancelled your OsmAnd Live subscription</string>
|
||||
<string name="show_transparency_seekbar">Show transparency slider</string>
|
||||
</resources>
|
|
@ -2561,7 +2561,7 @@
|
|||
<string name="poi_support_tree">Muntita sur: arbo</string>
|
||||
<string name="poi_support_pedestal">Muntita sur: piedestalo</string>
|
||||
<string name="poi_support_ground">Muntita sur: planko</string>
|
||||
<string name="poi_support_billboard">Muntita sur: anonctabulego</string>
|
||||
<string name="poi_support_billboard">Muntita sur: reklam‑tabulego</string>
|
||||
<string name="poi_support_ceiling">Muntita sur: plafono</string>
|
||||
<string name="poi_support_roof">Muntita sur: tegmento</string>
|
||||
<string name="poi_support_suspended">Muntita sur: pendigita</string>
|
||||
|
|
|
@ -2142,10 +2142,10 @@ Lon %2$s</string>
|
|||
<string name="quick_action_duplicate">Nombre de la acción rápida duplicado</string>
|
||||
<string name="quick_action_showhide_favorites_descr">Un botón que muestra u oculta los Favoritos en el mapa.</string>
|
||||
<string name="quick_action_showhide_poi_descr">Un botón que muestra u oculta los PDI en el mapa.</string>
|
||||
<string name="quick_action_showhide_favorites_title">Alternar vista de Favoritos</string>
|
||||
<string name="quick_action_showhide_favorites_title">Mostrar/ocultar Favoritos</string>
|
||||
<string name="quick_action_favorites_show">Mostrar Favoritos</string>
|
||||
<string name="quick_action_favorites_hide">Ocultar Favoritos</string>
|
||||
<string name="quick_action_showhide_poi_title">Alternar vista de PDI</string>
|
||||
<string name="quick_action_showhide_poi_title">Mostrar/ocultar PDI</string>
|
||||
<string name="quick_action_poi_show">Mostrar %1$s</string>
|
||||
<string name="quick_action_poi_hide">Ocultar %1$s</string>
|
||||
<string name="quick_action_add_category">Añadir una categoría</string>
|
||||
|
@ -3329,7 +3329,7 @@ Lon %2$s</string>
|
|||
<string name="shared_string_memory_used_gb_desc">Usado %1$s GB</string>
|
||||
<string name="shared_string_memory_used_mb_desc">Usado %1$s MB</string>
|
||||
<string name="shared_string_memory_used_kb_desc">Usado %1$s kB</string>
|
||||
<string name="contour_lines_and_hillshade">Curvas de nivel y sombreados</string>
|
||||
<string name="contour_lines_and_hillshade">Curvas de nivel y sombreado</string>
|
||||
<string name="routing_attr_prefer_unpaved_name">Preferir caminos sin pavimentar</string>
|
||||
<string name="routing_attr_prefer_unpaved_description">Prefiere caminos sin pavimentar.</string>
|
||||
<string name="update_all_maps">Actualizar todos los mapas</string>
|
||||
|
@ -3359,11 +3359,11 @@ Lon %2$s</string>
|
|||
<string name="quick_action_contour_lines_descr">Un botón que muestra u oculta las curvas de nivel en el mapa.</string>
|
||||
<string name="quick_action_contour_lines_show">Mostrar curvas de nivel</string>
|
||||
<string name="quick_action_contour_lines_hide">Ocultar curvas de nivel</string>
|
||||
<string name="quick_action_show_hide_contour_lines">Alternar curvas de nivel</string>
|
||||
<string name="quick_action_show_hide_contour_lines">Mostrar/ocultar curvas de nivel</string>
|
||||
<string name="quick_action_hillshade_descr">Un botón que muestra u oculta la sombra de una colina en el mapa.</string>
|
||||
<string name="quick_action_hillshade_show">Mostrar sombreados</string>
|
||||
<string name="quick_action_hillshade_hide">Ocultar sombreados</string>
|
||||
<string name="quick_action_show_hide_hillshade">Alternar sombreados</string>
|
||||
<string name="quick_action_hillshade_show">Mostrar sombreado</string>
|
||||
<string name="quick_action_hillshade_hide">Ocultar sombreado</string>
|
||||
<string name="quick_action_show_hide_hillshade">Mostrar/ocultar sombreado</string>
|
||||
<string name="tts_initialization_error">Imposible iniciar el motor de habla sintetizada</string>
|
||||
<string name="simulate_your_location_gpx_descr">Simular la ubicación usando una traza GPX grabada.</string>
|
||||
<string name="export_profile">Exportar perfil</string>
|
||||
|
@ -3395,4 +3395,7 @@ Lon %2$s</string>
|
|||
<string name="shared_string_turn_off">Apagar</string>
|
||||
<string name="new_plugin_added">Nuevo complemento añadido</string>
|
||||
<string name="join_segments">Unir segmentos</string>
|
||||
<string name="add_new_profile_q">¿Añadir nuevo perfil «%1$s»\?</string>
|
||||
<string name="save_heading">Incluir rumbo</string>
|
||||
<string name="save_heading_descr">Guarda el rumbo para cada punto de la traza durante la grabación.</string>
|
||||
</resources>
|
|
@ -3688,4 +3688,8 @@
|
|||
<string name="poi_bath_type">Type</string>
|
||||
<string name="poi_bath_open_air">Plein-air</string>
|
||||
<string name="poi_bath_type_lake">Lac</string>
|
||||
<string name="poi_horse_forestry">Accès à cheval : forestiers seuls</string>
|
||||
<string name="poi_foot_destination">Accès piétonnier : riverains</string>
|
||||
<string name="poi_trailer_no">Accès aux remorques : non</string>
|
||||
<string name="poi_psv_yes">Accès aux transports publics ou taxis : oui</string>
|
||||
</resources>
|
|
@ -1882,7 +1882,7 @@ Mémoire proportionnelle %4$s Mo (limite Android %5$s Mo, Dalvik %6$s Mo).</stri
|
|||
<string name="osm_live_thanks">Merci pour votre soutien à OsmAnd !
|
||||
\nPour activer toutes les nouvelles fonctionnalités, merci de redémarrer OsmAnd.</string>
|
||||
<string name="osm_live_subscription_settings">Paramétrage de l\'abonnement</string>
|
||||
<string name="show_transparency_seekbar">Afficher la barre de recherche transparente</string>
|
||||
<string name="show_transparency_seekbar">Afficher curseur de réglage de la transparence</string>
|
||||
<string name="recalculate_route">Recalculer l\'itinéraire</string>
|
||||
<string name="storage_directory_shared">Mémoire partagée</string>
|
||||
<string name="shared_string_topbar">Barre supérieure</string>
|
||||
|
@ -3370,4 +3370,7 @@ représentant la zone : %1$s x %2$s</string>
|
|||
<string name="add_new_profile_q">Ajouter le profil \'%1$s\' \?</string>
|
||||
<string name="save_heading">Inclure l\'entête</string>
|
||||
<string name="save_heading_descr">Enregistrer l\'entête avec chaque point lors de l\'enregistrement d\'une trace.</string>
|
||||
<string name="rendering_attr_showCycleNodeNetworkRoutes_name">Montre des itinéraires cyclables de réseau de nœud</string>
|
||||
<string name="rendering_value_walkingRoutesOSMCNodes_name">Réseaux de nœud</string>
|
||||
<string name="personal_category_name">Personnel</string>
|
||||
</resources>
|
|
@ -1478,7 +1478,7 @@ Hosszúság: %2$s</string>
|
|||
<string name="shared_string_deselect">Kijelölés megszüntetése</string>
|
||||
<string name="shared_string_deselect_all">Összes kijelölés megszüntetése</string>
|
||||
<string name="shared_string_unexpected_error">Váratlan hiba</string>
|
||||
<string name="shared_string_action_template">{0} művelet</string>
|
||||
<string name="shared_string_action_template">{0}. művelet</string>
|
||||
<string name="shared_string_collapse">Összecsukás</string>
|
||||
<string name="shared_string_video">Videó</string>
|
||||
<string name="shared_string_photo">Fénykép</string>
|
||||
|
@ -3234,4 +3234,9 @@ Kérlek adj meg egy teljes kódot</string>
|
|||
<string name="dialogs_and_notifications_title">Párbeszédablakok és értesítések</string>
|
||||
<string name="dialogs_and_notifications_descr">OsmAnd használata közben megjelenő felugró üzenetek, párbeszédablakok és értesítések beállításai.</string>
|
||||
<string name="suggested_maps">Javasolt térképek</string>
|
||||
<string name="add_new_profile_q">Hozzáadod az új \'%1$s\' profilt\?</string>
|
||||
<string name="distance_and_address">%1$s • %2$s</string>
|
||||
<string name="street_city">%1$s, %2$s</string>
|
||||
<string name="personal_category_name">Személyes</string>
|
||||
<string name="shared_string_downloading_formatted">%s letöltése</string>
|
||||
</resources>
|
5
OsmAnd/res/values-ia/strings.xml
Normal file
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="add_new_profile_q">Adder nove profilo \'%1$s\'\?</string>
|
||||
<string name="shared_string_downloading_formatted">Discargante %s</string>
|
||||
</resources>
|
|
@ -3353,11 +3353,11 @@ Rappresenta l\'area: %1$s x %2$s</string>
|
|||
<string name="routing_attr_driving_style_prefer_unpaved_name">Preferisci le strade non pavimentate</string>
|
||||
<string name="routing_attr_driving_style_prefer_unpaved_description">Preferisci le strade pavimentate.</string>
|
||||
<string name="layer_osm_edits">Modifiche OSM</string>
|
||||
<string name="quick_action_contour_lines_descr">Toccando questo pulsante azione mostra o nasconde nella mappa le linee isoipse</string>
|
||||
<string name="quick_action_contour_lines_descr">Un controllo per mostrare o nascondere nella mappa le linee isoipse.</string>
|
||||
<string name="quick_action_contour_lines_show">Mostra le linee isoipse</string>
|
||||
<string name="quick_action_contour_lines_hide">Nascondi le linee isoipse</string>
|
||||
<string name="quick_action_show_hide_contour_lines">Mostra/nascondi le linee isoipse</string>
|
||||
<string name="quick_action_hillshade_descr">Toccando questo pulsante azione mostra o nasconde nella mappa le ombreggiature dei rilievi</string>
|
||||
<string name="quick_action_hillshade_descr">Questo pulsante mostra o nasconde nella mappa le ombreggiature dei rilievi</string>
|
||||
<string name="quick_action_hillshade_show">Mostra l\'ombreggiatura dei rilievi</string>
|
||||
<string name="quick_action_hillshade_hide">Nascondi l\'ombreggiatura dei rilievi</string>
|
||||
<string name="quick_action_show_hide_hillshade">Mostra/nascondi l\'ombreggiatura dei rilievi</string>
|
||||
|
|
|
@ -9,10 +9,10 @@
|
|||
いません。マーケットに行ってインストールしますか?</string>
|
||||
<string name="gpx_option_reverse_route">GPXルートを反転</string>
|
||||
<string name="gpx_option_destination_point">現在の目的地を使用</string>
|
||||
<string name="gpx_option_from_start_point">経路全体に沿って通る</string>
|
||||
<string name="gpx_option_from_start_point">経路全体を通過する</string>
|
||||
<string name="switch_to_raster_map_to_see">メニューの[マップダウンロード]などから、この場所のオフラインベクターマップをダウンロードするか『オンラインマップ』プラグインを有効にしてください。</string>
|
||||
<string name="switch_to_vector_map_to_see">現在地のベクターマップを見るには\n\t\n\t\'メニュー\' →\'マップ設定\' →\'マップソース…\' →\'オフラインベクターマップ\'を有効にします。</string>
|
||||
<string name="choose_audio_stream">音声案内ストリーム</string>
|
||||
<string name="choose_audio_stream">音声案内出力</string>
|
||||
<string name="choose_audio_stream_descr">音声案内を再生するチャンネルを選択します。</string>
|
||||
<string name="voice_stream_voice_call">通話ストリーム(BT接続カーステレオも中断)</string>
|
||||
<string name="voice_stream_notification">通知ストリーム</string>
|
||||
|
@ -129,7 +129,7 @@ OsmAnd バージョンがインストールされています。全てのオフ
|
|||
<string name="trace_rendering">レンダリング速度を表示</string>
|
||||
<string name="daynight_mode_day">昼固定</string>
|
||||
<string name="daynight_mode_night">夜固定</string>
|
||||
<string name="daynight_mode_auto">日の出/日の入時間を参照</string>
|
||||
<string name="daynight_mode_auto">日の出/日の入</string>
|
||||
<string name="daynight_mode_sensor">ライトセンサー</string>
|
||||
<string name="daynight_descr">昼/夜モード切替ルールを選択します</string>
|
||||
<string name="daynight">昼/夜モード切替</string>
|
||||
|
@ -168,7 +168,7 @@ MB)をダウンロードしますか?</string>
|
|||
<string name="download_type_to_filter">フィルタをかける種別</string>
|
||||
<string name="use_high_res_maps">高解像度マップ</string>
|
||||
<string name="use_high_res_maps_descr">高精細度装置向け高解像度マップを表示します</string>
|
||||
<string name="unknown_location">位置取得中</string>
|
||||
<string name="unknown_location">現在地はまだ取得できていません</string>
|
||||
<string name="context_menu_item_search_transport">公共交通機関を検索</string>
|
||||
<string name="transport_searching_transport">交通機関の検索結果(目的地無し):</string>
|
||||
<string name="transport_searching_route">交通機関を検索結果(目的地は{0}):</string>
|
||||
|
@ -186,7 +186,7 @@ MB)をダウンロードしますか?</string>
|
|||
<string name="rotate_map_bearing_opt">移動方向に従う</string>
|
||||
<string name="rotate_map_none_opt">回転しない</string>
|
||||
<string name="rotate_map_to_bearing_descr">マップ配置:</string>
|
||||
<string name="rotate_map_to_bearing">マップ回転</string>
|
||||
<string name="rotate_map_to_bearing">マップの向き</string>
|
||||
<string name="show_route">ルート表示</string>
|
||||
<string name="fav_imported_sucessfully">お気に入りのインポートは完了しました</string>
|
||||
<string name="fav_file_to_load_not_found">{0}にはお気に入りを含むGPXファイルはありません</string>
|
||||
|
@ -242,14 +242,14 @@ MB)をダウンロードしますか?</string>
|
|||
<string name="sd_mounted_ro">SDカードは読み取り専用です。
|
||||
\nプリロードマップだけを見ることができ、インターネットからのダウンロードはできません。</string>
|
||||
<string name="unzipping_file">ファイルを解凍中…</string>
|
||||
<string name="route_tr">右折して進む</string>
|
||||
<string name="route_tshr">鋭く右折して進む</string>
|
||||
<string name="route_tslr">ゆるやかに右折して進む</string>
|
||||
<string name="route_tl">左折して進む</string>
|
||||
<string name="route_tshl">鋭く左折して進む</string>
|
||||
<string name="route_tsll">ゆるやかに左折して進む</string>
|
||||
<string name="route_tu">Uターンして進む</string>
|
||||
<string name="route_head">前方</string>
|
||||
<string name="route_tr">右方向です</string>
|
||||
<string name="route_tshr">大きく右に曲がってください</string>
|
||||
<string name="route_tslr">右へ進んで下さい</string>
|
||||
<string name="route_tl">左方向です</string>
|
||||
<string name="route_tshl">大きく左に曲がってください</string>
|
||||
<string name="route_tsll">左へ進んで下さい</string>
|
||||
<string name="route_tu">Uターンしてください</string>
|
||||
<string name="route_head">まっすぐ進んでください</string>
|
||||
<string name="first_time_continue">続ける</string>
|
||||
<string name="first_time_download">地域をダウンロード</string>
|
||||
<string name="first_time_msg">OsmAndを使ってくれてありがとうございます。アプリケーションの全機能を使うには、地域のオフラインデータダウンロード (設定 → マップデータ等管理) が必要です。その後で、マップ表示、住所検索、POI 検索、公共交通機関検索ができます。</string>
|
||||
|
@ -296,7 +296,7 @@ POIの更新は利用できません</string>
|
|||
{1} in {2}</string>
|
||||
<string name="search_history_building">建物: {0}, {1}, {2}</string>
|
||||
<string name="favorite">お気に入り</string>
|
||||
<string name="shared_string_clear_all">全て削除</string>
|
||||
<string name="shared_string_clear_all">全消去</string>
|
||||
<string name="shared_string_history">履歴</string>
|
||||
<string name="uploading_data">データをアップロード中…</string>
|
||||
<string name="uploading">アップロード中…</string>
|
||||
|
@ -366,9 +366,9 @@ POIの更新は利用できません</string>
|
|||
<string name="data_settings">データ</string>
|
||||
<string name="osm_settings">OSM</string>
|
||||
<string name="auto_zoom_map_descr">移動速度を基準とした自動ズームレベルを設定します。(その間マップは現在位置と同期します)</string>
|
||||
<string name="auto_zoom_map">マップを自動ズーム</string>
|
||||
<string name="auto_zoom_map">自動ズーム</string>
|
||||
<string name="additional_settings">追加設定</string>
|
||||
<string name="settings_preset_descr">マップの表示とナビゲーション設定はプロファイルごとに記憶されます。標準で使用するプロファイルを指定してください</string>
|
||||
<string name="settings_preset_descr">マップ外観とナビゲーション設定は、使用プロファイルごとに記憶されます。ここでデフォルトのプロファイルを設定します。</string>
|
||||
<string name="settings_preset">起動時の表示プロファイル</string>
|
||||
<string name="shared_string_settings">設定</string>
|
||||
<string name="save_current_track_descr">現在の経路を今すぐメモリーカードに保存します。</string>
|
||||
|
@ -503,19 +503,19 @@ POIの更新は利用できません</string>
|
|||
<string name="edit_tilesource_choose_existing">保存済みデータから選択…</string>
|
||||
<string name="maps_define_edit">マップの定義と編集…</string>
|
||||
<string name="map_widget_fps_info">FPS デバッグ情報</string>
|
||||
<string name="driving_region_descr">運転する地域を選択します:米国、ヨーロッパ、イギリス、アジア、その他</string>
|
||||
<string name="driving_region_descr">運転する地域を選択します:アメリカ、ヨーロッパ、イギリス、アジア、その他</string>
|
||||
<string name="driving_region">運転地域</string>
|
||||
<string name="driving_region_japan">日本</string>
|
||||
<string name="driving_region_us">米国</string>
|
||||
<string name="driving_region_us">アメリカ</string>
|
||||
<string name="driving_region_canada">カナダ</string>
|
||||
<string name="driving_region_europe_asia">ヨーロッパ、アジア、ラテンアメリカ&同様の国々</string>
|
||||
<string name="driving_region_uk">イギリス、インド、その他類似国</string>
|
||||
<string name="speak_title">音声アナウンス設定…</string>
|
||||
<string name="speak_title">音声案内…</string>
|
||||
<string name="speak_descr">道路名、交通指示警告(強制停止、スピードバンプ等含む)、スピードカメラ、法定速度の音声アナウンスの設定をします。</string>
|
||||
<string name="speak_street_names">通りの名前 (TTS形式音声のみ)</string>
|
||||
<string name="speak_speed_limit">制限速度</string>
|
||||
<string name="speak_cameras">スピードカメラ(オービス)</string>
|
||||
<string name="speak_traffic_warnings">通行に関する警告</string>
|
||||
<string name="speak_cameras">スピードカメラ</string>
|
||||
<string name="speak_traffic_warnings">交通指示警告</string>
|
||||
<string name="osb_author_or_password_not_specified">OSMのユーザー名とパスワードを設定して下さい</string>
|
||||
<string name="clear_intermediate_points">経由地点を削除</string>
|
||||
<string name="keep_intermediate_points">経由地点を保持</string>
|
||||
|
@ -532,7 +532,7 @@ POIの更新は利用できません</string>
|
|||
<string name="please_select_address">最初に都市か通りを設定してください</string>
|
||||
<string name="search_street_in_neighborhood_cities">近隣市街の道路を探す</string>
|
||||
<string name="intermediate_items_sort_return">現在地から目的地へのルート最適化のために経由地点の順序が変更されました。</string>
|
||||
<string name="intermediate_items_sort_by_distance">ルートを最適化して並び替え</string>
|
||||
<string name="intermediate_items_sort_by_distance">移動距離を最短で並べ替え</string>
|
||||
<string name="local_osm_changes_backup_successful">OSMの変更ファイルが正常に生成されました %1$s</string>
|
||||
<string name="local_osm_changes_backup_failed">OSMの変更のバックアップに失敗しました。</string>
|
||||
<string name="local_osm_changes_backup">OSMの変更としてバックアップ</string>
|
||||
|
@ -563,7 +563,7 @@ POIの更新は利用できません</string>
|
|||
<string name="available_downloads_left">あと%1$d個のファイルがダウンロード可能です</string>
|
||||
<string name="install_paid">フルバージョン</string>
|
||||
<string name="cancel_route">ルートをキャンセル</string>
|
||||
<string name="cancel_navigation">ナビを停止</string>
|
||||
<string name="cancel_navigation">ナビゲーションの停止</string>
|
||||
<string name="clear_destination">選択した目的地、経由地点を削除します、よろしいですか?</string>
|
||||
<string name="download_using_mobile_internet">Wi-Fiに接続されていません。現在の接続を利用してインターネットからダウンロードを行いますか?</string>
|
||||
<string name="street_name">道路名称</string>
|
||||
|
@ -585,13 +585,13 @@ POIの更新は利用できません</string>
|
|||
<string name="item_unchecked">未選択</string>
|
||||
<string name="shared_string_map">マップ</string>
|
||||
<string name="prefer_motorways">高速道路を優先</string>
|
||||
<string name="prefer_in_routing_title">ルート検索時の優先道路設定…</string>
|
||||
<string name="prefer_in_routing_title">優先ルートの指定…</string>
|
||||
<string name="prefer_in_routing_descr">高速道路を優先する設定にします</string>
|
||||
<string name="max_speed_none">なし</string>
|
||||
<string name="download_hillshade_maps">陰影起伏図</string>
|
||||
<string name="local_indexes_cat_srtm">等高線</string>
|
||||
<string name="local_indexes_cat_av">音声/動画データ</string>
|
||||
<string name="stop_routing_confirm">ナビゲーションを停止させますか?</string>
|
||||
<string name="stop_routing_confirm">ナビゲーションを終了してもよろしいですか?</string>
|
||||
<string name="clear_dest_confirm">本当に目的地(とその経由地点)を削除しますか?</string>
|
||||
<string name="precise_routing_mode_descr">グリッチ無しの正確なルート計算を有効化します。現段階では距離が限定されて尚且つ遅いです。</string>
|
||||
<string name="precise_routing_mode">正確なルーティング(アルファ)</string>
|
||||
|
@ -653,7 +653,7 @@ POIの更新は利用できません</string>
|
|||
<string name="intermediate_point_too_far">経由地点 %1$s が最寄りの道路から遠すぎます。</string>
|
||||
<string name="arrived_at_intermediate_point">経由地点周辺に到着しました</string>
|
||||
<string name="context_menu_item_intermediate_point">経由地点として追加</string>
|
||||
<string name="map_widget_intermediate_distance">経由地点</string>
|
||||
<string name="map_widget_intermediate_distance">中間経由地点</string>
|
||||
<string name="download_roads_only_item">道路のみ</string>
|
||||
<string name="download_roads_only_maps">道路のみのマップ</string>
|
||||
<string name="rendering_attr_noAdminboundaries_name">境界</string>
|
||||
|
@ -676,10 +676,10 @@ POIの更新は利用できません</string>
|
|||
<string name="gps_not_available">設定でGPSを有効にしてください</string>
|
||||
<string name="map_widget_monitoring_services">ログ保存サービス</string>
|
||||
<string name="no_route">ルートがありません</string>
|
||||
<string name="replace_destination_point">目的地の入れ替え</string>
|
||||
<string name="replace_destination_point">目的地を入れ替え</string>
|
||||
<string name="new_destination_point_dialog">すでに目的地が設定されています。</string>
|
||||
<string name="shared_string_target_points">目的地</string>
|
||||
<string name="ending_point_too_far">終点が最寄りの道路より遠すぎます。</string>
|
||||
<string name="ending_point_too_far">目的地が最寄りの道路から遠すぎます。</string>
|
||||
<string name="add_tag">タグの追加</string>
|
||||
<string name="btn_advanced_mode">拡張モード…</string>
|
||||
<string name="poi_filter_parking">駐車場</string>
|
||||
|
@ -703,18 +703,18 @@ POIの更新は利用できません</string>
|
|||
<string name="filterpoi_activity">POIフィルタを作成</string>
|
||||
<string name="select_navigation_mode">トランスポートモードの選択:</string>
|
||||
<string name="day_night_info_description">日の出: %1$s \n日の入: %2$s</string>
|
||||
<string name="day_night_info">昼/夜の情報</string>
|
||||
<string name="day_night_info">昼/夜判別情報</string>
|
||||
<string name="map_widget_vector_attributes">描画方法の属性</string>
|
||||
<string name="map_widget_renderer">マップスタイル</string>
|
||||
<string name="layer_map_appearance">UI設定</string>
|
||||
<string name="show_lanes">車線</string>
|
||||
<string name="avoid_unpaved">未舗装の道路を避ける</string>
|
||||
<string name="avoid_ferries">フェリーを使わない</string>
|
||||
<string name="avoid_in_routing_title">使用しない道路の指定…</string>
|
||||
<string name="avoid_in_routing_title">回避ルートの指定…</string>
|
||||
<string name="map_widget_fluorescent">使用ルートを明滅させる</string>
|
||||
<string name="map_widget_show_ruler">距離測定</string>
|
||||
<string name="map_widget_view_direction">視線方向</string>
|
||||
<string name="map_widget_transparent">ウィジェット背景の透明化</string>
|
||||
<string name="map_widget_transparent">透過ウィジェット</string>
|
||||
<string name="bg_service_sleep_mode_off">動作中\n バックグラウンドモード</string>
|
||||
<string name="bg_service_sleep_mode_on">停止\n バックグラウンドモードの中断</string>
|
||||
<string name="int_continuosly">可能な限り継続</string>
|
||||
|
@ -730,7 +730,7 @@ POIの更新は利用できません</string>
|
|||
<string name="map_widget_speed">速度</string>
|
||||
<string name="map_widget_distance">目的地</string>
|
||||
<string name="map_widget_altitude">標高</string>
|
||||
<string name="map_widget_time">所要時間</string>
|
||||
<string name="map_widget_time">出発時刻</string>
|
||||
<string name="map_widget_next_turn">次の曲がる方向</string>
|
||||
<string name="map_widget_next_turn_small">次の曲がる方向(小さいアイコン)</string>
|
||||
<string name="map_widget_next_next_turn">次々回の曲がる方向</string>
|
||||
|
@ -739,8 +739,8 @@ POIの更新は利用できません</string>
|
|||
<string name="bg_service_screen_unlock">ロックの解除</string>
|
||||
<string name="bg_service_screen_lock_toast">画面はロックされています</string>
|
||||
<string name="bg_service_interval">呼び出し間隔の設定:</string>
|
||||
<string name="show_cameras">スピード監視カメラ(オービス等)</string>
|
||||
<string name="show_traffic_warnings">通行に関する警告</string>
|
||||
<string name="show_cameras">スピードカメラ</string>
|
||||
<string name="show_traffic_warnings">交通指示警告</string>
|
||||
<string name="avoid_toll_roads">有料道路を使わない</string>
|
||||
<string name="continue_follow_previous_route_auto">前回のナビゲーションがまだ終わっていません。続行しますか? (%1$s seconds)</string>
|
||||
<string name="route_updated_loc_found">現在位置が見つかるとルートを検索します</string>
|
||||
|
@ -784,8 +784,8 @@ POIの更新は利用できません</string>
|
|||
<string name="gpxup_private">プライベート</string>
|
||||
<string name="asap">早めに</string>
|
||||
<string name="route_roundabout">ロータリー交差点: %1$d 番目の出口を選択</string>
|
||||
<string name="route_kl">左寄りで道なりに走行</string>
|
||||
<string name="route_kr">右寄りで道なりに走行</string>
|
||||
<string name="route_kl">左寄りに進んでください</string>
|
||||
<string name="route_kr">右寄りに進んでください</string>
|
||||
<string name="rendering_attr_noPolygons_name">ポリゴン</string>
|
||||
<string name="rendering_attr_appMode_name">描画方法</string>
|
||||
<string name="rendering_attr_appMode_description">マップを最適化</string>
|
||||
|
@ -865,7 +865,7 @@ POIの更新は利用できません</string>
|
|||
<string name="left">左方向</string>
|
||||
<string name="front_left">左前方</string>
|
||||
<string name="oclock">時頃</string>
|
||||
<string name="towards">の方へ</string>
|
||||
<string name="towards">方面:</string>
|
||||
<string name="accuracy">精度</string>
|
||||
<string name="altitude">標高</string>
|
||||
<string name="no_info">情報無し</string>
|
||||
|
@ -892,16 +892,16 @@ POIの更新は利用できません</string>
|
|||
<string name="local_openstreetmap_delete">変更を削除</string>
|
||||
<string name="local_openstreetmap_descr_title">非同期OSMの編集:</string>
|
||||
<string name="local_openstreetmap_settings">保存済みOSM POIとバグ</string>
|
||||
<string name="animate_routing_route_not_calculated">最初にルートを検索して下さい</string>
|
||||
<string name="animate_routing_route_not_calculated">最初にルート検索をしてください</string>
|
||||
<string name="animate_routing_route">"計算されたルートを使用してシミュレーション "</string>
|
||||
<string name="animate_routing_gpx">GPXファイルに保存された経路を使用してシミュレーション</string>
|
||||
<string name="shared_string_remember_my_choice">選択を記憶</string>
|
||||
<string name="shared_string_and">と</string>
|
||||
<string name="shared_string_or">または</string>
|
||||
<string name="auto_zoom_none">自動ズームしない</string>
|
||||
<string name="auto_zoom_close">ズーム 大</string>
|
||||
<string name="auto_zoom_far">ズーム 中</string>
|
||||
<string name="auto_zoom_farthest">ズーム 小</string>
|
||||
<string name="auto_zoom_close">近距離表示</string>
|
||||
<string name="auto_zoom_far">中距離表示</string>
|
||||
<string name="auto_zoom_farthest">遠距離表示</string>
|
||||
<string name="av_photo_play_sound">写真撮影時にシャッター音を鳴らす</string>
|
||||
<string name="av_camera_focus_infinity">フォーカスを無限遠(∞)にセット</string>
|
||||
<string name="av_camera_focus_macro">マクロ(近距離)フォーカスモード</string>
|
||||
|
@ -934,7 +934,7 @@ POIの更新は利用できません</string>
|
|||
<string name="free_version_title">無料版</string>
|
||||
<string name="poi_context_menu_showdescription">POIの説明文を表示</string>
|
||||
<string name="index_name_north_america">北米</string>
|
||||
<string name="index_name_us">米国</string>
|
||||
<string name="index_name_us">アメリカ合衆国</string>
|
||||
<string name="index_name_central_america">中米</string>
|
||||
<string name="index_name_south_america">南米</string>
|
||||
<string name="index_name_europe">ヨーロッパ</string>
|
||||
|
@ -960,11 +960,11 @@ POIの更新は利用できません</string>
|
|||
<string name="use_transparent_map_theme">透明なテーマ</string>
|
||||
<string name="native_library_not_supported">ネイティブライブラリは、このデバイスでサポートされていません。</string>
|
||||
<string name="init_native_library">ネイティブライブラリを初期化しています…</string>
|
||||
<string name="choose_auto_follow_route">マップの自動中心表示設定</string>
|
||||
<string name="choose_auto_follow_route">マップの自動中心表示</string>
|
||||
<string name="choose_auto_follow_route_descr">マップの現在地との位置同期タイミングを設定します。</string>
|
||||
<string name="auto_follow_route_navigation">ナビゲーションのみ</string>
|
||||
<string name="auto_follow_route_navigation_descr">マップの自動中心表示はナビゲーション中のみ有効です</string>
|
||||
<string name="auto_follow_location_enabled">設定に従い、現在地をマップ中心に表示します。</string>
|
||||
<string name="auto_follow_location_enabled">現在地が自動的にマップ中心に表示されるようにします。</string>
|
||||
<string name="pref_vector_rendering">ベクターレンダラ固有のオプション</string>
|
||||
<string name="pref_overlay">オーバーレイ/アンダーレイ</string>
|
||||
<string name="pref_raster_map">マップソースの設定</string>
|
||||
|
@ -1056,8 +1056,8 @@ POIの更新は利用できません</string>
|
|||
<string name="app_modes_choose">アプリプロファイル</string>
|
||||
<string name="map_widget_map_rendering">マップ描画に関する設定</string>
|
||||
<string name="app_mode_hiking">ハイキング</string>
|
||||
<string name="app_mode_motorcycle">バイク</string>
|
||||
<string name="app_mode_boat">船舶</string>
|
||||
<string name="app_mode_motorcycle">オートバイ</string>
|
||||
<string name="app_mode_boat">ボート</string>
|
||||
<string name="app_mode_aircraft">航空機</string>
|
||||
<string name="local_osm_changes_delete_all_confirm">OSMに関する%1$d個の変更を削除してもよろしいですか?</string>
|
||||
<string name="shared_string_delete_all">すべて削除</string>
|
||||
|
@ -1110,15 +1110,15 @@ POIの更新は利用できません</string>
|
|||
\nタイルマップはオンライン経由で直接取得することが可能です、また様々なサードパーティ製マップ作成ツールで作成したSQLiteデータベースをオフラインで使用するために調整することができます。(手動でOsmAndのデータフォルダにコピーする必要があります)</string>
|
||||
<string name="osm_editing_plugin_description">このプラグイン経由でPOIオブジェクトの作成や変更、OSM注記の開示やコメント、記録したGPXファイルを使用しOSMの改善に貢献することが出来ます。OSM(OpenStreetMap)はコミュニティ主導で行われる、世界規模のパブリックドメイン(特定の知的財産権に影響されない)マップ作成のプロジェクトです。詳しくはhttps://openstreetmap.orgを参照してください。アプリに必要な情報を入力することでOsmAndからもいくつかの作業を直接行うことができます。積極的な参加を歓迎いたします。</string>
|
||||
<string name="amenity_type_osmwiki">ウィキペディア(オフライン)</string>
|
||||
<string name="keep_and_add_destination_point">最終的な目的地として追加</string>
|
||||
<string name="keep_and_add_destination_point">その後の目的地として追加</string>
|
||||
<string name="select_gpx">GPXファイルを選択…</string>
|
||||
<string name="route_descr_select_destination">目的地の設定</string>
|
||||
<string name="shared_string_select_on_map">マップから選択</string>
|
||||
<string name="shared_string_select_on_map">マップ上で選択</string>
|
||||
<string name="shared_string_favorite">お気に入り</string>
|
||||
<string name="route_preferences">ルート設定</string>
|
||||
<string name="route_info">ルート情報</string>
|
||||
<string name="routing_attr_prefer_motorway_name">高速道路を優先する</string>
|
||||
<string name="routing_attr_prefer_motorway_description">高速道路を優先する設定にします</string>
|
||||
<string name="routing_attr_prefer_motorway_description">高速道路を優先する</string>
|
||||
<string name="routing_attr_avoid_toll_name">有料道路を使わない</string>
|
||||
<string name="routing_attr_avoid_toll_description">移動時に有料道路を使用しません</string>
|
||||
<string name="routing_attr_avoid_unpaved_name">未舗装道路を使わない</string>
|
||||
|
@ -1137,8 +1137,8 @@ POIの更新は利用できません</string>
|
|||
<string name="copying_osmand_files">OsmAndデータファイルをコピーしています…</string>
|
||||
<string name="calculate_osmand_route_gpx">OsmAndオフラインルート計算</string>
|
||||
<string name="app_mode_truck">トラック</string>
|
||||
<string name="guidance_preferences_descr">ナビゲーション関連設定</string>
|
||||
<string name="routing_preferences_descr">ルート関連設定</string>
|
||||
<string name="guidance_preferences_descr">ナビゲーション設定</string>
|
||||
<string name="routing_preferences_descr">ルート検索などに関する設定をおこないます</string>
|
||||
<string name="speech_rate_descr">TTS形式の読み上げ速度を設定します(エンジン側が対応していない場合は効果がありません)</string>
|
||||
<string name="speech_rate">発声速度</string>
|
||||
<string name="complex_route_calculation_failed">高速ルート計算が失敗しました(%s)、低速モードで再計算します。</string>
|
||||
|
@ -1181,7 +1181,7 @@ POIの更新は利用できません</string>
|
|||
<string name="local_index_select_gpx_file">経路の選択</string>
|
||||
<string name="gpx_split_interval">区間を分割</string>
|
||||
<string name="sort_by_distance">距離で並べ替え</string>
|
||||
<string name="sort_by_name">名前で並べ替え</string>
|
||||
<string name="sort_by_name">名前で並び替え</string>
|
||||
<string name="show_zoom_buttons_navigation_descr">ナビゲーション中にズームボタンを表示します</string>
|
||||
<string name="show_zoom_buttons_navigation">ズームボタンを表示</string>
|
||||
<string name="save_as_favorites_points">お気に入りのグループとして保存</string>
|
||||
|
@ -1223,13 +1223,13 @@ POIの更新は利用できません</string>
|
|||
<string name="rendering_attr_subwayMode_name">地下鉄路線</string>
|
||||
<string name="int_days">日</string>
|
||||
<string name="osmo_connect_menu">接続</string>
|
||||
<string name="use_points_as_intermediates">地点間のルートを計算</string>
|
||||
<string name="use_points_as_intermediates">地点間でルート計算する</string>
|
||||
<string name="keep_informing">ナビゲーション指示の繰り返し</string>
|
||||
<string name="keep_informing_descr">ナビゲーション指示を繰り返す間隔を設定します</string>
|
||||
<string name="arrival_distance">目的地周辺でのアナウンスタイミング</string>
|
||||
<string name="arrival_distance_descr">目的地周辺でのアナウンスをするタイミングを設定します。</string>
|
||||
<string name="always_center_position_on_map">移動時、現在地を画面中央よりに表示</string>
|
||||
<string name="voice_pref_title">音声関連設定</string>
|
||||
<string name="arrival_distance_descr">目的地周辺でのアナウンスをするタイミングを設定します</string>
|
||||
<string name="always_center_position_on_map">現在地を常に中央に表示</string>
|
||||
<string name="voice_pref_title">音声</string>
|
||||
<string name="misc_pref_title">その他の設定</string>
|
||||
<string name="localization_pref_title">ローカライズ関連設定</string>
|
||||
<string name="index_item_nation_addresses">全国の住所</string>
|
||||
|
@ -1293,14 +1293,14 @@ POIの更新は利用できません</string>
|
|||
<string name="index_name_canada">北米 - カナダ</string>
|
||||
<string name="index_name_italy">ヨーロッパ - イタリア</string>
|
||||
<string name="index_name_gb">ヨーロッパ - イギリス</string>
|
||||
<string name="gpx_option_calculate_first_last_segment">最初と最後の経路セグメントでOsmAndルートを計算する</string>
|
||||
<string name="gpx_option_calculate_first_last_segment">最初と最後の経路セグメントを利用しOsmAndエンジンでルートを計算する</string>
|
||||
<string name="use_displayed_track_for_navigation">ナビゲーションに表示された経路を使用しますか?</string>
|
||||
<string name="rendering_attr_alpineHiking_name">ハイキング、トレッキングルート(SAC基準)を表示</string>
|
||||
<string name="rendering_attr_alpineHiking_description">SACスケールに従って道を描写</string>
|
||||
<string name="rendering_attr_hikingRoutesOSMC_name">ハイキング用シンボルを重ねて表示</string>
|
||||
<string name="rendering_attr_hikingRoutesOSMC_description">OSMCトレースに従って道を描写</string>
|
||||
<string name="interrupt_music_descr">有効にすると音声案内時に音楽を一時停止します</string>
|
||||
<string name="interrupt_music">再生音楽の一時停止</string>
|
||||
<string name="interrupt_music">音楽の一時停止</string>
|
||||
<string name="share_route_as_gpx">GPXファイルとしてルートを共有</string>
|
||||
<string name="share_route_subject">ルートをOsmAndを介して共有</string>
|
||||
<string name="arrival_distance_factor_early">早め</string>
|
||||
|
@ -1315,14 +1315,14 @@ POIの更新は利用できません</string>
|
|||
<string name="share_fav_subject">OsmAndを介してお気に入りを共有</string>
|
||||
<string name="av_camera_pic_size">カメラの画素数</string>
|
||||
<string name="av_camera_pic_size_descr">カメラの画像サイズを設定</string>
|
||||
<string name="navigation_intent_invalid">無効なフォーマット: %s</string>
|
||||
<string name="navigation_intent_invalid">無効な形式: %s</string>
|
||||
<string name="route_descr_destination">目的地</string>
|
||||
<string name="index_tours">旅行</string>
|
||||
<string name="shared_string_all">すべて</string>
|
||||
<string name="shared_string_all">全て</string>
|
||||
<string name="shared_string_waypoints">経由地点</string>
|
||||
<string name="way_alarms">通行に関する警告</string>
|
||||
<string name="speak_favorites">周辺のお気に入り</string>
|
||||
<string name="speak_poi">周辺のPOI</string>
|
||||
<string name="speak_poi">近隣のPOI</string>
|
||||
<string name="download_additional_maps">不足分のマップ %1$s (%2$d MB)をダウンロードしますか?</string>
|
||||
<string name="shared_string_more">追加…</string>
|
||||
<string name="rendering_value_browse_map_name">マップの閲覧</string>
|
||||
|
@ -1341,8 +1341,8 @@ POIの更新は利用できません</string>
|
|||
<string name="save_track_to_gpx_globally_descr">GPXファイルへ記録される位置情報全般は、マップ画面上のGPXログウィジェットを使用してONとOFFを切り替えることが可能です。</string>
|
||||
<string name="save_track_interval_globally">記録間隔</string>
|
||||
<string name="confirm_every_run">常に尋ねる</string>
|
||||
<string name="save_global_track_interval_descr">標準的な経路の記録間隔を選択します(マップ上のGPXログウィジェットで有効化)</string>
|
||||
<string name="save_global_track_interval">標準記録間隔</string>
|
||||
<string name="save_global_track_interval_descr">旅程ログ全般の記録間隔を選択します(マップ上のGPXログウィジェットで有効化)</string>
|
||||
<string name="save_global_track_interval">ログの記録間隔</string>
|
||||
<string name="traffic_warning_speed_limit">制限速度</string>
|
||||
<string name="traffic_warning_border_control">出入国管理</string>
|
||||
<string name="traffic_warning_payment">料金所</string>
|
||||
|
@ -1375,13 +1375,13 @@ POIの更新は利用できません</string>
|
|||
<string name="rendering_category_details">詳細</string>
|
||||
<string name="rendering_category_transport">交通機関の追加描写</string>
|
||||
<string name="rendering_category_others">他のマップ要素に関する設定</string>
|
||||
<string name="map_widget_appearance_rem">その他機能</string>
|
||||
<string name="map_widget_appearance_rem">その他の要素</string>
|
||||
<string name="map_widget_top">ステータスバー</string>
|
||||
<string name="map_widget_right">右パネル</string>
|
||||
<string name="map_widget_left">左パネル</string>
|
||||
<string name="shared_string_show">表示</string>
|
||||
<string name="configure_map">マップ設定</string>
|
||||
<string name="search_radius_proximity">以内</string>
|
||||
<string name="search_radius_proximity">内</string>
|
||||
<string name="anonymous_user_hint">以下は匿名ユーザーでは使用できません:↵\n- グループ作成;↵\n- サーバを利用してのグループやデバイスの同期;↵\n- ウェブサイト上の個別ダッシュボードでのグループやデバイスの管理.</string>
|
||||
<string name="anonymous_user">匿名ユーザー</string>
|
||||
<string name="logged_as">%1$sとしてログインしました</string>
|
||||
|
@ -1428,7 +1428,7 @@ POIの更新は利用できません</string>
|
|||
<string name="download_tab_updates">更新可能</string>
|
||||
<string name="download_tab_local">保存済み</string>
|
||||
<string name="no_internet_connection">ダウンロード出来ません、インターネット接続を確認してください。</string>
|
||||
<string name="shared_string_dismiss">中止</string>
|
||||
<string name="shared_string_dismiss">キャンセル</string>
|
||||
<string name="everything_up_to_date">ストレージ内ファイルはすべて最新です</string>
|
||||
<string name="use_opengl_render">OpenGLレンダリングを使用</string>
|
||||
<string name="use_opengl_render_descr">ハードウェアのOpenGLレンダリングを使用します(デバイスによっては動作しません)</string>
|
||||
|
@ -1545,7 +1545,7 @@ POIの更新は利用できません</string>
|
|||
<string name="shared_string_search">検索</string>
|
||||
<string name="shared_string_is_open">現在営業中</string>
|
||||
<string name="filter_poi_hint">名前でフィルター</string>
|
||||
<string name="search_poi_category_hint">名称でフィルター</string>
|
||||
<string name="search_poi_category_hint">入力ワードで全体検索</string>
|
||||
<string name="index_name_netherlands">ヨーロッパ - オランダ</string>
|
||||
<string name="rendering_value__name">標準</string>
|
||||
<string name="rendering_value_highContrastRoads_name">ハイコントラスト道路</string>
|
||||
|
@ -1639,7 +1639,7 @@ POIの更新は利用できません</string>
|
|||
<string name="user_hates_app_get_feedback_long">提案があれば教えてください。</string>
|
||||
<string name="rendering_value_walkingRoutesScopeOSMC_name">所属ネットワークに応じたカラー変更</string>
|
||||
<string name="rendering_value_walkingRoutesOSMC_name">OSMCのハイキングシンボルカラー</string>
|
||||
<string name="traffic_warning_hazard">通行注意</string>
|
||||
<string name="traffic_warning_hazard">被災域</string>
|
||||
<string name="rendering_value_boldOutline_name">太線</string>
|
||||
<string name="no_updates_available">更新はありません</string>
|
||||
<string name="download_live_updates">ライブ更新</string>
|
||||
|
@ -1698,7 +1698,7 @@ POIの更新は利用できません</string>
|
|||
<string name="si_kmh">キロメートル毎時</string>
|
||||
<string name="si_mph">マイル毎時</string>
|
||||
<string name="si_m_s">メートル毎秒</string>
|
||||
<string name="si_min_km">キロメートル毎分(km/min)</string>
|
||||
<string name="si_min_km">分/キロメートル</string>
|
||||
<string name="si_min_m">マイル毎分(mi/min)</string>
|
||||
<string name="si_nm_h">海里毎時(ノット)</string>
|
||||
<string name="nm_h">nm/h</string>
|
||||
|
@ -1820,13 +1820,13 @@ POIの更新は利用できません</string>
|
|||
<string name="clear_updates_proposition_message">ダウンロードした更新分を無効にして初期状態の地図に戻せます</string>
|
||||
<string name="add_time_span">時間間隔の追加</string>
|
||||
<string name="shared_string_select">選択</string>
|
||||
<string name="switch_start_finish">出発地と目的地の入れ替え</string>
|
||||
<string name="switch_start_finish">出発地点と目的地の入れ替え</string>
|
||||
<string name="rendering_attr_hideIcons_name">POIアイコン</string>
|
||||
<string name="item_removed">項目の削除</string>
|
||||
<string name="n_items_removed">項目は削除されました</string>
|
||||
<string name="shared_string_undo_all">すべて元に戻す</string>
|
||||
<string name="shared_string_type">タイプ</string>
|
||||
<string name="starting_point">出発地</string>
|
||||
<string name="starting_point">出発地点</string>
|
||||
<string name="shared_string_not_selected">指定しない</string>
|
||||
<string name="report">レポート</string>
|
||||
<string name="storage_permission_restart_is_required">外部ストレージへの書き込みが許可されました。手動でアプリケーションを再起動してください。</string>
|
||||
|
@ -1855,7 +1855,7 @@ POIの更新は利用できません</string>
|
|||
\nすべての新機能を有効にするには、OsmAndの再起動が必要です。</string>
|
||||
<string name="osm_live_region_desc">あなたの寄付の一部がその地域のOSM更新に貢献したユーザーへ還元されます</string>
|
||||
<string name="select_map_marker">マップマーカーの選択</string>
|
||||
<string name="map_markers_other">その他のマーカー</string>
|
||||
<string name="map_markers_other">その他マーカー</string>
|
||||
<string name="upload_anonymously">匿名でアップロード</string>
|
||||
<string name="show_transparency_seekbar">透過タイプシークバーを表示</string>
|
||||
<string name="download_files_error_not_enough_space">空き容量が足りません! 一時ファイルの置き場に {3}MB、保存のため {1}MBが必要です。(利用可能領域 {2}MB)</string>
|
||||
|
@ -1903,7 +1903,7 @@ POIの更新は利用できません</string>
|
|||
<string name="route_distance">距離:</string>
|
||||
<string name="route_duration">時間:</string>
|
||||
<string name="rendering_attr_horseRoutes_name">乗馬用ルート</string>
|
||||
<string name="shared_string_near">近隣</string>
|
||||
<string name="shared_string_near">近辺</string>
|
||||
<string name="shared_string_hide">非表示</string>
|
||||
<string name="av_video_quality_low">最低画質</string>
|
||||
<string name="av_video_quality_high">最高画質</string>
|
||||
|
@ -1913,7 +1913,7 @@ POIの更新は利用できません</string>
|
|||
<string name="av_audio_format_descr">音声出力形式を選択します</string>
|
||||
<string name="av_audio_bitrate">音声ビットレート</string>
|
||||
<string name="av_audio_bitrate_descr">音声のビットレートを選択します</string>
|
||||
<string name="looking_up_address">道路名及び市町村名を取得中</string>
|
||||
<string name="looking_up_address">住所検索</string>
|
||||
<string name="begin_with_osmand_menu_group">OsmAndを初めて使う方へ</string>
|
||||
<string name="first_usage_item">使用方法の簡易説明</string>
|
||||
<string name="update">更新</string>
|
||||
|
@ -1938,17 +1938,17 @@ POIの更新は利用できません</string>
|
|||
<string name="osm_live_subscription_settings">サブスクリプションの設定</string>
|
||||
<string name="osm_live_ask_for_purchase">最初にOsmAnd Liveのサブスクリプション(定期有料契約)手続きをしてください</string>
|
||||
<string name="osm_live_header">このサブスクリプション(定期有料契約)により世界中のマップを時間毎更新することが可能です。 サブスクリプション収入の一部はOSMコミュニティに還元され、OSMに貢献した各ユーザーにも支払われます。 あなたがOsmAndとOSMを愛用し、サポートを受けたり支援を行いたいと思うのであれば、サブスクリプションはそのための最適解です。</string>
|
||||
<string name="no_address_found">登録住所外</string>
|
||||
<string name="no_address_found">住所が未定義</string>
|
||||
<string name="number_of_contributors">貢献者数</string>
|
||||
<string name="number_of_edits">編集数</string>
|
||||
<string name="reports_for">表示レポート</string>
|
||||
<string name="share_geo">geo:</string>
|
||||
<string name="coords_format">座標の形式</string>
|
||||
<string name="coords_format_descr">地理座標で表示される形式を指定します。</string>
|
||||
<string name="coords_format">座標形式</string>
|
||||
<string name="coords_format_descr">表示される地理座標を指定の形式に変更します。</string>
|
||||
<string name="app_mode_bus">バス</string>
|
||||
<string name="app_mode_train">鉄道</string>
|
||||
<string name="current_track">現在の経路</string>
|
||||
<string name="map_widget_battery">バッテリ ーレベル</string>
|
||||
<string name="map_widget_battery">バッテリーレベル</string>
|
||||
<string name="change_markers_position">マーカーの位置を変更</string>
|
||||
<string name="move_marker_bottom_sheet_title">マップ画面のドラッグでマーカー位置を調整できます</string>
|
||||
<!-- string name="lat_lon_pattern">"緯度:%1$.5f 経度:%2$.5f"</string -->
|
||||
|
@ -1997,7 +1997,7 @@ POIの更新は利用できません</string>
|
|||
<string name="share_history_subject">OsmAnd経由で共有</string>
|
||||
<string name="search_categories">カテゴリ</string>
|
||||
<string name="postcode">郵便番号</string>
|
||||
<string name="shared_string_from">差出人</string>
|
||||
<string name="shared_string_from">から</string>
|
||||
<string name="city_type_district">地区</string>
|
||||
<string name="city_type_neighbourhood">付近</string>
|
||||
<string name="map_widget_search">検索</string>
|
||||
|
@ -2211,12 +2211,12 @@ POIの更新は利用できません</string>
|
|||
<string name="animate_my_location">現在地を目立たせる</string>
|
||||
<string name="animate_my_location_desc">ナビゲーション中も、現在地カーソルの周りを点滅させて目立たせます。</string>
|
||||
<string name="shared_string_overview">概要</string>
|
||||
<string name="select_street">道路を選択</string>
|
||||
<string name="select_street">道路名を選択</string>
|
||||
<string name="type_address">住所を入力</string>
|
||||
<string name="type_city_town">市や町や地域名を入力</string>
|
||||
<string name="type_postcode">郵便番号を入力</string>
|
||||
<string name="nearest_cities">最寄りの市町村名を入力</string>
|
||||
<string name="select_city">市を選択</string>
|
||||
<string name="nearest_cities">最寄りの市町村名</string>
|
||||
<string name="select_city">市町村名を選択</string>
|
||||
<string name="select_postcode">郵便番号検索</string>
|
||||
<string name="quick_action_auto_zoom">マップの自動ズームをON/OFF</string>
|
||||
<string name="quick_action_auto_zoom_desc">移動速度に応じたマップの自動ズーム機能のON/OFFを切り替えます。</string>
|
||||
|
@ -2241,7 +2241,7 @@ POIの更新は利用できません</string>
|
|||
<string name="shared_string_visible">表示</string>
|
||||
<string name="fonts_header">マップ用フォント</string>
|
||||
<string name="right_side_navigation">右側通行</string>
|
||||
<string name="driving_region_automatic">自動</string>
|
||||
<string name="driving_region_automatic">自動判別</string>
|
||||
<string name="do_not_send_anonymous_app_usage_desc">OsmAndは実行中のどのメニューを開いたかの情報を収集します。ユーザーの現在地、入力した地域、閲覧情報、検索、ダウンロードなどの情報を送信することはありません。</string>
|
||||
<string name="do_not_send_anonymous_app_usage">アプリケーションの匿名使用統計情報を送信しない</string>
|
||||
<string name="do_not_show_startup_messages">起動時にメッセージを表示しない</string>
|
||||
|
@ -2256,7 +2256,7 @@ POIの更新は利用できません</string>
|
|||
<string name="routing_attr_driving_style_safety_name">脇道を選り抜く</string>
|
||||
<string name="relief_smoothness_factor_descr">優先して経路設定する地形を設定します(平坦または起伏あり)。</string>
|
||||
<string name="route_points_category_name">このルートで通過が必要な場所</string>
|
||||
<string name="routing_attr_relief_smoothness_factor_name">標高の変動許容選択</string>
|
||||
<string name="routing_attr_relief_smoothness_factor_name">ルート検索時優先する地形(平坦~丘陵)を設定します</string>
|
||||
<string name="rendering_attr_depthContours_description">等深線や深度を表示します。</string>
|
||||
<string name="rendering_attr_depthContours_name">海洋等深線データ</string>
|
||||
<string name="shared_string_paused">一時停止</string>
|
||||
|
@ -2322,24 +2322,13 @@ POIの更新は利用できません</string>
|
|||
• GPX経路情報をアプリから直接OSMにアップロードできます
|
||||
• POIを追加してOSMに直接アップロードできます(オフラインの場合は後で行うことができます)
|
||||
"</string>
|
||||
<string name="osmand_extended_description_part8">"
|
||||
OsmAndはオープンソースで積極的に開発されています。バグを報告したり、翻訳を改善したり、新しい機能をコーディングすることで、誰もがアプリケーションの開発に貢献できます。このような開発者とユーザーとのやりとりによって、プロジェクトは継続的に改善されています。プロジェクトの進捗状況は、資金調達と新しい機能のテストに大きく左右されます。
|
||||
|
||||
地図のおおよそのエリアとその品質(※注 *の数が多いほど充実しています):
|
||||
• 西ヨーロッパ: ****
|
||||
• 東ヨーロッパ: ***
|
||||
• ロシア: ***
|
||||
• 北米: ***
|
||||
• 南アメリカ: **
|
||||
• アジア: **
|
||||
• 日本、韓国: ***
|
||||
• 中東: **
|
||||
• アフリカ: **
|
||||
• 南極: *
|
||||
|
||||
世界中のほとんどの国の地図がダウンロード可能です!
|
||||
フランス、ドイツ、メキシコ、英国、スペイン、オランダ、米国、ロシア、ブラジルなどの国の便利なナビゲーターを入手しましょう。
|
||||
"</string>
|
||||
<string name="osmand_extended_description_part8">OsmAndはオープンソースで積極的に開発されています。バグを報告したり、翻訳を改善したり、新しい機能をコーディングすることで、誰もがアプリケーションの開発に貢献できます。このような開発者とユーザーとのやりとりによって、プロジェクトは継続的に改善されています。プロジェクトの進捗状況は、資金調達と新しい機能のテストに大きく左右されます。
|
||||
\n
|
||||
\n地図のおおよそのエリアとその品質(※注 *の数が多いほど充実しています):
|
||||
\n • 西ヨーロッパ: **** • 東ヨーロッパ: *** • ロシア: *** • 北アメリカ: *** • 南アメリカ: ** • アジア: ** • 日本、韓国: *** • 中東: ** • アフリカ: ** • 南極: *
|
||||
\n
|
||||
\n 世界中のほとんどの国の地図がダウンロード可能です!
|
||||
\n フランス、ドイツ、メキシコ、イギリス、スペイン、オランダ、アメリカ、ロシア、ブラジルなどの国の便利なナビゲーターを入手しましょう。</string>
|
||||
<string name="osmand_plus_extended_description_part1">" OsmAnd(OSM Automated Navigation Directions~自動ナビ案内)は、『無償利用可、ワールドワイド対応、高品質のOpenStreetMap(OSM)』データを使用した、地図&ナビゲーションアプリです。
|
||||
\n音声と視覚による案内、POI(Point Of Interest~興味的地点)表示、GPX経路の作成と管理、等高線を使った地形情報(要プラグイン)、ドライブ、サイクリング、徒歩移動各移動手段別のモード、OSMの編集等々に対応。
|
||||
\n OsmAnd+は有料のアプリケーションです。購入することで同プロジェクトの資金、新機能開発への援助となり、最新アップデートも利用可能になります。
|
||||
|
@ -2473,7 +2462,7 @@ POIの更新は利用できません</string>
|
|||
<string name="store_tracks_in_monthly_directories_descrp">サブフォルダ(例:2017-01)を作成して記録した月ごとに経路を保存します。</string>
|
||||
<string name="average">平均</string>
|
||||
<string name="wrong_format">書式が間違っています</string>
|
||||
<string name="shared_string_road">道</string>
|
||||
<string name="shared_string_road">道路</string>
|
||||
<string name="show_map">地図を表示</string>
|
||||
<string name="route_is_calculated">ルートを計算しました</string>
|
||||
<string name="round_trip">往復</string>
|
||||
|
@ -2484,7 +2473,7 @@ POIの更新は利用できません</string>
|
|||
<string name="make_round_trip_descr">出発地点を(復路の)目的地として追加します。</string>
|
||||
<string name="make_round_trip">往復する</string>
|
||||
<string name="shared_string_markers">マーカー</string>
|
||||
<string name="coordinates_format">座標フォーマット</string>
|
||||
<string name="coordinates_format">座標形式</string>
|
||||
<string name="use_system_keyboard">システムで設定されたキーボードを使用</string>
|
||||
<string name="fast_coordinates_input_descr">座標の入力形式を選択します。[設定]をタップすることでいつでも変更できます。</string>
|
||||
<string name="fast_coordinates_input">高速座標入力</string>
|
||||
|
@ -2534,7 +2523,7 @@ POIの更新は利用できません</string>
|
|||
<string name="edit_line">線の編集</string>
|
||||
<string name="add_point_before">選択地点の前に追加</string>
|
||||
<string name="add_point_after">選択地点の後に追加</string>
|
||||
<string name="shared_string_options">オプション</string>
|
||||
<string name="shared_string_options">設定</string>
|
||||
<string name="measurement_tool_snap_to_road_descr">OsmAndは、選択したプロファイルのルートにポイントを接続します。</string>
|
||||
<string name="measurement_tool_save_as_new_track_descr">選択した地点をルートポイントまたは線として保存できます。</string>
|
||||
<string name="add_line">線の追加</string>
|
||||
|
@ -2621,7 +2610,7 @@ POIの更新は利用できません</string>
|
|||
<string name="empty_state_osm_edits_descr">OSMで用いられるPOIの作成や変更、OSMメモを開いたり注釈を加えたり、記録したGPXファイルの提供などがおこなえます。</string>
|
||||
<string name="mark_passed">通過済みにする</string>
|
||||
<string name="add_segment_to_the_track">GPXファイルに追加</string>
|
||||
<string name="shared_string_current">現在</string>
|
||||
<string name="shared_string_current">現在地</string>
|
||||
<string name="shared_string_actions">その他</string>
|
||||
<string name="use_two_digits_longitude">二桁の経度を使用</string>
|
||||
<string name="enter_lon">経度を入力してください</string>
|
||||
|
@ -2646,7 +2635,7 @@ POIの更新は利用できません</string>
|
|||
<string name="coord_input_save_as_track_descr">%1$sヶ所の座標を追加しました。ファイル名を付けて\"保存\"をタップしてください。</string>
|
||||
<string name="error_notification_desc">この通知画面のスクリーンショットを、support@osmand.netに送信してください</string>
|
||||
<string name="quick_action_edit_actions">アクションの編集</string>
|
||||
<string name="clear_all_intermediates">中間経由地点を全て消去</string>
|
||||
<string name="clear_all_intermediates">全ての経由地点を削除</string>
|
||||
<string name="add_waypoint">経由地点を追加</string>
|
||||
<string name="show_tunnels">トンネル</string>
|
||||
<string name="touring_view_render_descr">高いコントラストと最大限のディテールを持つツーリングスタイルです。 OsmAndデフォルトスタイルのすべてのオプションが含まれていますが、特に道路、パス、その他の移動方法など、可能な限り詳細に表示されます。道路タイプ間の明確な『ツーリングアトラス』の区別があります。昼、夜、屋外での使用に適しています。</string>
|
||||
|
@ -2657,7 +2646,7 @@ POIの更新は利用できません</string>
|
|||
<string name="empty_state_my_tracks">GPXファイルに追加しよう</string>
|
||||
<string name="empty_state_my_tracks_desc">GPXファイルまたは記録した経路からインポートします。</string>
|
||||
<string name="import_track">GPXファイルからインポート</string>
|
||||
<string name="access_intermediate_arrival_time">中間経由地点への到着時刻</string>
|
||||
<string name="access_intermediate_arrival_time">中間経由地点への到着時間</string>
|
||||
<string name="send_search_query">検索クエリを送信しますか?</string>
|
||||
<string name="read_wikipedia_offline_description">OsmAnd Liveサブスクリプションに登録すると、WikipediaとWikivoyageの旅行に関した各記事をオフラインで読むことができます。</string>
|
||||
<string name="read_wikipedia_offline">オフラインでWikipedia記事を読む</string>
|
||||
|
@ -2767,8 +2756,8 @@ POIの更新は利用できません</string>
|
|||
<string name="west_abbreviation">西</string>
|
||||
<string name="south_abbreviation">南</string>
|
||||
<string name="north_abbreviation">北</string>
|
||||
<string name="transport_nearby_routes_within">近くのルート</string>
|
||||
<string name="transport_nearby_routes">以内</string>
|
||||
<string name="transport_nearby_routes_within">近辺のルート</string>
|
||||
<string name="transport_nearby_routes">内</string>
|
||||
<string name="enter_the_file_name">ファイル名を入力して下さい。</string>
|
||||
<string name="map_import_error">マップインポートのエラー</string>
|
||||
<string name="map_imported_successfully">マップをインポートしました</string>
|
||||
|
@ -2806,8 +2795,8 @@ POIの更新は利用できません</string>
|
|||
<string name="pick_up_till">駐車上限時刻</string>
|
||||
<string name="without_time_limit">時間制限なし</string>
|
||||
<string name="context_menu_read_full_article">記事の全文を読む</string>
|
||||
<string name="open_from">開店時間</string>
|
||||
<string name="open_till">以下時間まで営業</string>
|
||||
<string name="open_from">以下の場所から開く</string>
|
||||
<string name="open_till">以下の所まで開く</string>
|
||||
<string name="will_close_at">閉店時間</string>
|
||||
<string name="will_open_at">開店予定時間</string>
|
||||
<string name="will_open_on">営業予定時刻</string>
|
||||
|
@ -2836,7 +2825,7 @@ POIの更新は利用できません</string>
|
|||
<string name="empty_state_favourites_desc">お気に入りからインポートするか、マップ上でマークした地点を追加します。</string>
|
||||
<string name="move_point">ポイントの移動</string>
|
||||
<string name="total_donations">寄付総額</string>
|
||||
<string name="day_off_label">オフ</string>
|
||||
<string name="day_off_label">OFF</string>
|
||||
<string name="winter_and_ski_renderer">冬期およびスキー</string>
|
||||
<string name="touring_view_renderer">ツーリングビュー</string>
|
||||
<string name="nautical_renderer">海洋</string>
|
||||
|
@ -2863,7 +2852,7 @@ POIの更新は利用できません</string>
|
|||
<string name="how_to_open_wiki_title">どの方法でWikipedia記事を開きますか?</string>
|
||||
<string name="test_voice_desrc">ボタンをタップし対応する音声プロンプトを聞いて、欠落しているかなど問題の有無を確かめます</string>
|
||||
<string name="shared_string_restore">通過前に戻す</string>
|
||||
<string name="map_widget_intermediate_time">中間経由地点までの移動時間</string>
|
||||
<string name="map_widget_intermediate_time">経由地点時間</string>
|
||||
<string name="release_3_3">• 新しい案内画面の採用: 事前に設定した自宅と職場をワンタップで目的地とするボタンの追加、「前回のルート」ショートカット、アクティブなGPX経路とマーカーのリスト、検索履歴など
|
||||
\n
|
||||
\n• 道路種別、路面素材、勾配、滑らかさの各種情報をルートの詳細下に各種情報に追加
|
||||
|
@ -2909,7 +2898,7 @@ POIの更新は利用できません</string>
|
|||
<string name="app_mode_public_transport">公共交通機関</string>
|
||||
<string name="avoid_roads_descr">マップ上または下のリストから、ナビゲーション中に避けたい道路を選択します:</string>
|
||||
<string name="show_along_the_route">ルート案内中に表示する項目の選択</string>
|
||||
<string name="simulate_navigation">ナビのシミュレーション</string>
|
||||
<string name="simulate_navigation">ナビゲーションのシミュレート</string>
|
||||
<string name="choose_track_file_to_follow">追跡用の経路ファイルの選択</string>
|
||||
<string name="voice_announcements">音声案内を使用</string>
|
||||
<string name="intermediate_destinations">経由地点</string>
|
||||
|
@ -2974,8 +2963,8 @@ POIの更新は利用できません</string>
|
|||
\n• 距離測定時に方位を表示</string>
|
||||
<string name="shared_string_degrees">角度(°)</string>
|
||||
<string name="shared_string_milliradians">ミリラジアン</string>
|
||||
<string name="angular_measeurement">角度単位</string>
|
||||
<string name="angular_measeurement_descr">方位角度の単位を変更します。</string>
|
||||
<string name="angular_measeurement">角度の単位</string>
|
||||
<string name="angular_measeurement_descr">方位角(方位を示す角度)の単位を変更します。</string>
|
||||
<string name="avoid_pt_types_descr">ナビゲーション時に使用したくない公共交通機関を指定します:</string>
|
||||
<string name="quick_action_day_night_mode">%sモード</string>
|
||||
<string name="avoid_pt_types">避けたい移動手段の種類…</string>
|
||||
|
@ -3326,11 +3315,11 @@ POIの更新は利用できません</string>
|
|||
<string name="weeks_2_4">週</string>
|
||||
<string name="weeks_5">週</string>
|
||||
<string name="month">月</string>
|
||||
<string name="months_2_4">月</string>
|
||||
<string name="months_5">月</string>
|
||||
<string name="months_2_4">ヶ月</string>
|
||||
<string name="months_5">ヶ月</string>
|
||||
<string name="year">年</string>
|
||||
<string name="years_2_4">年</string>
|
||||
<string name="months_3">三ヶ月</string>
|
||||
<string name="months_3">3ヶ月</string>
|
||||
<string name="price_free">無料</string>
|
||||
<string name="screen_alerts_descr">アラート(警告、注意)は、ナビゲーション中に画面左下に表示されます。</string>
|
||||
<string name="language_and_output">言語と出力</string>
|
||||
|
|
|
@ -3289,14 +3289,14 @@
|
|||
\n
|
||||
\n • Flere rutingsproblemer rundt om i verden fikset
|
||||
\n
|
||||
\n • Oppdatert grunnkartet med mer detaljert veinettverk
|
||||
\n • Oppdatert grunnkart med mer detaljert veinettverk
|
||||
\n
|
||||
\n • Fikset oversvømte områder rundt om i verden.
|
||||
\n
|
||||
\n • Ski-navigasjon: Tillagt høydeprofil og rutekompleksitet i rutedetaljer
|
||||
\n
|
||||
\n • Andre småfikser
|
||||
\n
|
||||
\n • Andre småfikser
|
||||
\n
|
||||
\n</string>
|
||||
<string name="apply_preference_to_all_profiles">Du kan bruke denne endringen på alle profilene, eller bare den nåværende.</string>
|
||||
<string name="quick_action_contour_lines_descr">En bryter for å vise eller skjule koter på kartet.</string>
|
||||
|
|
|
@ -218,7 +218,7 @@ Er is nu {2} MB beschikbaar</string>
|
|||
<string name="installing_new_resources">Installeren nieuwe gegevens…</string>
|
||||
<string name="internet_connection_required_for_online_route">Er is een online routeberekening gekozen, maar er is geen verbinding met internet.</string>
|
||||
<string name="tts_language_not_supported_title">Taal niet ondersteund</string>
|
||||
<string name="tts_language_not_supported">De gekozen taal is niet ondersteund door de geïnstalleerde Android stemgenerator. Wil je een andere stemgenerator zoeken op de Play-store? Anders wordt de huidige stemgenerator gebruikt.</string>
|
||||
<string name="tts_language_not_supported">De gekozen taal wordt niet ondersteund door de Android stemgenerator. Wil je een andere stemgenerator zoeken op de Play-store\? Anders wordt de huidige stemgenerator gebruikt.</string>
|
||||
<string name="tts_missing_language_data_title">Ontbrekende gegevens</string>
|
||||
<string name="tts_missing_language_data">Geen gegevens voor de geselecteerde taal geïnstalleerd. Wil je naar de Play-store gaan om deze te installeren?</string>
|
||||
<string name="gpx_option_reverse_route">Keer richting van GPX-track om</string>
|
||||
|
@ -249,7 +249,7 @@ Er is nu {2} MB beschikbaar</string>
|
|||
<string name="install_more">Installeer meer…</string>
|
||||
<string name="level_to_switch_vector_raster_descr">Minimum zoomniveau om vectorkaarten in plaats van (raster)kaartsegmenten te gebruiken.</string>
|
||||
<string name="level_to_switch_vector_raster">Min. vector zoomniveau</string>
|
||||
<string name="create_poi_link_to_osm_doc">" <u>Online OSM</u> kaart classificatie met foto\'s"</string>
|
||||
<string name="create_poi_link_to_osm_doc"> string name=\"lat_lon_pattern\">Lat: %1$.5f Lon: %2$.5f</string </string>
|
||||
<string name="error_doing_search">Fout bij offline zoeken.</string>
|
||||
<string name="search_osm_offline">Zoek adres in de offline kaarten</string>
|
||||
<string name="system_locale">Systeem</string>
|
||||
|
@ -314,7 +314,7 @@ Er is nu {2} MB beschikbaar</string>
|
|||
<string name="osmand_routing_experimental">OsmAnd offline routing is een experimentele functie en werkt niet voor afstanden van meer dan ongeveer 20 km.\n\nRouting service is tijdelijk omgeschakeld naar online CloudMade.</string>
|
||||
<string name="specified_dir_doesnt_exist">Kan de opgegeven map niet vinden.</string>
|
||||
<string name="application_dir">Opslagmap</string>
|
||||
<string name="osmand_net_previously_installed">Een oudere OsmAnd versie is al geïnstalleerd. Alle offline gegevens blijven werken in het nieuwe programma, maar Favorieten moeten worden geëxporteerd in de oude versie en dan worden geïmporteerd met de nieuwe.</string>
|
||||
<string name="osmand_net_previously_installed">Een oudere OsmAnd versie is al geïnstalleerd. Alle offline gegevens blijven werken in het nieuwe programma, maar Favorieten moeten worden geëxporteerd in de oude versie en dan worden geïmporteerd in de nieuwe.</string>
|
||||
<string name="build_installed">Versie {0} succesvol geïnstalleerd ({1}).</string>
|
||||
<string name="downloading_build">Downloaden versie…</string>
|
||||
<string name="install_selected_build">Doorgaan met de installatie van OsmAnd - {0} van {1} {2} MB ?</string>
|
||||
|
@ -635,7 +635,7 @@ Er is nu {2} MB beschikbaar</string>
|
|||
<string name="unknown_from_location">Startlocatie is nog niet bepaald</string>
|
||||
<string name="confirm_interrupt_download">Downloaden afbreken?</string>
|
||||
<string name="basemap_was_selected_to_download">De basiskaart is nodig voor de goede werking van OsmAnd en is al geselecteerd om te downloaden.</string>
|
||||
<string name="map_online_plugin_is_not_installed">Activeer de Online Kaarten-plugin om andere kaartbronnen te kunnen selecteren</string>
|
||||
<string name="map_online_plugin_is_not_installed">Activeer de \'Online Kaarten\' plug-in om andere kaartbronnen te kunnen selecteren</string>
|
||||
<string name="map_online_data">Online (raster-) kaarten</string>
|
||||
<string name="map_online_data_descr">Gebruik online kaarten (download en bewaar deze op SD-kaart).</string>
|
||||
<string name="shared_string_online_maps">Online kaarten</string>
|
||||
|
@ -829,7 +829,7 @@ Proportioneel werkgeheugen %4$s MB (Android limiet %5$s MB, Dalvik %6$s MB).</st
|
|||
<string name="rendering_attr_roadColors_name">Kleurschema voor wegen</string>
|
||||
<string name="zxing_barcode_scanner_not_found">ZXing Barcode Scanner app is niet geïnstalleerd. In Google Play zoeken?</string>
|
||||
<string name="close_changeset">Sluit changeset</string>
|
||||
<string name="safe_mode_description">Gebruik OsmAnd in veilige modus (gebruikt langzamere Android-code in plaats van native code).</string>
|
||||
<string name="safe_mode_description">Gebruik OsmAnd in veilige modus (gebruikt langzamere java-code in plaats van native C-code).</string>
|
||||
<string name="safe_mode">Veilige modus</string>
|
||||
<string name="native_library_not_running">Het programma werkt in veilige modus (uitzetten via Instellingen).</string>
|
||||
<string name="background_service_is_enabled_question">OsmAnd achtergrond-service staat nog aan. Die ook uitschakelen?</string>
|
||||
|
@ -854,7 +854,7 @@ Proportioneel werkgeheugen %4$s MB (Android limiet %5$s MB, Dalvik %6$s MB).</st
|
|||
<string name="srtm_plugin_name">Hoogtelijnen</string>
|
||||
<string name="download_select_map_types">Andere kaarten</string>
|
||||
<string name="download_srtm_maps">Hoogtelijnen</string>
|
||||
<string name="audionotes_plugin_description">"De plugin voor audio-/videonotities biedt de mogelijkheid voor het maken van foto-, audio- en videonotities tijdens een reis, direct via de knop in de kaartweergave, of via het menu bij een locatie op de kaart."</string>
|
||||
<string name="audionotes_plugin_description">De plug-in voor audio-/videonotities biedt de mogelijkheid voor het maken van foto-, audio- en videonotities tijdens een reis, direct via de knop in de kaartweergave, of via het menu bij een locatie op de kaart.</string>
|
||||
<string name="audionotes_plugin_name">Audio-/videonotities</string>
|
||||
<string name="osmand_srtm_short_description_80_chars">OsmAnd-plugin voor offline hoogtelijnen</string>
|
||||
<string name="osmand_srtm_long_description_1000_chars">Deze plug-in toont de hoogtelijnen en reliëflaag bovenop de normale kaart. Uitermate praktisch voor sporters, wandelaars, verre tochten, en iedereen die geïnteresseerd is in de hoogteverschillen van een landschap.
|
||||
|
@ -968,7 +968,7 @@ Proportioneel werkgeheugen %4$s MB (Android limiet %5$s MB, Dalvik %6$s MB).</st
|
|||
<string name="local_osm_changes_backup">Backup als OSM-wijziging</string>
|
||||
<string name="search_street_in_neighborhood_cities">Zoek straat in nabijgelegen plaatsen</string>
|
||||
<string name="intermediate_items_sort_return">Volgorde van tussenpunten geoptimaliseerd.</string>
|
||||
<string name="intermediate_items_sort_by_distance">Sorteer huis-aan-huis route</string>
|
||||
<string name="intermediate_items_sort_by_distance">Sorteer kortste afstand</string>
|
||||
<string name="please_select_address">Kies eerst een plaats of straat</string>
|
||||
<string name="context_menu_item_destination_point">Als bestemming instellen</string>
|
||||
<string name="destination_point">Bestemming %1$s</string>
|
||||
|
@ -1004,7 +1004,7 @@ Proportioneel werkgeheugen %4$s MB (Android limiet %5$s MB, Dalvik %6$s MB).</st
|
|||
<string name="driving_region_japan">Japan</string>
|
||||
<string name="driving_region_us">Verenigde Staten</string>
|
||||
<string name="driving_region_canada">Canada</string>
|
||||
<string name="driving_region_europe_asia">Europa, Azië en Zuid-Amerika en andere</string>
|
||||
<string name="driving_region_europe_asia">Europa, Azië, Zuid-Amerika en andere</string>
|
||||
<string name="driving_region_uk">Verenigd Koninkrijk, India, en andere</string>
|
||||
<string name="map_widget_fps_info">FPS-debuginformatie</string>
|
||||
<string name="local_index_tile_data_zooms">Zoomniveau\'s gedownload: %1$s</string>
|
||||
|
@ -1310,7 +1310,7 @@ Wil je een nieuwe map maken op de toegestane locatie en de OsmAnd-bestanden daar
|
|||
<string name="map_update">Updates beschikbaar voor %1$s kaart(en)</string>
|
||||
<string name="everything_up_to_date">Alle bestanden zijn bijgewerkt</string>
|
||||
<string name="use_opengl_render">Gebruik OpenGL</string>
|
||||
<string name="use_opengl_render_descr">Gebruik OpenGL hardware-acceleratie weergave (gebruikt mogelijk meer stroom en werkt mogelijk niet op oudere apparaten).</string>
|
||||
<string name="use_opengl_render_descr">Gebruik snelle hardware-gebaseerde OpenGL weergave (gebruikt mogelijk meer stroom en werkt mogelijk niet op oudere apparaten).</string>
|
||||
<string name="error_avoid_specific_road">Er is geen alternatieve weg gevonden</string>
|
||||
<string name="no_internet_connection">Downloaden mislukt. Controleer de internetverbinding.</string>
|
||||
<string name="download_tab_downloads">Alle downloads</string>
|
||||
|
@ -1411,7 +1411,7 @@ Wil je een nieuwe map maken op de toegestane locatie en de OsmAnd-bestanden daar
|
|||
<string name="shared_string_off">Uit</string>
|
||||
<string name="shared_string_previous">Vorige</string>
|
||||
<string name="shared_string_next">Volgende</string>
|
||||
<string name="shared_string_enable">Inschakelen</string>
|
||||
<string name="shared_string_enable">Activeer</string>
|
||||
<string name="shared_string_disable">Schakel uit</string>
|
||||
<string name="shared_string_enabled">Ingeschakeld</string>
|
||||
<string name="shared_string_disabled">Uitgeschakeld</string>
|
||||
|
@ -1436,7 +1436,7 @@ Wil je een nieuwe map maken op de toegestane locatie en de OsmAnd-bestanden daar
|
|||
<string name="shared_string_delete_all">Verwijder alles</string>
|
||||
<string name="shared_string_share">Deel</string>
|
||||
<string name="shared_string_add">Voeg toe</string>
|
||||
<string name="shared_string_apply">Toepassen</string>
|
||||
<string name="shared_string_apply">Pas toe</string>
|
||||
<string name="shared_string_control_start">Start</string>
|
||||
<string name="shared_string_control_stop">Stop</string>
|
||||
<string name="shared_string_import">Importeer</string>
|
||||
|
@ -1798,7 +1798,7 @@ Lengtegraad:\t\t%2$s</string>
|
|||
<string name="av_audio_bitrate_descr">Kies audio bitrate.</string>
|
||||
<string name="looking_up_address">Adres wordt gezocht</string>
|
||||
<string name="rendering_attr_horseRoutes_name">Ruiterpaden</string>
|
||||
<string name="update">Controle op Update</string>
|
||||
<string name="update">Bijwerken</string>
|
||||
<string name="only_download_over_wifi">Alleen downloaden via WiFi</string>
|
||||
<string name="live_update">Automatisch controleren</string>
|
||||
<string name="update_now">Nu Controleren</string>
|
||||
|
@ -1845,7 +1845,7 @@ Lengtegraad:\t\t%2$s</string>
|
|||
<string name="clear_updates_proposition_message">Je kan gedownloade updates verwijderen en terugkeren naar de originele kaart</string>
|
||||
<string name="add_time_span">Periode toevoegen</string>
|
||||
<string name="road_blocked">Weg geblokkeerd</string>
|
||||
<string name="shared_string_select">Selecteer</string>
|
||||
<string name="shared_string_select">Kies</string>
|
||||
<string name="reports_for">Verslag over</string>
|
||||
<string name="data_is_not_available">Gegevens niet beschikbaar</string>
|
||||
<string name="rendering_attr_hideUnderground_name">Ondergrondse objecten</string>
|
||||
|
@ -2027,7 +2027,7 @@ Nu is maar {2} MB beschikbaar.</string>
|
|||
<string name="selected_categories">Gekozen categorieën</string>
|
||||
<string name="create_custom_poi">Maak eigen filter</string>
|
||||
<string name="shared_string_filters">Filters</string>
|
||||
<string name="apply_filters">Filter toepassen</string>
|
||||
<string name="apply_filters">Filters toepassen</string>
|
||||
<string name="save_filter">Filter opslaan</string>
|
||||
<string name="delete_filter">Wis filter</string>
|
||||
<string name="new_filter">Nieuw filter</string>
|
||||
|
@ -2202,7 +2202,7 @@ voor Gebied: %1$s x %2$s</string>
|
|||
<string name="do_not_send_anonymous_app_usage_desc">OsmAnd verzamelt uitsluitend algemene gegevens over welke onderdelen van de app je opent. We slaan geen locatiegegevens, zoektermen of andere gebruikersgegevens op.</string>
|
||||
<string name="do_not_show_startup_messages">Geen startmeldingen weergeven</string>
|
||||
<string name="shared_string_overview">Overzicht</string>
|
||||
<string name="select_street">Straat zoeken</string>
|
||||
<string name="select_street">Selecteer een straat</string>
|
||||
<string name="shared_string_in_name">in %1$s</string>
|
||||
<string name="type_address">Adres invoeren</string>
|
||||
<string name="type_city_town">Plaatsnaam invoeren</string>
|
||||
|
@ -2241,7 +2241,7 @@ voor Gebied: %1$s x %2$s</string>
|
|||
<string name="routing_attr_relief_smoothness_factor_hills_name">Heuvelachtig</string>
|
||||
<string name="routing_attr_relief_smoothness_factor_plains_name">Minder heuvelachtig</string>
|
||||
<string name="routing_attr_relief_smoothness_factor_more_plains_name">Vlak</string>
|
||||
<string name="routing_attr_driving_style_speed_name">Kortere routes</string>
|
||||
<string name="routing_attr_driving_style_speed_name">Kortere wegen</string>
|
||||
<string name="routing_attr_driving_style_balance_name">Er tussen in</string>
|
||||
<string name="routing_attr_driving_style_safety_name">Bij voorkeur secundaire wegen</string>
|
||||
<string name="relief_smoothness_factor_descr">Terrein voorkeur: vlakke of heuvelachtige wegen.</string>
|
||||
|
@ -2271,11 +2271,9 @@ voor Gebied: %1$s x %2$s</string>
|
|||
<string name="routing_attr_allow_private_description">Ga ook over privé-terreinen.</string>
|
||||
<string name="display_zoom_level">Zoomniveau weergave: %1$s</string>
|
||||
<string name="route_is_too_long_v2">Deze route is misschien te lang. Voeg tussenpunten toe als binnen 10 minuten geen route berekend is.</string>
|
||||
<string name="osmand_extended_description_part1">OsmAnd (OSM, Automated Navigation Directions) is een kaart- en navigatieprogramma dat de gratis, wereldwijde en gedetailleerde OpenStreetMap (OSM) data gebruikt.
|
||||
\n
|
||||
\n
|
||||
\n
|
||||
\nGebruikt visuele en gesproken navigatie, toont POI\'s (point of interest), maakt en volgt GPX-tracks, toont hoogtelijnen en hoogte informatie (via plug-in), kiest tussen auto, fiets, wandelen of andere, je kan de OSM-kaart bewerken en nog veel meer.</string>
|
||||
<string name="osmand_extended_description_part1">"OsmAnd (OSM, Automated Navigation Directions) is een kaart- en navigatieprogramma dat de gratis, wereldwijde en gedetailleerde OpenStreetMap (OSM) data gebruikt.
|
||||
\n
|
||||
\nGebruikt visuele en gesproken navigatie, toont POI\'s (point of interest), maakt en volgt GPX-tracks, toont hoogtelijnen en hoogte informatie (via plug-in), kiest tussen auto, fiets, wandelen of andere, je kan de OSM-kaart bewerken en nog veel meer."</string>
|
||||
<string name="osmand_extended_description_part2">"
|
||||
GPS-navigatie
|
||||
• Offline (geen datakosten) of online (snellere) routeberekening
|
||||
|
@ -2290,16 +2288,17 @@ voor Gebied: %1$s x %2$s</string>
|
|||
• Neem uw reis op als GPX-spoor of volg een GPX-spoor
|
||||
"</string>
|
||||
<string name="osmand_extended_description_part3">Kaart • Toon POI (Points Of Interest) • Draai in de bewegingsrichting (of kompasrichting) • Toont uw positie en waar u naar kijkt • Deel uw lokatie met vrienden • Bewaar belangrijke plaatsen in Favorieten • Toon namen in Engelse, lokale, of fonetische schrijfwijze • Toon extra informatie, zoals satellietfoto (van Bing), GPX-sporen, andere kaartstijlen en extra informatielagen</string>
|
||||
<string name="osmand_extended_description_part4">Skiën - Met de OsmAnd Ski plugin ziet u pistes met hun moeilijkheidsgraad, en extra informatie zoals liften en andere faciliteiten.</string>
|
||||
<string name="osmand_extended_description_part4">Skiën - Met de OsmAnd Ski plug-in ziet u pistes met hun moeilijkheidsgraad, en extra informatie zoals liften en andere faciliteiten.</string>
|
||||
<string name="osmand_extended_description_part5">Fietsen
|
||||
\n• Vind fietspaden op de kaart
|
||||
\n• GPS navigatie in fiets modus maakt gebruik van fietspaden
|
||||
\n• Bekijk uw snelheid en hoogte
|
||||
\n• De GPX opname optie stelt u in staat uw route op te slaan en deze te delen
|
||||
\n• Via een extra plugin kunt u hoogteverschillen weergeven als hoogtelijnen of reliëfschaduw</string>
|
||||
<string name="osmand_extended_description_part6">Wandelen • De kaart toont voetpaden, bergpaden, routes door parken • Wikipedia vertelt u meer over uw omgeving • OV-haltes (tram, bus, trein, metro), inclusief lijnnummers, helpen u te navigeren • Navigatie gebruikt voetpaden • Neem uw weg op als GPX-route of volg een gedownloade route</string>
|
||||
<string name="osmand_extended_description_part6">Wandelen • De kaart toont voetpaden, bergpaden, routes door parken • Wikipedia vertelt u meer over uw omgeving • OV-haltes (tram, bus, trein, metro), inclusief lijnnummers, helpen u te navigeren • Navigatie gebruikt voetpaden • Neem uw weg op als GPX-route of volg een gedownloade route
|
||||
\n</string>
|
||||
<string name="osmand_extended_description_part7">Werk mee aan OpenStreetMap (OSM) • Meld fouten • Upload sporen naar OSM, direct vanuit de app • Voeg POI toe aan de kaart en upload deze</string>
|
||||
<string name="osmand_extended_description_part8">OsmAnd is open-source en wordt steeds verder ontwikkeld. Iedereen kan helpen door bugs te melden, vertalingen te verbeteren of nieuwe functies te programmeren. Door deze interactie wordt het steeds beter. De voortgang is mede afhankelijk van betalingen om programmeurs en testers voor nieuwe functies te betalen.
|
||||
<string name="osmand_extended_description_part8">OsmAnd is open-source en wordt steeds verder ontwikkeld. Iedereen kan helpen door bugs te melden, vertalingen te verbeteren of nieuwe functies te programmeren. Door deze interactie wordt het steeds beter. De ontwikkeling is mede afhankelijk van giften om programmeurs en testers, voor nieuwe functies, te betalen.
|
||||
\n
|
||||
\nIndicatie van compleetheid en kwaliteit van de kaart:
|
||||
\n • West-Europa: ****
|
||||
|
@ -2312,7 +2311,7 @@ voor Gebied: %1$s x %2$s</string>
|
|||
\n • Midden-Oosten: **
|
||||
\n • Afrika: **
|
||||
\n • Antarctica: *
|
||||
\n Voor bijna elk land ter wereld kunt u de kaart downloaden.</string>
|
||||
\n Voor bijna elk land ter wereld kunt u een kaart downloaden.</string>
|
||||
<string name="osmand_plus_extended_description_part8">Indicatie van compleetheid en kwaliteit van de kaart:
|
||||
\n • West-Europa: ****
|
||||
\n • Oost-Europa: ***
|
||||
|
@ -2426,7 +2425,7 @@ voor Gebied: %1$s x %2$s</string>
|
|||
<string name="plan_route">Plan route</string>
|
||||
<string name="shared_string_sort">Sorteer</string>
|
||||
<string name="coordinate_input">Invoer van coördinaten</string>
|
||||
<string name="marker_save_as_track_descr">Exporteer uw Markeervlaggetjes naar het volgende bestand:</string>
|
||||
<string name="marker_save_as_track_descr">Exporteer uw Markeervlaggetjes naar het volgende GPX-bestand:</string>
|
||||
<string name="marker_save_as_track">Opslaan als GPX-bestand</string>
|
||||
<string name="move_to_history">Verplaats naar geschiedenis</string>
|
||||
<string name="group_will_be_removed_after_restart">De groep wordt verwijderd na een herstart van de app.</string>
|
||||
|
@ -2506,7 +2505,7 @@ voor Gebied: %1$s x %2$s</string>
|
|||
<string name="empty_state_markers_active">Maak markeringen aan op de kaart!</string>
|
||||
<string name="shared_string_two">Twee</string>
|
||||
<string name="shared_string_one">Een</string>
|
||||
<string name="active_markers_descr">Kies hoeveel markeervlaggetjes getoond worden.</string>
|
||||
<string name="active_markers_descr">Kies hoeveel markeervlaggetjes getoond worden:</string>
|
||||
<string name="digits_quantity">Aantal decimalen</string>
|
||||
<string name="shared_string_right">Rechts</string>
|
||||
<string name="shared_string_left">Links</string>
|
||||
|
@ -2564,7 +2563,7 @@ voor Gebied: %1$s x %2$s</string>
|
|||
<string name="monthly_map_updates">Kaartupdates: Elke maand</string>
|
||||
<string name="daily_map_updates">Kaartupdates: Elk uur</string>
|
||||
<string name="in_app_purchase">"In-app aankopen "</string>
|
||||
<string name="in_app_purchase_desc">"Eenmalige betaling "</string>
|
||||
<string name="in_app_purchase_desc">Eenmalige betaling</string>
|
||||
<string name="in_app_purchase_desc_ex">Na aankoop is het permanent voor je beschikbaar.</string>
|
||||
<string name="purchase_unlim_title">%1$s Kopen</string>
|
||||
<string name="wikivoyage_offline">Wikivoyage offline</string>
|
||||
|
@ -2623,7 +2622,7 @@ voor Gebied: %1$s x %2$s</string>
|
|||
<string name="map_import_error">"Fout bij kaartimport "</string>
|
||||
<string name="map_imported_successfully">"Kaart geïmporteerd "</string>
|
||||
<string name="make_as_start_point">Instellen als startpunt</string>
|
||||
<string name="shared_string_current">Huidig</string>
|
||||
<string name="shared_string_current">Huidige</string>
|
||||
<string name="last_intermediate_dest_description">Voeg een tussenstop toe</string>
|
||||
<string name="first_intermediate_dest_description">Voeg een eindpunt toe</string>
|
||||
<string name="subsequent_dest_description">Huidige bestemming wordt laatste Tussenpunt</string>
|
||||
|
@ -2641,7 +2640,7 @@ voor Gebied: %1$s x %2$s</string>
|
|||
<string name="rendering_attr_hidePOILabels_name">POI-namen</string>
|
||||
<string name="shared_string_without_name">Zonder naam</string>
|
||||
<string name="what_is_here">Wat is dit hier:</string>
|
||||
<string name="open_from">Openen vanaf</string>
|
||||
<string name="open_from">Geopend vanaf</string>
|
||||
<string name="open_till">Geopend tot</string>
|
||||
<string name="will_close_at">Sluit om</string>
|
||||
<string name="will_open_at">Gaat open om</string>
|
||||
|
@ -2773,7 +2772,7 @@ voor Gebied: %1$s x %2$s</string>
|
|||
<string name="routing_attr_avoid_ferry_description">Vermijd veerboten</string>
|
||||
<string name="shared_string_degrees">Graden</string>
|
||||
<string name="shared_string_milliradians">Milliradialen</string>
|
||||
<string name="angular_measeurement_descr">Wijzig azimut eenheid</string>
|
||||
<string name="angular_measeurement_descr">Wijzig azimut eenheid.</string>
|
||||
<string name="avoid_pt_types_descr">Selecteer de te vermijden openbaar vervoer opties:</string>
|
||||
<string name="quick_action_day_night_mode">%s modus</string>
|
||||
<string name="avoid_pt_types">Vermijd transport types…</string>
|
||||
|
@ -2840,7 +2839,7 @@ voor Gebied: %1$s x %2$s</string>
|
|||
<string name="quick_action_gpx_tracks_show">Toon GPX-tracks</string>
|
||||
<string name="add_destination_query">Voeg a.u.b. eerst de Bestemming in</string>
|
||||
<string name="previous_route">Vorige route</string>
|
||||
<string name="add_home">Thuis toevoegen</string>
|
||||
<string name="add_home">Thuisadres toevoegen</string>
|
||||
<string name="add_work">Werkadres toevoegen</string>
|
||||
<string name="work_button">Werk</string>
|
||||
<string name="cubic_m">m³</string>
|
||||
|
@ -2938,7 +2937,7 @@ voor Gebied: %1$s x %2$s</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="coordinates_format_info">De geselecteerde indeling wordt in de hele app toegepast.</string>
|
||||
<string name="pref_selected_by_default_for_profiles">Deze instelling is standaard geselecteerd voor alle profielen: %s</string>
|
||||
<string name="change_default_settings">Instelling aanpassen</string>
|
||||
<string name="discard_changes">Annuleren</string>
|
||||
|
@ -2986,9 +2985,9 @@ voor Gebied: %1$s x %2$s</string>
|
|||
<string name="process_downloading_service">OsmAnd downloadservice</string>
|
||||
<string name="shared_string_color_magenta">Magenta</string>
|
||||
<string name="shared_string_icon">Icoon</string>
|
||||
<string name="press_again_to_change_the_map_orientation">Tik nogmaals om de kaartoriëntatie te veranderen</string>
|
||||
<string name="press_again_to_change_the_map_orientation">Tik nogmaals om de kaartoriëntatie te wijzigen</string>
|
||||
<string name="default_speed_setting_title">Standaardsnelheid</string>
|
||||
<string name="default_speed_setting_descr">Instellingen aanpassen van standaard snelheden</string>
|
||||
<string name="default_speed_setting_descr">Standaard snelheden instellingen aanpassen</string>
|
||||
<string name="minmax_speed_dialog_title">Stel min/max snelheid in</string>
|
||||
<string name="shared_string_crash">Vastgelopen</string>
|
||||
<string name="app_mode_monowheel">Monowheel, Hoverboard</string>
|
||||
|
@ -3103,8 +3102,8 @@ voor Gebied: %1$s x %2$s</string>
|
|||
<string name="manage_profiles">App profielen beheren…</string>
|
||||
<string name="osmand_settings_descr">Effectief voor de gehele app</string>
|
||||
<string name="turn_screen_on">Scherm inschakelen</string>
|
||||
<string name="map_during_navigation_info">Kaart tijdens navigatie</string>
|
||||
<string name="map_during_navigation">Kaart tijdens navigatie</string>
|
||||
<string name="map_during_navigation_info">Kaartweergave bij navigatie</string>
|
||||
<string name="map_during_navigation">Kaartweergave bij navigatie</string>
|
||||
<string name="voice_announces_info">Gesproken aankondigingen, vinden enkel plaats tijdens het navigeren.</string>
|
||||
<string name="voice_announces_descr">Navigatie-instructies en aankondigingen</string>
|
||||
<string name="voice_announces">Gesproken instructies</string>
|
||||
|
@ -3140,7 +3139,7 @@ voor Gebied: %1$s x %2$s</string>
|
|||
<string name="quick_action_hillshade_hide">Verberg de reliëflaag</string>
|
||||
<string name="quick_action_show_hide_hillshade">Toon/verberg de reliëflaag</string>
|
||||
<string name="track_saved">Track opgeslagen</string>
|
||||
<string name="rendering_attr_showCycleNodeNetworkRoutes_name">Toon fietsknooppunten netwerk</string>
|
||||
<string name="rendering_attr_showCycleNodeNetworkRoutes_name">Toon knooppunt van de fietsroutes</string>
|
||||
<string name="contour_lines_and_hillshade">Hoogte lijnen en reliëflaag</string>
|
||||
<string name="send_log">Verzend log</string>
|
||||
<string name="move_maps">Verplaats kaarten</string>
|
||||
|
@ -3196,7 +3195,7 @@ voor Gebied: %1$s x %2$s</string>
|
|||
<string name="app_mode_offroad">Offroad</string>
|
||||
<string name="sett_wunderlinq_ext_input">WunderLINQ</string>
|
||||
<string name="routeInfo_roadClass_name">Wegtype</string>
|
||||
<string name="shared_string_open_track">Open track</string>
|
||||
<string name="shared_string_open_track">Track openen</string>
|
||||
<string name="gpx_join_gaps">Verbind de gaten</string>
|
||||
<string name="new_route_calculated_dist_dbg">Route: afstand %s, reistijd %s
|
||||
\nBerekening: %.1f sec, %d wegen, %d tegels)</string>
|
||||
|
@ -3210,7 +3209,7 @@ voor Gebied: %1$s x %2$s</string>
|
|||
<string name="cancel_subscription">Annuleer inschrijving</string>
|
||||
<string name="price_and_discount">%1$s • Bespaar %2$s</string>
|
||||
<string name="analytics_pref_title">Analyse</string>
|
||||
<string name="wake_time">Wektijd</string>
|
||||
<string name="wake_time">Scherm aan gedurende</string>
|
||||
<string name="appearance">Uiterlijk</string>
|
||||
<string name="map_look">Kaart weergave</string>
|
||||
<string name="paste_Osmand_data_folder_path">Kopieer pad naar de OsmAnd data folder</string>
|
||||
|
@ -3230,7 +3229,7 @@ voor Gebied: %1$s x %2$s</string>
|
|||
<string name="rendering_attr_piste_difficulty_intermediate_name">Middelmatig</string>
|
||||
<string name="rendering_attr_piste_difficulty_advanced_name">Gevorderd</string>
|
||||
<string name="rendering_attr_piste_difficulty_expert_name">Expert</string>
|
||||
<string name="rendering_attr_piste_difficulty_freeride_name">Freeride</string>
|
||||
<string name="rendering_attr_piste_difficulty_freeride_name">Gratische rit</string>
|
||||
<string name="rendering_attr_piste_difficulty_extreme_name">Extreem</string>
|
||||
<string name="rendering_attr_piste_difficulty_undefined_name">Ongedefinieerd</string>
|
||||
<string name="routeInfo_piste_difficulty_name">Piste moeilijkheidsgraad</string>
|
||||
|
@ -3255,4 +3254,29 @@ voor Gebied: %1$s x %2$s</string>
|
|||
<string name="shared_string_turn_off">Uitschakelen</string>
|
||||
<string name="new_plugin_added">Nieuwe plugin toegevoegd</string>
|
||||
<string name="join_segments">verbind segmenten</string>
|
||||
<string name="release_3_4">• App profiles: Create a custom profile for your own needs, with a custom icon and color
|
||||
\n
|
||||
\n • Nu aan te passen standaard en min / max snelheden voor elk profiel
|
||||
\n
|
||||
\n • Widget toegevoegd voor de huidige coördinaten
|
||||
\n
|
||||
\n • Opties toegevoegd om het kompas en een straalliniaal op de kaart te tonen
|
||||
\n
|
||||
\n • Fix background track logging
|
||||
\n
|
||||
\n • Improved background map downloads
|
||||
\n
|
||||
\n • \'Zet scherm aan\' optie is terug
|
||||
\n
|
||||
\n • Wikipedia taalkeuze aangepast
|
||||
\n
|
||||
\n • Vast kompasknop tijdens navigatie
|
||||
\n
|
||||
\n • Andere fouten verholpen
|
||||
\n
|
||||
\n</string>
|
||||
<string name="rendering_value_walkingRoutesOSMCNodes_name">Netwerk knooppunten</string>
|
||||
<string name="add_new_profile_q">Voeg nieuw profiel toe \'%1$s\'\?</string>
|
||||
<string name="save_heading_descr">Sla (richting) naar elk trackpunt op tijdens het opnemen.</string>
|
||||
<string name="save_heading">Richting toevoegen</string>
|
||||
</resources>
|
|
@ -663,7 +663,7 @@ Pôr do Sol: %2$s</string>
|
|||
<string name="select_address_activity">Especificar o endereço</string>
|
||||
<string name="favourites_list_activity">Selecionar favorito</string>
|
||||
<string name="local_openstreetmap_act_title">Modificações no OSM</string>
|
||||
<string name="layer_hillshade">Camadas de relevo</string>
|
||||
<string name="layer_hillshade">Camada de sombras de relevo</string>
|
||||
<string name="map_widget_gps_info">Informação de GPS</string>
|
||||
<string name="access_arrival_time">Hora de chegada</string>
|
||||
<string name="item_checked">marcado</string>
|
||||
|
|
|
@ -982,7 +982,7 @@
|
|||
<string name="clear_destination">Șterge destinația</string>
|
||||
<string name="street_name">Stradă</string>
|
||||
<string name="hno">Număr casă</string>
|
||||
<string name="choose_osmand_theme_descr">Alege tema aplicației</string>
|
||||
<string name="choose_osmand_theme_descr">Personalizați aspectul aplicației.</string>
|
||||
<string name="choose_osmand_theme">Temă aplicație</string>
|
||||
<string name="accessibility_options">Opțiuni accesibilitate</string>
|
||||
<string name="select_address_activity">Selectează adresa</string>
|
||||
|
@ -1283,7 +1283,7 @@
|
|||
<string name="routing_attr_avoid_shuttle_train_description">Evitați utilizarea trenurilor de transfer</string>
|
||||
<string name="no_updates_available">Nu sunt actualizări disponibile</string>
|
||||
<string name="rendering_attr_currentTrackWidth_name">Lățime GPX</string>
|
||||
<string name="download_live_updates">Actualizări in timp real</string>
|
||||
<string name="download_live_updates">Actualizări în timp real</string>
|
||||
<string name="rendering_value_boldOutline_name">Bold contur</string>
|
||||
<string name="av_locations">Locații</string>
|
||||
<string name="av_locations_descr">Fișier GPX cu notițe de locații.</string>
|
||||
|
@ -1374,7 +1374,7 @@
|
|||
<string name="context_menu_item_delete_waypoint">Ștergi punctul de referință GPX?</string>
|
||||
<string name="context_menu_item_edit_waypoint">Editează punctul de referință GPX</string>
|
||||
<string name="shared_string_location">Locație</string>
|
||||
<string name="share_osm_edits_subject">Editări OSM împărțite prin OsmAnd</string>
|
||||
<string name="share_osm_edits_subject">Editări OSM distribuite prin OsmAnd</string>
|
||||
<string name="lang_nds">Minim în limba germană</string>
|
||||
<string name="lang_mk">Macedonian</string>
|
||||
<string name="read_more">Citește mai multe</string>
|
||||
|
@ -1681,7 +1681,7 @@
|
|||
<string name="by_type">După tip</string>
|
||||
<string name="looking_for_tracks_with_waypoints">"Se caută trasee cu puncte intermediare"</string>
|
||||
<string name="shared_string_more_without_dots">Mai mult</string>
|
||||
<string name="appearance_on_the_map">Apariția pe hartă</string>
|
||||
<string name="appearance_on_the_map">Aspectul pe hartă</string>
|
||||
<string name="add_track_to_markers_descr">Selectați un traseu pentru a-i adăuga un punct intermediar la marcaje.</string>
|
||||
<string name="add_favourites_group_to_markers_descr">Selectați o categorie de Favorite pentru a fi adaugate la marcaje.</string>
|
||||
<string name="shared_string_gpx_waypoints">Puncte intermediare traseu</string>
|
||||
|
@ -1729,7 +1729,7 @@
|
|||
<string name="context_menu_item_modify_note">Modifică nota OMS</string>
|
||||
<string name="make_round_trip_descr">Copiază punctul de pornire ca destinație.</string>
|
||||
<string name="coordinates_format">Format coordonate</string>
|
||||
<string name="use_system_keyboard">Foloseste tastatura sistemului</string>
|
||||
<string name="use_system_keyboard">Folosește tastatura sistemului</string>
|
||||
<string name="fast_coordinates_input_descr">Alege formatul coordonatelor. Puteți oricând schimba din \'Opțiuni\'.</string>
|
||||
<string name="fast_coordinates_input">Introducere rapidă a coordonatelor</string>
|
||||
<string name="routing_attr_avoid_ice_roads_fords_name">Evită drumurile cu polei și traversarile râurilor</string>
|
||||
|
@ -1815,7 +1815,7 @@
|
|||
<string name="favorite_group_name">Numele grupului</string>
|
||||
<string name="change_color">Schimbă culoarea</string>
|
||||
<string name="edit_name">Modifică numele</string>
|
||||
<string name="animate_my_location">Animeaza Poziția Mea</string>
|
||||
<string name="animate_my_location">Animează poziția mea</string>
|
||||
<string name="shared_string_overview">Prezentare generală</string>
|
||||
<string name="select_street">Selectează strada</string>
|
||||
<string name="shared_string_in_name">în %1$s</string>
|
||||
|
@ -1983,7 +1983,7 @@
|
|||
<string name="map_mode">Mod hartă</string>
|
||||
<string name="rendering_value_thin_name">Subțire</string>
|
||||
<string name="rendering_value_medium_name">Mediu</string>
|
||||
<string name="report">Raportează</string>
|
||||
<string name="report">Raport</string>
|
||||
<string name="shared_string_move_down">Mută ↓</string>
|
||||
<string name="finish_navigation">Termină navigarea</string>
|
||||
<string name="avoid_road">Evită drumul</string>
|
||||
|
@ -2377,7 +2377,7 @@
|
|||
<string name="minmax_speed_dialog_title">Setați viteza min/max</string>
|
||||
<string name="new_profile">Profil nou</string>
|
||||
<string name="apply_preference_to_all_profiles">Poţi aplica aceasta modificare pe toate profilele sau doar pe cel selectat</string>
|
||||
<string name="shared_preference">Împărţit</string>
|
||||
<string name="shared_preference">Partajat</string>
|
||||
<string name="routing_attr_driving_style_prefer_unpaved_name">Prefer drumurile nepavate</string>
|
||||
<string name="routing_attr_driving_style_prefer_unpaved_description">Prefer drumurile nepavate</string>
|
||||
<string name="layer_osm_edits">Editare OSM</string>
|
||||
|
@ -2394,8 +2394,8 @@
|
|||
<string name="exported_osmand_profile">Profil osmand exportat %1$s</string>
|
||||
<string name="overwrite_profile_q">Profil \'%1$s\' deja existent, îl rescrii\?</string>
|
||||
<string name="export_profile_failed">Profilul nu se poate exporta.</string>
|
||||
<string name="profile_import">Importa profilul:</string>
|
||||
<string name="profile_import_descr">"Pentru a importa profilul, selectează fisierul din aparat, si deschide-l cu OsmAnd."</string>
|
||||
<string name="profile_import">Importare profil:</string>
|
||||
<string name="profile_import_descr">Pentru a importa profilul, selectați fișierul din dispozitiv, și deschideți-l cu OsmAnd.</string>
|
||||
<string name="file_import_error">Eroare de incarcare al fisierului. %1$s: %2$s</string>
|
||||
<string name="file_imported_successfully">%1$s Incarcat cu succes.</string>
|
||||
<string name="rendering_value_white_name">Alb</string>
|
||||
|
@ -2496,4 +2496,48 @@
|
|||
<string name="empty_filename">Numele fișierului este gol</string>
|
||||
<string name="shared_string_revert">Revenire</string>
|
||||
<string name="clear_confirmation_msg">Șterge %1$s\?</string>
|
||||
</resources>
|
||||
<string name="update_time">Timpul de actualizare</string>
|
||||
<string name="last_map_change">Ultima schimbare a hărții: %s</string>
|
||||
<string name="hourly">Din oră în oră</string>
|
||||
<string name="daily">Zilnic</string>
|
||||
<string name="weekly">Săptămânal</string>
|
||||
<string name="morning">Dimineața</string>
|
||||
<string name="updates_size">Mărimea actualizării</string>
|
||||
<string name="number_of_contributors">Numărul de contribuabili</string>
|
||||
<string name="number_of_edits">Numărul de modificări</string>
|
||||
<string name="reports_for">Raport pentru</string>
|
||||
<string name="night">Noaptea</string>
|
||||
<string name="gpx_appearance">Aspect</string>
|
||||
<string name="total_donations">Total donații</string>
|
||||
<string name="quick_action_switch_night_mode">Mod nocturn</string>
|
||||
<string name="base_profile_descr_public_transport">Toate tipurile de transport public</string>
|
||||
<string name="edit_profile_screen_options_subtitle">Selectați opțiunile ecranului pentru profil</string>
|
||||
<string name="turn_screen_on_sensor">Utilizați senzorul de proximitate</string>
|
||||
<string name="external_input_device">Dispozitive externe de intrare</string>
|
||||
<string name="sett_generic_ext_input">Tastatură</string>
|
||||
<string name="temporary_conditional_routing">Luați în considerare limitările temporare</string>
|
||||
<string name="route_parameters_info">Setări pentru rutare în profilul selectat \"%1$s\".</string>
|
||||
<string name="units_and_formats">Unități și formate</string>
|
||||
<string name="appearance">Aspect</string>
|
||||
<string name="map_look_descr">Aspect hartă</string>
|
||||
<string name="list_of_installed_plugins">Plugin-uri instalate</string>
|
||||
<string name="general_settings_profile_descr">Temă aplicație, unități, regiune</string>
|
||||
<string name="manage_profiles_descr">Creați, importați, editați profiluri</string>
|
||||
<string name="manage_profiles">Gestionați profilurile de aplicație …</string>
|
||||
<string name="osmand_settings_descr">Se aplică pentru întreaga aplicație</string>
|
||||
<string name="osmand_settings">Setări OsmAnd</string>
|
||||
<string name="copy_from_other_profile">Copiați din alt profil</string>
|
||||
<string name="turn_screen_on">Porniți ecranul</string>
|
||||
<string name="map_during_navigation_info">Harta în timpul navigării</string>
|
||||
<string name="map_during_navigation">Harta în timpul navigării</string>
|
||||
<string name="shared_string_other">Altele</string>
|
||||
<string name="vehicle_parameters_descr">Greutate, înălțime, viteză</string>
|
||||
<string name="vehicle_parameters">Parametrii vehicul</string>
|
||||
<string name="voice_announces">Anunțuri vocale</string>
|
||||
<string name="screen_alerts">Alerte ecran</string>
|
||||
<string name="route_parameters_descr">Configurați parametrii rutei</string>
|
||||
<string name="route_parameters">Parametrii rutei</string>
|
||||
<string name="routing_attr_width_name">Limită lățime</string>
|
||||
<string name="routing_attr_width_description">Specificați limita permisă pentru lățimea vehiculului pe rute.</string>
|
||||
<string name="dialogs_and_notifications_title">Dialoguri și notificări</string>
|
||||
</resources>
|
|
@ -2234,8 +2234,8 @@
|
|||
<string name="poi_traffic_calming_island">Островок (препятствие)</string>
|
||||
<string name="poi_boat_storage">Место для хранения лодок</string>
|
||||
<string name="poi_kissing_gate">Калитка</string>
|
||||
<string name="facebook">Фейсбук;Facebook</string>
|
||||
<string name="twitter">Твиттер;Twitter</string>
|
||||
<string name="facebook">Facebook</string>
|
||||
<string name="twitter">Twitter</string>
|
||||
<string name="poi_skype">Скайп;Skype</string>
|
||||
<string name="poi_garden_style_kitchen">Стиль сада: кухня</string>
|
||||
<string name="poi_toilets_access_community">Туалет: общественный</string>
|
||||
|
@ -3494,5 +3494,5 @@
|
|||
<string name="poi_community_gender_male">Пол сообщества: мужской</string>
|
||||
<string name="poi_community_gender_mixed">Пол сообщества: мужской и женский</string>
|
||||
<string name="poi_grave">Могила</string>
|
||||
<string name="reddit">Реддит;Reddit</string>
|
||||
<string name="reddit">Reddit</string>
|
||||
</resources>
|
|
@ -217,7 +217,7 @@
|
|||
<string name="rendering_attr_contourColorScheme_description">Цветовая схема горизонталей</string>
|
||||
<string name="rendering_value_light_brown_name">Светло-коричневый</string>
|
||||
<string name="rendering_value_dark_brown_name">Темно-коричневый</string>
|
||||
<string name="rendering_attr_contourColorScheme_name">Цветовая схема горизонталей</string>
|
||||
<string name="rendering_attr_contourColorScheme_name">Цветовая гамма горизонталей</string>
|
||||
<string name="rendering_attr_surfaceIntegrity_name">Качество дорожного покрытия</string>
|
||||
<string name="search_hint">Введите название города, адрес, POI</string>
|
||||
<string name="new_filter_desc">Введите имя для нового фильтра. Вы сможете его найти в списке \"Категории\".</string>
|
||||
|
@ -1116,7 +1116,7 @@
|
|||
<string name="map_widget_vector_attributes">Атрибуты визуализации</string>
|
||||
<string name="map_widget_renderer">Стиль карты</string>
|
||||
<string name="email">email</string>
|
||||
<string name="day_night_info">Восход/закат</string>
|
||||
<string name="day_night_info">День/Ночь данные</string>
|
||||
<string name="osmand_short_description_80_chars">OsmAnd - это навигационное приложение для путешествий с открытым исходным кодом</string>
|
||||
<string name="osmand_long_description_1000_chars">"OsmAnd (Open Street Maps Automated Navigation Directions)
|
||||
\n
|
||||
|
@ -1826,7 +1826,7 @@
|
|||
<string name="search_poi_category_hint">Напечатайте для поиска</string>
|
||||
<string name="rendering_attr_hideHouseNumbers_name">Номера домов</string>
|
||||
<string name="routing_attr_avoid_borders_description">Избегать пересечения национальных границ</string>
|
||||
<string name="routing_attr_height_name">Ограничение по высоте</string>
|
||||
<string name="routing_attr_height_name">Максимальная высота</string>
|
||||
<string name="routing_attr_height_description">Укажите высоту автомобиля для учета при построении маршрута.</string>
|
||||
<string name="use_fast_recalculation">Умный перерасчет маршрута</string>
|
||||
<string name="use_fast_recalculation_desc">Перерасчет только начальной части маршрута для длительных поездок.</string>
|
||||
|
@ -2214,7 +2214,7 @@
|
|||
<string name="no_update_info">Не показывать новые версии</string>
|
||||
<string name="update_all_maps_now">Обновить все карты сейчас?</string>
|
||||
<string name="clear_tile_data">Очистить всю плитку</string>
|
||||
<string name="routing_attr_short_way_name">Экономичный путь</string>
|
||||
<string name="routing_attr_short_way_name">Топливно-эффективный способ</string>
|
||||
<string name="routing_attr_short_way_description">Использование топливо-сберегающего пути (обычно короче).</string>
|
||||
<string name="replace_favorite_confirmation">Вы уверены, что хотите заменить избранные %1$s\?</string>
|
||||
<string name="shared_string_change">Изменить</string>
|
||||
|
@ -3334,4 +3334,7 @@
|
|||
<string name="dialogs_and_notifications_title">Диалоги и уведомления</string>
|
||||
<string name="dialogs_and_notifications_descr">Управление всплывающими окнами, диалогами и уведомлениями, которые OsmAnd показывает во время использования.</string>
|
||||
<string name="add_new_profile_q">Добавить новый профиль \'%1$s\'\?</string>
|
||||
<string name="rendering_attr_showCycleNodeNetworkRoutes_name">Отображать узловые сети велосипедных маршрутов</string>
|
||||
<string name="save_heading">Сохранять путевой угол</string>
|
||||
<string name="save_heading_descr">Сохранять во время записи путевой угол для каждой точки трека.</string>
|
||||
</resources>
|
|
@ -3385,4 +3385,10 @@ Zodpovedá oblasti: %1$s x %2$s</string>
|
|||
<string name="shared_string_turn_off">Vypnúť</string>
|
||||
<string name="new_plugin_added">Nový modul pridaný</string>
|
||||
<string name="join_segments">Spojiť úseky</string>
|
||||
<string name="add_new_profile_q">Pridať nový profil \'%1$s\'\?</string>
|
||||
<string name="save_heading">Pridať nadpis</string>
|
||||
<string name="save_heading_descr">Pridať nadpis ku každému bodu trasy pri zázname.</string>
|
||||
<string name="distance_and_address">%1$s • %2$s</string>
|
||||
<string name="street_city">%1$s, %2$s</string>
|
||||
<string name="personal_category_name">Osobné</string>
|
||||
</resources>
|
|
@ -3350,4 +3350,7 @@
|
|||
<string name="add_new_profile_q">\'%1$s\' yeni profil ekle\?</string>
|
||||
<string name="save_heading">Başlığı dahil et</string>
|
||||
<string name="save_heading_descr">Kayıt sırasında her bir izleme noktasının başlığını kaydet.</string>
|
||||
<string name="distance_and_address">%1$s • %2$s</string>
|
||||
<string name="street_city">%1$s, %2$s</string>
|
||||
<string name="personal_category_name">Kişisel</string>
|
||||
</resources>
|
|
@ -1141,7 +1141,7 @@
|
|||
<string name="lang_sw">Суахілі</string>
|
||||
<string name="lang_he">Іврит</string>
|
||||
<string name="forward">Вперед</string>
|
||||
<string name="home">Домашня сторінка</string>
|
||||
<string name="home">Домівка</string>
|
||||
<string name="live_monitoring_m_descr">Надішліть дані відстеження до вказаної веб-служби, якщо ввімкнено часопис GPX.</string>
|
||||
<string name="live_monitoring_m">Онлайн моніторинг (потрібен GPX)</string>
|
||||
<string name="live_monitoring_start">Розпочати моніторинг</string>
|
||||
|
|
|
@ -3386,4 +3386,8 @@
|
|||
<string name="add_new_profile_q">新增新的設定檔「%1$s」?</string>
|
||||
<string name="save_heading">包含標題</string>
|
||||
<string name="save_heading_descr">在錄製時將標題儲存到每個追蹤點。</string>
|
||||
<string name="distance_and_address">%1$s • %2$s</string>
|
||||
<string name="street_city">%1$s, %2$s</string>
|
||||
<string name="personal_category_name">個人</string>
|
||||
<string name="shared_string_downloading_formatted">正在下載 %s</string>
|
||||
</resources>
|
|
@ -11,6 +11,10 @@
|
|||
Thx - Hardy
|
||||
|
||||
-->
|
||||
<string name="shared_string_downloading_formatted">Downloading %s</string>
|
||||
<string name="distance_and_address">%1$s • %2$s</string>
|
||||
<string name="street_city">%1$s, %2$s</string>
|
||||
<string name="personal_category_name">Personal</string>
|
||||
<string name="test_avoid_roads_menu_item">Avoid roads [test]</string>
|
||||
<string name="add_new_profile_q">Add new profile \'%1$s\'?</string>
|
||||
<string name="save_heading">Include heading</string>
|
||||
|
|
|
@ -3,12 +3,18 @@ package net.osmand.data;
|
|||
import java.io.Serializable;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.annotation.NonNull;
|
||||
|
||||
import net.osmand.GPXUtilities.WptPt;
|
||||
|
||||
public class FavouritePoint implements Serializable, LocationPoint {
|
||||
private static final long serialVersionUID = 729654300829771466L;
|
||||
private String name = "";
|
||||
private String description;
|
||||
private String category = "";
|
||||
|
||||
protected static final String HIDDEN = "hidden";
|
||||
|
||||
protected String name = "";
|
||||
protected String description;
|
||||
protected String category = "";
|
||||
private String originObjectName = "";
|
||||
private double latitude;
|
||||
private double longitude;
|
||||
|
@ -44,9 +50,13 @@ public class FavouritePoint implements Serializable, LocationPoint {
|
|||
}
|
||||
|
||||
public PointDescription getPointDescription() {
|
||||
return new PointDescription(PointDescription.POINT_TYPE_FAVORITE, name);
|
||||
return new PointDescription(PointDescription.POINT_TYPE_FAVORITE, getName());
|
||||
}
|
||||
|
||||
|
||||
public boolean isPersonal() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PointDescription getPointDescription(Context ctx) {
|
||||
return getPointDescription();
|
||||
|
@ -171,4 +181,49 @@ public class FavouritePoint implements Serializable, LocationPoint {
|
|||
result = prime * result + ((originObjectName == null) ? 0 : originObjectName.hashCode());
|
||||
return result;
|
||||
}
|
||||
|
||||
public static FavouritePoint fromWpt(@NonNull Context ctx, @NonNull WptPt pt) {
|
||||
String name = pt.name;
|
||||
String categoryName = pt.category != null ? pt.category : "";
|
||||
if (name == null) {
|
||||
name = "";
|
||||
}
|
||||
FavouritePoint fp;
|
||||
if (pt.getExtensionsToRead().containsKey(PersonalFavouritePoint.PERSONAL)) {
|
||||
try {
|
||||
fp = new PersonalFavouritePoint(ctx, name, pt.lat, pt.lon);
|
||||
} catch (IllegalArgumentException e) {
|
||||
fp = new FavouritePoint(pt.lat, pt.lon, name, categoryName);
|
||||
}
|
||||
} else {
|
||||
fp = new FavouritePoint(pt.lat, pt.lon, name, categoryName);
|
||||
}
|
||||
fp.setDescription(pt.desc);
|
||||
if (pt.comment != null) {
|
||||
fp.setOriginObjectName(pt.comment);
|
||||
}
|
||||
fp.setColor(pt.getColor(0));
|
||||
fp.setVisible(!pt.getExtensionsToRead().containsKey(HIDDEN));
|
||||
return fp;
|
||||
}
|
||||
|
||||
public WptPt toWpt() {
|
||||
WptPt pt = new WptPt();
|
||||
pt.lat = getLatitude();
|
||||
pt.lon = getLongitude();
|
||||
if (!isVisible()) {
|
||||
pt.getExtensionsToWrite().put(HIDDEN, "true");
|
||||
}
|
||||
if (getColor() != 0) {
|
||||
pt.setColor(getColor());
|
||||
}
|
||||
pt.name = getName();
|
||||
pt.desc = getDescription();
|
||||
if (getCategory().length() > 0)
|
||||
pt.category = getCategory();
|
||||
if (getOriginObjectName().length() > 0) {
|
||||
pt.comment = getOriginObjectName();
|
||||
}
|
||||
return pt;
|
||||
}
|
||||
}
|
115
OsmAnd/src/net/osmand/data/PersonalFavouritePoint.java
Normal file
|
@ -0,0 +1,115 @@
|
|||
package net.osmand.data;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.annotation.DrawableRes;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.StringRes;
|
||||
|
||||
import net.osmand.GPXUtilities.WptPt;
|
||||
import net.osmand.plus.R;
|
||||
|
||||
public class PersonalFavouritePoint extends FavouritePoint {
|
||||
|
||||
private Context ctx;
|
||||
|
||||
private PointType type;
|
||||
static final String PERSONAL = "personal";
|
||||
|
||||
public enum PointType {
|
||||
HOME("home", R.string.home_button, 1, R.drawable.ic_action_home_dark),
|
||||
WORK("work", R.string.work_button, 2, R.drawable.ic_action_work),
|
||||
PARKING("parking", R.string.map_widget_parking, 3, R.drawable.ic_action_parking_dark);
|
||||
|
||||
private String typeName;
|
||||
@StringRes
|
||||
private int resId;
|
||||
private int order;
|
||||
@DrawableRes
|
||||
private int iconId;
|
||||
|
||||
PointType(@NonNull String typeName, @StringRes int resId, int order, @DrawableRes int iconId) {
|
||||
this.typeName = typeName;
|
||||
this.resId = resId;
|
||||
this.order = order;
|
||||
this.iconId = iconId;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return typeName;
|
||||
}
|
||||
|
||||
public int getOrder() {
|
||||
return order;
|
||||
}
|
||||
|
||||
public static PointType valueOfTypeName(@NonNull String typeName) {
|
||||
for (PointType pt : values()) {
|
||||
if (pt.typeName.equals(typeName)) {
|
||||
return pt;
|
||||
}
|
||||
}
|
||||
throw new IllegalArgumentException("Illegal PointType typeName");
|
||||
}
|
||||
|
||||
public int getIconId() {
|
||||
return iconId;
|
||||
}
|
||||
|
||||
public String getHumanString(@NonNull Context ctx) {
|
||||
return ctx.getString(resId);
|
||||
}
|
||||
}
|
||||
|
||||
public PersonalFavouritePoint(@NonNull Context ctx, @NonNull PointType type, double latitude, double longitude) {
|
||||
super(latitude, longitude, type.typeName, PERSONAL);
|
||||
this.ctx = ctx;
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
PersonalFavouritePoint(@NonNull Context ctx, @NonNull String typeName, double latitude, double longitude) throws IllegalArgumentException {
|
||||
this(ctx, PointType.valueOfTypeName(typeName), latitude, longitude);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PointDescription getPointDescription() {
|
||||
return new PointDescription(PointDescription.POINT_TYPE_LOCATION, getDescription());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPersonal() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public PointType getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return type.getHumanString(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setName(String name) {
|
||||
throw new IllegalArgumentException("Personal name is readonly");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCategory() {
|
||||
return ctx.getString(R.string.personal_category_name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCategory(String category) {
|
||||
throw new IllegalArgumentException("Personal category is readonly");
|
||||
}
|
||||
|
||||
@Override
|
||||
public WptPt toWpt() {
|
||||
WptPt pt = super.toWpt();
|
||||
pt.getExtensionsToWrite().put(PERSONAL, "true");
|
||||
pt.name = type.typeName;
|
||||
pt.desc = getDescription();
|
||||
return pt;
|
||||
}
|
||||
}
|
|
@ -197,6 +197,10 @@ public class AppInitializer implements IProgress {
|
|||
app.getSettings().migratePreferences();
|
||||
startPrefs.edit().putInt(VERSION_INSTALLED_NUMBER, VERSION_3_5).commit();
|
||||
}
|
||||
if (prevAppVersion < VERSION_3_5 || Version.getAppVersion(app).equals("3.5.3")) {
|
||||
app.getSettings().migrateHomeWorkParkingToFavorites();
|
||||
startPrefs.edit().putInt(VERSION_INSTALLED_NUMBER, VERSION_3_5).commit();
|
||||
}
|
||||
startPrefs.edit().putString(VERSION_INSTALLED, Version.getFullVersion(app)).commit();
|
||||
appVersionChanged = true;
|
||||
}
|
||||
|
|
|
@ -3,14 +3,17 @@ package net.osmand.plus;
|
|||
import android.content.Context;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.annotation.StringRes;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
|
||||
import net.osmand.GPXUtilities;
|
||||
import net.osmand.GPXUtilities.GPXFile;
|
||||
import net.osmand.GPXUtilities.WptPt;
|
||||
import net.osmand.PlatformUtil;
|
||||
import net.osmand.data.FavouritePoint;
|
||||
import net.osmand.data.LatLon;
|
||||
import net.osmand.GPXUtilities.GPXFile;
|
||||
import net.osmand.GPXUtilities.WptPt;
|
||||
import net.osmand.data.PersonalFavouritePoint;
|
||||
import net.osmand.plus.GeocodingLookupService.AddressLookupRequest;
|
||||
import net.osmand.plus.MapMarkersHelper.MapMarkersGroup;
|
||||
import net.osmand.plus.api.SQLiteAPI.SQLiteConnection;
|
||||
import net.osmand.plus.api.SQLiteAPI.SQLiteCursor;
|
||||
|
@ -30,11 +33,17 @@ import java.util.LinkedHashMap;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import static net.osmand.data.PersonalFavouritePoint.PointType.HOME;
|
||||
import static net.osmand.data.PersonalFavouritePoint.PointType.PARKING;
|
||||
import static net.osmand.data.PersonalFavouritePoint.PointType.WORK;
|
||||
|
||||
public class FavouritesDbHelper {
|
||||
|
||||
public interface FavoritesListener {
|
||||
void onFavoritesLoaded();
|
||||
void onFavoriteAddressResolved(@NonNull FavouritePoint favouritePoint);
|
||||
}
|
||||
|
||||
private static final org.apache.commons.logging.Log log = PlatformUtil.getLog(FavouritesDbHelper.class);
|
||||
|
@ -44,16 +53,18 @@ public class FavouritesDbHelper {
|
|||
public static final int BACKUP_CNT = 20; //$NON-NLS-1$
|
||||
public static final String FILE_TO_BACKUP = "favourites_bak.gpx"; //$NON-NLS-1$
|
||||
|
||||
private List<FavouritePoint> cachedFavoritePoints = new ArrayList<FavouritePoint>();
|
||||
private List<FavoriteGroup> favoriteGroups = new ArrayList<FavouritesDbHelper.FavoriteGroup>();
|
||||
private Map<String, FavoriteGroup> flatGroups = new LinkedHashMap<String, FavouritesDbHelper.FavoriteGroup>();
|
||||
private List<FavouritePoint> cachedFavoritePoints = new ArrayList<>();
|
||||
private List<FavouritePoint> cachedPersonalFavoritePoints = new ArrayList<>();
|
||||
private List<FavoriteGroup> favoriteGroups = new ArrayList<>();
|
||||
private Map<String, FavoriteGroup> flatGroups = new LinkedHashMap<>();
|
||||
private final OsmandApplication context;
|
||||
protected static final String HIDDEN = "hidden";
|
||||
private static final String DELIMETER = "__";
|
||||
|
||||
private Set<FavoritesListener> listeners = new HashSet<>();
|
||||
private boolean favoritesLoaded;
|
||||
|
||||
private Map<FavouritePoint, AddressLookupRequest> addressRequestMap = new ConcurrentHashMap<>();
|
||||
|
||||
public FavouritesDbHelper(OsmandApplication context) {
|
||||
this.context = context;
|
||||
}
|
||||
|
@ -62,6 +73,7 @@ public class FavouritesDbHelper {
|
|||
public String name;
|
||||
public boolean visible = true;
|
||||
public int color;
|
||||
public boolean personal = false;
|
||||
public List<FavouritePoint> points = new ArrayList<FavouritePoint>();
|
||||
}
|
||||
|
||||
|
@ -104,6 +116,31 @@ public class FavouritesDbHelper {
|
|||
});
|
||||
}
|
||||
|
||||
public FavouritePoint getWorkPoint() {
|
||||
return getPersonalPoint(WORK);
|
||||
}
|
||||
|
||||
public FavouritePoint getHomePoint() {
|
||||
return getPersonalPoint(HOME);
|
||||
}
|
||||
|
||||
public FavouritePoint getParkingPoint() {
|
||||
return getPersonalPoint(PARKING);
|
||||
}
|
||||
|
||||
public void deleteParkingPoint() {
|
||||
deleteFavourite(getParkingPoint());
|
||||
}
|
||||
|
||||
private FavouritePoint getPersonalPoint(PersonalFavouritePoint.PointType pointType) {
|
||||
for (FavouritePoint fp : cachedPersonalFavoritePoints) {
|
||||
if (((PersonalFavouritePoint) fp).getType() == pointType) {
|
||||
return fp;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean isFavoritesLoaded() {
|
||||
return favoritesLoaded;
|
||||
}
|
||||
|
@ -192,6 +229,9 @@ public class FavouritesDbHelper {
|
|||
runSyncWithMarkers(group);
|
||||
}
|
||||
cachedFavoritePoints.remove(p);
|
||||
if (p.isPersonal()) {
|
||||
cachedPersonalFavoritePoints.remove(p);
|
||||
}
|
||||
}
|
||||
if (saveImmediately) {
|
||||
saveCurrentPointsIntoFile();
|
||||
|
@ -199,6 +239,45 @@ public class FavouritesDbHelper {
|
|||
return true;
|
||||
}
|
||||
|
||||
public void setHomePoint(@NonNull LatLon latLon, @Nullable String description) {
|
||||
FavouritePoint homePoint = getHomePoint();
|
||||
if (homePoint != null) {
|
||||
editFavourite(homePoint, latLon.getLatitude(), latLon.getLongitude(), description);
|
||||
} else {
|
||||
homePoint = new PersonalFavouritePoint(context, HOME, latLon.getLatitude(), latLon.getLongitude());
|
||||
homePoint.setDescription(description);
|
||||
addFavourite(homePoint);
|
||||
}
|
||||
if (description == null) {
|
||||
lookupAddress(homePoint);
|
||||
}
|
||||
}
|
||||
|
||||
public void setWorkPoint(@NonNull LatLon latLon, @Nullable String description) {
|
||||
FavouritePoint workPoint = getWorkPoint();
|
||||
if (workPoint != null) {
|
||||
editFavourite(workPoint, latLon.getLatitude(), latLon.getLongitude(), description);
|
||||
} else {
|
||||
workPoint = new PersonalFavouritePoint(context, WORK, latLon.getLatitude(), latLon.getLongitude());
|
||||
workPoint.setDescription(description);
|
||||
addFavourite(workPoint);
|
||||
}
|
||||
if (description == null) {
|
||||
lookupAddress(workPoint);
|
||||
}
|
||||
}
|
||||
|
||||
public void setParkingPoint(@NonNull LatLon latLon) {
|
||||
FavouritePoint parkingPoint = getParkingPoint();
|
||||
if (parkingPoint != null) {
|
||||
editFavourite(parkingPoint, latLon.getLatitude(), latLon.getLongitude(), null);
|
||||
} else {
|
||||
parkingPoint = new PersonalFavouritePoint(context, PARKING, latLon.getLatitude(), latLon.getLongitude());
|
||||
addFavourite(parkingPoint);
|
||||
}
|
||||
lookupAddress(parkingPoint);
|
||||
}
|
||||
|
||||
public boolean addFavourite(FavouritePoint p) {
|
||||
return addFavourite(p, true);
|
||||
}
|
||||
|
@ -216,6 +295,9 @@ public class FavouritesDbHelper {
|
|||
group.points.add(p);
|
||||
cachedFavoritePoints.add(p);
|
||||
}
|
||||
if (p.isPersonal()) {
|
||||
cachedPersonalFavoritePoints.add(p);
|
||||
}
|
||||
if (saveImmediately) {
|
||||
sortAll();
|
||||
saveCurrentPointsIntoFile();
|
||||
|
@ -225,6 +307,59 @@ public class FavouritesDbHelper {
|
|||
return true;
|
||||
}
|
||||
|
||||
public void lookupAddressAllPersonalPoints() {
|
||||
if (!context.isApplicationInitializing()) {
|
||||
FavouritePoint workPoint = getWorkPoint();
|
||||
if (workPoint != null) {
|
||||
lookupAddress(workPoint);
|
||||
}
|
||||
FavouritePoint homePoint = getHomePoint();
|
||||
if (homePoint != null) {
|
||||
lookupAddress(homePoint);
|
||||
}
|
||||
FavouritePoint parkingPoint = getParkingPoint();
|
||||
if (parkingPoint != null) {
|
||||
lookupAddress(parkingPoint);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void lookupAddress(@NonNull final FavouritePoint p) {
|
||||
AddressLookupRequest request = addressRequestMap.get(p);
|
||||
double latitude = p.getLatitude();
|
||||
double longitude = p.getLongitude();
|
||||
if (request == null || !request.getLatLon().equals(new LatLon(latitude, longitude))) {
|
||||
cancelAddressRequest(p);
|
||||
request = new AddressLookupRequest(new LatLon(latitude, longitude),
|
||||
new GeocodingLookupService.OnAddressLookupResult() {
|
||||
@Override
|
||||
public void geocodingDone(String address) {
|
||||
addressRequestMap.remove(p);
|
||||
editFavouriteDescription(p, address);
|
||||
context.runInUIThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
for (FavoritesListener listener : listeners) {
|
||||
listener.onFavoriteAddressResolved(p);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
}, null);
|
||||
addressRequestMap.put(p, request);
|
||||
context.getGeocodingLookupService().lookupAddress(request);
|
||||
}
|
||||
}
|
||||
|
||||
private void cancelAddressRequest(@NonNull FavouritePoint p) {
|
||||
AddressLookupRequest request = addressRequestMap.get(p);
|
||||
if (request != null) {
|
||||
context.getGeocodingLookupService().cancel(request);
|
||||
addressRequestMap.remove(p);
|
||||
}
|
||||
}
|
||||
|
||||
public static AlertDialog.Builder checkDuplicates(FavouritePoint p, FavouritesDbHelper fdb, Context uiContext) {
|
||||
boolean emoticons = false;
|
||||
String index = "";
|
||||
|
@ -319,7 +454,15 @@ public class FavouritesDbHelper {
|
|||
return true;
|
||||
}
|
||||
|
||||
public boolean editFavouriteDescription(FavouritePoint p, String description) {
|
||||
p.setDescription(description);
|
||||
saveCurrentPointsIntoFile();
|
||||
runSyncWithMarkers(getOrCreateGroup(p, 0));
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean editFavourite(FavouritePoint p, double lat, double lon) {
|
||||
cancelAddressRequest(p);
|
||||
p.setLatitude(lat);
|
||||
p.setLongitude(lon);
|
||||
saveCurrentPointsIntoFile();
|
||||
|
@ -327,6 +470,16 @@ public class FavouritesDbHelper {
|
|||
return true;
|
||||
}
|
||||
|
||||
public boolean editFavourite(FavouritePoint p, double lat, double lon, String description) {
|
||||
cancelAddressRequest(p);
|
||||
p.setLatitude(lat);
|
||||
p.setLongitude(lon);
|
||||
p.setDescription(description);
|
||||
saveCurrentPointsIntoFile();
|
||||
runSyncWithMarkers(getOrCreateGroup(p, 0));
|
||||
return true;
|
||||
}
|
||||
|
||||
public void saveCurrentPointsIntoFile() {
|
||||
try {
|
||||
Map<String, FavouritePoint> deletedInMemory = new LinkedHashMap<String, FavouritePoint>();
|
||||
|
@ -437,23 +590,7 @@ public class FavouritesDbHelper {
|
|||
private GPXFile asGpxFile(List<FavouritePoint> favoritePoints) {
|
||||
GPXFile gpx = new GPXFile(Version.getFullVersion(context));
|
||||
for (FavouritePoint p : favoritePoints) {
|
||||
WptPt pt = new WptPt();
|
||||
pt.lat = p.getLatitude();
|
||||
pt.lon = p.getLongitude();
|
||||
if (!p.isVisible()) {
|
||||
pt.getExtensionsToWrite().put(HIDDEN, "true");
|
||||
}
|
||||
if (p.getColor() != 0) {
|
||||
pt.setColor(p.getColor());
|
||||
}
|
||||
pt.name = p.getName();
|
||||
pt.desc = p.getDescription();
|
||||
if (p.getCategory().length() > 0)
|
||||
pt.category = p.getCategory();
|
||||
if (p.getOriginObjectName().length() > 0) {
|
||||
pt.comment = p.getOriginObjectName();
|
||||
}
|
||||
context.getSelectedGpxHelper().addPoint(pt, gpx);
|
||||
context.getSelectedGpxHelper().addPoint(p.toWpt(), gpx);
|
||||
}
|
||||
return gpx;
|
||||
}
|
||||
|
@ -490,6 +627,26 @@ public class FavouritesDbHelper {
|
|||
return fp;
|
||||
}
|
||||
|
||||
public List<FavouritePoint> getNonPersonalVisibleFavouritePoints() {
|
||||
List<FavouritePoint> fp = new ArrayList<>();
|
||||
for (FavouritePoint p : getNonPersonalFavouritePoints()) {
|
||||
if (p.isVisible()) {
|
||||
fp.add(p);
|
||||
}
|
||||
}
|
||||
return fp;
|
||||
}
|
||||
|
||||
public List<FavouritePoint> getNonPersonalFavouritePoints() {
|
||||
List<FavouritePoint> fp = new ArrayList<>();
|
||||
for (FavouritePoint p : cachedFavoritePoints) {
|
||||
if (!p.isPersonal()) {
|
||||
fp.add(p);
|
||||
}
|
||||
}
|
||||
return fp;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public FavouritePoint getVisibleFavByLatLon(@NonNull LatLon latLon) {
|
||||
for (FavouritePoint fav : cachedFavoritePoints) {
|
||||
|
@ -545,11 +702,16 @@ public class FavouritesDbHelper {
|
|||
|
||||
|
||||
public void recalculateCachedFavPoints() {
|
||||
ArrayList<FavouritePoint> temp = new ArrayList<FavouritePoint>();
|
||||
List<FavouritePoint> allPoints = new ArrayList<>();
|
||||
List<FavouritePoint> personalPoints = new ArrayList<>();
|
||||
for (FavoriteGroup f : favoriteGroups) {
|
||||
temp.addAll(f.points);
|
||||
if (f.personal) {
|
||||
personalPoints.addAll(f.points);
|
||||
}
|
||||
allPoints.addAll(f.points);
|
||||
}
|
||||
cachedFavoritePoints = temp;
|
||||
cachedFavoritePoints = allPoints;
|
||||
cachedPersonalFavoritePoints = personalPoints;
|
||||
}
|
||||
|
||||
public void sortAll() {
|
||||
|
@ -559,7 +721,7 @@ public class FavouritesDbHelper {
|
|||
|
||||
@Override
|
||||
public int compare(FavoriteGroup lhs, FavoriteGroup rhs) {
|
||||
return collator.compare(lhs.name, rhs.name);
|
||||
return lhs.personal ? -1 : rhs.personal ? 1 : collator.compare(lhs.name, rhs.name);
|
||||
}
|
||||
});
|
||||
Comparator<FavouritePoint> favoritesComparator = getComparator();
|
||||
|
@ -569,15 +731,27 @@ public class FavouritesDbHelper {
|
|||
if (cachedFavoritePoints != null) {
|
||||
Collections.sort(cachedFavoritePoints, favoritesComparator);
|
||||
}
|
||||
if (cachedPersonalFavoritePoints != null) {
|
||||
Collections.sort(cachedPersonalFavoritePoints, favoritesComparator);
|
||||
}
|
||||
}
|
||||
|
||||
public static Comparator<FavouritePoint> getComparator() {
|
||||
final Collator collator = Collator.getInstance();
|
||||
collator.setStrength(Collator.SECONDARY);
|
||||
Comparator<FavouritePoint> favoritesComparator = new Comparator<FavouritePoint>() {
|
||||
return new Comparator<FavouritePoint>() {
|
||||
|
||||
@Override
|
||||
public int compare(FavouritePoint o1, FavouritePoint o2) {
|
||||
if (o1.isPersonal() && o2.isPersonal()) {
|
||||
int x = ((PersonalFavouritePoint) o1).getType().getOrder();
|
||||
int y = ((PersonalFavouritePoint) o2).getType().getOrder();
|
||||
return Algorithms.compare(x, y);
|
||||
} else if (o1.isPersonal()) {
|
||||
return -1;
|
||||
} else if (o2.isPersonal()) {
|
||||
return 1;
|
||||
}
|
||||
String s1 = o1.getName();
|
||||
String s2 = o2.getName();
|
||||
int i1 = Algorithms.extractIntegerNumber(s1);
|
||||
|
@ -602,10 +776,8 @@ public class FavouritesDbHelper {
|
|||
|
||||
}
|
||||
};
|
||||
return favoritesComparator;
|
||||
}
|
||||
|
||||
|
||||
private boolean loadGPXFile(File file, Map<String, FavouritePoint> points) {
|
||||
if (!file.exists()) {
|
||||
return false;
|
||||
|
@ -615,20 +787,10 @@ public class FavouritesDbHelper {
|
|||
return false;
|
||||
}
|
||||
for (WptPt p : res.getPoints()) {
|
||||
int c;
|
||||
String name = p.name;
|
||||
String categoryName = p.category != null ? p.category : "";
|
||||
if (name == null) {
|
||||
name = "";
|
||||
FavouritePoint fp = FavouritePoint.fromWpt(context, p);
|
||||
if (fp != null) {
|
||||
points.put(getKey(fp), fp);
|
||||
}
|
||||
FavouritePoint fp = new FavouritePoint(p.lat, p.lon, name, categoryName);
|
||||
fp.setDescription(p.desc);
|
||||
if (p.comment != null) {
|
||||
fp.setOriginObjectName(p.comment);
|
||||
}
|
||||
fp.setColor(p.getColor(0));
|
||||
fp.setVisible(!p.getExtensionsToRead().containsKey(HIDDEN));
|
||||
points.put(getKey(fp), fp);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -690,6 +852,7 @@ public class FavouritesDbHelper {
|
|||
group.name = p.getCategory();
|
||||
group.visible = p.isVisible();
|
||||
group.color = p.getColor();
|
||||
group.personal = p.isPersonal();
|
||||
flatGroups.put(group.name, group);
|
||||
favoriteGroups.add(group);
|
||||
if (group.color == 0) {
|
||||
|
|
|
@ -259,6 +259,29 @@ public class OsmandSettings {
|
|||
}
|
||||
}
|
||||
|
||||
void migrateHomeWorkParkingToFavorites() {
|
||||
FavouritesDbHelper favorites = ctx.getFavorites();
|
||||
|
||||
LatLon homePoint = null;
|
||||
float lat = settingsAPI.getFloat(globalPreferences, "home_point_lat", 0);
|
||||
float lon = settingsAPI.getFloat(globalPreferences, "home_point_lon", 0);
|
||||
if (lat != 0 || lon != 0) {
|
||||
homePoint = new LatLon(lat, lon);
|
||||
}
|
||||
LatLon workPoint = null;
|
||||
lat = settingsAPI.getFloat(globalPreferences, "work_point_lat", 0);
|
||||
lon = settingsAPI.getFloat(globalPreferences, "work_point_lon", 0);
|
||||
if (lat != 0 || lon != 0) {
|
||||
workPoint = new LatLon(lat, lon);
|
||||
}
|
||||
if (homePoint != null) {
|
||||
favorites.setHomePoint(homePoint, null);
|
||||
}
|
||||
if (workPoint != null) {
|
||||
favorites.setWorkPoint(workPoint, null);
|
||||
}
|
||||
}
|
||||
|
||||
public Object getProfilePreferences(ApplicationMode mode) {
|
||||
return settingsAPI.getPreferenceObject(getSharedPreferencesName(mode));
|
||||
}
|
||||
|
@ -2393,13 +2416,6 @@ public class OsmandSettings {
|
|||
public final static String MY_LOC_POINT_LON = "my_loc_point_lon";
|
||||
public final static String MY_LOC_POINT_DESCRIPTION = "my_loc_point_description";
|
||||
|
||||
public final static String HOME_POINT_LAT = "home_point_lat";
|
||||
public final static String HOME_POINT_LON = "home_point_lon";
|
||||
public final static String HOME_POINT_DESCRIPTION = "home_point_description";
|
||||
public final static String WORK_POINT_LAT = "work_point_lat";
|
||||
public final static String WORK_POINT_LON = "work_point_lon";
|
||||
public final static String WORK_POINT_DESCRIPTION = "work_point_description";
|
||||
|
||||
private static final String IMPASSABLE_ROAD_POINTS = "impassable_road_points";
|
||||
private static final String IMPASSABLE_ROADS_DESCRIPTIONS = "impassable_roads_descriptions";
|
||||
private ImpassableRoadsStorage mImpassableRoadsStorage = new ImpassableRoadsStorage();
|
||||
|
@ -2514,44 +2530,6 @@ public class OsmandSettings {
|
|||
settingsAPI.getString(globalPreferences, POINT_NAVIGATE_DESCRIPTION_BACKUP, ""), getPointToNavigate());
|
||||
}
|
||||
|
||||
public LatLon getHomePoint() {
|
||||
float lat = settingsAPI.getFloat(globalPreferences, HOME_POINT_LAT, 0);
|
||||
float lon = settingsAPI.getFloat(globalPreferences, HOME_POINT_LON, 0);
|
||||
if (lat == 0 && lon == 0) {
|
||||
return null;
|
||||
}
|
||||
return new LatLon(lat, lon);
|
||||
}
|
||||
|
||||
public PointDescription getHomePointDescription() {
|
||||
return PointDescription.deserializeFromString(
|
||||
settingsAPI.getString(globalPreferences, HOME_POINT_DESCRIPTION, ""), getHomePoint());
|
||||
}
|
||||
|
||||
public LatLon getWorkPoint() {
|
||||
float lat = settingsAPI.getFloat(globalPreferences, WORK_POINT_LAT, 0);
|
||||
float lon = settingsAPI.getFloat(globalPreferences, WORK_POINT_LON, 0);
|
||||
if (lat == 0 && lon == 0) {
|
||||
return null;
|
||||
}
|
||||
return new LatLon(lat, lon);
|
||||
}
|
||||
|
||||
public PointDescription getWorkPointDescription() {
|
||||
return PointDescription.deserializeFromString(
|
||||
settingsAPI.getString(globalPreferences, WORK_POINT_DESCRIPTION, ""), getWorkPoint());
|
||||
}
|
||||
|
||||
public void setHomePoint(double latitude, double longitude, PointDescription p) {
|
||||
settingsAPI.edit(globalPreferences).putFloat(HOME_POINT_LAT, (float) latitude).putFloat(HOME_POINT_LON, (float) longitude).commit();
|
||||
settingsAPI.edit(globalPreferences).putString(HOME_POINT_DESCRIPTION, PointDescription.serializeToString(p)).commit();
|
||||
}
|
||||
|
||||
public void setWorkPoint(double latitude, double longitude, PointDescription p) {
|
||||
settingsAPI.edit(globalPreferences).putFloat(WORK_POINT_LAT, (float) latitude).putFloat(WORK_POINT_LON, (float) longitude).commit();
|
||||
settingsAPI.edit(globalPreferences).putString(WORK_POINT_DESCRIPTION, PointDescription.serializeToString(p)).commit();
|
||||
}
|
||||
|
||||
public LatLon getMyLocationToStart() {
|
||||
float lat = settingsAPI.getFloat(globalPreferences, MY_LOC_POINT_LAT, 0);
|
||||
float lon = settingsAPI.getFloat(globalPreferences, MY_LOC_POINT_LON, 0);
|
||||
|
|
|
@ -31,15 +31,12 @@ public class TargetPointsHelper {
|
|||
private List<StateChangedListener<Void>> listeners = new ArrayList<>();
|
||||
private List<TargetPointChangedListener> pointListeners = new ArrayList<>();
|
||||
private OsmandApplication ctx;
|
||||
private TargetPoint homePoint = null;
|
||||
private TargetPoint workPoint = null;
|
||||
|
||||
private AddressLookupRequest startPointRequest;
|
||||
private AddressLookupRequest targetPointRequest;
|
||||
private AddressLookupRequest homePointRequest;
|
||||
private AddressLookupRequest workPointRequest;
|
||||
private AddressLookupRequest myLocationPointRequest;
|
||||
|
||||
|
||||
public interface TargetPointChangedListener {
|
||||
void onTargetPointChanged(TargetPoint targetPoint);
|
||||
}
|
||||
|
@ -158,8 +155,6 @@ public class TargetPointsHelper {
|
|||
for (TargetPoint targetPoint : intermediatePoints) {
|
||||
lookupAddressForIntermediatePoint(targetPoint);
|
||||
}
|
||||
lookupAddressForHomePoint();
|
||||
lookupAddressForWorkPoint();
|
||||
lookupAddressForMyLocationPoint();
|
||||
}
|
||||
|
||||
|
@ -177,25 +172,11 @@ public class TargetPointsHelper {
|
|||
PointDescription.deserializeFromString(desc.get(i), ips.get(i)), i);
|
||||
intermediatePoints.add(targetPoint);
|
||||
}
|
||||
homePoint = settings.getHomePoint() != null ?
|
||||
TargetPoint.create(settings.getHomePoint(), settings.getHomePointDescription()) : null;
|
||||
workPoint = settings.getWorkPoint() != null ?
|
||||
TargetPoint.create(settings.getWorkPoint(), settings.getWorkPointDescription()) : null;
|
||||
|
||||
if (!ctx.isApplicationInitializing()) {
|
||||
lookupAddessAll();
|
||||
}
|
||||
}
|
||||
|
||||
private void readHomeWorkFromSettings() {
|
||||
homePoint = TargetPoint.create(settings.getHomePoint(), settings.getHomePointDescription());
|
||||
workPoint = TargetPoint.create(settings.getWorkPoint(), settings.getWorkPointDescription());
|
||||
if (!ctx.isApplicationInitializing()) {
|
||||
lookupAddressForHomePoint();
|
||||
lookupAddressForWorkPoint();
|
||||
}
|
||||
}
|
||||
|
||||
private void readMyLocationPointFromSettings() {
|
||||
myLocationToStart = TargetPoint.create(settings.getMyLocationToStart(), settings.getMyLocationToStartDescription());
|
||||
if (!ctx.isApplicationInitializing()) {
|
||||
|
@ -267,52 +248,10 @@ public class TargetPointsHelper {
|
|||
}
|
||||
}
|
||||
|
||||
private void lookupAddressForHomePoint() {
|
||||
if (homePoint != null && homePoint.isSearchingAddress(ctx)
|
||||
&& (homePointRequest == null || !homePointRequest.getLatLon().equals(homePoint.point))) {
|
||||
cancelHomePointAddressRequest();
|
||||
homePointRequest = new AddressLookupRequest(homePoint.point, new GeocodingLookupService.OnAddressLookupResult() {
|
||||
@Override
|
||||
public void geocodingDone(String address) {
|
||||
homePointRequest = null;
|
||||
if (homePoint != null) {
|
||||
homePoint.pointDescription.setName(address);
|
||||
settings.setHomePoint(homePoint.point.getLatitude(), homePoint.point.getLongitude(),
|
||||
homePoint.pointDescription);
|
||||
updateRouteAndRefresh(false);
|
||||
updateTargetPoint(homePoint);
|
||||
}
|
||||
}
|
||||
}, null);
|
||||
ctx.getGeocodingLookupService().lookupAddress(homePointRequest);
|
||||
}
|
||||
}
|
||||
|
||||
private void lookupAddressForWorkPoint() {
|
||||
if (workPoint != null && workPoint.isSearchingAddress(ctx)
|
||||
&& (workPointRequest == null || !workPointRequest.getLatLon().equals(workPoint.point))) {
|
||||
cancelWorkPointAddressRequest();
|
||||
workPointRequest = new AddressLookupRequest(workPoint.point, new GeocodingLookupService.OnAddressLookupResult() {
|
||||
@Override
|
||||
public void geocodingDone(String address) {
|
||||
workPointRequest = null;
|
||||
if (workPoint != null) {
|
||||
workPoint.pointDescription.setName(address);
|
||||
settings.setWorkPoint(workPoint.point.getLatitude(), workPoint.point.getLongitude(),
|
||||
workPoint.pointDescription);
|
||||
updateRouteAndRefresh(false);
|
||||
updateTargetPoint(workPoint);
|
||||
}
|
||||
}
|
||||
}, null);
|
||||
ctx.getGeocodingLookupService().lookupAddress(workPointRequest);
|
||||
}
|
||||
}
|
||||
|
||||
private void lookupAddressForMyLocationPoint() {
|
||||
if (myLocationToStart != null && myLocationToStart.isSearchingAddress(ctx)
|
||||
&& (myLocationPointRequest == null || !myLocationPointRequest.getLatLon().equals(myLocationToStart.point))) {
|
||||
cancelWorkPointAddressRequest();
|
||||
cancelMyLocationPointAddressRequest();
|
||||
myLocationPointRequest = new AddressLookupRequest(myLocationToStart.point, new GeocodingLookupService.OnAddressLookupResult() {
|
||||
@Override
|
||||
public void geocodingDone(String address) {
|
||||
|
@ -350,46 +289,6 @@ public class TargetPointsHelper {
|
|||
return myLocationToStart;
|
||||
}
|
||||
|
||||
public PointDescription getStartPointDescription(){
|
||||
return settings.getStartPointDescription();
|
||||
}
|
||||
|
||||
public TargetPoint getHomePoint() {
|
||||
return homePoint;
|
||||
}
|
||||
|
||||
public TargetPoint getWorkPoint() {
|
||||
return workPoint;
|
||||
}
|
||||
|
||||
public void setHomePoint(LatLon latLon, PointDescription name) {
|
||||
final PointDescription pointDescription;
|
||||
if (name == null) {
|
||||
pointDescription = new PointDescription(PointDescription.POINT_TYPE_LOCATION, "");
|
||||
} else {
|
||||
pointDescription = name;
|
||||
}
|
||||
if (pointDescription.isLocation() && Algorithms.isEmpty(pointDescription.getName())) {
|
||||
pointDescription.setName(PointDescription.getSearchAddressStr(ctx));
|
||||
}
|
||||
settings.setHomePoint(latLon.getLatitude(), latLon.getLongitude(), pointDescription);
|
||||
readHomeWorkFromSettings();
|
||||
}
|
||||
|
||||
public void setWorkPoint(LatLon latLon, PointDescription name) {
|
||||
final PointDescription pointDescription;
|
||||
if (name == null) {
|
||||
pointDescription = new PointDescription(PointDescription.POINT_TYPE_LOCATION, "");
|
||||
} else {
|
||||
pointDescription = name;
|
||||
}
|
||||
if (pointDescription.isLocation() && Algorithms.isEmpty(pointDescription.getName())) {
|
||||
pointDescription.setName(PointDescription.getSearchAddressStr(ctx));
|
||||
}
|
||||
settings.setWorkPoint(latLon.getLatitude(), latLon.getLongitude(), pointDescription);
|
||||
readHomeWorkFromSettings();
|
||||
}
|
||||
|
||||
public List<TargetPoint> getIntermediatePoints() {
|
||||
return intermediatePoints;
|
||||
}
|
||||
|
@ -764,6 +663,13 @@ public class TargetPointsHelper {
|
|||
}
|
||||
}
|
||||
|
||||
private void cancelMyLocationPointAddressRequest() {
|
||||
if (startPointRequest != null) {
|
||||
ctx.getGeocodingLookupService().cancel(startPointRequest);
|
||||
startPointRequest = null;
|
||||
}
|
||||
}
|
||||
|
||||
private void cancelTargetPointAddressRequest() {
|
||||
if (targetPointRequest != null) {
|
||||
ctx.getGeocodingLookupService().cancel(targetPointRequest);
|
||||
|
@ -771,20 +677,6 @@ public class TargetPointsHelper {
|
|||
}
|
||||
}
|
||||
|
||||
private void cancelHomePointAddressRequest() {
|
||||
if (homePointRequest != null) {
|
||||
ctx.getGeocodingLookupService().cancel(homePointRequest);
|
||||
homePointRequest = null;
|
||||
}
|
||||
}
|
||||
|
||||
private void cancelWorkPointAddressRequest() {
|
||||
if (workPointRequest != null) {
|
||||
ctx.getGeocodingLookupService().cancel(workPointRequest);
|
||||
workPointRequest = null;
|
||||
}
|
||||
}
|
||||
|
||||
private void cancelAllIntermediatePointsAddressRequests() {
|
||||
List<LatLon> intermediatePointsLatLon = getIntermediatePointsLatLon();
|
||||
for (LatLon latLon : intermediatePointsLatLon) {
|
||||
|
|
|
@ -123,7 +123,7 @@ public class DownloadTilesDialog {
|
|||
}
|
||||
final ProgressDialog progressDlg = new ProgressDialog(ctx);
|
||||
progressDlg.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
|
||||
progressDlg.setMessage(ctx.getString(R.string.shared_string_downloading) + ctx.getString(R.string.shared_string_ellipsis));
|
||||
progressDlg.setMessage(ctx.getString(R.string.shared_string_downloading));
|
||||
progressDlg.setCancelable(true);
|
||||
progressDlg.setMax(numberTiles);
|
||||
progressDlg.setOnCancelListener(new DialogInterface.OnCancelListener(){
|
||||
|
|
|
@ -37,6 +37,7 @@ import android.widget.Toast;
|
|||
import net.osmand.AndroidUtils;
|
||||
import net.osmand.data.FavouritePoint;
|
||||
import net.osmand.data.LatLon;
|
||||
import net.osmand.data.PersonalFavouritePoint;
|
||||
import net.osmand.data.PointDescription;
|
||||
import net.osmand.plus.FavouritesDbHelper;
|
||||
import net.osmand.plus.FavouritesDbHelper.FavoriteGroup;
|
||||
|
@ -115,6 +116,10 @@ public class FavoritesTreeFragment extends OsmandExpandableListFragment implemen
|
|||
public void onFavoritesLoaded() {
|
||||
favouritesAdapter.synchronizeGroups();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFavoriteAddressResolved(@NonNull FavouritePoint favouritePoint) {
|
||||
}
|
||||
});
|
||||
}
|
||||
setAdapter(favouritesAdapter);
|
||||
|
@ -738,7 +743,7 @@ public class FavoritesTreeFragment extends OsmandExpandableListFragment implemen
|
|||
Filter myFilter;
|
||||
private Set<?> filter;
|
||||
|
||||
public void synchronizeGroups() {
|
||||
void synchronizeGroups() {
|
||||
favoriteGroups.clear();
|
||||
groups.clear();
|
||||
List<FavoriteGroup> disablesGroups = new ArrayList<>();
|
||||
|
@ -829,9 +834,11 @@ public class FavoritesTreeFragment extends OsmandExpandableListFragment implemen
|
|||
int disabledColor = light ? R.color.text_color_secondary_light : R.color.text_color_secondary_dark;
|
||||
row.findViewById(R.id.group_divider).setVisibility(groupPosition == 0 ? View.GONE : View.VISIBLE);
|
||||
int color = model.color == 0 || model.color == Color.BLACK ? getResources().getColor(R.color.color_favorite) : model.color;
|
||||
setCategoryIcon(app, app.getUIUtilities().getPaintedIcon(
|
||||
R.drawable.ic_action_fav_dark, visible ? (color | 0xff000000) : getResources().getColor(disabledColor)),
|
||||
groupPosition, isExpanded, row, light);
|
||||
if (!model.personal) {
|
||||
setCategoryIcon(app, app.getUIUtilities().getPaintedIcon(
|
||||
R.drawable.ic_action_fav_dark, visible ? (color | 0xff000000) : getResources().getColor(disabledColor)),
|
||||
groupPosition, isExpanded, row, light);
|
||||
}
|
||||
adjustIndicator(app, groupPosition, isExpanded, row, light);
|
||||
TextView label = (TextView) row.findViewById(R.id.category_name);
|
||||
label.setTextColor(getResources().getColor(visible ? enabledColor : disabledColor));
|
||||
|
@ -879,16 +886,18 @@ public class FavoritesTreeFragment extends OsmandExpandableListFragment implemen
|
|||
}
|
||||
final View ch = row.findViewById(R.id.options);
|
||||
if (!selectionMode) {
|
||||
((ImageView) ch).setImageDrawable(getMyApplication().getUIUtilities().getThemedIcon(R.drawable.ic_overflow_menu_white));
|
||||
ch.setVisibility(View.VISIBLE);
|
||||
ch.setContentDescription(getString(R.string.shared_string_settings));
|
||||
ch.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
EditFavoriteGroupDialogFragment.showInstance(getChildFragmentManager(), model.name);
|
||||
}
|
||||
if (!model.personal) {
|
||||
((ImageView) ch).setImageDrawable(getMyApplication().getUIUtilities().getThemedIcon(R.drawable.ic_overflow_menu_white));
|
||||
ch.setVisibility(View.VISIBLE);
|
||||
ch.setContentDescription(getString(R.string.shared_string_settings));
|
||||
ch.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
EditFavoriteGroupDialogFragment.showInstance(getChildFragmentManager(), model.name);
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
}
|
||||
} else {
|
||||
ch.setVisibility(View.GONE);
|
||||
}
|
||||
|
@ -933,8 +942,6 @@ public class FavoritesTreeFragment extends OsmandExpandableListFragment implemen
|
|||
}
|
||||
});
|
||||
}
|
||||
icon.setImageDrawable(FavoriteImageDrawable.getOrCreate(getActivity(),
|
||||
visible ? model.getColor() : getResources().getColor(disabledIconColor), false));
|
||||
LatLon lastKnownMapLocation = getMyApplication().getSettings().getLastKnownMapLocation();
|
||||
int dist = (int) (MapUtils.getDistance(model.getLatitude(), model.getLongitude(),
|
||||
lastKnownMapLocation.getLatitude(), lastKnownMapLocation.getLongitude()));
|
||||
|
@ -943,6 +950,17 @@ public class FavoritesTreeFragment extends OsmandExpandableListFragment implemen
|
|||
name.setTypeface(Typeface.DEFAULT, visible ? Typeface.NORMAL : Typeface.ITALIC);
|
||||
name.setTextColor(getResources().getColor(visible ? enabledColor : disabledColor));
|
||||
distanceText.setText(distance);
|
||||
if (model instanceof PersonalFavouritePoint) {
|
||||
String distanceWithAddress = String.format(getString(R.string.distance_and_address), distance.trim(), model.getDescription() != null ? model.getDescription() : "");
|
||||
distanceText.setText(distanceWithAddress);
|
||||
icon.setImageDrawable(FavoriteImageDrawable.getOrCreate(getActivity(),
|
||||
visible ? model.getColor() : getResources().getColor(disabledIconColor), false,
|
||||
((PersonalFavouritePoint) model).getType()));
|
||||
name.setText((model.getName()));
|
||||
} else {
|
||||
icon.setImageDrawable(FavoriteImageDrawable.getOrCreate(getActivity(),
|
||||
visible ? model.getColor() : getResources().getColor(disabledIconColor), false));
|
||||
}
|
||||
if (visible) {
|
||||
distanceText.setTextColor(getResources().getColor(R.color.color_distance));
|
||||
} else {
|
||||
|
|
|
@ -425,6 +425,7 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven
|
|||
if (dashboardOnMap != null) {
|
||||
dashboardOnMap.updateLocation(true, true, false);
|
||||
}
|
||||
app.getFavorites().lookupAddressAllPersonalPoints();
|
||||
app.getTargetPointsHelper().lookupAddessAll();
|
||||
app.getMapMarkersHelper().lookupAddressAll();
|
||||
}
|
||||
|
|
|
@ -9,14 +9,18 @@ import android.graphics.Color;
|
|||
import android.graphics.ColorFilter;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.Paint.Style;
|
||||
import android.graphics.PixelFormat;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.graphics.PorterDuffColorFilter;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v4.content.res.ResourcesCompat;
|
||||
|
||||
import net.osmand.data.PersonalFavouritePoint.PointType;
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.UiUtilities;
|
||||
|
||||
import java.util.TreeMap;
|
||||
|
||||
|
@ -38,11 +42,16 @@ public class FavoriteImageDrawable extends Drawable {
|
|||
private Paint paintInnerCircle = new Paint();
|
||||
private ColorFilter colorFilter;
|
||||
private ColorFilter grayFilter;
|
||||
private Drawable personalPointBitmap;
|
||||
|
||||
public FavoriteImageDrawable(Context ctx, int color, boolean withShadow, boolean synced) {
|
||||
public FavoriteImageDrawable(Context ctx, int color, boolean withShadow, boolean synced, PointType pointType) {
|
||||
this.withShadow = withShadow;
|
||||
this.synced = synced;
|
||||
Resources res = ctx.getResources();
|
||||
if (pointType != null) {
|
||||
personalPointBitmap = UiUtilities.tintDrawable(ResourcesCompat.getDrawable(res, pointType.getIconId(), null),
|
||||
ContextCompat.getColor(ctx, R.color.icon_color_default_light));
|
||||
}
|
||||
int col = color == 0 || color == Color.BLACK ? res.getColor(R.color.color_favorite) : color;
|
||||
favIcon = BitmapFactory.decodeResource(res, R.drawable.map_favorite);
|
||||
favBackground = BitmapFactory.decodeResource(res, R.drawable.map_white_favorite_shield);
|
||||
|
@ -71,6 +80,9 @@ public class FavoriteImageDrawable extends Drawable {
|
|||
//bs.inset((int) (4 * density), (int) (4 * density));
|
||||
bs.inset(bs.width() / 4, bs.height() / 4);
|
||||
listDrawable.setBounds(bs);
|
||||
if (personalPointBitmap != null) {
|
||||
personalPointBitmap.setBounds(bounds);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -96,6 +108,8 @@ public class FavoriteImageDrawable extends Drawable {
|
|||
} else if (withShadow) {
|
||||
canvas.drawBitmap(favBackground, bs.exactCenterX() - favBackground.getWidth() / 2f, bs.exactCenterY() - favBackground.getHeight() / 2f, paintBackground);
|
||||
canvas.drawBitmap(favIcon, bs.exactCenterX() - favIcon.getWidth() / 2f, bs.exactCenterY() - favIcon.getHeight() / 2f, paintIcon);
|
||||
} else if (personalPointBitmap != null) {
|
||||
personalPointBitmap.draw(canvas);
|
||||
} else {
|
||||
int min = Math.min(bs.width(), bs.height());
|
||||
int r = (min * 4 / 10);
|
||||
|
@ -132,23 +146,30 @@ public class FavoriteImageDrawable extends Drawable {
|
|||
|
||||
private static TreeMap<Integer, FavoriteImageDrawable> cache = new TreeMap<>();
|
||||
|
||||
private static FavoriteImageDrawable getOrCreate(Context a, int color, boolean withShadow, boolean synced) {
|
||||
public static FavoriteImageDrawable getOrCreate(Context a, int color, boolean withShadow, boolean synced, PointType pointType) {
|
||||
int pointTypeId = 0;
|
||||
if (pointType != null)
|
||||
pointTypeId = pointType.ordinal();
|
||||
color = color | 0xff000000;
|
||||
int hash = (color << 2) + (withShadow ? 1 : 0) + (synced ? 3 : 0);
|
||||
int hash = (color << 4) + ((withShadow ? 1 : 0) << 2) + ((synced ? 3 : 0) << 2) + pointTypeId;
|
||||
FavoriteImageDrawable drawable = cache.get(hash);
|
||||
if (drawable == null) {
|
||||
drawable = new FavoriteImageDrawable(a, color, withShadow, synced);
|
||||
drawable = new FavoriteImageDrawable(a, color, withShadow, synced, pointType);
|
||||
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
|
||||
cache.put(hash, drawable);
|
||||
}
|
||||
return drawable;
|
||||
}
|
||||
|
||||
public static FavoriteImageDrawable getOrCreate(Context a, int color, boolean withShadow, PointType pointType) {
|
||||
return getOrCreate(a, color, withShadow, false, pointType);
|
||||
}
|
||||
|
||||
public static FavoriteImageDrawable getOrCreate(Context a, int color, boolean withShadow) {
|
||||
return getOrCreate(a, color, withShadow, false);
|
||||
return getOrCreate(a, color, withShadow, false, null);
|
||||
}
|
||||
|
||||
public static FavoriteImageDrawable getOrCreateSyncedIcon(Context a, int color) {
|
||||
return getOrCreate(a, color, false, true);
|
||||
return getOrCreate(a, color, false, true, null);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package net.osmand.plus.dashboard;
|
|||
|
||||
import android.graphics.Typeface;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
|
@ -74,6 +75,10 @@ public class DashFavoritesFragment extends DashLocationFragment {
|
|||
public void onFavoritesLoaded() {
|
||||
setupFavorites();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFavoriteAddressResolved(@NonNull FavouritePoint favouritePoint) {
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -263,13 +263,12 @@ public class DownloadFileHelper {
|
|||
mb = 1;
|
||||
}
|
||||
StringBuilder taskName = new StringBuilder();
|
||||
taskName.append(ctx.getString(R.string.shared_string_downloading)).append(": ");
|
||||
//+ de.baseName /*+ " " + mb + " MB"*/;
|
||||
taskName.append(FileNameTranslationHelper.getFileName(ctx, ctx.getRegions(), de.baseName));
|
||||
if (de.type != null) {
|
||||
taskName.append(" ").append(de.type.getString(ctx));
|
||||
}
|
||||
progress.startTask(taskName.toString(), len / 1024);
|
||||
progress.startTask(String.format(ctx.getString(R.string.shared_string_downloading_formatted), taskName.toString()), len / 1024);
|
||||
if (!de.zipStream) {
|
||||
copyFile(de, progress, fin, len, fin, de.fileToDownload);
|
||||
} else if(de.urlToDownload.contains(".gz")) {
|
||||
|
|
|
@ -447,7 +447,7 @@ public class DownloadIndexesThread {
|
|||
mainView.setKeepScreenOn(true);
|
||||
}
|
||||
}
|
||||
startTask(ctx.getString(R.string.shared_string_downloading) + ctx.getString(R.string.shared_string_ellipsis), -1);
|
||||
startTask(ctx.getString(R.string.shared_string_downloading), -1);
|
||||
downloadHasStarted();
|
||||
}
|
||||
|
||||
|
|
|
@ -80,7 +80,7 @@ public class DiscountHelper {
|
|||
public static void checkAndDisplay(final MapActivity mapActivity) {
|
||||
OsmandApplication app = mapActivity.getMyApplication();
|
||||
OsmandSettings settings = app.getSettings();
|
||||
if (settings.DO_NOT_SHOW_STARTUP_MESSAGES.get() || !settings.INAPPS_READ.get()) {
|
||||
if (settings.DO_NOT_SHOW_STARTUP_MESSAGES.get() || !settings.INAPPS_READ.get() || Version.isHuawei(app)) {
|
||||
return;
|
||||
}
|
||||
if (mBannerVisible) {
|
||||
|
|
|
@ -871,6 +871,14 @@ public class MapContextMenu extends MenuTitleController implements StateChangedL
|
|||
return R.string.shared_string_add;
|
||||
}
|
||||
|
||||
boolean isFavButtonEnabled() {
|
||||
MenuController menuController = getMenuController();
|
||||
if (menuController != null) {
|
||||
return menuController.isFavButtonEnabled();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public int getWaypointActionIconId() {
|
||||
return waypointActionIconId;
|
||||
}
|
||||
|
|
|
@ -561,12 +561,16 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo
|
|||
R.color.ctx_menu_buttons_icon_color));
|
||||
((TextView) view.findViewById(R.id.context_menu_fav_text_view)).setText(menu.getFavActionStringId());
|
||||
View favView = view.findViewById(R.id.context_menu_fav_view);
|
||||
favView.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
menu.buttonFavoritePressed();
|
||||
}
|
||||
});
|
||||
if (menu.isFavButtonEnabled()) {
|
||||
favView.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
menu.buttonFavoritePressed();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
deactivate(favView);
|
||||
}
|
||||
|
||||
final ImageView imageWaypoint = (ImageView) view.findViewById(R.id.context_menu_route_image_view);
|
||||
imageWaypoint.setImageDrawable(getIcon(menu.getWaypointActionIconId(),
|
||||
|
|
|
@ -504,6 +504,10 @@ public abstract class MenuController extends BaseMenuController implements Colla
|
|||
return R.string.shared_string_add;
|
||||
}
|
||||
|
||||
public boolean isFavButtonEnabled() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public int getWaypointActionIconId() {
|
||||
return R.drawable.map_action_flag_dark;
|
||||
}
|
||||
|
|
|
@ -143,6 +143,11 @@ public class FavouritePointMenuController extends MenuController {
|
|||
return R.string.shared_string_edit;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFavButtonEnabled() {
|
||||
return !fav.isPersonal();
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public String getTypeStr() {
|
||||
|
|
|
@ -17,7 +17,6 @@ import android.widget.LinearLayout;
|
|||
import net.osmand.AndroidUtils;
|
||||
import net.osmand.plus.FavouritesDbHelper;
|
||||
import net.osmand.GPXUtilities.GPXFile;
|
||||
import net.osmand.GPXUtilities.WptPt;
|
||||
import net.osmand.plus.UiUtilities;
|
||||
import net.osmand.plus.OsmandApplication;
|
||||
import net.osmand.plus.R;
|
||||
|
@ -86,7 +85,9 @@ public class SelectCategoryDialogFragment extends DialogFragment {
|
|||
} else {
|
||||
List<FavouritesDbHelper.FavoriteGroup> gs = helper.getFavoriteGroups();
|
||||
for (final FavouritesDbHelper.FavoriteGroup category : gs) {
|
||||
addCategory(activity, ll, category.name, category.color);
|
||||
if (!category.personal) {
|
||||
addCategory(activity, ll, category.name, category.color);
|
||||
}
|
||||
}
|
||||
}
|
||||
View itemView = activity.getLayoutInflater().inflate(R.layout.favorite_category_dialog_item, null);
|
||||
|
|
|
@ -3,6 +3,7 @@ package net.osmand.plus.mapcontextmenu.other;
|
|||
import android.app.Activity;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
|
@ -73,6 +74,10 @@ public class FavouritesBottomSheetMenuFragment extends MenuBottomSheetDialogFrag
|
|||
loadFavorites();
|
||||
adapter.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFavoriteAddressResolved(@NonNull FavouritePoint favouritePoint) {
|
||||
}
|
||||
});
|
||||
}
|
||||
recyclerView = new RecyclerView(getContext());
|
||||
|
@ -125,9 +130,9 @@ public class FavouritesBottomSheetMenuFragment extends MenuBottomSheetDialogFrag
|
|||
|
||||
private void loadFavorites() {
|
||||
favouritePoints.clear();
|
||||
favouritePoints.addAll(getMyApplication().getFavorites().getVisibleFavouritePoints());
|
||||
favouritePoints.addAll(getMyApplication().getFavorites().getNonPersonalVisibleFavouritePoints());
|
||||
if (favouritePoints.isEmpty()) {
|
||||
favouritePoints.addAll(getMyApplication().getFavorites().getFavouritePoints());
|
||||
favouritePoints.addAll(getMyApplication().getFavorites().getNonPersonalFavouritePoints());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -142,6 +147,7 @@ public class FavouritesBottomSheetMenuFragment extends MenuBottomSheetDialogFrag
|
|||
|
||||
private void selectFavorite(FavouritePoint point) {
|
||||
TargetPointsHelper targetPointsHelper = getMyApplication().getTargetPointsHelper();
|
||||
FavouritesDbHelper favorites = getMyApplication().getFavorites();
|
||||
LatLon ll = new LatLon(point.getLatitude(), point.getLongitude());
|
||||
switch (pointType) {
|
||||
case START:
|
||||
|
@ -154,10 +160,10 @@ public class FavouritesBottomSheetMenuFragment extends MenuBottomSheetDialogFrag
|
|||
targetPointsHelper.navigateToPoint(ll, true, targetPointsHelper.getIntermediatePoints().size(), point.getPointDescription());
|
||||
break;
|
||||
case HOME:
|
||||
targetPointsHelper.setHomePoint(ll, point.getPointDescription());
|
||||
favorites.setHomePoint(ll, null);
|
||||
break;
|
||||
case WORK:
|
||||
targetPointsHelper.setWorkPoint(ll, point.getPointDescription());
|
||||
favorites.setWorkPoint(ll, null);
|
||||
break;
|
||||
}
|
||||
MapRouteInfoMenu routeMenu = getMapRouteInfoMenu();
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
package net.osmand.plus.mapmarkers;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
|
||||
import net.osmand.data.FavouritePoint;
|
||||
import net.osmand.plus.FavouritesDbHelper;
|
||||
import net.osmand.plus.FavouritesDbHelper.FavoriteGroup;
|
||||
import net.osmand.plus.FavouritesDbHelper.FavoritesListener;
|
||||
|
@ -38,6 +40,10 @@ public class AddFavouritesGroupBottomSheetDialogFragment extends AddGroupBottomS
|
|||
adapter.notifyDataSetChanged();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFavoriteAddressResolved(@NonNull FavouritePoint favouritePoint) {
|
||||
}
|
||||
});
|
||||
}
|
||||
return new FavouritesGroupsAdapter(getContext(), favouritesDbHelper.getFavoriteGroups());
|
||||
|
|
|
@ -118,7 +118,13 @@ public class ParkingPositionPlugin extends OsmandPlugin {
|
|||
public long getStartParkingTime() {
|
||||
return parkingStartTime.get();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void disable(OsmandApplication app) {
|
||||
super.disable(app);
|
||||
app.getFavorites().deleteParkingPoint();
|
||||
}
|
||||
|
||||
public boolean clearParkingPosition() {
|
||||
parkingLat.resetToDefault();
|
||||
parkingLon.resetToDefault();
|
||||
|
@ -292,6 +298,7 @@ public class ParkingPositionPlugin extends OsmandPlugin {
|
|||
showDeleteEventWarning(activity);
|
||||
cancelParking();
|
||||
if (activity instanceof MapActivity) {
|
||||
app.getFavorites().deleteParkingPoint();
|
||||
((MapActivity) activity).getContextMenu().close();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -72,6 +72,7 @@ public class ParkingTypeBottomSheetDialogFragment extends MenuBottomSheetDialogF
|
|||
plugin.showContextMenuIfNeeded(mapActivity, true);
|
||||
mapActivity.refreshMap();
|
||||
}
|
||||
mapActivity.getMyApplication().getFavorites().setParkingPoint(plugin.getParkingPosition());
|
||||
}
|
||||
dismiss();
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ import android.app.Activity;
|
|||
import android.content.Intent;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Typeface;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v4.app.ActivityCompat;
|
||||
|
@ -25,6 +26,7 @@ import net.osmand.AndroidUtils;
|
|||
import net.osmand.Location;
|
||||
import net.osmand.data.FavouritePoint;
|
||||
import net.osmand.data.LatLon;
|
||||
import net.osmand.data.PersonalFavouritePoint;
|
||||
import net.osmand.data.PointDescription;
|
||||
import net.osmand.plus.FavouritesDbHelper;
|
||||
import net.osmand.plus.MapMarkersHelper;
|
||||
|
@ -35,6 +37,7 @@ import net.osmand.plus.R;
|
|||
import net.osmand.plus.TargetPointsHelper;
|
||||
import net.osmand.plus.TargetPointsHelper.TargetPoint;
|
||||
import net.osmand.plus.activities.MapActivity;
|
||||
import net.osmand.plus.base.FavoriteImageDrawable;
|
||||
import net.osmand.plus.base.MenuBottomSheetDialogFragment;
|
||||
import net.osmand.plus.base.bottomsheetmenu.BaseBottomSheetItem;
|
||||
import net.osmand.plus.base.bottomsheetmenu.HorizontalRecyclerBottomSheetItem;
|
||||
|
@ -248,12 +251,12 @@ public class AddPointBottomSheetDialog extends MenuBottomSheetDialogFragment {
|
|||
targetPointsHelper.navigateToPoint(ll, true, targetPointsHelper.getIntermediatePoints().size());
|
||||
break;
|
||||
case HOME:
|
||||
app.showShortToastMessage(R.string.add_intermediate_point);
|
||||
targetPointsHelper.setHomePoint(ll, null);
|
||||
app.showShortToastMessage(R.string.add_home);
|
||||
app.getFavorites().setHomePoint(ll, null);
|
||||
break;
|
||||
case WORK:
|
||||
app.showShortToastMessage(R.string.add_intermediate_point);
|
||||
targetPointsHelper.setWorkPoint(ll, null);
|
||||
app.showShortToastMessage(R.string.add_work);
|
||||
app.getFavorites().setWorkPoint(ll, null);
|
||||
break;
|
||||
}
|
||||
} else if (pointType == PointType.START) {
|
||||
|
@ -358,17 +361,12 @@ public class AddPointBottomSheetDialog extends MenuBottomSheetDialogFragment {
|
|||
|
||||
private void loadFavoritesItems(List<Object> items, FavouritesDbHelper helper) {
|
||||
items.clear();
|
||||
addMainScrollItems(items);
|
||||
addMainScrollItems(items, helper);
|
||||
items.addAll(helper.getVisibleFavouritePoints());
|
||||
if (items.isEmpty()) {
|
||||
items.addAll(helper.getFavouritePoints());
|
||||
}
|
||||
}
|
||||
|
||||
private void addMainScrollItems(List<Object> items) {
|
||||
private void addMainScrollItems(List<Object> items, FavouritesDbHelper favorites) {
|
||||
items.add(FAVORITES);
|
||||
items.add(PointType.HOME);
|
||||
items.add(PointType.WORK);
|
||||
}
|
||||
|
||||
private void createFavoritesScrollItem() {
|
||||
|
@ -381,16 +379,26 @@ public class AddPointBottomSheetDialog extends MenuBottomSheetDialogFragment {
|
|||
if (helper.isFavoritesLoaded()) {
|
||||
loadFavoritesItems(items, helper);
|
||||
} else {
|
||||
addMainScrollItems(items);
|
||||
addMainScrollItems(items, helper);
|
||||
helper.addListener(new FavouritesDbHelper.FavoritesListener() {
|
||||
@Override
|
||||
public void onFavoritesLoaded() {
|
||||
|
||||
private void reloadFavoritesItems() {
|
||||
MapActivity mapActivity = (MapActivity) getActivity();
|
||||
if (mapActivity != null) {
|
||||
loadFavoritesItems(adapter.getItems(), helper);
|
||||
adapter.notifyDataSetChanged();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFavoritesLoaded() {
|
||||
reloadFavoritesItems();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFavoriteAddressResolved(@NonNull FavouritePoint favouritePoint) {
|
||||
reloadFavoritesItems();
|
||||
}
|
||||
});
|
||||
}
|
||||
BaseBottomSheetItem scrollItem = new HorizontalRecyclerBottomSheetItem.Builder()
|
||||
|
@ -424,7 +432,7 @@ public class AddPointBottomSheetDialog extends MenuBottomSheetDialogFragment {
|
|||
dismiss();
|
||||
} else {
|
||||
TargetPointsHelper helper = mapActivity.getMyApplication().getTargetPointsHelper();
|
||||
Pair<LatLon, PointDescription> pair = getLocationAndDescrFromItem(item, helper);
|
||||
Pair<LatLon, PointDescription> pair = getLocationAndDescrFromItem(item);
|
||||
LatLon ll = pair.first;
|
||||
PointDescription name = pair.second;
|
||||
if (ll == null) {
|
||||
|
@ -434,6 +442,7 @@ public class AddPointBottomSheetDialog extends MenuBottomSheetDialogFragment {
|
|||
dismiss();
|
||||
}
|
||||
} else {
|
||||
FavouritesDbHelper favorites = requiredMyApplication().getFavorites();
|
||||
switch (pointType) {
|
||||
case START:
|
||||
helper.setStartPoint(ll, true, name);
|
||||
|
@ -444,6 +453,15 @@ public class AddPointBottomSheetDialog extends MenuBottomSheetDialogFragment {
|
|||
case INTERMEDIATE:
|
||||
helper.navigateToPoint(ll, true, helper.getIntermediatePoints().size(), name);
|
||||
break;
|
||||
case HOME:
|
||||
favorites.setHomePoint(ll, null);
|
||||
break;
|
||||
case WORK:
|
||||
favorites.setWorkPoint(ll, null);
|
||||
break;
|
||||
case PARKING:
|
||||
favorites.setParkingPoint(ll);
|
||||
break;
|
||||
}
|
||||
dismiss();
|
||||
}
|
||||
|
@ -452,7 +470,7 @@ public class AddPointBottomSheetDialog extends MenuBottomSheetDialogFragment {
|
|||
};
|
||||
}
|
||||
|
||||
private Pair<LatLon, PointDescription> getLocationAndDescrFromItem(Object item, TargetPointsHelper helper) {
|
||||
private Pair<LatLon, PointDescription> getLocationAndDescrFromItem(Object item) {
|
||||
PointDescription name = null;
|
||||
LatLon ll = null;
|
||||
if (item instanceof FavouritePoint) {
|
||||
|
@ -460,15 +478,21 @@ public class AddPointBottomSheetDialog extends MenuBottomSheetDialogFragment {
|
|||
ll = new LatLon(point.getLatitude(), point.getLongitude());
|
||||
name = point.getPointDescription();
|
||||
} else if (item instanceof PointType) {
|
||||
TargetPoint point = null;
|
||||
if (item == PointType.HOME) {
|
||||
point = helper.getHomePoint();
|
||||
} else if (item == PointType.WORK) {
|
||||
point = helper.getWorkPoint();
|
||||
}
|
||||
if (point != null) {
|
||||
ll = new LatLon(point.getLatitude(), point.getLongitude());
|
||||
name = point.getOriginalPointDescription();
|
||||
MapActivity mapActivity = (MapActivity) getActivity();
|
||||
if (mapActivity != null) {
|
||||
FavouritesDbHelper favorites = mapActivity.getMyApplication().getFavorites();
|
||||
FavouritePoint point = null;
|
||||
if (item == PointType.HOME) {
|
||||
point = favorites.getHomePoint();
|
||||
} else if (item == PointType.WORK) {
|
||||
point = favorites.getWorkPoint();
|
||||
} else if (item == PointType.PARKING) {
|
||||
point = favorites.getParkingPoint();
|
||||
}
|
||||
if (point != null) {
|
||||
ll = new LatLon(point.getLatitude(), point.getLongitude());
|
||||
name = point.getPointDescription();
|
||||
}
|
||||
}
|
||||
}
|
||||
return new Pair<>(ll, name);
|
||||
|
@ -583,8 +607,11 @@ public class AddPointBottomSheetDialog extends MenuBottomSheetDialogFragment {
|
|||
|
||||
private class FavoritesItemsAdapter extends ScrollItemsAdapter {
|
||||
|
||||
private FavouritesDbHelper favorites;
|
||||
|
||||
FavoritesItemsAdapter(OsmandApplication app, List<Object> items) {
|
||||
super(app, items);
|
||||
favorites = app.getFavorites();
|
||||
}
|
||||
|
||||
@NonNull
|
||||
|
@ -618,21 +645,15 @@ public class AddPointBottomSheetDialog extends MenuBottomSheetDialogFragment {
|
|||
favoriteViewHolder.icon.setImageDrawable(getContentIcon(R.drawable.ic_action_fav_dark));
|
||||
favoriteViewHolder.description.setVisibility(View.GONE);
|
||||
} else {
|
||||
if (item instanceof PointType) {
|
||||
final TargetPointsHelper helper = app.getTargetPointsHelper();
|
||||
TargetPoint point = null;
|
||||
if (item == PointType.HOME) {
|
||||
point = helper.getHomePoint();
|
||||
favoriteViewHolder.title.setText(getString(R.string.home_button));
|
||||
favoriteViewHolder.icon.setImageDrawable(getContentIcon(R.drawable.ic_action_home_dark));
|
||||
} else if (item == PointType.WORK) {
|
||||
point = helper.getWorkPoint();
|
||||
favoriteViewHolder.title.setText(getString(R.string.work_button));
|
||||
favoriteViewHolder.icon.setImageDrawable(getContentIcon(R.drawable.ic_action_work));
|
||||
}
|
||||
favoriteViewHolder.description.setText(point != null ? point.getPointDescription(app).getSimpleName(app, false) : getString(R.string.shared_string_add));
|
||||
if (item instanceof PersonalFavouritePoint) {
|
||||
PersonalFavouritePoint point = (PersonalFavouritePoint) item;
|
||||
boolean light = app.getSettings().isLightContent();
|
||||
int iconColor = light ? R.color.icon_color_default_light : R.color.icon_color_default_dark;
|
||||
favoriteViewHolder.icon.setImageDrawable(app.getUIUtilities().getIcon(point.getType().getIconId(), iconColor));
|
||||
favoriteViewHolder.title.setText(point.getName());
|
||||
favoriteViewHolder.description.setText(point.getDescription());
|
||||
} else if (item instanceof FavouritePoint) {
|
||||
FavouritePoint point = (FavouritePoint) getItem(position);
|
||||
FavouritePoint point = (FavouritePoint) item;
|
||||
favoriteViewHolder.title.setText(point.getName());
|
||||
if (point.getCategory().equals("")) {
|
||||
favoriteViewHolder.description.setText(R.string.shared_string_favorites);
|
||||
|
|
|
@ -19,6 +19,7 @@ import android.support.transition.Transition;
|
|||
import android.support.transition.TransitionListenerAdapter;
|
||||
import android.support.transition.TransitionManager;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v7.widget.AppCompatImageView;
|
||||
import android.view.View;
|
||||
|
@ -39,10 +40,13 @@ import net.osmand.PlatformUtil;
|
|||
import net.osmand.StateChangedListener;
|
||||
import net.osmand.ValueHolder;
|
||||
import net.osmand.binary.RouteDataObject;
|
||||
import net.osmand.data.FavouritePoint;
|
||||
import net.osmand.data.LatLon;
|
||||
import net.osmand.data.PointDescription;
|
||||
import net.osmand.data.RotatedTileBox;
|
||||
import net.osmand.plus.ApplicationMode;
|
||||
import net.osmand.plus.FavouritesDbHelper;
|
||||
import net.osmand.plus.FavouritesDbHelper.FavoritesListener;
|
||||
import net.osmand.plus.GeocodingLookupService;
|
||||
import net.osmand.plus.GeocodingLookupService.AddressLookupRequest;
|
||||
import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile;
|
||||
|
@ -115,7 +119,7 @@ import java.util.Set;
|
|||
import java.util.Stack;
|
||||
import java.util.TreeMap;
|
||||
|
||||
public class MapRouteInfoMenu implements IRouteInformationListener, CardListener {
|
||||
public class MapRouteInfoMenu implements IRouteInformationListener, CardListener, FavoritesListener {
|
||||
|
||||
private static final Log LOG = PlatformUtil.getLog(MapRouteInfoMenu.class);
|
||||
|
||||
|
@ -183,7 +187,8 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener
|
|||
TARGET,
|
||||
INTERMEDIATE,
|
||||
HOME,
|
||||
WORK
|
||||
WORK,
|
||||
PARKING
|
||||
}
|
||||
|
||||
public MapRouteInfoMenu() {
|
||||
|
@ -209,7 +214,6 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener
|
|||
app = mapActivity.getMyApplication();
|
||||
portraitMode = AndroidUiHelper.isOrientationPortrait(mapActivity);
|
||||
animationsHandler = new Handler();
|
||||
mapActivity.getMyApplication().getRoutingHelper().addListener(this);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -261,6 +265,7 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener
|
|||
LatLon latlon = tileBox.getLatLonFromPixel(point.x, point.y);
|
||||
selectFromMapTouch = false;
|
||||
TargetPointsHelper targets = app.getTargetPointsHelper();
|
||||
FavouritesDbHelper favorites = app.getFavorites();
|
||||
switch (selectFromMapPointType) {
|
||||
case START:
|
||||
targets.setStartPoint(latlon, true, null);
|
||||
|
@ -272,10 +277,10 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener
|
|||
targets.navigateToPoint(latlon, true, targets.getIntermediatePoints().size());
|
||||
break;
|
||||
case HOME:
|
||||
targets.setHomePoint(latlon, null);
|
||||
favorites.setHomePoint(latlon, null);
|
||||
break;
|
||||
case WORK:
|
||||
targets.setWorkPoint(latlon, null);
|
||||
favorites.setWorkPoint(latlon, null);
|
||||
break;
|
||||
}
|
||||
if (selectFromMapWaypoints) {
|
||||
|
@ -1782,10 +1787,11 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener
|
|||
hide();
|
||||
}
|
||||
|
||||
public void selectAddress(String name, LatLon l, PointType pointType) {
|
||||
public void selectAddress(@Nullable String name, @NonNull LatLon l, PointType pointType) {
|
||||
MapActivity mapActivity = getMapActivity();
|
||||
if (mapActivity != null) {
|
||||
PointDescription pd = new PointDescription(PointDescription.POINT_TYPE_ADDRESS, name);
|
||||
FavouritesDbHelper favorites = mapActivity.getMyApplication().getFavorites();
|
||||
TargetPointsHelper targets = mapActivity.getMyApplication().getTargetPointsHelper();
|
||||
switch (pointType) {
|
||||
case START:
|
||||
|
@ -1798,10 +1804,10 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener
|
|||
targets.navigateToPoint(l, true, targets.getIntermediatePoints().size(), pd);
|
||||
break;
|
||||
case HOME:
|
||||
targets.setHomePoint(l, pd);
|
||||
favorites.setHomePoint(l, name);
|
||||
break;
|
||||
case WORK:
|
||||
targets.setWorkPoint(l, pd);
|
||||
favorites.setWorkPoint(l, name);
|
||||
break;
|
||||
}
|
||||
updateMenu();
|
||||
|
@ -1845,6 +1851,7 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener
|
|||
if (mapActivity != null) {
|
||||
if (m != null) {
|
||||
LatLon point = new LatLon(m.getLatitude(), m.getLongitude());
|
||||
FavouritesDbHelper favorites = mapActivity.getMyApplication().getFavorites();
|
||||
TargetPointsHelper targets = mapActivity.getMyApplication().getTargetPointsHelper();
|
||||
switch (pointType) {
|
||||
case START:
|
||||
|
@ -1857,10 +1864,10 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener
|
|||
targets.navigateToPoint(point, true, targets.getIntermediatePoints().size(), m.getPointDescription(mapActivity));
|
||||
break;
|
||||
case HOME:
|
||||
targets.setHomePoint(point, m.getPointDescription(mapActivity));
|
||||
favorites.setHomePoint(point, null);
|
||||
break;
|
||||
case WORK:
|
||||
targets.setWorkPoint(point, m.getPointDescription(mapActivity));
|
||||
favorites.setWorkPoint(point, null);
|
||||
break;
|
||||
}
|
||||
updateMenu();
|
||||
|
@ -2098,6 +2105,25 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener
|
|||
public void routeWasFinished() {
|
||||
}
|
||||
|
||||
public void onResume(Fragment fragment) {
|
||||
OsmandApplication app = getApp();
|
||||
if (app != null) {
|
||||
app.getRoutingHelper().addListener(this);
|
||||
app.getFavorites().addListener(this);
|
||||
}
|
||||
addTargetPointListener();
|
||||
}
|
||||
|
||||
public void onPause(Fragment fragment) {
|
||||
OsmandApplication app = getApp();
|
||||
if (app != null) {
|
||||
app.getRoutingHelper().removeListener(this);
|
||||
app.getFavorites().removeListener(this);
|
||||
}
|
||||
removeTargetPointListener();
|
||||
menuCards = new ArrayList<>();
|
||||
}
|
||||
|
||||
public void onDismiss(Fragment fragment, int currentMenuState, Bundle arguments, boolean backPressed) {
|
||||
MapActivity mapActivity = getMapActivity();
|
||||
if (mapActivity != null) {
|
||||
|
@ -2122,7 +2148,6 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener
|
|||
if (onDismissListener != null) {
|
||||
onDismissListener.onDismiss(null);
|
||||
}
|
||||
removeTargetPointListener();
|
||||
} else if (fragment instanceof ChooseRouteFragment) {
|
||||
routeSelected = true;
|
||||
MapRouteMenuStateHolder holder = new MapRouteMenuStateHolder(MapRouteMenuType.ROUTE_DETAILS, currentMenuState, fragment.getArguments());
|
||||
|
@ -2201,12 +2226,6 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener
|
|||
if (fragmentRef != null) {
|
||||
fragmentRef.get().dismiss();
|
||||
}
|
||||
OsmandApplication app = getApp();
|
||||
if (app != null) {
|
||||
app.getRoutingHelper().removeListener(this);
|
||||
}
|
||||
removeTargetPointListener();
|
||||
menuCards = new ArrayList<>();
|
||||
}
|
||||
|
||||
public boolean needShowMenu() {
|
||||
|
@ -2223,6 +2242,15 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener
|
|||
return menuBackStack.empty() ? 0 : menuBackStack.peek().getButtonImage();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFavoritesLoaded() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFavoriteAddressResolved(@NonNull FavouritePoint favouritePoint) {
|
||||
updateMenu();
|
||||
}
|
||||
|
||||
public enum MapRouteMenuType {
|
||||
ROUTE_INFO,
|
||||
ROUTE_DETAILS
|
||||
|
|
|
@ -159,13 +159,16 @@ public class MapRouteInfoMenuFragment extends ContextMenuFragment {
|
|||
updateRouteCalculationProgress(0);
|
||||
}
|
||||
}
|
||||
menu.addTargetPointListener();
|
||||
menu.onResume(this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
if (menu != null) {
|
||||
menu.onPause(this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -3,9 +3,11 @@ package net.osmand.plus.routepreparationmenu.cards;
|
|||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
|
||||
import net.osmand.data.FavouritePoint;
|
||||
import net.osmand.data.LatLon;
|
||||
import net.osmand.plus.FavouritesDbHelper;
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.TargetPointsHelper;
|
||||
import net.osmand.plus.TargetPointsHelper.TargetPoint;
|
||||
import net.osmand.plus.activities.MapActivity;
|
||||
import net.osmand.plus.routepreparationmenu.AddPointBottomSheetDialog;
|
||||
import net.osmand.plus.routepreparationmenu.MapRouteInfoMenu.PointType;
|
||||
|
@ -24,15 +26,14 @@ public class HomeWorkCard extends BaseCard {
|
|||
@Override
|
||||
protected void updateContent() {
|
||||
final TargetPointsHelper targetPointsHelper = mapActivity.getMyApplication().getTargetPointsHelper();
|
||||
final TargetPoint homePoint = targetPointsHelper.getHomePoint();
|
||||
final TargetPoint workPoint = targetPointsHelper.getWorkPoint();
|
||||
final FavouritesDbHelper favorites = getMyApplication().getFavorites();
|
||||
final FavouritePoint homePoint = favorites.getHomePoint();
|
||||
final FavouritePoint workPoint = favorites.getWorkPoint();
|
||||
|
||||
TextView homeDescr = (TextView) view.findViewById(R.id.home_button_descr);
|
||||
final TextView workDescr = (TextView) view.findViewById(R.id.work_button_descr);
|
||||
homeDescr.setText(homePoint != null ? homePoint.getPointDescription(mapActivity).getSimpleName(mapActivity, false) :
|
||||
mapActivity.getString(R.string.shared_string_add));
|
||||
workDescr.setText(workPoint != null ? workPoint.getPointDescription(mapActivity).getSimpleName(mapActivity, false) :
|
||||
mapActivity.getString(R.string.shared_string_add));
|
||||
TextView homeDescr = view.findViewById(R.id.home_button_descr);
|
||||
final TextView workDescr = view.findViewById(R.id.work_button_descr);
|
||||
homeDescr.setText(homePoint != null ? homePoint.getDescription() : mapActivity.getString(R.string.shared_string_add));
|
||||
workDescr.setText(workPoint != null ? workPoint.getDescription() : mapActivity.getString(R.string.shared_string_add));
|
||||
|
||||
View homeButton = view.findViewById(R.id.home_button);
|
||||
homeButton.setOnClickListener(new View.OnClickListener() {
|
||||
|
@ -41,7 +42,8 @@ public class HomeWorkCard extends BaseCard {
|
|||
if (homePoint == null) {
|
||||
AddPointBottomSheetDialog.showInstance(mapActivity, PointType.HOME);
|
||||
} else {
|
||||
targetPointsHelper.navigateToPoint(homePoint.point, true, -1, homePoint.getOriginalPointDescription());
|
||||
targetPointsHelper.navigateToPoint(new LatLon(homePoint.getLatitude(), homePoint.getLongitude()),
|
||||
true, -1, homePoint.getPointDescription());
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -60,7 +62,8 @@ public class HomeWorkCard extends BaseCard {
|
|||
if (workPoint == null) {
|
||||
AddPointBottomSheetDialog.showInstance(mapActivity, PointType.WORK);
|
||||
} else {
|
||||
targetPointsHelper.navigateToPoint(workPoint.point, true, -1, workPoint.getOriginalPointDescription());
|
||||
targetPointsHelper.navigateToPoint(new LatLon(workPoint.getLatitude(), workPoint.getLongitude()),
|
||||
true, -1, workPoint.getPointDescription());
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
@ -270,9 +270,16 @@ public abstract class QuickSearchListFragment extends OsmAndListFragment {
|
|||
OsmandApplication app = mapActivity.getMyApplication();
|
||||
QuickSearchType searchType = dialogFragment.getSearchType();
|
||||
if (searchType.isTargetPoint()) {
|
||||
mapActivity.getMapLayers().getMapControlsLayer().selectAddress(
|
||||
pointDescription != null ? pointDescription.getName() : null,
|
||||
latitude, longitude, searchType);
|
||||
String name = null;
|
||||
if (pointDescription != null) {
|
||||
String typeName = pointDescription.getTypeName();
|
||||
if (!Algorithms.isEmpty(typeName)) {
|
||||
name = mapActivity.getString(R.string.street_city, pointDescription.getName(), typeName);
|
||||
} else {
|
||||
name = pointDescription.getName();
|
||||
}
|
||||
}
|
||||
mapActivity.getMapLayers().getMapControlsLayer().selectAddress(name, latitude, longitude, searchType);
|
||||
|
||||
dialogFragment.dismiss();
|
||||
mapActivity.getMapLayers().getMapControlsLayer().showRouteInfoMenu();
|
||||
|
|
|
@ -1286,7 +1286,7 @@ public class MapControlsLayer extends OsmandMapLayer {
|
|||
break;
|
||||
}
|
||||
if (pointType != null) {
|
||||
mapRouteInfoMenu.selectAddress(name != null ? name : "", new LatLon(latitude, longitude), pointType);
|
||||
mapRouteInfoMenu.selectAddress(name, new LatLon(latitude, longitude), pointType);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -109,7 +109,7 @@ public class TravelDownloadUpdateCard extends BaseTravelCard {
|
|||
@NonNull
|
||||
private String getTitle(boolean loading) {
|
||||
if (loading) {
|
||||
return app.getString(R.string.shared_string_downloading) + "...";
|
||||
return app.getString(R.string.shared_string_downloading);
|
||||
}
|
||||
return app.getString(download ? R.string.download_file : R.string.update_is_available);
|
||||
}
|
||||
|
|