commit
864da5da79
100 changed files with 2139 additions and 969 deletions
201
OsmAnd/res/layout/send_gpx_fragment.xml
Normal file
201
OsmAnd/res/layout/send_gpx_fragment.xml
Normal file
|
@ -0,0 +1,201 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:osmand="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:paddingStart="@dimen/content_padding"
|
||||||
|
android:paddingLeft="@dimen/content_padding"
|
||||||
|
android:paddingTop="@dimen/bottom_sheet_content_margin"
|
||||||
|
android:paddingEnd="@dimen/content_padding"
|
||||||
|
android:paddingRight="@dimen/content_padding">
|
||||||
|
|
||||||
|
<net.osmand.plus.widgets.TextViewEx
|
||||||
|
android:id="@+id/title"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginBottom="16dp"
|
||||||
|
android:letterSpacing="@dimen/text_button_letter_spacing"
|
||||||
|
android:text="@string/send_files_to_openstreetmap"
|
||||||
|
android:textSize="@dimen/default_list_text_size"
|
||||||
|
osmand:typeface="@string/font_roboto_medium" />
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
android:id="@+id/message_label"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginBottom="@dimen/bottom_sheet_content_margin"
|
||||||
|
android:hint="@string/shared_string_description"
|
||||||
|
app:boxStrokeColor="@color/osmand_orange"
|
||||||
|
app:hintTextColor="@color/text_color_secondary_light">
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputEditText
|
||||||
|
android:id="@+id/message_field"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:imeOptions="actionDone" />
|
||||||
|
|
||||||
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
android:id="@+id/tags_label"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginBottom="@dimen/bottom_sheet_content_margin"
|
||||||
|
android:hint="@string/gpx_tags_txt"
|
||||||
|
app:boxStrokeColor="@color/osmand_orange"
|
||||||
|
app:helperText="@string/enter_text_separated"
|
||||||
|
app:helperTextEnabled="true"
|
||||||
|
app:hintTextColor="@color/text_color_secondary_light">
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputEditText
|
||||||
|
android:id="@+id/tags_field"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:imeOptions="actionDone"
|
||||||
|
android:text="osmand" />
|
||||||
|
|
||||||
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="1dp"
|
||||||
|
android:background="?attr/dashboard_divider" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<net.osmand.plus.widgets.TextViewEx
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:letterSpacing="@dimen/description_letter_spacing"
|
||||||
|
android:paddingLeft="@dimen/content_padding"
|
||||||
|
android:paddingTop="@dimen/context_menu_first_line_top_margin"
|
||||||
|
android:paddingRight="@dimen/content_padding"
|
||||||
|
android:paddingBottom="@dimen/context_menu_first_line_top_margin"
|
||||||
|
android:text="@string/gpx_visibility_txt"
|
||||||
|
android:textColor="?android:textColorPrimary"
|
||||||
|
android:textSize="@dimen/default_desc_text_size"
|
||||||
|
osmand:typeface="@string/font_roboto_regular" />
|
||||||
|
|
||||||
|
<net.osmand.plus.widgets.TextViewEx
|
||||||
|
android:id="@+id/visibility_name"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="end"
|
||||||
|
android:letterSpacing="@dimen/description_letter_spacing"
|
||||||
|
android:paddingLeft="@dimen/content_padding"
|
||||||
|
android:paddingTop="@dimen/context_menu_first_line_top_margin"
|
||||||
|
android:paddingRight="@dimen/content_padding"
|
||||||
|
android:paddingBottom="@dimen/context_menu_first_line_top_margin"
|
||||||
|
android:textColor="?android:textColorSecondary"
|
||||||
|
android:textSize="@dimen/default_desc_text_size"
|
||||||
|
osmand:typeface="@string/font_roboto_medium"
|
||||||
|
tools:text="@string/gpx_visibility_txt" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
|
android:id="@+id/description_view"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:clipToPadding="false"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:paddingStart="@dimen/content_padding"
|
||||||
|
android:paddingLeft="@dimen/content_padding"
|
||||||
|
android:paddingEnd="@dimen/content_padding"
|
||||||
|
android:paddingRight="@dimen/content_padding"
|
||||||
|
tools:itemCount="4"
|
||||||
|
tools:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
|
||||||
|
tools:listitem="@layout/point_editor_icon_category_item"
|
||||||
|
tools:orientation="horizontal" />
|
||||||
|
|
||||||
|
<net.osmand.plus.widgets.TextViewEx
|
||||||
|
android:id="@+id/visibility_description"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:letterSpacing="@dimen/description_letter_spacing"
|
||||||
|
android:paddingLeft="@dimen/content_padding"
|
||||||
|
android:paddingTop="@dimen/context_menu_first_line_top_margin"
|
||||||
|
android:paddingRight="@dimen/content_padding"
|
||||||
|
android:paddingBottom="@dimen/context_menu_first_line_top_margin"
|
||||||
|
android:textColor="?android:textColorPrimary"
|
||||||
|
android:textSize="@dimen/default_desc_text_size"
|
||||||
|
osmand:typeface="@string/font_roboto_regular" />
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="1dp"
|
||||||
|
android:background="?attr/dashboard_divider" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/account_block"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:minHeight="@dimen/context_menu_buttons_bottom_height"
|
||||||
|
tools:background="?android:attr/selectableItemBackground">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
|
android:id="@android:id/icon"
|
||||||
|
android:layout_width="@dimen/standard_icon_size"
|
||||||
|
android:layout_height="@dimen/standard_icon_size"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:layout_marginStart="@dimen/content_padding"
|
||||||
|
android:layout_marginLeft="@dimen/content_padding"
|
||||||
|
android:layout_marginTop="@dimen/bottom_sheet_icon_margin"
|
||||||
|
android:layout_marginEnd="@dimen/content_padding"
|
||||||
|
android:layout_marginRight="@dimen/bottom_sheet_icon_margin_large"
|
||||||
|
android:layout_marginBottom="@dimen/bottom_sheet_icon_margin"
|
||||||
|
android:tint="@color/active_buttons_and_links_text_disabled_light"
|
||||||
|
osmand:srcCompat="@drawable/ic_action_user_account" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center_vertical"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:paddingStart="@dimen/content_padding"
|
||||||
|
android:paddingLeft="@dimen/content_padding"
|
||||||
|
android:paddingEnd="@dimen/content_padding"
|
||||||
|
android:paddingRight="@dimen/content_padding">
|
||||||
|
|
||||||
|
<net.osmand.plus.widgets.TextViewEx
|
||||||
|
android:id="@+id/account_name"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:ellipsize="marquee"
|
||||||
|
android:letterSpacing="@dimen/text_button_letter_spacing"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:text="@string/login_account"
|
||||||
|
android:textColor="?android:textColorPrimary"
|
||||||
|
android:textSize="@dimen/default_list_text_size"
|
||||||
|
osmand:typeface="@string/font_roboto_regular" />
|
||||||
|
|
||||||
|
<net.osmand.plus.widgets.TextViewEx
|
||||||
|
android:id="@+id/user_name"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:letterSpacing="@dimen/description_letter_spacing"
|
||||||
|
android:maxLines="4"
|
||||||
|
android:textColor="?android:textColorSecondary"
|
||||||
|
android:textSize="@dimen/default_desc_text_size"
|
||||||
|
osmand:typeface="@string/font_roboto_regular" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
|
@ -1,76 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:layout_width="fill_parent"
|
|
||||||
android:layout_height="fill_parent"
|
|
||||||
android:stretchColumns="1">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/DescriptionTextTop"
|
|
||||||
android:textSize="@dimen/default_list_text_size_large"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginBottom="5dp"
|
|
||||||
android:layout_marginLeft="5dp"
|
|
||||||
android:gravity="center_horizontal"
|
|
||||||
android:text="@string/send_files_to_osm"
|
|
||||||
android:layout_marginStart="5dp" />
|
|
||||||
|
|
||||||
<TableRow android:layout_width="fill_parent">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/TextView"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginLeft="5dp"
|
|
||||||
android:text="@string/shared_string_description"
|
|
||||||
android:layout_marginStart="5dp" />
|
|
||||||
|
|
||||||
<EditText
|
|
||||||
android:id="@+id/memory_size"
|
|
||||||
android:layout_width="fill_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginLeft="5dp"
|
|
||||||
android:layout_marginRight="5dp"
|
|
||||||
android:minLines="3"
|
|
||||||
android:text=""
|
|
||||||
android:layout_marginStart="5dp"
|
|
||||||
android:layout_marginEnd="5dp" />
|
|
||||||
</TableRow>
|
|
||||||
|
|
||||||
<TableRow android:layout_width="fill_parent">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginLeft="5dp"
|
|
||||||
android:text="@string/gpx_tags_txt"
|
|
||||||
android:layout_marginStart="5dp" />
|
|
||||||
|
|
||||||
<EditText
|
|
||||||
android:id="@+id/TagsText"
|
|
||||||
android:layout_width="fill_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginLeft="5dp"
|
|
||||||
android:layout_marginRight="5dp"
|
|
||||||
android:text="osmand"
|
|
||||||
android:layout_marginEnd="5dp"
|
|
||||||
android:layout_marginStart="5dp" />
|
|
||||||
</TableRow>
|
|
||||||
|
|
||||||
<TableRow android:layout_width="fill_parent">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginLeft="5dp"
|
|
||||||
android:text="@string/gpx_visibility_txt"
|
|
||||||
android:layout_marginStart="5dp" />
|
|
||||||
|
|
||||||
<Spinner
|
|
||||||
android:id="@+id/Visibility"
|
|
||||||
android:layout_width="fill_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginLeft="5dp"
|
|
||||||
android:layout_marginRight="5dp"
|
|
||||||
android:layout_marginEnd="5dp"
|
|
||||||
android:layout_marginStart="5dp" />
|
|
||||||
</TableRow>
|
|
||||||
|
|
||||||
|
|
||||||
</TableLayout>
|
|
File diff suppressed because it is too large
Load diff
|
@ -3117,7 +3117,7 @@
|
||||||
<string name="utm_format_descr">يستخدم أوسماند تنسيق UTM وهو مشابه ولكن غير مطابق لتنسيق UTM الناتو.</string>
|
<string name="utm_format_descr">يستخدم أوسماند تنسيق UTM وهو مشابه ولكن غير مطابق لتنسيق UTM الناتو.</string>
|
||||||
<string name="shared_string_example">مثال</string>
|
<string name="shared_string_example">مثال</string>
|
||||||
<string name="navigate_point_format_utm">معيار الإحداثيات</string>
|
<string name="navigate_point_format_utm">معيار الإحداثيات</string>
|
||||||
<string name="navigate_point_format_olc">فتح رمز الموقع</string>
|
<string name="navigate_point_format_olc">رمز الموقع المفتوح (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="pref_selected_by_default_for_profiles">يتم تحديد هذا الاعداد بشكل افتراضي للأوضاع: %s</string>
|
||||||
<string name="change_default_settings">تغيير الإعدادات</string>
|
<string name="change_default_settings">تغيير الإعدادات</string>
|
||||||
|
@ -3658,15 +3658,15 @@
|
||||||
<string name="osmand_purchases_item">مشتريات أوسماند</string>
|
<string name="osmand_purchases_item">مشتريات أوسماند</string>
|
||||||
<string name="legend_item_description">دليل رموز الخريطة.</string>
|
<string name="legend_item_description">دليل رموز الخريطة.</string>
|
||||||
<string name="navigation_profiles_item">أوضاع الملاحة</string>
|
<string name="navigation_profiles_item">أوضاع الملاحة</string>
|
||||||
<string name="release_3_7">• خرائط جديدة للمنحدرات غير المتصلة بالإنترنت
|
<string name="release_3_7">• خرائط جديدة للتضاريس توضح المنحدرات من دون الحاجة للاتصال بالإنترنت
|
||||||
\n
|
\n
|
||||||
\n • التخصيص الكامل للمفضلات ونقاط الطرق GPX - الألوان المخصصة والأيقونات والأشكال
|
\n • التخصيص الكامل للمفضلات ونقاط الطرق GPX - الألوان المخصصة والأيقونات والأشكال
|
||||||
\n
|
\n
|
||||||
\n • تخصيص ترتيب العناصر في قائمة السياق ، تكوين الخريطة ، درج
|
\n • تخصيص ترتيب العناصر في قائمة السياق ، تكوين الخريطة ، درج
|
||||||
\n
|
\n
|
||||||
\n • ويكيبيديا كطبقة منفصلة في تكوين الخريطة ، حدد اللغات المطلوبة فقط
|
\n • عرض ويكيبيديا كطبقة منفصلة في تكوين الخريطة ، حدد اللغات المطلوبة فقط
|
||||||
\n
|
\n
|
||||||
\n • إنشاء مرشح / خرائط POI الخاصة بك مع مرونة تامة
|
\n • إنشاء مرشح / خرائط للمعالم الخاصة بك مع مرونة تامة
|
||||||
\n
|
\n
|
||||||
\n • تمت إضافة خيارات لاستعادة إعدادات الأوضاع المخصصة
|
\n • تمت إضافة خيارات لاستعادة إعدادات الأوضاع المخصصة
|
||||||
\n
|
\n
|
||||||
|
@ -3674,7 +3674,7 @@
|
||||||
\n
|
\n
|
||||||
\n • إصلاح أحجام واجهة المستخدم على الأجهزة اللوحية
|
\n • إصلاح أحجام واجهة المستخدم على الأجهزة اللوحية
|
||||||
\n
|
\n
|
||||||
\n • إصلاح الخلل مع RTL
|
\n • إصلاح الخلل مع اللغات التي تكتب من اليمين
|
||||||
\n
|
\n
|
||||||
\n</string>
|
\n</string>
|
||||||
<string name="shared_string_resume">إستئناف</string>
|
<string name="shared_string_resume">إستئناف</string>
|
||||||
|
@ -3683,7 +3683,7 @@
|
||||||
<string name="quick_action_transport_show">إظهار وسائل النقل العام</string>
|
<string name="quick_action_transport_show">إظهار وسائل النقل العام</string>
|
||||||
<string name="quick_action_show_hide_transport">إظهار/إخفاء وسائل النقل العام</string>
|
<string name="quick_action_show_hide_transport">إظهار/إخفاء وسائل النقل العام</string>
|
||||||
<string name="quick_action_transport_descr">زر لإظهار أو إخفاء وسائل النقل العام على الخريطة.</string>
|
<string name="quick_action_transport_descr">زر لإظهار أو إخفاء وسائل النقل العام على الخريطة.</string>
|
||||||
<string name="create_edit_poi">إنشاء /تحرير POI</string>
|
<string name="create_edit_poi">إنشاء /تحرير موضع مكان</string>
|
||||||
<string name="parking_positions">مكان الموقف</string>
|
<string name="parking_positions">مكان الموقف</string>
|
||||||
<string name="add_edit_favorite">إضافة / تحرير المفضلة</string>
|
<string name="add_edit_favorite">إضافة / تحرير المفضلة</string>
|
||||||
<string name="reset_deafult_order">استعادة ترتيب العناصر الافتراضية</string>
|
<string name="reset_deafult_order">استعادة ترتيب العناصر الافتراضية</string>
|
||||||
|
@ -3940,4 +3940,13 @@
|
||||||
<string name="subscription_expired_title">انتهت صلاحية اشتراك OsmAnd Live</string>
|
<string name="subscription_expired_title">انتهت صلاحية اشتراك OsmAnd Live</string>
|
||||||
<string name="subscription_paused_title">تم إيقاف اشتراك OsmAnd Live مؤقتًا</string>
|
<string name="subscription_paused_title">تم إيقاف اشتراك OsmAnd Live مؤقتًا</string>
|
||||||
<string name="subscription_on_hold_title">اشتراك OsmAnd Live معلق</string>
|
<string name="subscription_on_hold_title">اشتراك OsmAnd Live معلق</string>
|
||||||
|
<string name="login_open_street_map">تسجيل الدخول إلى خريطة الشارع المفتوح</string>
|
||||||
|
<string name="login_open_street_map_org">تسجيل الدخول إلى OpenStreetMap.org</string>
|
||||||
|
<string name="sing_in_with_open_street_map">تسجيل الخروج</string>
|
||||||
|
<string name="open_street_map_login_mode">تحتاج إلى تسجيل الدخول لرفع التغييرات الجديدة أو المعدلة.
|
||||||
|
\n
|
||||||
|
\nيمكنك تسجيل الدخول باستخدام طريقة التفويض الآمنة أو استخدام تسجيل الدخول وكلمة المرور.</string>
|
||||||
|
<string name="use_login_password">استخدام تسجيل الدخول وكلمة المرور</string>
|
||||||
|
<string name="login_account">الحساب</string>
|
||||||
|
<string name="user_login">تسجيل الدخول</string>
|
||||||
</resources>
|
</resources>
|
|
@ -562,7 +562,7 @@
|
||||||
<string name="global_app_settings">Агульныя налады праграмы</string>
|
<string name="global_app_settings">Агульныя налады праграмы</string>
|
||||||
<string name="user_name">Вашае імя карыстальніка OSM</string>
|
<string name="user_name">Вашае імя карыстальніка OSM</string>
|
||||||
<string name="open_street_map_login_descr">Патрэбна для падачы ў openstreetmap.org.</string>
|
<string name="open_street_map_login_descr">Патрэбна для падачы ў openstreetmap.org.</string>
|
||||||
<string name="user_password">Ваш пароль OSM</string>
|
<string name="user_password">Пароль</string>
|
||||||
<string name="osmand_service">Фонавы рэжым</string>
|
<string name="osmand_service">Фонавы рэжым</string>
|
||||||
<string name="osmand_service_descr">OsmAnd працуе ў фоне з адключаным экранам.</string>
|
<string name="osmand_service_descr">OsmAnd працуе ў фоне з адключаным экранам.</string>
|
||||||
<string name="download_files_not_enough_space">Не стае вольнага месца для спампоўвання %1$s МБ (вольна: %2$s).</string>
|
<string name="download_files_not_enough_space">Не стае вольнага месца для спампоўвання %1$s МБ (вольна: %2$s).</string>
|
||||||
|
@ -905,7 +905,7 @@
|
||||||
<string name="uploading">Запампоўванне…</string>
|
<string name="uploading">Запампоўванне…</string>
|
||||||
<string name="search_nothing_found">Нічога не знойдзена</string>
|
<string name="search_nothing_found">Нічога не знойдзена</string>
|
||||||
<string name="searching">Пошук…</string>
|
<string name="searching">Пошук…</string>
|
||||||
<string name="searching_address">Пошук адрасу…</string>
|
<string name="searching_address">Пошук адраса…</string>
|
||||||
<string name="search_osm_nominatim">Сеціўны пошук праз OSM Nominatim</string>
|
<string name="search_osm_nominatim">Сеціўны пошук праз OSM Nominatim</string>
|
||||||
<string name="hint_search_online">Сеціўны пошук: горад, вуліца, дом</string>
|
<string name="hint_search_online">Сеціўны пошук: горад, вуліца, дом</string>
|
||||||
<string name="search_offline_address">Пазасеціўны пошук</string>
|
<string name="search_offline_address">Пазасеціўны пошук</string>
|
||||||
|
@ -3478,7 +3478,7 @@
|
||||||
<string name="photo_notes">Фотанататкі</string>
|
<string name="photo_notes">Фотанататкі</string>
|
||||||
<string name="route_recalculation">Пераразлік маршруту</string>
|
<string name="route_recalculation">Пераразлік маршруту</string>
|
||||||
<string name="login_and_pass">Імя карыстальніка і пароль</string>
|
<string name="login_and_pass">Імя карыстальніка і пароль</string>
|
||||||
<string name="plugin_global_prefs_info">Гэтыя алады распаўсюджваюцца на ўсе профілі.</string>
|
<string name="plugin_global_prefs_info">Гэтыя налады ўбудовы распаўсюджваюцца на ўсе профілі</string>
|
||||||
<string name="osm_editing">Рэдагаванне OSM</string>
|
<string name="osm_editing">Рэдагаванне OSM</string>
|
||||||
<string name="app_mode_osm">OSM</string>
|
<string name="app_mode_osm">OSM</string>
|
||||||
<string name="select_nav_icon_descr">Значок будзе паказвацца падчас навігацыі або руху.</string>
|
<string name="select_nav_icon_descr">Значок будзе паказвацца падчас навігацыі або руху.</string>
|
||||||
|
|
|
@ -3654,4 +3654,78 @@ Zobrazená oblast: %1$s x %2$s</string>
|
||||||
<string name="keep_screen_on">Nechat obrazovku zapnutou</string>
|
<string name="keep_screen_on">Nechat obrazovku zapnutou</string>
|
||||||
<string name="keep_screen_off">Nechat obrazovku vypnutou</string>
|
<string name="keep_screen_off">Nechat obrazovku vypnutou</string>
|
||||||
<string name="route_between_points_warning_desc">Dále, pro použití této možnosti připojte vaši stopu k nejbližší povolené cestě s některým z vašich navigačních profilů.</string>
|
<string name="route_between_points_warning_desc">Dále, pro použití této možnosti připojte vaši stopu k nejbližší povolené cestě s některým z vašich navigačních profilů.</string>
|
||||||
|
<string name="use_system_screen_timeout">Použít systémový časový limit obrazovky</string>
|
||||||
|
<string name="reset_to_default_category_button_promo">\"Obnovit do základního nastavení\" nastaví výchozí pořadí.</string>
|
||||||
|
<string name="copy_coordinates">Kopírovat souřadnice</string>
|
||||||
|
<string name="release_3_6">• Profily: nyní můžete změnit pořadí, nastavit ikonu pro mapu, změnit všechna nastavení základních profilů a resetovat je zpět do výchozího stavu
|
||||||
|
\n
|
||||||
|
\n • V navigaci přibylo číslo výjezdu
|
||||||
|
\n
|
||||||
|
\n • Přepracovaná nastavení modulů
|
||||||
|
\n
|
||||||
|
\n • Přepracovaná obrazovka nastavení pro rychlý přístup ke všem profilům
|
||||||
|
\n
|
||||||
|
\n • Přidaná možnost kopírovat nastavení z jiného profilu
|
||||||
|
\n
|
||||||
|
\n • Přidaná možnost skrýt nebo změnit pořadí kategorií bodů zájmu při hledání
|
||||||
|
\n
|
||||||
|
\n • Zpřesněné umístění ikon bodů zájmu na mapě
|
||||||
|
\n
|
||||||
|
\n • Přidané údaje o východu a západu slunce v nastavení mapy
|
||||||
|
\n
|
||||||
|
\n • Přidané ikony Domov a Práce na mapě
|
||||||
|
\n
|
||||||
|
\n • Přidaná podpora pro víceřádkové popisy v nastavení
|
||||||
|
\n
|
||||||
|
\n • Přidaná správná transliterace v mapě Japonska
|
||||||
|
\n
|
||||||
|
\n • Přidaná mapa Antarktidy
|
||||||
|
\n
|
||||||
|
\n</string>
|
||||||
|
<string name="clear_recorded_data">Vymazat zaznamenaná data</string>
|
||||||
|
<string name="routing_profile_direct_to">Přímo k bodu</string>
|
||||||
|
<string name="ui_customization_description">Nastavte počet položek v \"Úvodním panelu\", \"Nastavení mapy\" a \"Kontextovém menu\".
|
||||||
|
\n
|
||||||
|
\nVypněte nepoužívané moduly, abyste skryli jejich ovládací prvky. %1$s.</string>
|
||||||
|
<string name="ui_customization_short_descr">Položky v úvodním panelu a kontextovém menu</string>
|
||||||
|
<string name="ui_customization">Nastavení uživatelského rozhraní</string>
|
||||||
|
<string name="shared_string_drawer">Úvodní panel</string>
|
||||||
|
<string name="quick_action_transport_hide">Skrýt veřejnou dopravu</string>
|
||||||
|
<string name="quick_action_transport_show">Zobrazit veřejnou dopravu</string>
|
||||||
|
<string name="quick_action_show_hide_transport">Zobrazit/skrýt veřejnou dopravu</string>
|
||||||
|
<string name="quick_action_transport_descr">Tlačítko pro zobrazení nebo skrytí veřejné dopravy na mapě.</string>
|
||||||
|
<string name="create_edit_poi">Vytvořit / upravit bod zájmu</string>
|
||||||
|
<string name="parking_positions">Parkovací místa</string>
|
||||||
|
<string name="add_edit_favorite">Přidat / upravit oblíbený bod</string>
|
||||||
|
<string name="reset_deafult_order">Obnovit výchozí pořadí položek</string>
|
||||||
|
<string name="back_to_editing">Zpět k úpravám</string>
|
||||||
|
<string name="quick_action_switch_profile_descr">Tlačítko akce přepne mezi zvolenými profily.</string>
|
||||||
|
<string name="shared_string_add_profile">Přidat profil</string>
|
||||||
|
<string name="change_application_profile">Změnit profil aplikace</string>
|
||||||
|
<string name="profiles_for_action_not_found">Nebyly nalezeny žádné vhodné profily.</string>
|
||||||
|
<string name="index_item_world_basemap_detailed">Přehledová mapa světa (detailní)</string>
|
||||||
|
<string name="unsupported_type_error">Nepodporovaný typ</string>
|
||||||
|
<string name="width_limit_description">Zadejte šířku svého vozidla, na trase mohou být omezení pro široká vozidla.</string>
|
||||||
|
<string name="height_limit_description">Zadejte výšku svého vozidla, na trase mohou být omezení pro vysoká vozidla.</string>
|
||||||
|
<string name="weight_limit_description">Zadejte hmotnost svého vozidla, na trase mohou být omezení pro těžká vozidla.</string>
|
||||||
|
<string name="lenght_limit_description">Zadejte délku svého vozidla, na trase mohou být omezení pro dlouhá vozidla.</string>
|
||||||
|
<string name="gpx_parse_error">GPX nemá správný tvar pro OsmAnd, kontaktujte prosím podporu pro další přezkoumání.</string>
|
||||||
|
<string name="shared_string_always">Vždy</string>
|
||||||
|
<string name="screen_control">Ovládání obrazovky</string>
|
||||||
|
<string name="system_screen_timeout_descr">Vypne obrazovku po uplynutí systémového časového limitu.</string>
|
||||||
|
<string name="system_screen_timeout">Použít systémový časový limit obrazovky</string>
|
||||||
|
<string name="turn_screen_on_descr">Zvolte možnosti probuzení obrazovky (při zamykání zařízení se ujistěte, že je OsmAnd na popředí):</string>
|
||||||
|
<string name="turn_screen_on_navigation_instructions_descr">Každý navigační pokyn zapne obrazovku.</string>
|
||||||
|
<string name="turn_screen_on_navigation_instructions">Navigační pokyny</string>
|
||||||
|
<string name="turn_screen_on_power_button_disabled">Vypnuto. Vyžaduje \"Nechat obrazovku zapnutou\" pod \"Časový limit obrazovky po probuzení\".</string>
|
||||||
|
<string name="turn_screen_on_power_button_descr">Stisknutím tlačítka napájení zapnete obrazovku s aplikací OsmAnd na zamčené obrazovce.</string>
|
||||||
|
<string name="turn_screen_on_power_button">Tlačítko napájení</string>
|
||||||
|
<string name="turn_screen_on_proximity_sensor">Senzor přiblížení</string>
|
||||||
|
<string name="turn_screen_on_wake_time_descr">Zvolte časový limit vypnutí obrazovky po probuzení (\"%1$s\" znamená bez časového limitu.)</string>
|
||||||
|
<string name="message_you_need_add_two_points_to_show_graphs">Musíte přidat aspoň dva body.</string>
|
||||||
|
<string name="manage_subscription">Spravovat předplatné</string>
|
||||||
|
<string name="subscription_payment_issue_title">S vaším předplatným je problém. Klikněte na tlačítko pro přechod do nastavení předplatného v Google Play a opravte způsob platby.</string>
|
||||||
|
<string name="subscription_expired_title">Předplatné OsmAnd Live skončilo</string>
|
||||||
|
<string name="subscription_paused_title">Předplatné OsmAnd Live je pozastaveno</string>
|
||||||
|
<string name="subscription_on_hold_title">Předplatné OsmAnd Live je zablokované</string>
|
||||||
</resources>
|
</resources>
|
|
@ -3951,4 +3951,10 @@
|
||||||
<string name="icon_group_symbols">Symbole</string>
|
<string name="icon_group_symbols">Symbole</string>
|
||||||
<string name="shared_string_local_maps">Lokale Karten</string>
|
<string name="shared_string_local_maps">Lokale Karten</string>
|
||||||
<string name="icon_group_special">Spezial</string>
|
<string name="icon_group_special">Spezial</string>
|
||||||
|
<string name="message_you_need_add_two_points_to_show_graphs">Sie müssen mindestens zwei Punkte hinzufügen.</string>
|
||||||
|
<string name="manage_subscription">Abonnement verwalten</string>
|
||||||
|
<string name="subscription_payment_issue_title">Es gibt ein Problem mit Ihrem Abonnement. Klicken Sie auf die Schaltfläche, um zu den Einstellungen des Google Play Abonnements zu gelangen und Ihre Zahlungsmethode zu überprüfen.</string>
|
||||||
|
<string name="subscription_expired_title">OsmAnd Live Abonnement ist abgelaufen</string>
|
||||||
|
<string name="subscription_paused_title">OsmAnd Live Abonnement wurde ausgesetzt</string>
|
||||||
|
<string name="subscription_on_hold_title">OsmAnd Live Abonnement liegt auf Eis</string>
|
||||||
</resources>
|
</resources>
|
|
@ -3946,4 +3946,10 @@
|
||||||
<string name="navigate_point_mgrs">MGRS</string>
|
<string name="navigate_point_mgrs">MGRS</string>
|
||||||
<string name="navigate_point_format_mgrs">MGRS</string>
|
<string name="navigate_point_format_mgrs">MGRS</string>
|
||||||
<string name="mgrs_format_descr">OsmAnd uzas MGRS, kiu estas simila al la formo UTM NATO.</string>
|
<string name="mgrs_format_descr">OsmAnd uzas MGRS, kiu estas simila al la formo UTM NATO.</string>
|
||||||
|
<string name="message_you_need_add_two_points_to_show_graphs">Aldonu almenaŭ du punktojn.</string>
|
||||||
|
<string name="manage_subscription">Administri abonon</string>
|
||||||
|
<string name="subscription_payment_issue_title">Okazis problemo pri via abono. Premu la butonon por iri al agordoj pri abonoj ĉe Google Play por korekti vian pagmanieron.</string>
|
||||||
|
<string name="subscription_expired_title">Abono OsmAnd Live senvalidiĝis</string>
|
||||||
|
<string name="subscription_paused_title">Abono OsmAnd Live estas paŭziigita</string>
|
||||||
|
<string name="subscription_on_hold_title">Abono OsmAnd Live estas ĉesigita</string>
|
||||||
</resources>
|
</resources>
|
|
@ -1033,7 +1033,7 @@
|
||||||
<string name="global_app_settings">Ajustes globales de la aplicación</string>
|
<string name="global_app_settings">Ajustes globales de la aplicación</string>
|
||||||
<string name="user_name">Nombre de usuario de OSM</string>
|
<string name="user_name">Nombre de usuario de OSM</string>
|
||||||
<string name="open_street_map_login_descr">Necesario para envíos a OpenStreetMap.org.</string>
|
<string name="open_street_map_login_descr">Necesario para envíos a OpenStreetMap.org.</string>
|
||||||
<string name="user_password">Contraseña de OSM</string>
|
<string name="user_password">Contraseña</string>
|
||||||
<string name="osmand_service">Modo reposo</string>
|
<string name="osmand_service">Modo reposo</string>
|
||||||
<string name="osmand_service_descr">OsmAnd se ejecuta en modo reposo con la pantalla apagada.</string>
|
<string name="osmand_service_descr">OsmAnd se ejecuta en modo reposo con la pantalla apagada.</string>
|
||||||
<string name="download_files_not_enough_space">Sin espacio suficiente para descargar %1$s MB (disponible: %2$s).</string>
|
<string name="download_files_not_enough_space">Sin espacio suficiente para descargar %1$s MB (disponible: %2$s).</string>
|
||||||
|
@ -3430,7 +3430,7 @@
|
||||||
<string name="route_recalculation">Recálculo de la ruta</string>
|
<string name="route_recalculation">Recálculo de la ruta</string>
|
||||||
<string name="accessibility_announce">Anunciar</string>
|
<string name="accessibility_announce">Anunciar</string>
|
||||||
<string name="login_and_pass">Nombre de usuario y contraseña</string>
|
<string name="login_and_pass">Nombre de usuario y contraseña</string>
|
||||||
<string name="plugin_global_prefs_info">Estos ajustes se aplican a todos los perfiles.</string>
|
<string name="plugin_global_prefs_info">Los ajustes de este complemento son globales y se aplican a todos los perfiles</string>
|
||||||
<string name="osm_editing">Edición de OSM</string>
|
<string name="osm_editing">Edición de OSM</string>
|
||||||
<string name="osm_edits_view_descr">Puedes ver todas tus ediciones no subidas o errores de OSM en «%1$s». Los puntos subidos no se muestran en OsmAnd.</string>
|
<string name="osm_edits_view_descr">Puedes ver todas tus ediciones no subidas o errores de OSM en «%1$s». Los puntos subidos no se muestran en OsmAnd.</string>
|
||||||
<string name="app_mode_osm">OSM</string>
|
<string name="app_mode_osm">OSM</string>
|
||||||
|
@ -3952,4 +3952,18 @@
|
||||||
<string name="navigate_point_format_mgrs">MGRS</string>
|
<string name="navigate_point_format_mgrs">MGRS</string>
|
||||||
<string name="mgrs_format_descr">OsmAnd usa MGRS, similar al formato UTM de la OTAN.</string>
|
<string name="mgrs_format_descr">OsmAnd usa MGRS, similar al formato UTM de la OTAN.</string>
|
||||||
<string name="message_you_need_add_two_points_to_show_graphs">Debes añadir al menos dos puntos.</string>
|
<string name="message_you_need_add_two_points_to_show_graphs">Debes añadir al menos dos puntos.</string>
|
||||||
|
<string name="manage_subscription">Gestionar suscripción</string>
|
||||||
|
<string name="subscription_payment_issue_title">Hay un problema con la suscripción. Pulsa el botón para ir a los ajustes de la suscripción de Google Play y corregir el método de pago.</string>
|
||||||
|
<string name="subscription_expired_title">La suscripción a OsmAnd Live ha caducado</string>
|
||||||
|
<string name="subscription_paused_title">La suscripción a OsmAnd Live se ha pausado</string>
|
||||||
|
<string name="subscription_on_hold_title">La suscripción a OsmAnd Live está en espera</string>
|
||||||
|
<string name="sing_in_with_open_street_map">Ingresar con OpenStreetMap</string>
|
||||||
|
<string name="login_open_street_map">Iniciar sesión en OpenStreetMap</string>
|
||||||
|
<string name="login_open_street_map_org">Ingresar a OpenStreetMap.org</string>
|
||||||
|
<string name="open_street_map_login_mode">Necesitas iniciar sesión para subir cambios nuevos o modificados.
|
||||||
|
\n
|
||||||
|
\nPuedes ingresar usando el método seguro de OAuth o usar el nombre de usuario y contraseña.</string>
|
||||||
|
<string name="use_login_password">Utilice nombre de usuario y contraseña</string>
|
||||||
|
<string name="login_account">Cuenta</string>
|
||||||
|
<string name="user_login">Iniciar sesión</string>
|
||||||
</resources>
|
</resources>
|
|
@ -1943,7 +1943,7 @@
|
||||||
<string name="general_settings_descr">Seadista ekraan ja rakenduse üldised seaded.</string>
|
<string name="general_settings_descr">Seadista ekraan ja rakenduse üldised seaded.</string>
|
||||||
<string name="global_app_settings">Rakenduse üldised seaded</string>
|
<string name="global_app_settings">Rakenduse üldised seaded</string>
|
||||||
<string name="user_name">Sinu OSM kasutajanimi</string>
|
<string name="user_name">Sinu OSM kasutajanimi</string>
|
||||||
<string name="user_password">Sinu OSM salasõna</string>
|
<string name="user_password">Salasõna</string>
|
||||||
<string name="osmand_service">Taustarežiim</string>
|
<string name="osmand_service">Taustarežiim</string>
|
||||||
<string name="osmand_service_descr">OsmAnd töötab taustal, ekraan välja lülitatud.</string>
|
<string name="osmand_service_descr">OsmAnd töötab taustal, ekraan välja lülitatud.</string>
|
||||||
<string name="download_files_question_space">Kas laeme alla {0} fail(i)\?
|
<string name="download_files_question_space">Kas laeme alla {0} fail(i)\?
|
||||||
|
@ -3358,7 +3358,7 @@
|
||||||
<string name="route_recalculation">Teekonna ümberarvutamine</string>
|
<string name="route_recalculation">Teekonna ümberarvutamine</string>
|
||||||
<string name="accessibility_announce">Teata</string>
|
<string name="accessibility_announce">Teata</string>
|
||||||
<string name="login_and_pass">Kasutajanimi ja salasõna</string>
|
<string name="login_and_pass">Kasutajanimi ja salasõna</string>
|
||||||
<string name="plugin_global_prefs_info">Need seaded rakenduvad kõikidele profiilidele.</string>
|
<string name="plugin_global_prefs_info">Need seaded on üldised ja rakenduvad kõikidele profiilidele</string>
|
||||||
<string name="osm_editing">OSM\'i andmete muutmine</string>
|
<string name="osm_editing">OSM\'i andmete muutmine</string>
|
||||||
<string name="osm_edits_view_descr">Kõiki üleslaadimata muudatusi või OSM vigu saad vaadata menüüs %1$s. Üleslaaditud punkte OsmAnd ei kuva.</string>
|
<string name="osm_edits_view_descr">Kõiki üleslaadimata muudatusi või OSM vigu saad vaadata menüüs %1$s. Üleslaaditud punkte OsmAnd ei kuva.</string>
|
||||||
<string name="app_mode_osm">OSM</string>
|
<string name="app_mode_osm">OSM</string>
|
||||||
|
@ -3798,4 +3798,17 @@
|
||||||
<string name="mgrs_format_descr">OsmAnd kasutab MGRS-vormingut, mis on sarnane NATO UTM-vormingule.</string>
|
<string name="mgrs_format_descr">OsmAnd kasutab MGRS-vormingut, mis on sarnane NATO UTM-vormingule.</string>
|
||||||
<string name="navigate_point_format_mgrs">MGRS</string>
|
<string name="navigate_point_format_mgrs">MGRS</string>
|
||||||
<string name="navigate_point_mgrs">MGRS</string>
|
<string name="navigate_point_mgrs">MGRS</string>
|
||||||
|
<string name="message_you_need_add_two_points_to_show_graphs">Graafiku joonistamiseks pead lisama vähemalt kaks punkti.</string>
|
||||||
|
<string name="subscription_on_hold_title">OsmAnd Live tellimus on ootel</string>
|
||||||
|
<string name="subscription_paused_title">OsmAnd Live tellimus on peatatud</string>
|
||||||
|
<string name="subscription_expired_title">OsmAnd Live tellimus on aegunud</string>
|
||||||
|
<string name="subscription_payment_issue_title">Sinu tellimusega on üks pisikene segadus. Selleks et Google Play seadistuses makseviisi parandada, palun klõpsi seda nuppu.</string>
|
||||||
|
<string name="manage_subscription">Halda tellimusi</string>
|
||||||
|
<string name="sing_in_with_open_street_map">Logi sisse OpenStreetMapi kasutajakontoga</string>
|
||||||
|
<string name="user_login">Kasutajanimi</string>
|
||||||
|
<string name="use_login_password">Pruugi kasutajanime ja salasõna</string>
|
||||||
|
<string name="open_street_map_login_mode">Täienduste või muudatuste üleslaadimiseks pead sisse logima.
|
||||||
|
\n
|
||||||
|
\nSa võid selleks kasutada mõnd turvalust OAuth võimalust või oma kasutajanime ning salasõna.</string>
|
||||||
|
<string name="login_account">Kasutajakonto</string>
|
||||||
</resources>
|
</resources>
|
|
@ -1494,4 +1494,32 @@
|
||||||
<string name="poi_embassy">Suurlähetystö</string>
|
<string name="poi_embassy">Suurlähetystö</string>
|
||||||
<string name="poi_silo">Siilo</string>
|
<string name="poi_silo">Siilo</string>
|
||||||
<string name="poi_windmill">Tuulimylly</string>
|
<string name="poi_windmill">Tuulimylly</string>
|
||||||
|
<string name="poi_railway_level_crossing">Tasoristeys</string>
|
||||||
|
<string name="poi_railway_crossing">Rautatien ylitys</string>
|
||||||
|
<string name="poi_crossing_traffic_signals">Liikennevaloilla</string>
|
||||||
|
<string name="poi_highway_crossing">Valtatien ylitys</string>
|
||||||
|
<string name="poi_building_type_pyramid">Rakennuksen tyyppi: pyramidi</string>
|
||||||
|
<string name="poi_building_type_shrine">Rakennuksen tyyppi: pyhäkkö</string>
|
||||||
|
<string name="poi_building_type_synagogue">Rakennuksen tyyppi: synagoga</string>
|
||||||
|
<string name="poi_building_type_basilica">Rakennuksen tyyppi: basilika</string>
|
||||||
|
<string name="poi_building_type_monastery">Rakennuksen tyyppi: luostari</string>
|
||||||
|
<string name="poi_building_type_cathedral">Rakennuksen tyyppi: katedraali</string>
|
||||||
|
<string name="poi_building_type_temple">Rakennuksen tyyppi: temppeli</string>
|
||||||
|
<string name="poi_building_type_mosque">Rakennuksen tyyppi: moskeija</string>
|
||||||
|
<string name="poi_building_type_chapel">Rakennuksen tyyppi: kappeli</string>
|
||||||
|
<string name="poi_building_type_church">Rakennuksen tyyppi: kirkko</string>
|
||||||
|
<string name="poi_building">Rakennus</string>
|
||||||
|
<string name="poi_viewpoint">Näköalapaikka</string>
|
||||||
|
<string name="poi_charging_station">Latausasema</string>
|
||||||
|
<string name="poi_marina">Venesatama</string>
|
||||||
|
<string name="poi_firepit">Nuotiopaikka</string>
|
||||||
|
<string name="poi_leisure_track">Urheilurata</string>
|
||||||
|
<string name="poi_dog_park">Koirapuisto</string>
|
||||||
|
<string name="poi_pitch">Urheilukenttä</string>
|
||||||
|
<string name="poi_religion_pagan">Pakanuus</string>
|
||||||
|
<string name="poi_religion_jain">Jainalaisuus</string>
|
||||||
|
<string name="poi_chalet">Alppimaja</string>
|
||||||
|
<string name="poi_guest_house">Vieras talo</string>
|
||||||
|
<string name="poi_lodging">Majapaikka</string>
|
||||||
|
<string name="poi_attraction_roller_coaster">Vuoristorata</string>
|
||||||
</resources>
|
</resources>
|
|
@ -174,7 +174,8 @@
|
||||||
<string name="open_street_map_login_descr">Tarvitaan openstreetmap.org ehdotuksia varten</string>
|
<string name="open_street_map_login_descr">Tarvitaan openstreetmap.org ehdotuksia varten</string>
|
||||||
<string name="user_password">OSM salasanasi</string>
|
<string name="user_password">OSM salasanasi</string>
|
||||||
<string name="download_files_not_enough_space">Ei ole tarpeeksi tilaa jotta voitaisiin ladata %1$s MB (vapaana: %2$s).</string>
|
<string name="download_files_not_enough_space">Ei ole tarpeeksi tilaa jotta voitaisiin ladata %1$s MB (vapaana: %2$s).</string>
|
||||||
<string name="download_files_question_space">Lataa {0} tiedosto(a)\? {1} Mt (/ {2} Mt) käytetään.</string>
|
<string name="download_files_question_space">Lataa {0} tiedosto(a)\?
|
||||||
|
\n{1} Mt (/ {2} Mt) käytetään.</string>
|
||||||
<string name="delete_confirmation_msg">Poista %1$s?</string>
|
<string name="delete_confirmation_msg">Poista %1$s?</string>
|
||||||
<string name="city_type_suburb">Lähiö</string>
|
<string name="city_type_suburb">Lähiö</string>
|
||||||
<string name="city_type_hamlet">Kylä</string>
|
<string name="city_type_hamlet">Kylä</string>
|
||||||
|
@ -315,7 +316,7 @@
|
||||||
<string name="error_calculating_route">Virhe reitin laskennassa</string>
|
<string name="error_calculating_route">Virhe reitin laskennassa</string>
|
||||||
<string name="new_route_calculated_dist">Uusi reitti laskettu, etäisyys</string>
|
<string name="new_route_calculated_dist">Uusi reitti laskettu, etäisyys</string>
|
||||||
<string name="arrived_at_destination">Olet saapunut perille.</string>
|
<string name="arrived_at_destination">Olet saapunut perille.</string>
|
||||||
<string name="invalid_locations">Koordinaatit ovat virheelliset!</string>
|
<string name="invalid_locations">Virheelliset koordinaatit</string>
|
||||||
<string name="shared_string_close">Sulje</string>
|
<string name="shared_string_close">Sulje</string>
|
||||||
<string name="loading_data">Ladataan tietoja…</string>
|
<string name="loading_data">Ladataan tietoja…</string>
|
||||||
<string name="reading_indexes">Luetaan paikallista dataa…</string>
|
<string name="reading_indexes">Luetaan paikallista dataa…</string>
|
||||||
|
@ -510,7 +511,7 @@
|
||||||
<string name="local_index_installed">Paikallinen versio</string>
|
<string name="local_index_installed">Paikallinen versio</string>
|
||||||
<string name="poi_remove_confirm_template">Poista {0} (lisää kommentti)?</string>
|
<string name="poi_remove_confirm_template">Poista {0} (lisää kommentti)?</string>
|
||||||
<string name="osb_comment_dialog_author">Tekijän nimi</string>
|
<string name="osb_comment_dialog_author">Tekijän nimi</string>
|
||||||
<string name="download_roads_only_item">"Tiet "</string>
|
<string name="download_roads_only_item">Vain tiet</string>
|
||||||
<string name="download_regular_maps">Tavalliset kartat</string>
|
<string name="download_regular_maps">Tavalliset kartat</string>
|
||||||
<string name="no_buildings_found">Rakennuksia ei löytynyt.</string>
|
<string name="no_buildings_found">Rakennuksia ei löytynyt.</string>
|
||||||
<string name="search_villages_and_postcodes">Etsi lisää paikkakuntia/postinumeroita</string>
|
<string name="search_villages_and_postcodes">Etsi lisää paikkakuntia/postinumeroita</string>
|
||||||
|
@ -579,7 +580,7 @@
|
||||||
<string name="recording_description">Nauhoitus %1$s %2$s / %3$s</string>
|
<string name="recording_description">Nauhoitus %1$s %2$s / %3$s</string>
|
||||||
<string name="destination_point">Kohde %1$s</string>
|
<string name="destination_point">Kohde %1$s</string>
|
||||||
<string name="context_menu_item_destination_point">Valitse määränpääksi</string>
|
<string name="context_menu_item_destination_point">Valitse määränpääksi</string>
|
||||||
<string name="please_select_address">Valitse kaupunki tai katu ensin</string>
|
<string name="please_select_address">Aseta kaupunki tai katu ensin</string>
|
||||||
<string name="search_street_in_neighborhood_cities">Etsi katua lähikaupungeista</string>
|
<string name="search_street_in_neighborhood_cities">Etsi katua lähikaupungeista</string>
|
||||||
<string name="intermediate_items_sort_by_distance">Lajittele ovelta ovelle</string>
|
<string name="intermediate_items_sort_by_distance">Lajittele ovelta ovelle</string>
|
||||||
<string name="local_osm_changes_backup_successful">OSM muutostiedosto luotiin onnistuneesti %1$s</string>
|
<string name="local_osm_changes_backup_successful">OSM muutostiedosto luotiin onnistuneesti %1$s</string>
|
||||||
|
@ -608,8 +609,8 @@
|
||||||
<string name="driving_region_japan">Japani</string>
|
<string name="driving_region_japan">Japani</string>
|
||||||
<string name="driving_region_us">Yhdysvallat</string>
|
<string name="driving_region_us">Yhdysvallat</string>
|
||||||
<string name="driving_region_canada">Kanada</string>
|
<string name="driving_region_canada">Kanada</string>
|
||||||
<string name="driving_region_europe_asia">Eurooppa & Aasia</string>
|
<string name="driving_region_europe_asia">Eurooppa, Aasia, Latinalainen Amerikka ja vastaavat</string>
|
||||||
<string name="driving_region_uk">Iso Britannia, Intia, Australia ja vastaavat</string>
|
<string name="driving_region_uk">Iso Britannia, Intia ja vastaavat</string>
|
||||||
<string name="amenity_type_seamark">Merimerkki</string>
|
<string name="amenity_type_seamark">Merimerkki</string>
|
||||||
<string name="app_modes_choose_descr">Valitse näkyvät profiilit.</string>
|
<string name="app_modes_choose_descr">Valitse näkyvät profiilit.</string>
|
||||||
<string name="shared_string_is_open">Avoinna nyt</string>
|
<string name="shared_string_is_open">Avoinna nyt</string>
|
||||||
|
@ -730,7 +731,7 @@
|
||||||
<string name="waypoint_visit_before">Käy ennen</string>
|
<string name="waypoint_visit_before">Käy ennen</string>
|
||||||
<string name="simulate_your_location">Simuloi sijaintisi</string>
|
<string name="simulate_your_location">Simuloi sijaintisi</string>
|
||||||
<string name="short_location_on_map">Lev %1$s
|
<string name="short_location_on_map">Lev %1$s
|
||||||
Pit %2$s</string>
|
\nPit %2$s</string>
|
||||||
<string name="tips_and_tricks_descr">Usein kysytyt kysymykset, viimeaikaiset muutokset, ja muut.</string>
|
<string name="tips_and_tricks_descr">Usein kysytyt kysymykset, viimeaikaiset muutokset, ja muut.</string>
|
||||||
<string name="general_settings_2">Yleiset asetukset</string>
|
<string name="general_settings_2">Yleiset asetukset</string>
|
||||||
<string name="shared_string_ellipsis">…</string>
|
<string name="shared_string_ellipsis">…</string>
|
||||||
|
@ -824,7 +825,7 @@ Maailmanlaajuiset tiedot (välillä 70 astetta pohjoista ja 70 astetta eteläist
|
||||||
<string name="route_calculation">Reitin laskenta</string>
|
<string name="route_calculation">Reitin laskenta</string>
|
||||||
<string name="gpx_no_tracks_title">Sinulla ei ole vielä yhtään GPX-tiedostoa</string>
|
<string name="gpx_no_tracks_title">Sinulla ei ole vielä yhtään GPX-tiedostoa</string>
|
||||||
<string name="gpx_no_tracks_title_folder">Voit myös lisätä GPX-tiedostoja hakemistoon</string>
|
<string name="gpx_no_tracks_title_folder">Voit myös lisätä GPX-tiedostoja hakemistoon</string>
|
||||||
<string name="gpx_add_track">Lisää jälki</string>
|
<string name="gpx_add_track">Lisää enemmän…</string>
|
||||||
<string name="shared_string_appearance">Ulkoasu</string>
|
<string name="shared_string_appearance">Ulkoasu</string>
|
||||||
<string name="trip_rec_notification_settings">Ota pikanauhoitus käyttöön</string>
|
<string name="trip_rec_notification_settings">Ota pikanauhoitus käyttöön</string>
|
||||||
<string name="trip_rec_notification_settings_desc">Näytä ilmoitus, josta voi aloittaa matkan tallennuksen painamalla Nauhoita-näppäintä.</string>
|
<string name="trip_rec_notification_settings_desc">Näytä ilmoitus, josta voi aloittaa matkan tallennuksen painamalla Nauhoita-näppäintä.</string>
|
||||||
|
@ -1008,7 +1009,9 @@ Maailmanlaajuiset tiedot (välillä 70 astetta pohjoista ja 70 astetta eteläist
|
||||||
\n- hallita ryhmiä ja laitteita henkilökohtaisella hallintapaneelilla websivustolla.</string>
|
\n- hallita ryhmiä ja laitteita henkilökohtaisella hallintapaneelilla websivustolla.</string>
|
||||||
<string name="osm_user_stat">Muokkauksia %1$s, sijoitus %2$s, muokkaukset yhteensä %3$s</string>
|
<string name="osm_user_stat">Muokkauksia %1$s, sijoitus %2$s, muokkaukset yhteensä %3$s</string>
|
||||||
<string name="osm_editors_ranking">OSM-muokkaajien sijoitukset</string>
|
<string name="osm_editors_ranking">OSM-muokkaajien sijoitukset</string>
|
||||||
<string name="download_files_error_not_enough_space">Tilaa ei ole tarpeeksi! {3} Mt tarvitaan väliaikaisesti, {1} Mt pysyvästi. (Vain {2} Mt on käytettävissä.)</string>
|
<string name="download_files_error_not_enough_space">Tilaa ei ole tarpeeksi!
|
||||||
|
\n{3} Mt tarvitaan väliaikaisesti, {1} Mt pysyvästi.
|
||||||
|
\n(Vain {2} Mt on käytettävissä.)</string>
|
||||||
<string name="download_files_question_space_with_temp">Lataa {0} tiedosto(a)?
|
<string name="download_files_question_space_with_temp">Lataa {0} tiedosto(a)?
|
||||||
Tallennnustilaa käytetään {3} Mt hetkellisesti, {1} Mt pysyvästi.
|
Tallennnustilaa käytetään {3} Mt hetkellisesti, {1} Mt pysyvästi.
|
||||||
(Vapaata tilaa on {2} Mt.)</string>
|
(Vapaata tilaa on {2} Mt.)</string>
|
||||||
|
@ -1058,7 +1061,7 @@ Maailmanlaajuiset tiedot (välillä 70 astetta pohjoista ja 70 astetta eteläist
|
||||||
<string name="av_video_quality_high">Korkein laatu</string>
|
<string name="av_video_quality_high">Korkein laatu</string>
|
||||||
<string name="av_video_quality">Video tulosteen laatu</string>
|
<string name="av_video_quality">Video tulosteen laatu</string>
|
||||||
<string name="av_video_quality_descr">Valitse videon laatu.</string>
|
<string name="av_video_quality_descr">Valitse videon laatu.</string>
|
||||||
<string name="av_audio_format">"Ääni tulosteen laatu"</string>
|
<string name="av_audio_format">Ääni tulosteen laatu</string>
|
||||||
<string name="av_audio_format_descr">Valitse äänilähdön muoto.</string>
|
<string name="av_audio_format_descr">Valitse äänilähdön muoto.</string>
|
||||||
<string name="please_specify_poi_type_only_from_list">Ole hyvä ja valitse oikea KP tyyppi tai ohita se.</string>
|
<string name="please_specify_poi_type_only_from_list">Ole hyvä ja valitse oikea KP tyyppi tai ohita se.</string>
|
||||||
<string name="access_from_map_description">Valikkonäppäin käynnistää hallintapaneelin eikä valikkoa</string>
|
<string name="access_from_map_description">Valikkonäppäin käynnistää hallintapaneelin eikä valikkoa</string>
|
||||||
|
@ -1179,8 +1182,8 @@ Maailmanlaajuiset tiedot (välillä 70 astetta pohjoista ja 70 astetta eteläist
|
||||||
<string name="osm_settings">OSM muokkaus</string>
|
<string name="osm_settings">OSM muokkaus</string>
|
||||||
<string name="share_note">Jaa huomautus</string>
|
<string name="share_note">Jaa huomautus</string>
|
||||||
<string name="location_on_map">Sijainti:
|
<string name="location_on_map">Sijainti:
|
||||||
Lat %1$s
|
\nLev %1$s
|
||||||
Lon %2$s</string>
|
\nPit %2$s</string>
|
||||||
<string name="watch">Katso</string>
|
<string name="watch">Katso</string>
|
||||||
<string name="online_map">Online kartta</string>
|
<string name="online_map">Online kartta</string>
|
||||||
<string name="rendering_attr_pisteRoutes_name">Laskettelurinteet</string>
|
<string name="rendering_attr_pisteRoutes_name">Laskettelurinteet</string>
|
||||||
|
@ -1388,10 +1391,10 @@ Maailmanlaajuiset tiedot (välillä 70 astetta pohjoista ja 70 astetta eteläist
|
||||||
<string name="gpx_timespan">AIkajänne: %1$s</string>
|
<string name="gpx_timespan">AIkajänne: %1$s</string>
|
||||||
<string name="gpx_timemoving">Aika liikkeessä: %1$s</string>
|
<string name="gpx_timemoving">Aika liikkeessä: %1$s</string>
|
||||||
<string name="gpx_selection_segment_title">Segmentti</string>
|
<string name="gpx_selection_segment_title">Segmentti</string>
|
||||||
<string name="gpx_selection_number_of_points">" %1$s pistettä"</string>
|
<string name="gpx_selection_number_of_points">%1$s pistettä</string>
|
||||||
<string name="gpx_selection_point">Piste %1$s</string>
|
<string name="gpx_selection_point">Piste %1$s</string>
|
||||||
<string name="gpx_selection_route_points">%1$s
|
<string name="gpx_selection_route_points">%1$s
|
||||||
Reitin pisteet %2$s</string>
|
\nReitin pisteet %2$s</string>
|
||||||
<string name="gpx_selection_points">%1$s
|
<string name="gpx_selection_points">%1$s
|
||||||
\nPisteet</string>
|
\nPisteet</string>
|
||||||
<string name="gpx_selection_track">%1$s
|
<string name="gpx_selection_track">%1$s
|
||||||
|
@ -1444,10 +1447,10 @@ Reitin pisteet %2$s</string>
|
||||||
<string name="osmand_play_title_30_chars">OsmAnd kartat & suunnistus</string>
|
<string name="osmand_play_title_30_chars">OsmAnd kartat & suunnistus</string>
|
||||||
<string name="osmand_plus_play_title_30_chars">OsmAnd+ kartat ja suunnistus</string>
|
<string name="osmand_plus_play_title_30_chars">OsmAnd+ kartat ja suunnistus</string>
|
||||||
<string name="bg_service_sleep_mode_off">Suorita
|
<string name="bg_service_sleep_mode_off">Suorita
|
||||||
sovellutus taustalla</string>
|
\nsovellus taustalla</string>
|
||||||
<string name="map_widget_renderer">Karttatyyli</string>
|
<string name="map_widget_renderer">Karttatyyli</string>
|
||||||
<string name="bg_service_sleep_mode_on">Pysäytä
|
<string name="bg_service_sleep_mode_on">Pysäytä
|
||||||
sovellutuksen suoritus taustalta</string>
|
\nsovelluksen suoritus taustalta</string>
|
||||||
<string name="map_widget_mini_route">Pienoisreittikartta</string>
|
<string name="map_widget_mini_route">Pienoisreittikartta</string>
|
||||||
<string name="bg_service_interval">Aseta virkistyksen aikaväli:</string>
|
<string name="bg_service_interval">Aseta virkistyksen aikaväli:</string>
|
||||||
<string name="select_animate_speedup">Aseta nopeus reitin simuloinnille</string>
|
<string name="select_animate_speedup">Aseta nopeus reitin simuloinnille</string>
|
||||||
|
@ -1472,7 +1475,7 @@ Reitin pisteet %2$s</string>
|
||||||
<string name="arrival_distance_factor_early">Aikaisin</string>
|
<string name="arrival_distance_factor_early">Aikaisin</string>
|
||||||
<string name="arrival_distance_factor_normally">Normaali</string>
|
<string name="arrival_distance_factor_normally">Normaali</string>
|
||||||
<string name="arrival_distance_factor_late">Myöhään</string>
|
<string name="arrival_distance_factor_late">Myöhään</string>
|
||||||
<string name="arrival_distance_factor_at_last">"Viime metreillä"</string>
|
<string name="arrival_distance_factor_at_last">Viime metreillä</string>
|
||||||
<string name="arrival_distance">Saapumisilmoitus</string>
|
<string name="arrival_distance">Saapumisilmoitus</string>
|
||||||
<string name="arrival_distance_descr">Kuinka aikaisin haluat saapumisilmoituksen?</string>
|
<string name="arrival_distance_descr">Kuinka aikaisin haluat saapumisilmoituksen?</string>
|
||||||
<string name="rendering_out_of_memory">Ei tarpeeksi prosessointimuistia valitun alueen näyttämiseksi</string>
|
<string name="rendering_out_of_memory">Ei tarpeeksi prosessointimuistia valitun alueen näyttämiseksi</string>
|
||||||
|
@ -1537,7 +1540,7 @@ Reitin pisteet %2$s</string>
|
||||||
<string name="app_modes_choose">Sovellusprofiilit</string>
|
<string name="app_modes_choose">Sovellusprofiilit</string>
|
||||||
<string name="app_mode_hiking">Retkeily</string>
|
<string name="app_mode_hiking">Retkeily</string>
|
||||||
<string name="local_osm_changes_delete_all_confirm">Olet poistamassa %1$d OSM muutosta. Oletko varma?</string>
|
<string name="local_osm_changes_delete_all_confirm">Olet poistamassa %1$d OSM muutosta. Oletko varma?</string>
|
||||||
<string name="route_descr_map_location">"Kartta: "</string>
|
<string name="route_descr_map_location">Kartta:</string>
|
||||||
<string name="route_descr_lat_lon">Pit %1$.3f, lev %2$.3f</string>
|
<string name="route_descr_lat_lon">Pit %1$.3f, lev %2$.3f</string>
|
||||||
<string name="route_descr_destination">Päämäärä</string>
|
<string name="route_descr_destination">Päämäärä</string>
|
||||||
<string name="route_via">Kautta:</string>
|
<string name="route_via">Kautta:</string>
|
||||||
|
@ -1645,12 +1648,12 @@ Reitin pisteet %2$s</string>
|
||||||
<string name="loading_smth">Ladataan %1$s…</string>
|
<string name="loading_smth">Ladataan %1$s…</string>
|
||||||
<string name="map_widget_plain_time">Aika nyt</string>
|
<string name="map_widget_plain_time">Aika nyt</string>
|
||||||
<string name="shared_string_waypoint">Väyläpiste</string>
|
<string name="shared_string_waypoint">Väyläpiste</string>
|
||||||
<string name="gpx_info_waypoints">"Väyläpisteet: %1$s "</string>
|
<string name="gpx_info_waypoints">Väyläpisteet: %1$s</string>
|
||||||
<string name="gpx_info_distance">"Etäisyys: %1$s (%2$s pistettä) "</string>
|
<string name="gpx_info_distance">Etäisyys: %1$s (%2$s pistettä)</string>
|
||||||
<string name="gpx_info_start_time">"Lähtöaika: %1$tF, %1$tT "</string>
|
<string name="gpx_info_start_time">Lähtöaika: %1$tF, %1$tT</string>
|
||||||
<string name="gpx_info_end_time">"Saapumisaika: %1$tF, %1$tT "</string>
|
<string name="gpx_info_end_time">Saapumisaika: %1$tF, %1$tT</string>
|
||||||
<string name="gpx_info_average_speed">"Keskinopeus: %1$s "</string>
|
<string name="gpx_info_average_speed">Keskinopeus: %1$s</string>
|
||||||
<string name="gpx_info_maximum_speed">"Maksiminopeus: %1$s "</string>
|
<string name="gpx_info_maximum_speed">Maksiminopeus: %1$s</string>
|
||||||
<string name="gpx_info_avg_altitude">Keskikorkeus: %1$s</string>
|
<string name="gpx_info_avg_altitude">Keskikorkeus: %1$s</string>
|
||||||
<string name="gpx_info_diff_altitude">Korkeusväli: %1$s</string>
|
<string name="gpx_info_diff_altitude">Korkeusväli: %1$s</string>
|
||||||
<string name="lang_zh">Kiina</string>
|
<string name="lang_zh">Kiina</string>
|
||||||
|
@ -1718,9 +1721,9 @@ Reitin pisteet %2$s</string>
|
||||||
<string name="text_size_descr">Aseta tekstin koko kartalle.</string>
|
<string name="text_size_descr">Aseta tekstin koko kartalle.</string>
|
||||||
<string name="background_service_is_enabled_question">OsmAnd taustapalvelu on vielä suorituksessa. Haluatko puysäyttää myös sen?</string>
|
<string name="background_service_is_enabled_question">OsmAnd taustapalvelu on vielä suorituksessa. Haluatko puysäyttää myös sen?</string>
|
||||||
<string name="save_track_to_gpx_globally_headline">Jäljen kirjaus tarpeen vaatiessa</string>
|
<string name="save_track_to_gpx_globally_headline">Jäljen kirjaus tarpeen vaatiessa</string>
|
||||||
<string name="selected_gpx_info_show">
|
<string name="selected_gpx_info_show">"
|
||||||
|
\n
|
||||||
Paina ja pidä nähdäksesi kartalla</string>
|
\nPaina pitkään nähdäksesi kartalla"</string>
|
||||||
<string name="local_index_gpx_info_show">
|
<string name="local_index_gpx_info_show">
|
||||||
|
|
||||||
Paina ja pidä nähdäksesi kartalla</string>
|
Paina ja pidä nähdäksesi kartalla</string>
|
||||||
|
@ -1760,7 +1763,7 @@ Paina ja pidä nähdäksesi kartalla</string>
|
||||||
<string name="interrupt_music_descr">Keskeytä musiikki täydellisesti ääniohjeiden ajaksi (ei ainoastaan hiljennystä)</string>
|
<string name="interrupt_music_descr">Keskeytä musiikki täydellisesti ääniohjeiden ajaksi (ei ainoastaan hiljennystä)</string>
|
||||||
<string name="map_widget_next_next_turn">Toinen käännös</string>
|
<string name="map_widget_next_next_turn">Toinen käännös</string>
|
||||||
<string name="native_app_allocated_memory_descr">Sovelluksen varaama natiivi muisti yhteensä %1$s MB (Dalvik %2$s MB, muut %3$s MB).
|
<string name="native_app_allocated_memory_descr">Sovelluksen varaama natiivi muisti yhteensä %1$s MB (Dalvik %2$s MB, muut %3$s MB).
|
||||||
Suhteellinen muisti %4$s MB (Android raja %5$s MB, Dalvik %6$s MB).</string>
|
\nSuhteellinen muisti %4$s MB (Android raja %5$s MB, Dalvik %6$s MB).</string>
|
||||||
<string name="rendering_attr_noPolygons_description">Tee kaikki maankäyttäominaisuudet läpikuultaviksi kartalla.</string>
|
<string name="rendering_attr_noPolygons_description">Tee kaikki maankäyttäominaisuudet läpikuultaviksi kartalla.</string>
|
||||||
<string name="direction_style_sidewise">Sivuittain (8 sektoria)</string>
|
<string name="direction_style_sidewise">Sivuittain (8 sektoria)</string>
|
||||||
<string name="settings_direction_style_descr">Valitse tyyli ilmaistaksesi suhteelliset suunnat liikuttaessa</string>
|
<string name="settings_direction_style_descr">Valitse tyyli ilmaistaksesi suhteelliset suunnat liikuttaessa</string>
|
||||||
|
@ -1846,7 +1849,7 @@ Jos pidät OsmAndista ja OSMsta ja haluat tukea niitä, on tämä täydellinen t
|
||||||
<string name="incomplete_locale">epätäydellinen</string>
|
<string name="incomplete_locale">epätäydellinen</string>
|
||||||
<string name="send_location_way_choose_title">Jaa sijainti käyttäen</string>
|
<string name="send_location_way_choose_title">Jaa sijainti käyttäen</string>
|
||||||
<string name="send_location_sms_pattern">Sijainti: %1$s
|
<string name="send_location_sms_pattern">Sijainti: %1$s
|
||||||
%2$s</string>
|
\n%2$s</string>
|
||||||
<string name="add_waypoint_dialog_added">GPX väyläpiste \'\'{0}\'\' lisätty</string>
|
<string name="add_waypoint_dialog_added">GPX väyläpiste \'\'{0}\'\' lisätty</string>
|
||||||
<string name="add_waypoint_dialog_title">Lisää väyläpiste tallennettuun GPX jälkeen</string>
|
<string name="add_waypoint_dialog_title">Lisää väyläpiste tallennettuun GPX jälkeen</string>
|
||||||
<string name="amenity_type_administrative">Hallinnollinen</string>
|
<string name="amenity_type_administrative">Hallinnollinen</string>
|
||||||
|
@ -1881,7 +1884,7 @@ Jos pidät OsmAndista ja OSMsta ja haluat tukea niitä, on tämä täydellinen t
|
||||||
<string name="failed_to_upload">Vieminen epäonnistui</string>
|
<string name="failed_to_upload">Vieminen epäonnistui</string>
|
||||||
<string name="successfully_uploaded_pattern">Viety {0}/{1}</string>
|
<string name="successfully_uploaded_pattern">Viety {0}/{1}</string>
|
||||||
<string name="offline_maps_and_navigation">Offline Kartat
|
<string name="offline_maps_and_navigation">Offline Kartat
|
||||||
& Suunnistus</string>
|
\n& Suunnistus</string>
|
||||||
<string name="commit_poi"/>
|
<string name="commit_poi"/>
|
||||||
<string name="tab_title_advanced"/>
|
<string name="tab_title_advanced"/>
|
||||||
<string name="confirm_download_roadmaps">Vain tiet-karttaa ei tarvita, koska sinulla on jo vakio (täysi) kartta. Ladataanko se silti\?</string>
|
<string name="confirm_download_roadmaps">Vain tiet-karttaa ei tarvita, koska sinulla on jo vakio (täysi) kartta. Ladataanko se silti\?</string>
|
||||||
|
@ -2545,7 +2548,7 @@ Jos pidät OsmAndista ja OSMsta ja haluat tukea niitä, on tämä täydellinen t
|
||||||
<string name="radius_ruler_item">Sädeviivain</string>
|
<string name="radius_ruler_item">Sädeviivain</string>
|
||||||
<string name="download_unsupported_action">Ei tuettu toiminto %1$s</string>
|
<string name="download_unsupported_action">Ei tuettu toiminto %1$s</string>
|
||||||
<string name="travel_item">Matkailu (Wikivoyage ja Wikipedia)</string>
|
<string name="travel_item">Matkailu (Wikivoyage ja Wikipedia)</string>
|
||||||
<string name="select_track_file">"Valitse reitti tiedosto "</string>
|
<string name="select_track_file">Valitse reitti tiedosto</string>
|
||||||
<string name="wiki_menu_download_descr">Lisäkarttoja tarvitaan Wikipedian erikoiskohteiden tarkastelemiseen kartalla.</string>
|
<string name="wiki_menu_download_descr">Lisäkarttoja tarvitaan Wikipedian erikoiskohteiden tarkastelemiseen kartalla.</string>
|
||||||
<string name="select_wikipedia_article_langs">Valitse kielet, joilla Wikipedia-artikkelit näkyvät kartalla. Voit vaihtaa kaikkien käytettävissä olevien kielten välillä lukiessasi artikkelia.</string>
|
<string name="select_wikipedia_article_langs">Valitse kielet, joilla Wikipedia-artikkelit näkyvät kartalla. Voit vaihtaa kaikkien käytettävissä olevien kielten välillä lukiessasi artikkelia.</string>
|
||||||
<string name="some_articles_may_not_available_in_lang">Jotkut Wikipedia-artikkelit eivät välttämättä ole saatavilla omalla kielelläsi.</string>
|
<string name="some_articles_may_not_available_in_lang">Jotkut Wikipedia-artikkelit eivät välttämättä ole saatavilla omalla kielelläsi.</string>
|
||||||
|
@ -2560,4 +2563,14 @@ Jos pidät OsmAndista ja OSMsta ja haluat tukea niitä, on tämä täydellinen t
|
||||||
<string name="settings_item_read_error">Ei voitu lukea \'%1$s\'.</string>
|
<string name="settings_item_read_error">Ei voitu lukea \'%1$s\'.</string>
|
||||||
<string name="settings_item_write_error">Ei voitu kirjoittaa \'%1$s\'.</string>
|
<string name="settings_item_write_error">Ei voitu kirjoittaa \'%1$s\'.</string>
|
||||||
<string name="settings_item_import_error">Ei voitu tuoda kohteesta \'%1$s\'.</string>
|
<string name="settings_item_import_error">Ei voitu tuoda kohteesta \'%1$s\'.</string>
|
||||||
|
<string name="days_5">Päivää</string>
|
||||||
|
<string name="days_2_4">Päivää</string>
|
||||||
|
<string name="day">Päivä</string>
|
||||||
|
<string name="weeks_5">Viikkoa</string>
|
||||||
|
<string name="weeks_2_4">Viikkoa</string>
|
||||||
|
<string name="week">Viikko</string>
|
||||||
|
<string name="shared_string_bearing">Suuntima</string>
|
||||||
|
<string name="plan_a_route">Suunnittele reitti</string>
|
||||||
|
<string name="plan_route_last_edited">Viimeksi muokattu</string>
|
||||||
|
<string name="plan_route_create_new_route">Luo uusi reitti</string>
|
||||||
</resources>
|
</resources>
|
|
@ -51,7 +51,7 @@
|
||||||
<string name="global_app_settings">Paramètres globaux de l\'application</string>
|
<string name="global_app_settings">Paramètres globaux de l\'application</string>
|
||||||
<string name="user_name">Votre identifiant OSM</string>
|
<string name="user_name">Votre identifiant OSM</string>
|
||||||
<string name="open_street_map_login_descr">Nécessaire pour les contributions à openstreetmap.org.</string>
|
<string name="open_street_map_login_descr">Nécessaire pour les contributions à openstreetmap.org.</string>
|
||||||
<string name="user_password">Votre mot de passe OSM</string>
|
<string name="user_password">Mot de passe</string>
|
||||||
<string name="osmand_service">Mode arrière-plan</string>
|
<string name="osmand_service">Mode arrière-plan</string>
|
||||||
<string name="osmand_service_descr">OsmAnd s\'exécute en arrière-plan, écran éteint.</string>
|
<string name="osmand_service_descr">OsmAnd s\'exécute en arrière-plan, écran éteint.</string>
|
||||||
<string name="switch_to_raster_map_to_see">Téléchargez une carte vectorielle hors-ligne pour ce lieu (depuis « Paramètres » > « Gérer les cartes ») ou utilisez le greffon « cartes en ligne ».</string>
|
<string name="switch_to_raster_map_to_see">Téléchargez une carte vectorielle hors-ligne pour ce lieu (depuis « Paramètres » > « Gérer les cartes ») ou utilisez le greffon « cartes en ligne ».</string>
|
||||||
|
@ -3406,7 +3406,7 @@
|
||||||
<string name="route_recalculation">Recalcul de l\'itinéraire</string>
|
<string name="route_recalculation">Recalcul de l\'itinéraire</string>
|
||||||
<string name="accessibility_announce">Annonce</string>
|
<string name="accessibility_announce">Annonce</string>
|
||||||
<string name="login_and_pass">Nom d\'utilisateur et mot de passe</string>
|
<string name="login_and_pass">Nom d\'utilisateur et mot de passe</string>
|
||||||
<string name="plugin_global_prefs_info">Ces paramètres s\'appliquent à tous les profils.</string>
|
<string name="plugin_global_prefs_info">Les paramètres du greffon sont globaux et s\'appliquent à tous les profils.</string>
|
||||||
<string name="osm_editing">Édition OSM</string>
|
<string name="osm_editing">Édition OSM</string>
|
||||||
<string name="osm_edits_view_descr">Vous pouvez consulter vos modifications non téléversées comme vos bugs OSM dans %1$s. Les points envoyés ne sont plus affichés dans OsmAnd.</string>
|
<string name="osm_edits_view_descr">Vous pouvez consulter vos modifications non téléversées comme vos bugs OSM dans %1$s. Les points envoyés ne sont plus affichés dans OsmAnd.</string>
|
||||||
<string name="app_mode_osm">OSM</string>
|
<string name="app_mode_osm">OSM</string>
|
||||||
|
@ -3926,5 +3926,15 @@
|
||||||
<string name="mgrs_format_descr">OsmAnd utilise le système de référence MDRS de l\'OTAN dérivé des formats UTM et UPS.</string>
|
<string name="mgrs_format_descr">OsmAnd utilise le système de référence MDRS de l\'OTAN dérivé des formats UTM et UPS.</string>
|
||||||
<string name="navigate_point_format_mgrs">MGRS</string>
|
<string name="navigate_point_format_mgrs">MGRS</string>
|
||||||
<string name="navigate_point_mgrs">MGRS</string>
|
<string name="navigate_point_mgrs">MGRS</string>
|
||||||
<string name="message_you_need_add_two_points_to_show_graphs">Vous devez ajouter, au moins, deux points.</string>
|
<string name="message_you_need_add_two_points_to_show_graphs">Vous devez, au moins, ajouter deux points.</string>
|
||||||
|
<string name="subscription_on_hold_title">L\'abonnement OsmAnd Live est en attente</string>
|
||||||
|
<string name="subscription_expired_title">L’abonnement OsmAnd Live a expiré</string>
|
||||||
|
<string name="subscription_paused_title">L\'abonnement OsmAnd Live a été suspendu</string>
|
||||||
|
<string name="login_open_street_map">Se connecter à OpenStreetMap</string>
|
||||||
|
<string name="login_open_street_map_org">Se connecter à OpenStreetMap.org</string>
|
||||||
|
<string name="sing_in_with_open_street_map">Se connecter avec OpenStreetMap</string>
|
||||||
|
<string name="user_login">Identifiant</string>
|
||||||
|
<string name="use_login_password">Utiliser un identifiant et un mot de passe</string>
|
||||||
|
<string name="login_account">Compte</string>
|
||||||
|
<string name="manage_subscription">Gérer l\'abonnement</string>
|
||||||
</resources>
|
</resources>
|
|
@ -3842,4 +3842,5 @@
|
||||||
<string name="poi_parking_sheds">Pendellos</string>
|
<string name="poi_parking_sheds">Pendellos</string>
|
||||||
<string name="poi_parking_rooftop">Terrazo</string>
|
<string name="poi_parking_rooftop">Terrazo</string>
|
||||||
<string name="poi_gpx_point">Punto GPX</string>
|
<string name="poi_gpx_point">Punto GPX</string>
|
||||||
|
<string name="poi_radar_tower">Torre de radar</string>
|
||||||
</resources>
|
</resources>
|
|
@ -3971,4 +3971,10 @@ Lon %2$s</string>
|
||||||
<string name="icon_group_sport">Deporte</string>
|
<string name="icon_group_sport">Deporte</string>
|
||||||
<string name="icon_group_emergency">Emerxencia</string>
|
<string name="icon_group_emergency">Emerxencia</string>
|
||||||
<string name="icon_group_travel">Viaxe</string>
|
<string name="icon_group_travel">Viaxe</string>
|
||||||
|
<string name="message_you_need_add_two_points_to_show_graphs">Tes que engadir polo menos dous puntos.</string>
|
||||||
|
<string name="manage_subscription">Xestionar subscrición</string>
|
||||||
|
<string name="subscription_payment_issue_title">Hai un problema coa túa subscrición. Preme no botón para ir ós axustes de subscrición da Google Play e corrixir o teu método de pagamento.</string>
|
||||||
|
<string name="subscription_expired_title">A subscrición do OsmAnd Live expirou</string>
|
||||||
|
<string name="subscription_paused_title">A subscrición do OsmAnd Live foi detida</string>
|
||||||
|
<string name="subscription_on_hold_title">A subscrición do OsmAnd Live está en espera</string>
|
||||||
</resources>
|
</resources>
|
|
@ -114,7 +114,7 @@
|
||||||
<string name="global_app_settings">Globális beállítások az alkalmazáshoz</string>
|
<string name="global_app_settings">Globális beállítások az alkalmazáshoz</string>
|
||||||
<string name="user_name">OSM felhasználóneved</string>
|
<string name="user_name">OSM felhasználóneved</string>
|
||||||
<string name="open_street_map_login_descr">Az openstreetmap.org felé történő adatküldéshez szükséges.</string>
|
<string name="open_street_map_login_descr">Az openstreetmap.org felé történő adatküldéshez szükséges.</string>
|
||||||
<string name="user_password">OSM jelszavad</string>
|
<string name="user_password">Jelszó</string>
|
||||||
<string name="osmand_service">Háttérmód</string>
|
<string name="osmand_service">Háttérmód</string>
|
||||||
<string name="osmand_service_descr">Az OsmAnd háttérben fut kikapcsolt kijelzővel.</string>
|
<string name="osmand_service_descr">Az OsmAnd háttérben fut kikapcsolt kijelzővel.</string>
|
||||||
<string name="switch_to_raster_map_to_see">Erre a területre letölthet offline vektoros térképet a Beállításokban (Térképfájlok kezelése), vagy váltson át az Online térképek bővítményre.</string>
|
<string name="switch_to_raster_map_to_see">Erre a területre letölthet offline vektoros térképet a Beállításokban (Térképfájlok kezelése), vagy váltson át az Online térképek bővítményre.</string>
|
||||||
|
@ -239,7 +239,7 @@
|
||||||
<string name="map_overlay_descr">Rátéttérkép kiválasztása</string>
|
<string name="map_overlay_descr">Rátéttérkép kiválasztása</string>
|
||||||
<string name="tile_source_already_installed">A térkép már telepítve van, a beállítások frissülnek.</string>
|
<string name="tile_source_already_installed">A térkép már telepítve van, a beállítások frissülnek.</string>
|
||||||
<string name="select_tile_source_to_install">(Csempés) térkép kiválasztása telepítéshez vagy frissítéshez.</string>
|
<string name="select_tile_source_to_install">(Csempés) térkép kiválasztása telepítéshez vagy frissítéshez.</string>
|
||||||
<string name="internet_not_available">Nem lehet végrehajtani a műveletet internetkapcsolat nélkül.</string>
|
<string name="internet_not_available">A műveletet nem lehetséges internetkapcsolat nélkül végrehajtani.</string>
|
||||||
<string name="install_more">További telepítése…</string>
|
<string name="install_more">További telepítése…</string>
|
||||||
<string name="level_to_switch_vector_raster_descr">Raszteres térképek használata ezen nagyítási szint alatt.</string>
|
<string name="level_to_switch_vector_raster_descr">Raszteres térképek használata ezen nagyítási szint alatt.</string>
|
||||||
<string name="level_to_switch_vector_raster">Legkisebb vektoros nagyítási szint</string>
|
<string name="level_to_switch_vector_raster">Legkisebb vektoros nagyítási szint</string>
|
||||||
|
@ -1228,7 +1228,7 @@
|
||||||
<string name="import_file_favourites">Mented az adatokat GPX fájlként, vagy importálod az útpontokat a „Kedvencek”-be?</string>
|
<string name="import_file_favourites">Mented az adatokat GPX fájlként, vagy importálod az útpontokat a „Kedvencek”-be?</string>
|
||||||
<string name="shared_string_share">Megosztás</string>
|
<string name="shared_string_share">Megosztás</string>
|
||||||
<string name="share_fav_subject">OsmAndból megosztott kedvencek</string>
|
<string name="share_fav_subject">OsmAndból megosztott kedvencek</string>
|
||||||
<string name="no_index_file_to_download">Nem találhatók letöltések, ellenőrizd az internetkapcsolatot.</string>
|
<string name="no_index_file_to_download">Nem találhatók letöltések, ellenőrizze az internetkapcsolatot.</string>
|
||||||
<string name="none_selected_gpx">Először egy hosszú koppintással adjon meg egy GPX-fájlt.</string>
|
<string name="none_selected_gpx">Először egy hosszú koppintással adjon meg egy GPX-fájlt.</string>
|
||||||
<string name="local_index_select_gpx_file">Nyomvonal kijelölése</string>
|
<string name="local_index_select_gpx_file">Nyomvonal kijelölése</string>
|
||||||
<string name="sort_by_distance">Rendezés távolság szerint</string>
|
<string name="sort_by_distance">Rendezés távolság szerint</string>
|
||||||
|
@ -1370,7 +1370,7 @@
|
||||||
<string name="download_tab_updates">Frissítések</string>
|
<string name="download_tab_updates">Frissítések</string>
|
||||||
<string name="download_tab_downloads">Letöltés</string>
|
<string name="download_tab_downloads">Letöltés</string>
|
||||||
<string name="download_tab_local">Helyi</string>
|
<string name="download_tab_local">Helyi</string>
|
||||||
<string name="no_internet_connection">A letöltés nem lehetséges, ellenőrizd az internet-kapcsolatot.</string>
|
<string name="no_internet_connection">A letöltés nem lehetséges, ellenőrizze az internetkapcsolatot.</string>
|
||||||
<string name="shared_string_dismiss">Bezárás</string>
|
<string name="shared_string_dismiss">Bezárás</string>
|
||||||
<string name="everything_up_to_date">Minden fájl naprakész</string>
|
<string name="everything_up_to_date">Minden fájl naprakész</string>
|
||||||
<string name="use_opengl_render">OpenGL megjelenítő használata</string>
|
<string name="use_opengl_render">OpenGL megjelenítő használata</string>
|
||||||
|
@ -2493,9 +2493,9 @@
|
||||||
<string name="context_menu_points_of_group">A csoport összes pontja</string>
|
<string name="context_menu_points_of_group">A csoport összes pontja</string>
|
||||||
<string name="open_from">Nyitva ekkortól:</string>
|
<string name="open_from">Nyitva ekkortól:</string>
|
||||||
<string name="open_till">Nyitva eddig:</string>
|
<string name="open_till">Nyitva eddig:</string>
|
||||||
<string name="will_close_at">Bezár ekkor:</string>
|
<string name="will_close_at">Ekkor zár:</string>
|
||||||
<string name="will_open_at">Kinyit ekkor:</string>
|
<string name="will_open_at">Ekkor nyit:</string>
|
||||||
<string name="will_open_on">Kinyit ekkor:</string>
|
<string name="will_open_on">Ekkor nyit:</string>
|
||||||
<string name="additional_actions">További műveletek</string>
|
<string name="additional_actions">További műveletek</string>
|
||||||
<string name="av_locations_selected_desc">GPX fájl a kijelölt jegyzetek koordinátáival és adataival.</string>
|
<string name="av_locations_selected_desc">GPX fájl a kijelölt jegyzetek koordinátáival és adataival.</string>
|
||||||
<string name="av_locations_all_desc">GPX fájl az összes jegyzet koordinátáival és adataival.</string>
|
<string name="av_locations_all_desc">GPX fájl az összes jegyzet koordinátáival és adataival.</string>
|
||||||
|
@ -3420,7 +3420,7 @@
|
||||||
<string name="route_recalculation">Útvonal újraszámítása</string>
|
<string name="route_recalculation">Útvonal újraszámítása</string>
|
||||||
<string name="accessibility_announce">Bejelentés</string>
|
<string name="accessibility_announce">Bejelentés</string>
|
||||||
<string name="login_and_pass">Felhasználónév és jelszó</string>
|
<string name="login_and_pass">Felhasználónév és jelszó</string>
|
||||||
<string name="plugin_global_prefs_info">Ezek a beállítások minden profilra vonatkoznak.</string>
|
<string name="plugin_global_prefs_info">Ezek a bővítménybeállítások globálisak, és minden profilra vonatkoznak</string>
|
||||||
<string name="osm_editing">OSM-szerkesztés</string>
|
<string name="osm_editing">OSM-szerkesztés</string>
|
||||||
<string name="osm_edits_view_descr">Az összes még fel nem töltött szerkesztés vagy OSM-hiba megtalálható a %1$s helyen. A már feltöltött pontok nem láthatók az OsmAndban.</string>
|
<string name="osm_edits_view_descr">Az összes még fel nem töltött szerkesztés vagy OSM-hiba megtalálható a %1$s helyen. A már feltöltött pontok nem láthatók az OsmAndban.</string>
|
||||||
<string name="app_mode_osm">OSM</string>
|
<string name="app_mode_osm">OSM</string>
|
||||||
|
@ -3939,4 +3939,5 @@
|
||||||
<string name="navigate_point_format_mgrs">MGRS</string>
|
<string name="navigate_point_format_mgrs">MGRS</string>
|
||||||
<string name="mgrs_format_descr">Az OsmAnd a NATO által is használt MGRS (Military Grid Reference System) koordinátákat alkamazza, amely hasonlít az UTM-formátumhoz.</string>
|
<string name="mgrs_format_descr">Az OsmAnd a NATO által is használt MGRS (Military Grid Reference System) koordinátákat alkamazza, amely hasonlít az UTM-formátumhoz.</string>
|
||||||
<string name="message_you_need_add_two_points_to_show_graphs">Legalább két pontot kell hozzáadnia.</string>
|
<string name="message_you_need_add_two_points_to_show_graphs">Legalább két pontot kell hozzáadnia.</string>
|
||||||
|
<string name="manage_subscription">Előfizetés kezelése</string>
|
||||||
</resources>
|
</resources>
|
|
@ -303,7 +303,7 @@
|
||||||
<string name="global_app_settings">הגדרות יישומים כלליות</string>
|
<string name="global_app_settings">הגדרות יישומים כלליות</string>
|
||||||
<string name="user_name">שם המשתמש שלך ב־OSM</string>
|
<string name="user_name">שם המשתמש שלך ב־OSM</string>
|
||||||
<string name="open_street_map_login_descr">נדרש לטובת שליחת נתונים אל openstreetmap.org.</string>
|
<string name="open_street_map_login_descr">נדרש לטובת שליחת נתונים אל openstreetmap.org.</string>
|
||||||
<string name="user_password">הססמה שלך ב־OSM</string>
|
<string name="user_password">ססמה</string>
|
||||||
<string name="osmand_service">מצב רקע</string>
|
<string name="osmand_service">מצב רקע</string>
|
||||||
<string name="osmand_service_descr">OsmAnd פועל ברקע בזמן שהמסך כבוי.</string>
|
<string name="osmand_service_descr">OsmAnd פועל ברקע בזמן שהמסך כבוי.</string>
|
||||||
<string name="download_files_not_enough_space">אין די מקום כדי להוריד %1$s מ״ב (פנויים: %2$s).</string>
|
<string name="download_files_not_enough_space">אין די מקום כדי להוריד %1$s מ״ב (פנויים: %2$s).</string>
|
||||||
|
@ -3951,4 +3951,19 @@
|
||||||
<string name="mgrs_format_descr">ב־OsmAnd נעשה שימוש ב־MGRS, שדומה לתצורת UTM NATO.</string>
|
<string name="mgrs_format_descr">ב־OsmAnd נעשה שימוש ב־MGRS, שדומה לתצורת UTM NATO.</string>
|
||||||
<string name="navigate_point_mgrs">MGRS</string>
|
<string name="navigate_point_mgrs">MGRS</string>
|
||||||
<string name="navigate_point_format_mgrs">MGRS</string>
|
<string name="navigate_point_format_mgrs">MGRS</string>
|
||||||
|
<string name="message_you_need_add_two_points_to_show_graphs">עליך להוסיף שתי נקודות לפחות.</string>
|
||||||
|
<string name="login_open_street_map">כניסה ל־OpenStreetMap</string>
|
||||||
|
<string name="login_open_street_map_org">כניסה ל־OpenStreetMap.org</string>
|
||||||
|
<string name="sing_in_with_open_street_map">כניסה עם OpenStreetMap</string>
|
||||||
|
<string name="use_login_password">להשתמש בשם כניסה וססמה</string>
|
||||||
|
<string name="login_account">חשבון</string>
|
||||||
|
<string name="user_login">כניסה</string>
|
||||||
|
<string name="manage_subscription">ניהול מינוי</string>
|
||||||
|
<string name="subscription_expired_title">תוקף המינוי ל־OsmAnd Live פג</string>
|
||||||
|
<string name="subscription_paused_title">המינוי ל־OsmAnd Live הושהה</string>
|
||||||
|
<string name="open_street_map_login_mode">עליך להיכנס כדי להעלות דברים חדשים או כאלו ששינית.
|
||||||
|
\n
|
||||||
|
\nניתן להיכנס בשיטת OAuth המאובטחת או להשתמש בשם הכניסה והססמה שלך.</string>
|
||||||
|
<string name="subscription_payment_issue_title">יש בעיה עם המינוי שלך. יש ללחוץ על הכפתור כדי לגשת להגדרות המינוי של Google Play ולתקן את שיטת התשלום שלך.</string>
|
||||||
|
<string name="subscription_on_hold_title">המינוי ל־OsmAnd Live מוחזק</string>
|
||||||
</resources>
|
</resources>
|
2
OsmAnd/res/values-lb/strings.xml
Normal file
2
OsmAnd/res/values-lb/strings.xml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources></resources>
|
|
@ -3562,10 +3562,10 @@
|
||||||
<string name="poi_hazard">Zagrożenie</string>
|
<string name="poi_hazard">Zagrożenie</string>
|
||||||
<string name="poi_health_specialty_radiotherapy_yes">Radioterapia</string>
|
<string name="poi_health_specialty_radiotherapy_yes">Radioterapia</string>
|
||||||
<string name="poi_change_delete">Usunięty obiekt</string>
|
<string name="poi_change_delete">Usunięty obiekt</string>
|
||||||
<string name="poi_rtsa_scale_nc">н/к</string>
|
<string name="poi_rtsa_scale_nc">n/c</string>
|
||||||
<string name="poi_rtsa_scale_nc_asterisk">н/к*</string>
|
<string name="poi_rtsa_scale_nc_asterisk">n/c*</string>
|
||||||
<string name="poi_rtsa_scale_1a">1A</string>
|
<string name="poi_rtsa_scale_1a">1A</string>
|
||||||
<string name="poi_rtsa_scale_1a_asterisk">1А*</string>
|
<string name="poi_rtsa_scale_1a_asterisk">1A*</string>
|
||||||
<string name="poi_rtsa_scale_1b">1B</string>
|
<string name="poi_rtsa_scale_1b">1B</string>
|
||||||
<string name="poi_rtsa_scale_1b_asterisk">1B*</string>
|
<string name="poi_rtsa_scale_1b_asterisk">1B*</string>
|
||||||
<string name="poi_rtsa_scale_2a">2A</string>
|
<string name="poi_rtsa_scale_2a">2A</string>
|
||||||
|
@ -3817,7 +3817,7 @@
|
||||||
<string name="poi_seamark_water_level_below_mwl">Poziom wody: poniżej średniego poziomu wody</string>
|
<string name="poi_seamark_water_level_below_mwl">Poziom wody: poniżej średniego poziomu wody</string>
|
||||||
<string name="poi_seamark_water_level_awash">Poziom wody: obmywający falami</string>
|
<string name="poi_seamark_water_level_awash">Poziom wody: obmywający falami</string>
|
||||||
<string name="poi_seamark_water_level_covers">Poziom wody: pokrywający</string>
|
<string name="poi_seamark_water_level_covers">Poziom wody: pokrywający</string>
|
||||||
<string name="poi_internet_access_fee_customers">Dostęp do Internetu dla klientów</string>
|
<string name="poi_internet_access_fee_customers">Dostęp do Internetu: klienci</string>
|
||||||
<string name="poi_osmand_fire_hydrant_pressure_suction">Ssanie</string>
|
<string name="poi_osmand_fire_hydrant_pressure_suction">Ssanie</string>
|
||||||
<string name="poi_osmand_fire_hydrant_pressure_pressurized">Pod ciśnieniem</string>
|
<string name="poi_osmand_fire_hydrant_pressure_pressurized">Pod ciśnieniem</string>
|
||||||
<string name="poi_fire_hydrant_style_water_source_groundwater">Woda podziemna</string>
|
<string name="poi_fire_hydrant_style_water_source_groundwater">Woda podziemna</string>
|
||||||
|
|
|
@ -127,7 +127,7 @@
|
||||||
<string name="system_locale">Systemowy</string>
|
<string name="system_locale">Systemowy</string>
|
||||||
<string name="preferred_locale_descr">Wybiera język interfejsu (po zmianie należy uruchomić OsmAnd ponownie).</string>
|
<string name="preferred_locale_descr">Wybiera język interfejsu (po zmianie należy uruchomić OsmAnd ponownie).</string>
|
||||||
<string name="preferred_locale">Język interfejsu</string>
|
<string name="preferred_locale">Język interfejsu</string>
|
||||||
<string name="shared_string_next">Naprzód</string>
|
<string name="shared_string_next">Dalej</string>
|
||||||
<string name="shared_string_previous">Poprzedni</string>
|
<string name="shared_string_previous">Poprzedni</string>
|
||||||
<string name="unit_of_length_descr">Zmienia jednostki długości.</string>
|
<string name="unit_of_length_descr">Zmienia jednostki długości.</string>
|
||||||
<string name="unit_of_length">Jednostki długości</string>
|
<string name="unit_of_length">Jednostki długości</string>
|
||||||
|
@ -422,7 +422,7 @@
|
||||||
<string name="finished_task">Zakończono</string>
|
<string name="finished_task">Zakończono</string>
|
||||||
<string name="use_online_routing_descr">Użyj Internetu do wyznaczenia trasy.</string>
|
<string name="use_online_routing_descr">Użyj Internetu do wyznaczenia trasy.</string>
|
||||||
<string name="use_online_routing">Użyj nawigacji online</string>
|
<string name="use_online_routing">Użyj nawigacji online</string>
|
||||||
<string name="user_password">Hasło konta OSM</string>
|
<string name="user_password">Hasło</string>
|
||||||
<string name="osm_settings_descr">Skonfiguruj ustawienia potrzebne do wysyłania danych do Openstreetmap.org (OSM).</string>
|
<string name="osm_settings_descr">Skonfiguruj ustawienia potrzebne do wysyłania danych do Openstreetmap.org (OSM).</string>
|
||||||
<string name="data_settings_descr">Ustaw język, pobierz/wczytaj ponownie dane.</string>
|
<string name="data_settings_descr">Ustaw język, pobierz/wczytaj ponownie dane.</string>
|
||||||
<string name="data_settings">Dane</string>
|
<string name="data_settings">Dane</string>
|
||||||
|
@ -3426,7 +3426,7 @@
|
||||||
<string name="route_recalculation">Ponowne wyliczenie trasy</string>
|
<string name="route_recalculation">Ponowne wyliczenie trasy</string>
|
||||||
<string name="accessibility_announce">Zapowiedź</string>
|
<string name="accessibility_announce">Zapowiedź</string>
|
||||||
<string name="login_and_pass">Nazwa użytkownika i hasło</string>
|
<string name="login_and_pass">Nazwa użytkownika i hasło</string>
|
||||||
<string name="plugin_global_prefs_info">Te ustawienia mają zastosowanie do wszystkich profilów.</string>
|
<string name="plugin_global_prefs_info">Ustawienia tej wtyczki są globalne i dotyczą wszystkich profili</string>
|
||||||
<string name="osm_editing">Edycja OSM</string>
|
<string name="osm_editing">Edycja OSM</string>
|
||||||
<string name="app_mode_osm">OSM</string>
|
<string name="app_mode_osm">OSM</string>
|
||||||
<string name="select_nav_icon_descr">Ikona wyświetlana podczas nawigacji lub ruchu.</string>
|
<string name="select_nav_icon_descr">Ikona wyświetlana podczas nawigacji lub ruchu.</string>
|
||||||
|
@ -3549,7 +3549,7 @@
|
||||||
<string name="shared_string_quick_actions">Szybka czynność</string>
|
<string name="shared_string_quick_actions">Szybka czynność</string>
|
||||||
<string name="keep_both">Zatrzymaj oba</string>
|
<string name="keep_both">Zatrzymaj oba</string>
|
||||||
<string name="shared_string_rendering_style">Styl renderowania</string>
|
<string name="shared_string_rendering_style">Styl renderowania</string>
|
||||||
<string name="osm_edits_view_descr">Zobacz swoje zmiany lub błędy OSM, które nie zostały jeszcze przesłane w %1$s. Przesłane punkty nie będą już wyświetlane.</string>
|
<string name="osm_edits_view_descr">Możesz zobaczyć wszystkie nieopublikowane edycje lub błędy OSM w %1$s. Przesłane punkty nie są wyświetlane w OsmAnd.</string>
|
||||||
<string name="import_rendering_file">Importowanie pliku renderowania</string>
|
<string name="import_rendering_file">Importowanie pliku renderowania</string>
|
||||||
<string name="restore_all_profile_settings">Przywrócić wszystkie ustawienia profilu\?</string>
|
<string name="restore_all_profile_settings">Przywrócić wszystkie ustawienia profilu\?</string>
|
||||||
<string name="saving_new_profile">Zapisywanie nowego profilu</string>
|
<string name="saving_new_profile">Zapisywanie nowego profilu</string>
|
||||||
|
@ -3813,7 +3813,7 @@
|
||||||
<string name="select_track_width">Wybierz szerokość</string>
|
<string name="select_track_width">Wybierz szerokość</string>
|
||||||
<string name="gpx_split_interval_none_descr">Wybierz żądaną opcję podziału: według czasu lub odległości.</string>
|
<string name="gpx_split_interval_none_descr">Wybierz żądaną opcję podziału: według czasu lub odległości.</string>
|
||||||
<string name="track_coloring_solid">Stałe</string>
|
<string name="track_coloring_solid">Stałe</string>
|
||||||
<string name="gpx_parse_error">OsmAnd GPX nie jest dobrze uformowany, prosimy o kontakt z zespołem wsparcia technicznego w celu dalszego zbadania sprawy.</string>
|
<string name="gpx_parse_error">Plik OsmAnd GPX nie jest poprawnie skonstruowany, prosimy o kontakt z zespołem wsparcia technicznego w celu dalszego zbadania sprawy.</string>
|
||||||
<string name="turn_screen_on_wake_time_descr">Wybierz limit czasu ekranu po przebudzeniu. (\"%1$s\" nie powoduje przekroczenia limitu czasu.)</string>
|
<string name="turn_screen_on_wake_time_descr">Wybierz limit czasu ekranu po przebudzeniu. (\"%1$s\" nie powoduje przekroczenia limitu czasu.)</string>
|
||||||
<string name="track_show_start_finish_icons">Pokaż ikony początku i końca</string>
|
<string name="track_show_start_finish_icons">Pokaż ikony początku i końca</string>
|
||||||
<string name="gpx_split_interval_descr">Wybierz przedział czasowy, w którym będą wyświetlane znaki z odległością lub czasem na torze.</string>
|
<string name="gpx_split_interval_descr">Wybierz przedział czasowy, w którym będą wyświetlane znaki z odległością lub czasem na torze.</string>
|
||||||
|
@ -3837,9 +3837,7 @@
|
||||||
<string name="route_between_points_whole_track_button_desc">Cała trasa zostanie ponownie wyznaczona przy użyciu wybranego profilu.</string>
|
<string name="route_between_points_whole_track_button_desc">Cała trasa zostanie ponownie wyznaczona przy użyciu wybranego profilu.</string>
|
||||||
<string name="route_between_points_next_segment_button_desc">Tylko następny segment zostanie przeliczony przy użyciu wybranego profilu.</string>
|
<string name="route_between_points_next_segment_button_desc">Tylko następny segment zostanie przeliczony przy użyciu wybranego profilu.</string>
|
||||||
<string name="route_between_points_desc">Wybierz sposób łączenia punktów, za pomocą linii prostej, lub oblicz trasę między nimi w sposób określony poniżej.</string>
|
<string name="route_between_points_desc">Wybierz sposób łączenia punktów, za pomocą linii prostej, lub oblicz trasę między nimi w sposób określony poniżej.</string>
|
||||||
<string name="route_between_points_warning_desc">Aby skorzystać z tej opcji, OsmAnd musi przyciągnąć ślad do dróg mapy.
|
<string name="route_between_points_warning_desc">Następnie przyciągnij trasę do najbliższej dozwolonej drogi za pomocą jednego z profili nawigacji, aby skorzystać z tej opcji.</string>
|
||||||
\n
|
|
||||||
\nW następnym kroku należy wybrać profil nawigacji w celu wykrycia dozwolonych dróg i odległości progowej w celu przybliżenia śledzenia drogi.</string>
|
|
||||||
<string name="street_level_imagery">Zdjęcia z poziomu ulicy</string>
|
<string name="street_level_imagery">Zdjęcia z poziomu ulicy</string>
|
||||||
<string name="plan_route_exit_dialog_descr">Czy na pewno chcesz odrzucić wszystkie zmiany w zaplanowanej trasie, zamykając ją\?</string>
|
<string name="plan_route_exit_dialog_descr">Czy na pewno chcesz odrzucić wszystkie zmiany w zaplanowanej trasie, zamykając ją\?</string>
|
||||||
<string name="in_case_of_reverse_direction">W przypadku odwrotnego kierunku</string>
|
<string name="in_case_of_reverse_direction">W przypadku odwrotnego kierunku</string>
|
||||||
|
@ -3945,7 +3943,7 @@
|
||||||
<string name="shared_string_local_maps">Mapy lokalne</string>
|
<string name="shared_string_local_maps">Mapy lokalne</string>
|
||||||
<string name="app_mode_gap">Luka</string>
|
<string name="app_mode_gap">Luka</string>
|
||||||
<string name="icon_group_amenity">Udogodnienie</string>
|
<string name="icon_group_amenity">Udogodnienie</string>
|
||||||
<string name="icon_group_special">Specjalne</string>
|
<string name="icon_group_special">Specjalny</string>
|
||||||
<string name="icon_group_transport">Transport</string>
|
<string name="icon_group_transport">Transport</string>
|
||||||
<string name="icon_group_service">Usługi</string>
|
<string name="icon_group_service">Usługi</string>
|
||||||
<string name="icon_group_symbols">Symbole</string>
|
<string name="icon_group_symbols">Symbole</string>
|
||||||
|
@ -3956,4 +3954,17 @@
|
||||||
<string name="manage_subscription">Zarządzaj subskrypcją</string>
|
<string name="manage_subscription">Zarządzaj subskrypcją</string>
|
||||||
<string name="subscription_expired_title">Subskrypcja OsmAnd Live wygasła</string>
|
<string name="subscription_expired_title">Subskrypcja OsmAnd Live wygasła</string>
|
||||||
<string name="subscription_paused_title">Subskrypcja OsmAnd Live została wstrzymana</string>
|
<string name="subscription_paused_title">Subskrypcja OsmAnd Live została wstrzymana</string>
|
||||||
|
<string name="snowmobile_render_descr">Do jazdy skuterem śnieżnym z wyznaczonymi drogami i torami.</string>
|
||||||
|
<string name="message_you_need_add_two_points_to_show_graphs">Należy dodać co najmniej dwa punkty.</string>
|
||||||
|
<string name="subscription_payment_issue_title">Wystąpił problem z Twoją subskrypcją. Kliknij przycisk, aby przejść do ustawień subskrypcji Google Play i naprawić metodę płatności.</string>
|
||||||
|
<string name="subscription_on_hold_title">Subskrypcja OsmAnd Live jest wstrzymana</string>
|
||||||
|
<string name="user_login">Login</string>
|
||||||
|
<string name="login_open_street_map">Zaloguj się do OpenStreetMap</string>
|
||||||
|
<string name="login_open_street_map_org">Zaloguj się do OpenStreetMap.org</string>
|
||||||
|
<string name="sing_in_with_open_street_map">Zaloguj się za pomocą OpenStreetMap</string>
|
||||||
|
<string name="open_street_map_login_mode">Musisz się zalogować, aby przesłać nowe lub zmodyfikowane zmiany.
|
||||||
|
\n
|
||||||
|
\nMożesz zalogować się za pomocą bezpiecznej metody autoryzacji OAuth lub użyć swojego loginu i hasła.</string>
|
||||||
|
<string name="use_login_password">Użyj loginu i hasła</string>
|
||||||
|
<string name="login_account">Konto</string>
|
||||||
</resources>
|
</resources>
|
|
@ -1020,7 +1020,7 @@
|
||||||
<string name="global_app_settings">Configurações globais do aplicativo</string>
|
<string name="global_app_settings">Configurações globais do aplicativo</string>
|
||||||
<string name="user_name">Seu nome de usuário OSM</string>
|
<string name="user_name">Seu nome de usuário OSM</string>
|
||||||
<string name="open_street_map_login_descr">Necessário para envios ao openstreetmap.org.</string>
|
<string name="open_street_map_login_descr">Necessário para envios ao openstreetmap.org.</string>
|
||||||
<string name="user_password">Sua senha do OSM</string>
|
<string name="user_password">Senha</string>
|
||||||
<string name="osmand_service">Modo em segundo plano</string>
|
<string name="osmand_service">Modo em segundo plano</string>
|
||||||
<string name="osmand_service_descr">OsmAnd é executado em segundo plano com a tela desligada.</string>
|
<string name="osmand_service_descr">OsmAnd é executado em segundo plano com a tela desligada.</string>
|
||||||
<string name="arrival_distance_factor_late">Atrasado</string>
|
<string name="arrival_distance_factor_late">Atrasado</string>
|
||||||
|
@ -3421,9 +3421,9 @@
|
||||||
<string name="route_recalculation">Recálculo da rota</string>
|
<string name="route_recalculation">Recálculo da rota</string>
|
||||||
<string name="accessibility_announce">Anunciar</string>
|
<string name="accessibility_announce">Anunciar</string>
|
||||||
<string name="login_and_pass">Usuário e senha</string>
|
<string name="login_and_pass">Usuário e senha</string>
|
||||||
<string name="plugin_global_prefs_info">Essas configurações se aplicam a todos os perfis.</string>
|
<string name="plugin_global_prefs_info">Essas configurações de plug-in são globais e se aplicam a todos os perfis</string>
|
||||||
<string name="osm_editing">Edição OSM</string>
|
<string name="osm_editing">Edição OSM</string>
|
||||||
<string name="osm_edits_view_descr">Você pode ver todos os erros de osm do editor carregado em %1$s. Os pontos enviados não são exibidos no OsmAnd.</string>
|
<string name="osm_edits_view_descr">Você pode ver todas as suas edições descarregadas ou erros do OSM em %1$s. Os pontos carregados não aparecem no OsmAnd.</string>
|
||||||
<string name="app_mode_osm">OSM</string>
|
<string name="app_mode_osm">OSM</string>
|
||||||
<string name="select_nav_icon_descr">Ícone mostrado ao navegar ou mover.</string>
|
<string name="select_nav_icon_descr">Ícone mostrado ao navegar ou mover.</string>
|
||||||
<string name="select_map_icon_descr">Ícone mostrado em repouso.</string>
|
<string name="select_map_icon_descr">Ícone mostrado em repouso.</string>
|
||||||
|
@ -3947,4 +3947,14 @@
|
||||||
<string name="subscription_expired_title">A assinatura do OsmAnd Live expirou</string>
|
<string name="subscription_expired_title">A assinatura do OsmAnd Live expirou</string>
|
||||||
<string name="subscription_paused_title">A assinatura do OsmAnd Live foi pausada</string>
|
<string name="subscription_paused_title">A assinatura do OsmAnd Live foi pausada</string>
|
||||||
<string name="subscription_on_hold_title">A assinatura do OsmAnd Live está em espera</string>
|
<string name="subscription_on_hold_title">A assinatura do OsmAnd Live está em espera</string>
|
||||||
|
<string name="app_mode_gap">Diferença</string>
|
||||||
|
<string name="login_open_street_map">Entrar para OpenStreetMap</string>
|
||||||
|
<string name="login_open_street_map_org">Entrar com OpenStreetMap.org</string>
|
||||||
|
<string name="sing_in_with_open_street_map">Entrar com OpenStreetMap</string>
|
||||||
|
<string name="open_street_map_login_mode">Você precisa entrar para enviar alterações novas ou modificadas.
|
||||||
|
\n
|
||||||
|
\nVocê pode entrar usando o método OAuth seguro ou usar sua entrada e senha.</string>
|
||||||
|
<string name="use_login_password">Usar a entrada e senha</string>
|
||||||
|
<string name="login_account">Conta</string>
|
||||||
|
<string name="user_login">Entrar</string>
|
||||||
</resources>
|
</resources>
|
|
@ -269,7 +269,7 @@
|
||||||
<string name="finished_task">Concluído</string>
|
<string name="finished_task">Concluído</string>
|
||||||
<string name="use_online_routing_descr">Utilize a Internet para calcular uma rota.</string>
|
<string name="use_online_routing_descr">Utilize a Internet para calcular uma rota.</string>
|
||||||
<string name="use_online_routing">Utilizar navegação online</string>
|
<string name="use_online_routing">Utilizar navegação online</string>
|
||||||
<string name="user_password">A sua palavra-passe no OSM</string>
|
<string name="user_password">Palavra-passe</string>
|
||||||
<string name="osm_settings_descr">Especifique as configurações de OpenStreetMap.org (OSM) necessárias para envios ao OSM.</string>
|
<string name="osm_settings_descr">Especifique as configurações de OpenStreetMap.org (OSM) necessárias para envios ao OSM.</string>
|
||||||
<string name="data_settings_descr">Especifique o idioma, descarregar/enviar dados.</string>
|
<string name="data_settings_descr">Especifique o idioma, descarregar/enviar dados.</string>
|
||||||
<string name="data_settings">Dados</string>
|
<string name="data_settings">Dados</string>
|
||||||
|
@ -3566,9 +3566,9 @@
|
||||||
<string name="logcat_buffer_descr">Verifique e compartilhe registos detalhados da app</string>
|
<string name="logcat_buffer_descr">Verifique e compartilhe registos detalhados da app</string>
|
||||||
<string name="select_map_icon_descr">Ícone mostrado em repouso.</string>
|
<string name="select_map_icon_descr">Ícone mostrado em repouso.</string>
|
||||||
<string name="select_nav_icon_descr">Ícone mostrado ao navegar ou mover.</string>
|
<string name="select_nav_icon_descr">Ícone mostrado ao navegar ou mover.</string>
|
||||||
<string name="osm_edits_view_descr">Pode ver todos os erros de OSM do editor carregado em %1$s. Os pontos enviados não são exibidos no OsmAnd.</string>
|
<string name="osm_edits_view_descr">Pode ver todas as suas edições descarregadas ou bugs OSM em %1$s. Pontos enviados não aparecem no OsmAnd.</string>
|
||||||
<string name="osm_editing">Edição OSM</string>
|
<string name="osm_editing">Edição OSM</string>
|
||||||
<string name="plugin_global_prefs_info">Essas configurações aplicam-se a todos os perfis.</string>
|
<string name="plugin_global_prefs_info">Estas configurações de extensão são globais e aplicam-se a todos os perfis</string>
|
||||||
<string name="login_and_pass">Utilizador e palavra-passe</string>
|
<string name="login_and_pass">Utilizador e palavra-passe</string>
|
||||||
<string name="accessibility_announce">Anunciar</string>
|
<string name="accessibility_announce">Anunciar</string>
|
||||||
<string name="route_recalculation">Recálculo da rota</string>
|
<string name="route_recalculation">Recálculo da rota</string>
|
||||||
|
@ -3950,4 +3950,18 @@
|
||||||
<string name="icon_group_emergency">Emergência</string>
|
<string name="icon_group_emergency">Emergência</string>
|
||||||
<string name="icon_group_travel">Viagem</string>
|
<string name="icon_group_travel">Viagem</string>
|
||||||
<string name="message_you_need_add_two_points_to_show_graphs">Deve adicionar pelo menos dois pontos.</string>
|
<string name="message_you_need_add_two_points_to_show_graphs">Deve adicionar pelo menos dois pontos.</string>
|
||||||
|
<string name="manage_subscription">Gerir a assinatura</string>
|
||||||
|
<string name="subscription_payment_issue_title">Há um problema com a sua assinatura. Clique no botão para ir às definições de assinatura do Google Play para corrigir o seu método de pagamento.</string>
|
||||||
|
<string name="subscription_expired_title">A assinatura do OsmAnd Live expirou</string>
|
||||||
|
<string name="subscription_paused_title">A assinatura do OsmAnd Live foi pausada</string>
|
||||||
|
<string name="subscription_on_hold_title">A assinatura do OsmAnd Live está em espera</string>
|
||||||
|
<string name="open_street_map_login_mode">Precisa fazer login para enviar alterações novas ou modificadas.
|
||||||
|
\n
|
||||||
|
\nPode entrar a usar o método seguro OAuth ou usar o seu nome de utilizador e a sua palavra-passe.</string>
|
||||||
|
<string name="login_open_street_map">Fazer login ao OpenStreetMap</string>
|
||||||
|
<string name="login_open_street_map_org">Entrar com OpenStreetMap.org</string>
|
||||||
|
<string name="sing_in_with_open_street_map">Entrar com OpenStreetMap</string>
|
||||||
|
<string name="use_login_password">Usar nome do utilizador e palavra-passe</string>
|
||||||
|
<string name="login_account">Conta</string>
|
||||||
|
<string name="user_login">Entrar</string>
|
||||||
</resources>
|
</resources>
|
|
@ -3845,4 +3845,5 @@
|
||||||
<string name="poi_parking_sheds">Cabannas</string>
|
<string name="poi_parking_sheds">Cabannas</string>
|
||||||
<string name="poi_parking_rooftop">Cobertura</string>
|
<string name="poi_parking_rooftop">Cobertura</string>
|
||||||
<string name="poi_gpx_point">Puntu GPX</string>
|
<string name="poi_gpx_point">Puntu GPX</string>
|
||||||
|
<string name="poi_radar_tower">Torre ràdar</string>
|
||||||
</resources>
|
</resources>
|
|
@ -261,7 +261,7 @@
|
||||||
<string name="amenity_type_osmwiki">Wikipedia (çevrim dışı)</string>
|
<string name="amenity_type_osmwiki">Wikipedia (çevrim dışı)</string>
|
||||||
<string name="amenity_type_user_defined">Kullanıcı tanımlı</string>
|
<string name="amenity_type_user_defined">Kullanıcı tanımlı</string>
|
||||||
<string name="settings_preset">Öntanımlı profil</string>
|
<string name="settings_preset">Öntanımlı profil</string>
|
||||||
<string name="user_password">OSM şifreniz</string>
|
<string name="user_password">Parola</string>
|
||||||
<string name="download_files_not_enough_space">İndirme için yeterli yer yok: %1$s MB (free: %2$s).</string>
|
<string name="download_files_not_enough_space">İndirme için yeterli yer yok: %1$s MB (free: %2$s).</string>
|
||||||
<string name="animate_route_off">Animasyonu durdur</string>
|
<string name="animate_route_off">Animasyonu durdur</string>
|
||||||
<string name="animate_route">Animasyonu başlat</string>
|
<string name="animate_route">Animasyonu başlat</string>
|
||||||
|
@ -3382,9 +3382,9 @@
|
||||||
<string name="route_recalculation">Rotanın yeniden hesaplanması</string>
|
<string name="route_recalculation">Rotanın yeniden hesaplanması</string>
|
||||||
<string name="accessibility_announce">Duyuru</string>
|
<string name="accessibility_announce">Duyuru</string>
|
||||||
<string name="login_and_pass">Kullanıcı adı ve parola</string>
|
<string name="login_and_pass">Kullanıcı adı ve parola</string>
|
||||||
<string name="plugin_global_prefs_info">Bu ayarlar tüm profiller için geçerlidir.</string>
|
<string name="plugin_global_prefs_info">Bu eklenti ayarları geneldir ve tüm profiller için geçerlidir</string>
|
||||||
<string name="osm_editing">OSM düzenleme</string>
|
<string name="osm_editing">OSM düzenleme</string>
|
||||||
<string name="osm_edits_view_descr">Karşıya yüklenmemiş tüm düzenlemelerinizi veya osm hatalarınızı %1$s içinde görüntüleyebilirsiniz. Yüklenen noktalar OsmAnd\'de gösterilmez.</string>
|
<string name="osm_edits_view_descr">Yüklenmemiş tüm düzenlemelerinizi veya OSM hatalarınızı %1$s\'de görüntüleyebilirsiniz. Karşıya yüklenen noktalar OsmAnd\'da gösterilmez.</string>
|
||||||
<string name="app_mode_osm">OSM</string>
|
<string name="app_mode_osm">OSM</string>
|
||||||
<string name="select_nav_icon_descr">Navigasyon sırasında veya harekete halindeyken gösterilen simge.</string>
|
<string name="select_nav_icon_descr">Navigasyon sırasında veya harekete halindeyken gösterilen simge.</string>
|
||||||
<string name="select_map_icon_descr">Dinlenme anında gösterilen simge.</string>
|
<string name="select_map_icon_descr">Dinlenme anında gösterilen simge.</string>
|
||||||
|
@ -3903,4 +3903,18 @@
|
||||||
<string name="icon_group_emergency">Acil</string>
|
<string name="icon_group_emergency">Acil</string>
|
||||||
<string name="icon_group_travel">Seyahat</string>
|
<string name="icon_group_travel">Seyahat</string>
|
||||||
<string name="message_you_need_add_two_points_to_show_graphs">En az iki nokta eklemelisiniz.</string>
|
<string name="message_you_need_add_two_points_to_show_graphs">En az iki nokta eklemelisiniz.</string>
|
||||||
|
<string name="login_open_street_map">OpenStreetMap\'te oturum aç</string>
|
||||||
|
<string name="login_open_street_map_org">OpenStreetMap.org\'da oturum aç</string>
|
||||||
|
<string name="sing_in_with_open_street_map">OpenStreetMap ile giriş yap</string>
|
||||||
|
<string name="open_street_map_login_mode">Yenilikleri veya değişiklikleri karşıya yüklemek için oturum açmanız gerekir.
|
||||||
|
\n
|
||||||
|
\nGüvenli OAuth yöntemini kullanarak oturum açabilir veya kullanıcı adı ve parolanızı kullanabilirsiniz.</string>
|
||||||
|
<string name="use_login_password">Kullanıcı adı ve parola kullan</string>
|
||||||
|
<string name="user_login">Kullanıcı adı</string>
|
||||||
|
<string name="login_account">Hesap</string>
|
||||||
|
<string name="manage_subscription">Aboneliği yönet</string>
|
||||||
|
<string name="subscription_payment_issue_title">Aboneliğinizle ilgili bir sorun var. Ödeme yönteminizi düzeltmek üzere Google Play abonelik ayarlarına gitmek için düğmeye tıklayın.</string>
|
||||||
|
<string name="subscription_expired_title">OsmAnd Live aboneliğinin süresi doldu</string>
|
||||||
|
<string name="subscription_paused_title">OsmAnd Live aboneliği duraklatıldı</string>
|
||||||
|
<string name="subscription_on_hold_title">OsmAnd Live aboneliği beklemede</string>
|
||||||
</resources>
|
</resources>
|
|
@ -2038,7 +2038,7 @@
|
||||||
<string name="osm_live_subscription_desc">Передплата включає щогодинні, щоденні та щотижневі оновлення, а також, необмежену кількість доступних завантажень для всіх мап з усього світу.</string>
|
<string name="osm_live_subscription_desc">Передплата включає щогодинні, щоденні та щотижневі оновлення, а також, необмежену кількість доступних завантажень для всіх мап з усього світу.</string>
|
||||||
<string name="get_it">Отримати</string>
|
<string name="get_it">Отримати</string>
|
||||||
<string name="get_for">Отримати на %1$s</string>
|
<string name="get_for">Отримати на %1$s</string>
|
||||||
<string name="osm_live_banner_desc">Отримайте необмежені завантаження для мап, а також оновлення мап частіше ніж один раз на місяць: щотижня, щодня або щогодини.</string>
|
<string name="osm_live_banner_desc">Отримайте для мап необмежені завантаження та оновлення частіше ніж раз на місяць: щотижня, щодня або щогодини.</string>
|
||||||
<string name="osmand_plus_banner_desc">Втулок для необмеженого доступу до мап, їх оновлень та отримання відомостей з Wikipedia.</string>
|
<string name="osmand_plus_banner_desc">Втулок для необмеженого доступу до мап, їх оновлень та отримання відомостей з Wikipedia.</string>
|
||||||
<string name="si_mi_meters">Милі/метри</string>
|
<string name="si_mi_meters">Милі/метри</string>
|
||||||
<string name="skip_map_downloading">Пропустити завантаження мап</string>
|
<string name="skip_map_downloading">Пропустити завантаження мап</string>
|
||||||
|
@ -2741,8 +2741,8 @@
|
||||||
\nРозкажіть нам про це.</string>
|
\nРозкажіть нам про це.</string>
|
||||||
<string name="send_search_query">Надіслати пошуковий запит?</string>
|
<string name="send_search_query">Надіслати пошуковий запит?</string>
|
||||||
<string name="shared_string_world">Світ</string>
|
<string name="shared_string_world">Світ</string>
|
||||||
<string name="monthly_map_updates">Оновлення мап: щомісячне</string>
|
<string name="monthly_map_updates">Оновлення мап: щомісячно</string>
|
||||||
<string name="daily_map_updates">Оновлення мап: щогодинне</string>
|
<string name="daily_map_updates">Оновлення мап: щогодинно</string>
|
||||||
<string name="in_app_purchase">Купівля в застосунку</string>
|
<string name="in_app_purchase">Купівля в застосунку</string>
|
||||||
<string name="in_app_purchase_desc">Одноразовий платіж</string>
|
<string name="in_app_purchase_desc">Одноразовий платіж</string>
|
||||||
<string name="in_app_purchase_desc_ex">Після покупки він буде завжди доступний для вас.</string>
|
<string name="in_app_purchase_desc_ex">Після покупки він буде завжди доступний для вас.</string>
|
||||||
|
@ -3425,9 +3425,9 @@
|
||||||
<string name="route_recalculation">Перерахунок маршруту</string>
|
<string name="route_recalculation">Перерахунок маршруту</string>
|
||||||
<string name="accessibility_announce">Оголошення</string>
|
<string name="accessibility_announce">Оголошення</string>
|
||||||
<string name="login_and_pass">Ім\'я користувача і пароль</string>
|
<string name="login_and_pass">Ім\'я користувача і пароль</string>
|
||||||
<string name="plugin_global_prefs_info">Ці налаштування стосуються всіх профілів.</string>
|
<string name="plugin_global_prefs_info">Ці налаштування втулка стосуються всіх профілів</string>
|
||||||
<string name="osm_editing">OSM-правлення</string>
|
<string name="osm_editing">OSM-правлення</string>
|
||||||
<string name="osm_edits_view_descr">Ви можете переглянути всі не завантажені зміни або помилки в OSM в %1$s. Завантажені точки не відображаються в OsmAnd.</string>
|
<string name="osm_edits_view_descr">Ви можете переглянути всі вивантажені зміни або вади OSM у %1$s. Вивантажені точки не показано в OsmAnd.</string>
|
||||||
<string name="app_mode_osm">OSM</string>
|
<string name="app_mode_osm">OSM</string>
|
||||||
<string name="select_nav_icon_descr">Значок відображається під час навігації чи переміщення.</string>
|
<string name="select_nav_icon_descr">Значок відображається під час навігації чи переміщення.</string>
|
||||||
<string name="select_map_icon_descr">Значок показано в спокої.</string>
|
<string name="select_map_icon_descr">Значок показано в спокої.</string>
|
||||||
|
@ -3661,7 +3661,7 @@
|
||||||
<string name="subscription_osmandlive_item">Передплата - OsmAnd Live</string>
|
<string name="subscription_osmandlive_item">Передплата - OsmAnd Live</string>
|
||||||
<string name="osmand_purchases_item">OsmAnd покупки</string>
|
<string name="osmand_purchases_item">OsmAnd покупки</string>
|
||||||
<string name="legend_item_description">Довідник умовних позначень мапи.</string>
|
<string name="legend_item_description">Довідник умовних позначень мапи.</string>
|
||||||
<string name="osm_live_payment_subscription_management">Оплату буде здійснено з рахунку, прив\'язаного до вашого облікового запису Google Play, під час підтвердженні придбання.
|
<string name="osm_live_payment_subscription_management">Оплату буде здійснено під час підтвердження придбання з пов\'язаного з вашим обліковим записом Google Play рахунку.
|
||||||
\n
|
\n
|
||||||
\nПередплата продовжується автоматично, якщо ви не скасуєте її до дати продовження. З вашого рахунку буде стягуватися плата за період продовження (щомісяця/щотримісяці/щорік) разово в день продовження.
|
\nПередплата продовжується автоматично, якщо ви не скасуєте її до дати продовження. З вашого рахунку буде стягуватися плата за період продовження (щомісяця/щотримісяці/щорік) разово в день продовження.
|
||||||
\n
|
\n
|
||||||
|
@ -3949,4 +3949,13 @@
|
||||||
<string name="subscription_expired_title">Термін дії передплати OsmAnd Live закінчився</string>
|
<string name="subscription_expired_title">Термін дії передплати OsmAnd Live закінчився</string>
|
||||||
<string name="subscription_paused_title">Передплату OsmAnd Live зупинено</string>
|
<string name="subscription_paused_title">Передплату OsmAnd Live зупинено</string>
|
||||||
<string name="subscription_on_hold_title">Передплата OsmAnd Live на утриманні</string>
|
<string name="subscription_on_hold_title">Передплата OsmAnd Live на утриманні</string>
|
||||||
|
<string name="login_open_street_map">Увійти до OpenStreetMap.org</string>
|
||||||
|
<string name="login_open_street_map_org">Увійти до OpenStreetMap.org</string>
|
||||||
|
<string name="sing_in_with_open_street_map">Увійти за допомогою OpenStreetMap</string>
|
||||||
|
<string name="open_street_map_login_mode">Увійдіть, щоб вивантажити нові або внесені зміни.
|
||||||
|
\n
|
||||||
|
\nВи можете увійти, за допомогою безпечного методу OAuth, або скористатися своїм ім\'ям та паролем.</string>
|
||||||
|
<string name="use_login_password">Використовувати ім\'я і пароль</string>
|
||||||
|
<string name="login_account">Обліковий запис</string>
|
||||||
|
<string name="user_login">Ім\'я користувача</string>
|
||||||
</resources>
|
</resources>
|
|
@ -335,7 +335,7 @@
|
||||||
<string name="global_app_settings">整體程式設定</string>
|
<string name="global_app_settings">整體程式設定</string>
|
||||||
<string name="user_name">您 OSM 的使用者名稱</string>
|
<string name="user_name">您 OSM 的使用者名稱</string>
|
||||||
<string name="open_street_map_login_descr">需要向 openstreetmap.org 提出意見。</string>
|
<string name="open_street_map_login_descr">需要向 openstreetmap.org 提出意見。</string>
|
||||||
<string name="user_password">您 OSM 的密碼</string>
|
<string name="user_password">密碼</string>
|
||||||
<string name="osmand_service">背景模式</string>
|
<string name="osmand_service">背景模式</string>
|
||||||
<string name="osmand_service_descr">當螢幕關閉後,讓 OsmAnd 在背景運行。</string>
|
<string name="osmand_service_descr">當螢幕關閉後,讓 OsmAnd 在背景運行。</string>
|
||||||
<string name="download_files_not_enough_space">空間不足以下載 %1$s MB (空間剩餘:%2$s)。</string>
|
<string name="download_files_not_enough_space">空間不足以下載 %1$s MB (空間剩餘:%2$s)。</string>
|
||||||
|
@ -3420,7 +3420,7 @@
|
||||||
<string name="route_recalculation">路徑重新計算</string>
|
<string name="route_recalculation">路徑重新計算</string>
|
||||||
<string name="accessibility_announce">公告</string>
|
<string name="accessibility_announce">公告</string>
|
||||||
<string name="login_and_pass">使用者名稱與密碼</string>
|
<string name="login_and_pass">使用者名稱與密碼</string>
|
||||||
<string name="plugin_global_prefs_info">這些設定會套用到所有設定檔中。</string>
|
<string name="plugin_global_prefs_info">這些外掛程式是全域的,會套用到所有設定檔中</string>
|
||||||
<string name="osm_editing">OSM 編輯</string>
|
<string name="osm_editing">OSM 編輯</string>
|
||||||
<string name="app_mode_osm">OSM</string>
|
<string name="app_mode_osm">OSM</string>
|
||||||
<string name="select_nav_icon_descr">在導航或移動時顯示的圖示。</string>
|
<string name="select_nav_icon_descr">在導航或移動時顯示的圖示。</string>
|
||||||
|
@ -3429,7 +3429,7 @@
|
||||||
<string name="search_offline_geo_error">無法解析地理含義「%s」。</string>
|
<string name="search_offline_geo_error">無法解析地理含義「%s」。</string>
|
||||||
<string name="tracks_view_descr">您已紀錄的軌跡位於 %1$s,或是 OsmAnd 資料夾。</string>
|
<string name="tracks_view_descr">您已紀錄的軌跡位於 %1$s,或是 OsmAnd 資料夾。</string>
|
||||||
<string name="multimedia_notes_view_descr">您的 OSM 註記位於 %1$s。</string>
|
<string name="multimedia_notes_view_descr">您的 OSM 註記位於 %1$s。</string>
|
||||||
<string name="osm_edits_view_descr">檢視您的編輯或 OSM 臭蟲尚未上傳到 %1$s。已上傳的點將不會再顯示。</string>
|
<string name="osm_edits_view_descr">您可以在 %1$s 中檢視您所有未上傳的編輯或 OSM 臭蟲。已上傳的點不會在 OsmAnd 中顯示。</string>
|
||||||
<string name="permission_is_required">使用此選項需要權限。</string>
|
<string name="permission_is_required">使用此選項需要權限。</string>
|
||||||
<string name="monitoring_min_speed_descr">這是一個低速過濾器,不記錄低於特定速度的點。在地圖上查看時,這可能會使記錄的軌跡看起來更平滑。</string>
|
<string name="monitoring_min_speed_descr">這是一個低速過濾器,不記錄低於特定速度的點。在地圖上查看時,這可能會使記錄的軌跡看起來更平滑。</string>
|
||||||
<string name="monitoring_min_speed_descr_side_effect">副作用:您的軌跡將會遺失所有未達到最低速度標準的部份(例如,您將自行車推上陡峭的山坡)。此外,也將沒有其餘的資訊,如休息等。這會影響任何分析或後處理,例如試圖確定行程的總長度,運動時間或平均速度時。</string>
|
<string name="monitoring_min_speed_descr_side_effect">副作用:您的軌跡將會遺失所有未達到最低速度標準的部份(例如,您將自行車推上陡峭的山坡)。此外,也將沒有其餘的資訊,如休息等。這會影響任何分析或後處理,例如試圖確定行程的總長度,運動時間或平均速度時。</string>
|
||||||
|
@ -3943,4 +3943,18 @@
|
||||||
<string name="navigate_point_format_mgrs">MGRS</string>
|
<string name="navigate_point_format_mgrs">MGRS</string>
|
||||||
<string name="mgrs_format_descr">OsmAnd 使用 MGRS,其類似於 UTM NATO 格式。</string>
|
<string name="mgrs_format_descr">OsmAnd 使用 MGRS,其類似於 UTM NATO 格式。</string>
|
||||||
<string name="message_you_need_add_two_points_to_show_graphs">您必須新增至少兩個點。</string>
|
<string name="message_you_need_add_two_points_to_show_graphs">您必須新增至少兩個點。</string>
|
||||||
|
<string name="manage_subscription">管理訂閱</string>
|
||||||
|
<string name="subscription_payment_issue_title">您的訂閱似乎有點問題。點擊按鈕以跳到 Google Play 訂閱設定以修復您的付款方式。</string>
|
||||||
|
<string name="subscription_expired_title">OsmAnd Live 訂閱已過期</string>
|
||||||
|
<string name="subscription_paused_title">OsmAnd Live 訂閱已暫停</string>
|
||||||
|
<string name="subscription_on_hold_title">OsmAnd Live 訂閱已暫停</string>
|
||||||
|
<string name="login_open_street_map">登入到 OpenStreetMap</string>
|
||||||
|
<string name="login_open_street_map_org">登入到 OpenStreetMap.org</string>
|
||||||
|
<string name="sing_in_with_open_street_map">以 OpenStreetMap 登入</string>
|
||||||
|
<string name="open_street_map_login_mode">您必須登入以上傳新的或修正過的變更。
|
||||||
|
\n
|
||||||
|
\n您可以使用安全的 OAuth 方法或使用您的登入與密碼來登入。</string>
|
||||||
|
<string name="use_login_password">使用登入與密碼</string>
|
||||||
|
<string name="login_account">帳號</string>
|
||||||
|
<string name="user_login">登入</string>
|
||||||
</resources>
|
</resources>
|
|
@ -11,6 +11,13 @@
|
||||||
Thx - Hardy
|
Thx - Hardy
|
||||||
|
|
||||||
-->
|
-->
|
||||||
|
<string name="gpx_upload_trackable_visibility_descr">Trackable means that the trace will not show up in any public listings but trackpoints from it will still be available through the public GPS API with timestamps. Other users will only be able to download processed trackpoints from your trace which can\'t be associated with you directly.</string>
|
||||||
|
<string name="gpx_upload_identifiable_visibility_descr">Identifiable means that the trace will be shown publicly in Your GPS traces and in public GPS trace listings, i.e. other users will be able to download the raw trace and associate it with your username. Data served via the trackpoints API will reference your original trace page. Timestamps of the trace points are available through the public GPS API.</string>
|
||||||
|
<string name="gpx_upload_private_visibility_descr">Private means that the trace will not show up in any public listings, but trackpoints from it will still be available through the public GPS API without timestamps but will not be chronologically ordered.</string>
|
||||||
|
<string name="gpx_upload_public_visibility_descr">Public means that the trace will be shown publicly in Your GPS traces and in public GPS trace listings. Data served via the API does not reference your trace page. Timestamps of the trace points are not available through the public GPS API, and the points are not chronologically ordered. However, other users are still able to download the raw trace from the public trace list and any timestamps contained within.</string>
|
||||||
|
<string name="enter_text_separated">Enter tags separated by comma.</string>
|
||||||
|
<string name="send_files_to_openstreetmap">Send GPX file to OpenStreetMap</string>
|
||||||
|
<string name="markers_history">Markers history</string>
|
||||||
<string name="subscription_on_hold_title">OsmAnd Live subscription is on hold</string>
|
<string name="subscription_on_hold_title">OsmAnd Live subscription is on hold</string>
|
||||||
<string name="subscription_paused_title">OsmAnd Live subscription has been paused</string>
|
<string name="subscription_paused_title">OsmAnd Live subscription has been paused</string>
|
||||||
<string name="subscription_expired_title">OsmAnd Live subscription has been expired</string>
|
<string name="subscription_expired_title">OsmAnd Live subscription has been expired</string>
|
||||||
|
@ -22,11 +29,11 @@
|
||||||
<string name="use_login_password">Use login and password</string>
|
<string name="use_login_password">Use login and password</string>
|
||||||
<string name="open_street_map_login_mode">You need to login to upload new or modified changes. \n\nYou can log in using the safe OAuth method or use your login and password.</string>
|
<string name="open_street_map_login_mode">You need to login to upload new or modified changes. \n\nYou can log in using the safe OAuth method or use your login and password.</string>
|
||||||
<string name="osm_edits_view_descr">You can view all your unloaded edits or OSM bugs in %1$s. Uploaded points don’t show in OsmAnd.</string>
|
<string name="osm_edits_view_descr">You can view all your unloaded edits or OSM bugs in %1$s. Uploaded points don’t show in OsmAnd.</string>
|
||||||
<string name="sing_in_with_open_street_map">Sing in with OpenStreetMap</string>
|
<string name="sign_in_with_open_street_map">Sign in with OpenStreetMap</string>
|
||||||
<string name="login_open_street_map_org">Login to OpenStreetMap.org</string>
|
<string name="login_open_street_map_org">Login to OpenStreetMap.org</string>
|
||||||
<string name="login_open_street_map">Login to OpenStreetMap</string>
|
<string name="login_open_street_map">Login to OpenStreetMap</string>
|
||||||
<string name="plugin_global_prefs_info">These plugin setting are global, and apply to all profiles</string>
|
<string name="plugin_global_prefs_info">These plugin setting are global, and apply to all profiles</string>
|
||||||
<string name="message_you_need_add_two_points_to_show_graphs">You must add at least two points.</string>
|
<string name="message_you_need_add_two_points_to_show_graphs">You need to add at least two points</string>
|
||||||
<string name="icon_group_travel">Travel</string>
|
<string name="icon_group_travel">Travel</string>
|
||||||
<string name="icon_group_emergency">Emergency</string>
|
<string name="icon_group_emergency">Emergency</string>
|
||||||
<string name="icon_group_sport">Sport</string>
|
<string name="icon_group_sport">Sport</string>
|
||||||
|
|
|
@ -55,8 +55,8 @@ import net.osmand.plus.FavouritesDbHelper;
|
||||||
import net.osmand.plus.GPXDatabase.GpxDataItem;
|
import net.osmand.plus.GPXDatabase.GpxDataItem;
|
||||||
import net.osmand.plus.GpxSelectionHelper;
|
import net.osmand.plus.GpxSelectionHelper;
|
||||||
import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile;
|
import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile;
|
||||||
import net.osmand.plus.MapMarkersHelper;
|
import net.osmand.plus.mapmarkers.MapMarkersHelper;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
import net.osmand.plus.mapmarkers.MapMarker;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.OsmandPlugin;
|
import net.osmand.plus.OsmandPlugin;
|
||||||
import net.osmand.plus.SQLiteTileSource;
|
import net.osmand.plus.SQLiteTileSource;
|
||||||
|
|
|
@ -41,6 +41,7 @@ import net.osmand.plus.helpers.WaypointHelper;
|
||||||
import net.osmand.plus.inapp.InAppPurchaseHelperImpl;
|
import net.osmand.plus.inapp.InAppPurchaseHelperImpl;
|
||||||
import net.osmand.plus.liveupdates.LiveUpdatesHelper;
|
import net.osmand.plus.liveupdates.LiveUpdatesHelper;
|
||||||
import net.osmand.plus.mapmarkers.MapMarkersDbHelper;
|
import net.osmand.plus.mapmarkers.MapMarkersDbHelper;
|
||||||
|
import net.osmand.plus.mapmarkers.MapMarkersHelper;
|
||||||
import net.osmand.plus.monitoring.LiveMonitoringHelper;
|
import net.osmand.plus.monitoring.LiveMonitoringHelper;
|
||||||
import net.osmand.plus.monitoring.OsmandMonitoringPlugin;
|
import net.osmand.plus.monitoring.OsmandMonitoringPlugin;
|
||||||
import net.osmand.plus.poi.PoiFiltersHelper;
|
import net.osmand.plus.poi.PoiFiltersHelper;
|
||||||
|
|
|
@ -16,7 +16,8 @@ import net.osmand.PlatformUtil;
|
||||||
import net.osmand.data.FavouritePoint;
|
import net.osmand.data.FavouritePoint;
|
||||||
import net.osmand.data.LatLon;
|
import net.osmand.data.LatLon;
|
||||||
import net.osmand.plus.GeocodingLookupService.AddressLookupRequest;
|
import net.osmand.plus.GeocodingLookupService.AddressLookupRequest;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarkersGroup;
|
import net.osmand.plus.mapmarkers.MapMarkersHelper;
|
||||||
|
import net.osmand.plus.mapmarkers.MapMarkersGroup;
|
||||||
import net.osmand.plus.api.SQLiteAPI.SQLiteConnection;
|
import net.osmand.plus.api.SQLiteAPI.SQLiteConnection;
|
||||||
import net.osmand.plus.api.SQLiteAPI.SQLiteCursor;
|
import net.osmand.plus.api.SQLiteAPI.SQLiteCursor;
|
||||||
import net.osmand.util.Algorithms;
|
import net.osmand.util.Algorithms;
|
||||||
|
|
|
@ -23,7 +23,8 @@ import net.osmand.PlatformUtil;
|
||||||
import net.osmand.StateChangedListener;
|
import net.osmand.StateChangedListener;
|
||||||
import net.osmand.data.LatLon;
|
import net.osmand.data.LatLon;
|
||||||
import net.osmand.plus.GPXDatabase.GpxDataItem;
|
import net.osmand.plus.GPXDatabase.GpxDataItem;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarkersGroup;
|
import net.osmand.plus.mapmarkers.MapMarkersHelper;
|
||||||
|
import net.osmand.plus.mapmarkers.MapMarkersGroup;
|
||||||
import net.osmand.plus.activities.SavingTrackHelper;
|
import net.osmand.plus.activities.SavingTrackHelper;
|
||||||
import net.osmand.plus.helpers.GpxUiHelper;
|
import net.osmand.plus.helpers.GpxUiHelper;
|
||||||
import net.osmand.plus.helpers.GpxUiHelper.GPXDataSetAxisType;
|
import net.osmand.plus.helpers.GpxUiHelper.GPXDataSetAxisType;
|
||||||
|
|
|
@ -63,6 +63,7 @@ import net.osmand.plus.helpers.enums.MetricsConstants;
|
||||||
import net.osmand.plus.helpers.WaypointHelper;
|
import net.osmand.plus.helpers.WaypointHelper;
|
||||||
import net.osmand.plus.inapp.InAppPurchaseHelper;
|
import net.osmand.plus.inapp.InAppPurchaseHelper;
|
||||||
import net.osmand.plus.mapmarkers.MapMarkersDbHelper;
|
import net.osmand.plus.mapmarkers.MapMarkersDbHelper;
|
||||||
|
import net.osmand.plus.mapmarkers.MapMarkersHelper;
|
||||||
import net.osmand.plus.monitoring.LiveMonitoringHelper;
|
import net.osmand.plus.monitoring.LiveMonitoringHelper;
|
||||||
import net.osmand.plus.poi.PoiFiltersHelper;
|
import net.osmand.plus.poi.PoiFiltersHelper;
|
||||||
import net.osmand.plus.quickaction.QuickActionRegistry;
|
import net.osmand.plus.quickaction.QuickActionRegistry;
|
||||||
|
|
|
@ -27,8 +27,8 @@ import androidx.fragment.app.FragmentManager;
|
||||||
import net.osmand.AndroidUtils;
|
import net.osmand.AndroidUtils;
|
||||||
import net.osmand.plus.FavouritesDbHelper;
|
import net.osmand.plus.FavouritesDbHelper;
|
||||||
import net.osmand.plus.FavouritesDbHelper.FavoriteGroup;
|
import net.osmand.plus.FavouritesDbHelper.FavoriteGroup;
|
||||||
import net.osmand.plus.MapMarkersHelper;
|
import net.osmand.plus.mapmarkers.MapMarkersHelper;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarkersGroup;
|
import net.osmand.plus.mapmarkers.MapMarkersGroup;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.UiUtilities;
|
import net.osmand.plus.UiUtilities;
|
||||||
|
|
|
@ -1,38 +0,0 @@
|
||||||
package net.osmand.plus.activities;
|
|
||||||
|
|
||||||
import net.osmand.plus.activities.EnumAdapter.IEnumWithResource;
|
|
||||||
import android.content.Context;
|
|
||||||
import android.view.View;
|
|
||||||
import android.view.ViewGroup;
|
|
||||||
import android.widget.ArrayAdapter;
|
|
||||||
import android.widget.TextView;
|
|
||||||
|
|
||||||
public class EnumAdapter<T extends IEnumWithResource>
|
|
||||||
extends ArrayAdapter<T>
|
|
||||||
{
|
|
||||||
|
|
||||||
public EnumAdapter(Context context, int textViewResourceId, T[] enums)
|
|
||||||
{
|
|
||||||
super(context, textViewResourceId, enums);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public View getDropDownView(int position, View convertView, ViewGroup parent) {
|
|
||||||
TextView textView = (TextView) super.getDropDownView(position, convertView, parent);
|
|
||||||
T item = getItem(position);
|
|
||||||
textView.setText(item.stringResource());
|
|
||||||
return textView;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public View getView(int position, View convertView, ViewGroup parent) {
|
|
||||||
TextView textView = (TextView) super.getView(position, convertView, parent);
|
|
||||||
T item = getItem(position);
|
|
||||||
textView.setText(item.stringResource());
|
|
||||||
return textView;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static interface IEnumWithResource {
|
|
||||||
int stringResource();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -41,7 +41,7 @@ import net.osmand.data.PointDescription;
|
||||||
import net.osmand.plus.FavouritesDbHelper;
|
import net.osmand.plus.FavouritesDbHelper;
|
||||||
import net.osmand.plus.FavouritesDbHelper.FavoriteGroup;
|
import net.osmand.plus.FavouritesDbHelper.FavoriteGroup;
|
||||||
import net.osmand.plus.FavouritesDbHelper.FavoritesListener;
|
import net.osmand.plus.FavouritesDbHelper.FavoritesListener;
|
||||||
import net.osmand.plus.MapMarkersHelper;
|
import net.osmand.plus.mapmarkers.MapMarkersHelper;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.settings.backend.OsmandPreference;
|
import net.osmand.plus.settings.backend.OsmandPreference;
|
||||||
import net.osmand.plus.settings.backend.OsmandSettings;
|
import net.osmand.plus.settings.backend.OsmandSettings;
|
||||||
|
|
|
@ -67,8 +67,8 @@ import net.osmand.plus.AppInitializer;
|
||||||
import net.osmand.plus.AppInitializer.AppInitializeListener;
|
import net.osmand.plus.AppInitializer.AppInitializeListener;
|
||||||
import net.osmand.plus.AppInitializer.InitEvents;
|
import net.osmand.plus.AppInitializer.InitEvents;
|
||||||
import net.osmand.plus.GpxSelectionHelper.GpxDisplayItem;
|
import net.osmand.plus.GpxSelectionHelper.GpxDisplayItem;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
import net.osmand.plus.mapmarkers.MapMarker;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarkerChangedListener;
|
import net.osmand.plus.mapmarkers.MapMarkersHelper.MapMarkerChangedListener;
|
||||||
import net.osmand.plus.OnDismissDialogFragmentListener;
|
import net.osmand.plus.OnDismissDialogFragmentListener;
|
||||||
import net.osmand.plus.OsmAndConstants;
|
import net.osmand.plus.OsmAndConstants;
|
||||||
import net.osmand.plus.OsmAndLocationSimulation;
|
import net.osmand.plus.OsmAndLocationSimulation;
|
||||||
|
|
|
@ -39,8 +39,8 @@ import net.osmand.plus.ContextMenuAdapter;
|
||||||
import net.osmand.plus.ContextMenuAdapter.ItemClickListener;
|
import net.osmand.plus.ContextMenuAdapter.ItemClickListener;
|
||||||
import net.osmand.plus.ContextMenuItem;
|
import net.osmand.plus.ContextMenuItem;
|
||||||
import net.osmand.plus.ContextMenuItem.ItemBuilder;
|
import net.osmand.plus.ContextMenuItem.ItemBuilder;
|
||||||
import net.osmand.plus.MapMarkersHelper;
|
import net.osmand.plus.mapmarkers.MapMarkersHelper;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
import net.osmand.plus.mapmarkers.MapMarker;
|
||||||
import net.osmand.plus.OsmAndLocationProvider;
|
import net.osmand.plus.OsmAndLocationProvider;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.OsmandPlugin;
|
import net.osmand.plus.OsmandPlugin;
|
||||||
|
|
|
@ -13,8 +13,8 @@ import net.osmand.data.LatLon;
|
||||||
import net.osmand.data.RotatedTileBox;
|
import net.osmand.data.RotatedTileBox;
|
||||||
import net.osmand.map.IMapLocationListener;
|
import net.osmand.map.IMapLocationListener;
|
||||||
import net.osmand.map.WorldRegion;
|
import net.osmand.map.WorldRegion;
|
||||||
import net.osmand.plus.MapMarkersHelper;
|
import net.osmand.plus.mapmarkers.MapMarker;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarkerChangedListener;
|
import net.osmand.plus.mapmarkers.MapMarkersHelper.MapMarkerChangedListener;
|
||||||
import net.osmand.plus.OsmAndConstants;
|
import net.osmand.plus.OsmAndConstants;
|
||||||
import net.osmand.plus.OsmAndLocationProvider;
|
import net.osmand.plus.OsmAndLocationProvider;
|
||||||
import net.osmand.plus.OsmAndLocationProvider.OsmAndCompassListener;
|
import net.osmand.plus.OsmAndLocationProvider.OsmAndCompassListener;
|
||||||
|
@ -88,7 +88,7 @@ public class MapViewTrackingUtilities implements OsmAndLocationListener, IMapLoc
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onMapMarkerChanged(MapMarkersHelper.MapMarker mapMarker) {
|
public void onMapMarkerChanged(MapMarker mapMarker) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -31,8 +31,8 @@ import net.osmand.data.PointDescription;
|
||||||
import net.osmand.plus.FavouritesDbHelper;
|
import net.osmand.plus.FavouritesDbHelper;
|
||||||
import net.osmand.plus.GpxSelectionHelper;
|
import net.osmand.plus.GpxSelectionHelper;
|
||||||
import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile;
|
import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile;
|
||||||
import net.osmand.plus.MapMarkersHelper;
|
import net.osmand.plus.mapmarkers.MapMarkersHelper;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
import net.osmand.plus.mapmarkers.MapMarker;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.OsmandPlugin;
|
import net.osmand.plus.OsmandPlugin;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
|
|
|
@ -11,7 +11,7 @@ import net.osmand.PlatformUtil;
|
||||||
import net.osmand.data.LatLon;
|
import net.osmand.data.LatLon;
|
||||||
import net.osmand.data.PointDescription;
|
import net.osmand.data.PointDescription;
|
||||||
import net.osmand.map.TileSourceManager;
|
import net.osmand.map.TileSourceManager;
|
||||||
import net.osmand.plus.MapMarkersHelper;
|
import net.osmand.plus.mapmarkers.MapMarkersGroup;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.activities.MapActivity;
|
import net.osmand.plus.activities.MapActivity;
|
||||||
|
@ -207,7 +207,7 @@ public class IntentHelper {
|
||||||
if (intent.hasExtra(MapMarkersDialogFragment.OPEN_MAP_MARKERS_GROUPS)) {
|
if (intent.hasExtra(MapMarkersDialogFragment.OPEN_MAP_MARKERS_GROUPS)) {
|
||||||
Bundle openMapMarkersGroupsExtra = intent.getBundleExtra(MapMarkersDialogFragment.OPEN_MAP_MARKERS_GROUPS);
|
Bundle openMapMarkersGroupsExtra = intent.getBundleExtra(MapMarkersDialogFragment.OPEN_MAP_MARKERS_GROUPS);
|
||||||
if (openMapMarkersGroupsExtra != null) {
|
if (openMapMarkersGroupsExtra != null) {
|
||||||
MapMarkersDialogFragment.showInstance(mapActivity, openMapMarkersGroupsExtra.getString(MapMarkersHelper.MapMarkersGroup.MARKERS_SYNC_GROUP_ID));
|
MapMarkersDialogFragment.showInstance(mapActivity, openMapMarkersGroupsExtra.getString(MapMarkersGroup.MARKERS_SYNC_GROUP_ID));
|
||||||
}
|
}
|
||||||
mapActivity.setIntent(null);
|
mapActivity.setIntent(null);
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@ import android.widget.TextView;
|
||||||
import net.osmand.AndroidUtils;
|
import net.osmand.AndroidUtils;
|
||||||
import net.osmand.Location;
|
import net.osmand.Location;
|
||||||
import net.osmand.data.LatLon;
|
import net.osmand.data.LatLon;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
import net.osmand.plus.mapmarkers.MapMarker;
|
||||||
import net.osmand.plus.OsmAndFormatter;
|
import net.osmand.plus.OsmAndFormatter;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
|
|
|
@ -25,8 +25,8 @@ import net.osmand.data.TransportStop;
|
||||||
import net.osmand.plus.settings.backend.ApplicationMode;
|
import net.osmand.plus.settings.backend.ApplicationMode;
|
||||||
import net.osmand.plus.ContextMenuAdapter;
|
import net.osmand.plus.ContextMenuAdapter;
|
||||||
import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile;
|
import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
import net.osmand.plus.mapmarkers.MapMarker;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarkerChangedListener;
|
import net.osmand.plus.mapmarkers.MapMarkersHelper.MapMarkerChangedListener;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.OsmandPlugin;
|
import net.osmand.plus.OsmandPlugin;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
|
|
|
@ -32,7 +32,7 @@ import net.osmand.data.TransportStop;
|
||||||
import net.osmand.map.OsmandRegions;
|
import net.osmand.map.OsmandRegions;
|
||||||
import net.osmand.map.WorldRegion;
|
import net.osmand.map.WorldRegion;
|
||||||
import net.osmand.plus.GpxSelectionHelper.GpxDisplayItem;
|
import net.osmand.plus.GpxSelectionHelper.GpxDisplayItem;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
import net.osmand.plus.mapmarkers.MapMarker;
|
||||||
import net.osmand.plus.OsmAndFormatter;
|
import net.osmand.plus.OsmAndFormatter;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.OsmandPlugin;
|
import net.osmand.plus.OsmandPlugin;
|
||||||
|
|
|
@ -12,7 +12,7 @@ import net.osmand.data.TransportStop;
|
||||||
import net.osmand.osm.PoiCategory;
|
import net.osmand.osm.PoiCategory;
|
||||||
import net.osmand.osm.PoiFilter;
|
import net.osmand.osm.PoiFilter;
|
||||||
import net.osmand.osm.PoiType;
|
import net.osmand.osm.PoiType;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
import net.osmand.plus.mapmarkers.MapMarker;
|
||||||
import net.osmand.plus.OsmandPlugin;
|
import net.osmand.plus.OsmandPlugin;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.activities.MapActivity;
|
import net.osmand.plus.activities.MapActivity;
|
||||||
|
|
|
@ -14,8 +14,8 @@ import net.osmand.data.LatLon;
|
||||||
import net.osmand.data.PointDescription;
|
import net.osmand.data.PointDescription;
|
||||||
import net.osmand.data.TransportStop;
|
import net.osmand.data.TransportStop;
|
||||||
import net.osmand.plus.FavouritesDbHelper;
|
import net.osmand.plus.FavouritesDbHelper;
|
||||||
import net.osmand.plus.MapMarkersHelper;
|
import net.osmand.plus.mapmarkers.MapMarkersHelper;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
import net.osmand.plus.mapmarkers.MapMarker;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.activities.MapActivity;
|
import net.osmand.plus.activities.MapActivity;
|
||||||
|
|
|
@ -11,8 +11,8 @@ import androidx.annotation.Nullable;
|
||||||
import androidx.core.content.ContextCompat;
|
import androidx.core.content.ContextCompat;
|
||||||
|
|
||||||
import net.osmand.data.PointDescription;
|
import net.osmand.data.PointDescription;
|
||||||
import net.osmand.plus.MapMarkersHelper;
|
import net.osmand.plus.mapmarkers.MapMarkersHelper;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
import net.osmand.plus.mapmarkers.MapMarker;
|
||||||
import net.osmand.plus.settings.backend.OsmandPreference;
|
import net.osmand.plus.settings.backend.OsmandPreference;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.activities.MapActivity;
|
import net.osmand.plus.activities.MapActivity;
|
||||||
|
|
|
@ -11,8 +11,8 @@ import net.osmand.data.LatLon;
|
||||||
import net.osmand.data.PointDescription;
|
import net.osmand.data.PointDescription;
|
||||||
import net.osmand.plus.GpxSelectionHelper;
|
import net.osmand.plus.GpxSelectionHelper;
|
||||||
import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile;
|
import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile;
|
||||||
import net.osmand.plus.MapMarkersHelper;
|
import net.osmand.plus.mapmarkers.MapMarkersHelper;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
import net.osmand.plus.mapmarkers.MapMarker;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.activities.MapActivity;
|
import net.osmand.plus.activities.MapActivity;
|
||||||
import net.osmand.plus.base.PointImageDrawable;
|
import net.osmand.plus.base.PointImageDrawable;
|
||||||
|
|
|
@ -2,7 +2,7 @@ package net.osmand.plus.mapcontextmenu.editors;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
import net.osmand.plus.mapmarkers.MapMarker;
|
||||||
import net.osmand.plus.activities.MapActivity;
|
import net.osmand.plus.activities.MapActivity;
|
||||||
|
|
||||||
public class MapMarkerEditor extends PointEditor {
|
public class MapMarkerEditor extends PointEditor {
|
||||||
|
|
|
@ -14,7 +14,7 @@ import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
import net.osmand.data.PointDescription;
|
import net.osmand.data.PointDescription;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
import net.osmand.plus.mapmarkers.MapMarker;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.activities.MapActivity;
|
import net.osmand.plus.activities.MapActivity;
|
||||||
|
|
|
@ -17,8 +17,8 @@ import net.osmand.GPXUtilities.WptPt;
|
||||||
import net.osmand.data.LatLon;
|
import net.osmand.data.LatLon;
|
||||||
import net.osmand.data.WptLocationPoint;
|
import net.osmand.data.WptLocationPoint;
|
||||||
import net.osmand.plus.GpxSelectionHelper;
|
import net.osmand.plus.GpxSelectionHelper;
|
||||||
import net.osmand.plus.MapMarkersHelper;
|
import net.osmand.plus.mapmarkers.MapMarkersHelper;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarkersGroup;
|
import net.osmand.plus.mapmarkers.MapMarkersGroup;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.activities.MapActivity;
|
import net.osmand.plus.activities.MapActivity;
|
||||||
|
|
|
@ -20,8 +20,8 @@ import net.osmand.data.FavouritePoint.BackgroundType;
|
||||||
import net.osmand.data.LatLon;
|
import net.osmand.data.LatLon;
|
||||||
import net.osmand.data.WptLocationPoint;
|
import net.osmand.data.WptLocationPoint;
|
||||||
import net.osmand.plus.GpxSelectionHelper;
|
import net.osmand.plus.GpxSelectionHelper;
|
||||||
import net.osmand.plus.MapMarkersHelper;
|
import net.osmand.plus.mapmarkers.MapMarkersHelper;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarkersGroup;
|
import net.osmand.plus.mapmarkers.MapMarkersGroup;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.UiUtilities;
|
import net.osmand.plus.UiUtilities;
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
package net.osmand.plus.mapmarkers;
|
||||||
|
|
||||||
|
import androidx.annotation.DrawableRes;
|
||||||
|
|
||||||
|
public class CategoriesSubHeader {
|
||||||
|
|
||||||
|
@DrawableRes
|
||||||
|
private int iconRes;
|
||||||
|
private MapMarkersGroup group;
|
||||||
|
|
||||||
|
public CategoriesSubHeader(int iconRes, MapMarkersGroup group) {
|
||||||
|
this.iconRes = iconRes;
|
||||||
|
this.group = group;
|
||||||
|
}
|
||||||
|
|
||||||
|
@DrawableRes
|
||||||
|
public int getIconRes() {
|
||||||
|
return iconRes;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MapMarkersGroup getGroup() {
|
||||||
|
return group;
|
||||||
|
}
|
||||||
|
}
|
|
@ -63,7 +63,6 @@ import net.osmand.GPXUtilities.WptPt;
|
||||||
import net.osmand.IndexConstants;
|
import net.osmand.IndexConstants;
|
||||||
import net.osmand.Location;
|
import net.osmand.Location;
|
||||||
import net.osmand.plus.GpxSelectionHelper;
|
import net.osmand.plus.GpxSelectionHelper;
|
||||||
import net.osmand.plus.MapMarkersHelper;
|
|
||||||
import net.osmand.plus.OsmAndLocationProvider.OsmAndCompassListener;
|
import net.osmand.plus.OsmAndLocationProvider.OsmAndCompassListener;
|
||||||
import net.osmand.plus.OsmAndLocationProvider.OsmAndLocationListener;
|
import net.osmand.plus.OsmAndLocationProvider.OsmAndLocationListener;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
|
@ -79,7 +78,6 @@ import net.osmand.plus.mapmarkers.CoordinateInputFormats.DDM;
|
||||||
import net.osmand.plus.mapmarkers.CoordinateInputFormats.DMS;
|
import net.osmand.plus.mapmarkers.CoordinateInputFormats.DMS;
|
||||||
import net.osmand.plus.mapmarkers.CoordinateInputFormats.Format;
|
import net.osmand.plus.mapmarkers.CoordinateInputFormats.Format;
|
||||||
import net.osmand.plus.mapmarkers.adapters.CoordinateInputAdapter;
|
import net.osmand.plus.mapmarkers.adapters.CoordinateInputAdapter;
|
||||||
import net.osmand.plus.settings.backend.OsmandSettings;
|
|
||||||
import net.osmand.plus.widgets.EditTextEx;
|
import net.osmand.plus.widgets.EditTextEx;
|
||||||
import net.osmand.util.Algorithms;
|
import net.osmand.util.Algorithms;
|
||||||
import net.osmand.util.LocationParser;
|
import net.osmand.util.LocationParser;
|
||||||
|
@ -171,7 +169,7 @@ public class CoordinateInputDialogFragment extends DialogFragment implements Osm
|
||||||
|
|
||||||
private void syncGpx(GPXFile gpxFile) {
|
private void syncGpx(GPXFile gpxFile) {
|
||||||
MapMarkersHelper helper = getMyApplication().getMapMarkersHelper();
|
MapMarkersHelper helper = getMyApplication().getMapMarkersHelper();
|
||||||
MapMarkersHelper.MapMarkersGroup group = helper.getMarkersGroup(gpxFile);
|
MapMarkersGroup group = helper.getMarkersGroup(gpxFile);
|
||||||
if (group != null) {
|
if (group != null) {
|
||||||
helper.runSynchronization(group);
|
helper.runSynchronization(group);
|
||||||
}
|
}
|
||||||
|
|
24
OsmAnd/src/net/osmand/plus/mapmarkers/GroupHeader.java
Normal file
24
OsmAnd/src/net/osmand/plus/mapmarkers/GroupHeader.java
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
package net.osmand.plus.mapmarkers;
|
||||||
|
|
||||||
|
import androidx.annotation.DrawableRes;
|
||||||
|
|
||||||
|
public class GroupHeader {
|
||||||
|
|
||||||
|
@DrawableRes
|
||||||
|
private int iconRes;
|
||||||
|
private MapMarkersGroup group;
|
||||||
|
|
||||||
|
public GroupHeader(int iconRes, MapMarkersGroup group) {
|
||||||
|
this.iconRes = iconRes;
|
||||||
|
this.group = group;
|
||||||
|
}
|
||||||
|
|
||||||
|
@DrawableRes
|
||||||
|
public int getIconRes() {
|
||||||
|
return iconRes;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MapMarkersGroup getGroup() {
|
||||||
|
return group;
|
||||||
|
}
|
||||||
|
}
|
|
@ -3,7 +3,6 @@ package net.osmand.plus.mapmarkers;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.base.MenuBottomSheetDialogFragment;
|
import net.osmand.plus.base.MenuBottomSheetDialogFragment;
|
||||||
import net.osmand.plus.base.bottomsheetmenu.BaseBottomSheetItem;
|
import net.osmand.plus.base.bottomsheetmenu.BaseBottomSheetItem;
|
||||||
|
|
149
OsmAnd/src/net/osmand/plus/mapmarkers/MapMarker.java
Normal file
149
OsmAnd/src/net/osmand/plus/mapmarkers/MapMarker.java
Normal file
|
@ -0,0 +1,149 @@
|
||||||
|
package net.osmand.plus.mapmarkers;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
|
||||||
|
import androidx.annotation.ColorInt;
|
||||||
|
import androidx.core.content.ContextCompat;
|
||||||
|
|
||||||
|
import net.osmand.GPXUtilities.WptPt;
|
||||||
|
import net.osmand.data.FavouritePoint;
|
||||||
|
import net.osmand.data.LatLon;
|
||||||
|
import net.osmand.data.LocationPoint;
|
||||||
|
import net.osmand.data.PointDescription;
|
||||||
|
import net.osmand.plus.R;
|
||||||
|
import net.osmand.util.Algorithms;
|
||||||
|
|
||||||
|
import static net.osmand.data.PointDescription.POINT_TYPE_MAP_MARKER;
|
||||||
|
|
||||||
|
public class MapMarker implements LocationPoint {
|
||||||
|
|
||||||
|
private static int[] colors;
|
||||||
|
|
||||||
|
public String id;
|
||||||
|
public LatLon point;
|
||||||
|
private PointDescription pointDescription;
|
||||||
|
public int colorIndex;
|
||||||
|
public int index;
|
||||||
|
public boolean history;
|
||||||
|
public boolean selected;
|
||||||
|
public int dist;
|
||||||
|
public long creationDate;
|
||||||
|
public long visitedDate;
|
||||||
|
public String nextKey;
|
||||||
|
public String groupKey;
|
||||||
|
public String groupName;
|
||||||
|
public WptPt wptPt;
|
||||||
|
public FavouritePoint favouritePoint;
|
||||||
|
public String mapObjectName;
|
||||||
|
|
||||||
|
public MapMarker(LatLon point, PointDescription name, int colorIndex, boolean selected, int index) {
|
||||||
|
this.point = point;
|
||||||
|
this.pointDescription = name;
|
||||||
|
this.colorIndex = colorIndex;
|
||||||
|
this.selected = selected;
|
||||||
|
this.index = index;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getType() {
|
||||||
|
return favouritePoint == null ?
|
||||||
|
(wptPt == null ? MapMarkersGroup.ANY_TYPE : MapMarkersGroup.GPX_TYPE) :
|
||||||
|
MapMarkersGroup.FAVORITES_TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PointDescription getPointDescription(Context ctx) {
|
||||||
|
return new PointDescription(POINT_TYPE_MAP_MARKER, ctx.getString(R.string.map_marker), getOnlyName());
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName(Context ctx) {
|
||||||
|
String name;
|
||||||
|
PointDescription pd = getPointDescription(ctx);
|
||||||
|
if (Algorithms.isEmpty(pd.getName())) {
|
||||||
|
name = pd.getTypeName();
|
||||||
|
} else {
|
||||||
|
name = pd.getName();
|
||||||
|
}
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PointDescription getOriginalPointDescription() {
|
||||||
|
return pointDescription;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOriginalPointDescription(PointDescription pointDescription) {
|
||||||
|
this.pointDescription = pointDescription;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getOnlyName() {
|
||||||
|
return pointDescription == null ? "" : pointDescription.getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getLatitude() {
|
||||||
|
return point.getLatitude();
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getLongitude() {
|
||||||
|
return point.getLongitude();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getColor() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isVisible() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (this == o) return true;
|
||||||
|
if (o == null || getClass() != o.getClass()) return false;
|
||||||
|
|
||||||
|
MapMarker mapMarker = (MapMarker) o;
|
||||||
|
|
||||||
|
return colorIndex == mapMarker.colorIndex && point.equals(mapMarker.point);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
int result = point.hashCode();
|
||||||
|
result = 31 * result + colorIndex;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final int[] colorsIds = new int[] {
|
||||||
|
R.color.marker_blue,
|
||||||
|
R.color.marker_green,
|
||||||
|
R.color.marker_orange,
|
||||||
|
R.color.marker_red,
|
||||||
|
R.color.marker_yellow,
|
||||||
|
R.color.marker_teal,
|
||||||
|
R.color.marker_purple
|
||||||
|
};
|
||||||
|
|
||||||
|
public static int[] getColors(Context context) {
|
||||||
|
if (colors != null) {
|
||||||
|
return colors;
|
||||||
|
}
|
||||||
|
colors = new int[colorsIds.length];
|
||||||
|
for (int i = 0; i < colorsIds.length; i++) {
|
||||||
|
colors[i] = ContextCompat.getColor(context, colorsIds[i]);
|
||||||
|
}
|
||||||
|
return colors;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int getColorId(int colorIndex) {
|
||||||
|
return (colorIndex >= 0 && colorIndex < colorsIds.length) ? colorsIds[colorIndex] : colorsIds[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int getColorIndex(Context context, @ColorInt int color) {
|
||||||
|
int[] colors = getColors(context);
|
||||||
|
for (int i = 0; i < colors.length; i++) {
|
||||||
|
if (color == colors[i]) {
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
|
@ -15,7 +15,6 @@ import androidx.annotation.Nullable;
|
||||||
|
|
||||||
import net.osmand.AndroidUtils;
|
import net.osmand.AndroidUtils;
|
||||||
import net.osmand.data.LatLon;
|
import net.osmand.data.LatLon;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.activities.MapActivity;
|
import net.osmand.plus.activities.MapActivity;
|
||||||
|
|
|
@ -21,7 +21,6 @@ import net.osmand.data.FavouritePoint;
|
||||||
import net.osmand.data.LatLon;
|
import net.osmand.data.LatLon;
|
||||||
import net.osmand.data.PointDescription;
|
import net.osmand.data.PointDescription;
|
||||||
import net.osmand.data.WptLocationPoint;
|
import net.osmand.data.WptLocationPoint;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
|
||||||
import net.osmand.plus.OsmAndLocationProvider.OsmAndCompassListener;
|
import net.osmand.plus.OsmAndLocationProvider.OsmAndCompassListener;
|
||||||
import net.osmand.plus.OsmAndLocationProvider.OsmAndLocationListener;
|
import net.osmand.plus.OsmAndLocationProvider.OsmAndLocationListener;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
|
|
|
@ -4,8 +4,6 @@ import androidx.annotation.Nullable;
|
||||||
|
|
||||||
import net.osmand.data.LatLon;
|
import net.osmand.data.LatLon;
|
||||||
import net.osmand.data.PointDescription;
|
import net.osmand.data.PointDescription;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarkersGroup;
|
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.api.SQLiteAPI.SQLiteConnection;
|
import net.osmand.plus.api.SQLiteAPI.SQLiteConnection;
|
||||||
import net.osmand.plus.api.SQLiteAPI.SQLiteCursor;
|
import net.osmand.plus.api.SQLiteAPI.SQLiteCursor;
|
||||||
|
@ -13,7 +11,6 @@ import net.osmand.plus.helpers.SearchHistoryHelper;
|
||||||
import net.osmand.util.Algorithms;
|
import net.osmand.util.Algorithms;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Calendar;
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
|
|
|
@ -29,9 +29,8 @@ import net.osmand.AndroidUtils;
|
||||||
import net.osmand.Location;
|
import net.osmand.Location;
|
||||||
import net.osmand.data.LatLon;
|
import net.osmand.data.LatLon;
|
||||||
import net.osmand.plus.LockableViewPager;
|
import net.osmand.plus.LockableViewPager;
|
||||||
import net.osmand.plus.MapMarkersHelper;
|
import net.osmand.plus.mapmarkers.MapMarkersHelper.MapMarkersSortByDef;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarkersSortByDef;
|
import net.osmand.plus.mapmarkers.MapMarkersHelper.OnGroupSyncedListener;
|
||||||
import net.osmand.plus.MapMarkersHelper.OnGroupSyncedListener;
|
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.UiUtilities;
|
import net.osmand.plus.UiUtilities;
|
||||||
|
@ -430,7 +429,7 @@ public class MapMarkersDialogFragment extends DialogFragment implements OnGroupS
|
||||||
public void moveAllToHistoryOnClick() {
|
public void moveAllToHistoryOnClick() {
|
||||||
if (mapActivity != null) {
|
if (mapActivity != null) {
|
||||||
final MapMarkersHelper helper = mapActivity.getMyApplication().getMapMarkersHelper();
|
final MapMarkersHelper helper = mapActivity.getMyApplication().getMapMarkersHelper();
|
||||||
final List<MapMarkersHelper.MapMarker> markers = new ArrayList<>(helper.getMapMarkers());
|
final List<MapMarker> markers = new ArrayList<>(helper.getMapMarkers());
|
||||||
helper.moveAllActiveMarkersToHistory();
|
helper.moveAllActiveMarkersToHistory();
|
||||||
if (viewPager.getCurrentItem() == ACTIVE_MARKERS_POSITION) {
|
if (viewPager.getCurrentItem() == ACTIVE_MARKERS_POSITION) {
|
||||||
activeFragment.updateAdapter();
|
activeFragment.updateAdapter();
|
||||||
|
@ -482,7 +481,7 @@ public class MapMarkersDialogFragment extends DialogFragment implements OnGroupS
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void saveGpx(final String fileName) {
|
public void saveGpx(final String fileName) {
|
||||||
final String gpxPath = mapActivity.getMyApplication().getMapMarkersHelper().generateGpx(fileName);
|
final String gpxPath = mapActivity.getMyApplication().getMapMarkersHelper().saveMarkersToFile(fileName);
|
||||||
snackbar = Snackbar.make(viewPager, String.format(getString(R.string.shared_string_file_is_saved), fileName) + ".", Snackbar.LENGTH_LONG)
|
snackbar = Snackbar.make(viewPager, String.format(getString(R.string.shared_string_file_is_saved), fileName) + ".", Snackbar.LENGTH_LONG)
|
||||||
.setAction(R.string.shared_string_show, new View.OnClickListener() {
|
.setAction(R.string.shared_string_show, new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
|
|
183
OsmAnd/src/net/osmand/plus/mapmarkers/MapMarkersGroup.java
Normal file
183
OsmAnd/src/net/osmand/plus/mapmarkers/MapMarkersGroup.java
Normal file
|
@ -0,0 +1,183 @@
|
||||||
|
package net.osmand.plus.mapmarkers;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
|
import net.osmand.plus.wikivoyage.data.TravelArticle;
|
||||||
|
import net.osmand.util.Algorithms;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
public class MapMarkersGroup {
|
||||||
|
|
||||||
|
public static final int ANY_TYPE = -1;
|
||||||
|
public static final int FAVORITES_TYPE = 0;
|
||||||
|
public static final int GPX_TYPE = 1;
|
||||||
|
|
||||||
|
public static final String MARKERS_SYNC_GROUP_ID = "markers_sync_group_id";
|
||||||
|
|
||||||
|
private String id;
|
||||||
|
private String name;
|
||||||
|
private int type = ANY_TYPE;
|
||||||
|
private Set<String> wptCategories;
|
||||||
|
private long creationDate;
|
||||||
|
private boolean disabled;
|
||||||
|
private boolean visible = true;
|
||||||
|
private boolean wasShown = false;
|
||||||
|
private boolean visibleUntilRestart;
|
||||||
|
private List<MapMarker> markers = new ArrayList<>();
|
||||||
|
private TravelArticle wikivoyageArticle;
|
||||||
|
// TODO should be removed from this class:
|
||||||
|
private GroupHeader header;
|
||||||
|
private CategoriesSubHeader categoriesSubHeader;
|
||||||
|
private ShowHideHistoryButton showHideHistoryButton;
|
||||||
|
|
||||||
|
public MapMarkersGroup() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public MapMarkersGroup(@NonNull String id, @NonNull String name, int type) {
|
||||||
|
this.id = id;
|
||||||
|
this.name = name;
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getGpxPath() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public TravelArticle getWikivoyageArticle() {
|
||||||
|
return wikivoyageArticle;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getCreationDate() {
|
||||||
|
return creationDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCreationDate(long creationDate) {
|
||||||
|
this.creationDate = creationDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVisible(boolean visible) {
|
||||||
|
this.visible = visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMarkers(List<MapMarker> markers) {
|
||||||
|
this.markers = markers;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHeader(GroupHeader header) {
|
||||||
|
this.header = header;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCategoriesSubHeader(CategoriesSubHeader categoriesSubHeader) {
|
||||||
|
this.categoriesSubHeader = categoriesSubHeader;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setShowHideHistoryButton(ShowHideHistoryButton showHideHistoryButton) {
|
||||||
|
this.showHideHistoryButton = showHideHistoryButton;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isWasShown() {
|
||||||
|
return wasShown;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isVisibleUntilRestart() {
|
||||||
|
return visibleUntilRestart;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWikivoyageArticle(TravelArticle wikivoyageArticle) {
|
||||||
|
this.wikivoyageArticle = wikivoyageArticle;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getType() {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWptCategories(Set<String> wptCategories) {
|
||||||
|
this.wptCategories = wptCategories;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set<String> getWptCategories() {
|
||||||
|
return wptCategories;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isDisabled() {
|
||||||
|
return disabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDisabled(boolean disabled) {
|
||||||
|
this.disabled = disabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isVisible() {
|
||||||
|
return visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean wasShown() {
|
||||||
|
return wasShown;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWasShown(boolean wasShown) {
|
||||||
|
this.wasShown = wasShown;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVisibleUntilRestart(boolean visibleUntilRestart) {
|
||||||
|
this.visibleUntilRestart = visibleUntilRestart;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<MapMarker> getMarkers() {
|
||||||
|
return markers;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GroupHeader getGroupHeader() {
|
||||||
|
return header;
|
||||||
|
}
|
||||||
|
|
||||||
|
public CategoriesSubHeader getCategoriesSubHeader() {
|
||||||
|
return categoriesSubHeader;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ShowHideHistoryButton getShowHideHistoryButton() {
|
||||||
|
return showHideHistoryButton;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public String getWptCategoriesString() {
|
||||||
|
if (wptCategories != null) {
|
||||||
|
return Algorithms.encodeStringSet(wptCategories);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<MapMarker> getActiveMarkers() {
|
||||||
|
List<MapMarker> markers = new ArrayList<>(this.markers);
|
||||||
|
List<MapMarker> activeMarkers = new ArrayList<>(markers.size());
|
||||||
|
for (MapMarker marker : markers) {
|
||||||
|
if (!marker.history) {
|
||||||
|
activeMarkers.add(marker);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return activeMarkers;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<MapMarker> getHistoryMarkers() {
|
||||||
|
List<MapMarker> historyMarkers = new ArrayList<>();
|
||||||
|
for (MapMarker marker : markers) {
|
||||||
|
if (marker.history) {
|
||||||
|
historyMarkers.add(marker);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return historyMarkers;
|
||||||
|
}
|
||||||
|
}
|
|
@ -28,7 +28,6 @@ import net.osmand.data.FavouritePoint;
|
||||||
import net.osmand.data.LatLon;
|
import net.osmand.data.LatLon;
|
||||||
import net.osmand.data.PointDescription;
|
import net.osmand.data.PointDescription;
|
||||||
import net.osmand.data.WptLocationPoint;
|
import net.osmand.data.WptLocationPoint;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
|
||||||
import net.osmand.plus.OsmAndLocationProvider.OsmAndCompassListener;
|
import net.osmand.plus.OsmAndLocationProvider.OsmAndCompassListener;
|
||||||
import net.osmand.plus.OsmAndLocationProvider.OsmAndLocationListener;
|
import net.osmand.plus.OsmAndLocationProvider.OsmAndLocationListener;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package net.osmand.plus;
|
package net.osmand.plus.mapmarkers;
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
|
|
||||||
import androidx.annotation.IntDef;
|
import androidx.annotation.IntDef;
|
||||||
|
@ -16,13 +15,16 @@ import net.osmand.IndexConstants;
|
||||||
import net.osmand.PlatformUtil;
|
import net.osmand.PlatformUtil;
|
||||||
import net.osmand.data.FavouritePoint;
|
import net.osmand.data.FavouritePoint;
|
||||||
import net.osmand.data.LatLon;
|
import net.osmand.data.LatLon;
|
||||||
import net.osmand.data.LocationPoint;
|
|
||||||
import net.osmand.data.PointDescription;
|
import net.osmand.data.PointDescription;
|
||||||
import net.osmand.plus.FavouritesDbHelper.FavoriteGroup;
|
import net.osmand.plus.FavouritesDbHelper.FavoriteGroup;
|
||||||
|
import net.osmand.plus.GPXDatabase;
|
||||||
|
import net.osmand.plus.GeocodingLookupService;
|
||||||
import net.osmand.plus.GeocodingLookupService.AddressLookupRequest;
|
import net.osmand.plus.GeocodingLookupService.AddressLookupRequest;
|
||||||
|
import net.osmand.plus.GpxSelectionHelper;
|
||||||
import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile;
|
import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile;
|
||||||
import net.osmand.plus.mapmarkers.MapMarkersDbHelper;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.mapmarkers.MarkersPlanRouteContext;
|
import net.osmand.plus.R;
|
||||||
|
import net.osmand.plus.Version;
|
||||||
import net.osmand.plus.wikivoyage.data.TravelArticle;
|
import net.osmand.plus.wikivoyage.data.TravelArticle;
|
||||||
import net.osmand.plus.wikivoyage.data.TravelDbHelper;
|
import net.osmand.plus.wikivoyage.data.TravelDbHelper;
|
||||||
import net.osmand.util.Algorithms;
|
import net.osmand.util.Algorithms;
|
||||||
|
@ -57,6 +59,9 @@ public class MapMarkersHelper {
|
||||||
|
|
||||||
public static final int BY_DATE_ADDED_ASC = 4;
|
public static final int BY_DATE_ADDED_ASC = 4;
|
||||||
|
|
||||||
|
public static final String VISITED_DATE = "visited_date";
|
||||||
|
public static final String CREATION_DATE = "creation_date";
|
||||||
|
|
||||||
private static final Log LOG = PlatformUtil.getLog(MapMarkersHelper.class);
|
private static final Log LOG = PlatformUtil.getLog(MapMarkersHelper.class);
|
||||||
|
|
||||||
@Retention(RetentionPolicy.SOURCE)
|
@Retention(RetentionPolicy.SOURCE)
|
||||||
|
@ -148,12 +153,12 @@ public class MapMarkersHelper {
|
||||||
if (group == null) {
|
if (group == null) {
|
||||||
if (noGroup == null) {
|
if (noGroup == null) {
|
||||||
noGroup = new MapMarkersGroup();
|
noGroup = new MapMarkersGroup();
|
||||||
noGroup.creationDate = Long.MAX_VALUE;
|
noGroup.setCreationDate(Long.MAX_VALUE);
|
||||||
}
|
}
|
||||||
noGroup.getMarkers().add(marker);
|
noGroup.getMarkers().add(marker);
|
||||||
} else {
|
} else {
|
||||||
if (marker.creationDate < group.creationDate) {
|
if (marker.creationDate < group.getCreationDate()) {
|
||||||
group.creationDate = marker.creationDate;
|
group.setCreationDate(marker.creationDate);
|
||||||
}
|
}
|
||||||
group.getMarkers().add(marker);
|
group.getMarkers().add(marker);
|
||||||
}
|
}
|
||||||
|
@ -190,16 +195,17 @@ public class MapMarkersHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void lookupAddress(final MapMarker mapMarker) {
|
private void lookupAddress(final MapMarker mapMarker) {
|
||||||
if (mapMarker != null && mapMarker.pointDescription.isSearchingAddress(ctx)) {
|
if (mapMarker != null && mapMarker.getOriginalPointDescription().isSearchingAddress(ctx)) {
|
||||||
cancelPointAddressRequests(mapMarker.point);
|
cancelPointAddressRequests(mapMarker.point);
|
||||||
AddressLookupRequest lookupRequest = new AddressLookupRequest(mapMarker.point,
|
AddressLookupRequest lookupRequest = new AddressLookupRequest(mapMarker.point,
|
||||||
new GeocodingLookupService.OnAddressLookupResult() {
|
new GeocodingLookupService.OnAddressLookupResult() {
|
||||||
@Override
|
@Override
|
||||||
public void geocodingDone(String address) {
|
public void geocodingDone(String address) {
|
||||||
|
PointDescription pointDescription = mapMarker.getOriginalPointDescription();
|
||||||
if (Algorithms.isEmpty(address)) {
|
if (Algorithms.isEmpty(address)) {
|
||||||
mapMarker.pointDescription.setName(PointDescription.getAddressNotFoundStr(ctx));
|
pointDescription.setName(PointDescription.getAddressNotFoundStr(ctx));
|
||||||
} else {
|
} else {
|
||||||
mapMarker.pointDescription.setName(address);
|
pointDescription.setName(address);
|
||||||
}
|
}
|
||||||
markersDbHelper.updateMarker(mapMarker);
|
markersDbHelper.updateMarker(mapMarker);
|
||||||
refreshMarker(mapMarker);
|
refreshMarker(mapMarker);
|
||||||
|
@ -291,7 +297,6 @@ public class MapMarkersHelper {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void runSynchronization(final @NonNull MapMarkersGroup group) {
|
public void runSynchronization(final @NonNull MapMarkersGroup group) {
|
||||||
ctx.runInUIThread(new Runnable() {
|
ctx.runInUIThread(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -301,7 +306,6 @@ public class MapMarkersHelper {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public MapMarkersGroup getMarkersGroup(GPXFile gpx) {
|
public MapMarkersGroup getMarkersGroup(GPXFile gpx) {
|
||||||
if (gpx == null || gpx.path == null) {
|
if (gpx == null || gpx.path == null) {
|
||||||
return null;
|
return null;
|
||||||
|
@ -313,7 +317,6 @@ public class MapMarkersHelper {
|
||||||
return getMapMarkerGroupById(getMarkerGroupId(favGroup), MapMarkersGroup.FAVORITES_TYPE);
|
return getMapMarkerGroupById(getMarkerGroupId(favGroup), MapMarkersGroup.FAVORITES_TYPE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public MapMarkersGroup addOrEnableGpxGroup(@NonNull File file) {
|
public MapMarkersGroup addOrEnableGpxGroup(@NonNull File file) {
|
||||||
updateGpxShowAsMarkers(file);
|
updateGpxShowAsMarkers(file);
|
||||||
MapMarkersGroup gr = getMapMarkerGroupById(getMarkerGroupId(file), MapMarkersGroup.GPX_TYPE);
|
MapMarkersGroup gr = getMapMarkerGroupById(getMarkerGroupId(file), MapMarkersGroup.GPX_TYPE);
|
||||||
|
@ -336,7 +339,6 @@ public class MapMarkersHelper {
|
||||||
return gr;
|
return gr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public MapMarkersGroup addOrEnableGroup(@NonNull FavoriteGroup group) {
|
public MapMarkersGroup addOrEnableGroup(@NonNull FavoriteGroup group) {
|
||||||
MapMarkersGroup gr = getMarkersGroup(group);
|
MapMarkersGroup gr = getMarkersGroup(group);
|
||||||
if (gr == null) {
|
if (gr == null) {
|
||||||
|
@ -393,14 +395,14 @@ public class MapMarkersHelper {
|
||||||
String id = group.getId();
|
String id = group.getId();
|
||||||
if (id != null) {
|
if (id != null) {
|
||||||
markersDbHelper.updateGroupDisabled(id, disabled);
|
markersDbHelper.updateGroupDisabled(id, disabled);
|
||||||
group.disabled = disabled;
|
group.setDisabled(disabled);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateGroupWptCategories(@NonNull MapMarkersGroup group, Set<String> wptCategories) {
|
public void updateGroupWptCategories(@NonNull MapMarkersGroup group, Set<String> wptCategories) {
|
||||||
String id = group.getId();
|
String id = group.getId();
|
||||||
if (id != null) {
|
if (id != null) {
|
||||||
group.wptCategories = wptCategories;
|
group.setWptCategories(wptCategories);
|
||||||
if (wptCategories != null) {
|
if (wptCategories != null) {
|
||||||
markersDbHelper.updateGroupCategories(id, group.getWptCategoriesString());
|
markersDbHelper.updateGroupCategories(id, group.getWptCategoriesString());
|
||||||
}
|
}
|
||||||
|
@ -412,7 +414,7 @@ public class MapMarkersHelper {
|
||||||
markersDbHelper.removeActiveMarkersFromGroup(group.getId());
|
markersDbHelper.removeActiveMarkersFromGroup(group.getId());
|
||||||
removeFromMapMarkersList(group.getActiveMarkers());
|
removeFromMapMarkersList(group.getActiveMarkers());
|
||||||
if (updateGroup) {
|
if (updateGroup) {
|
||||||
group.markers = group.getHistoryMarkers();
|
group.setMarkers(group.getHistoryMarkers());
|
||||||
updateGroup(group);
|
updateGroup(group);
|
||||||
}
|
}
|
||||||
reorderActiveMarkersIfNeeded();
|
reorderActiveMarkersIfNeeded();
|
||||||
|
@ -435,12 +437,12 @@ public class MapMarkersHelper {
|
||||||
ShowHideHistoryButton showHideHistoryButton = mapMarkersGroup.getShowHideHistoryButton();
|
ShowHideHistoryButton showHideHistoryButton = mapMarkersGroup.getShowHideHistoryButton();
|
||||||
if (showHideHistoryButton != null) {
|
if (showHideHistoryButton != null) {
|
||||||
if (historyMarkersCount == 0) {
|
if (historyMarkersCount == 0) {
|
||||||
mapMarkersGroup.showHideHistoryButton = null;
|
mapMarkersGroup.setShowHideHistoryButton(null);
|
||||||
}
|
}
|
||||||
} else if (historyMarkersCount > 0) {
|
} else if (historyMarkersCount > 0) {
|
||||||
showHideHistoryButton = new ShowHideHistoryButton();
|
showHideHistoryButton = new ShowHideHistoryButton();
|
||||||
showHideHistoryButton.showHistory = false;
|
showHideHistoryButton.showHistory = false;
|
||||||
mapMarkersGroup.showHideHistoryButton = showHideHistoryButton;
|
mapMarkersGroup.setShowHideHistoryButton(showHideHistoryButton);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -460,10 +462,8 @@ public class MapMarkersHelper {
|
||||||
sortMarkers(mapMarkersGroup.getMarkers(), false, BY_DATE_ADDED_DESC);
|
sortMarkers(mapMarkersGroup.getMarkers(), false, BY_DATE_ADDED_DESC);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
mapMarkersGroup = new MapMarkersGroup();
|
mapMarkersGroup = new MapMarkersGroup(marker.groupKey, marker.groupName, MapMarkersGroup.ANY_TYPE);
|
||||||
mapMarkersGroup.id = marker.groupKey;
|
mapMarkersGroup.setCreationDate(Long.MAX_VALUE);
|
||||||
mapMarkersGroup.name = marker.groupName;
|
|
||||||
mapMarkersGroup.creationDate = Long.MAX_VALUE;
|
|
||||||
mapMarkersGroup.getMarkers().add(marker);
|
mapMarkersGroup.getMarkers().add(marker);
|
||||||
addToGroupsList(mapMarkersGroup);
|
addToGroupsList(mapMarkersGroup);
|
||||||
sortGroups();
|
sortGroups();
|
||||||
|
@ -473,18 +473,19 @@ public class MapMarkersHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createHeadersInGroup(@NonNull MapMarkersGroup group) {
|
private void createHeadersInGroup(@NonNull MapMarkersGroup group) {
|
||||||
GroupHeader header = new GroupHeader();
|
|
||||||
CategoriesSubHeader categoriesSubHeader = new CategoriesSubHeader();
|
|
||||||
int type = group.getType();
|
int type = group.getType();
|
||||||
|
int headerIconId = 0;
|
||||||
|
int subHeaderIconId = 0;
|
||||||
if (type != -1) {
|
if (type != -1) {
|
||||||
header.iconRes = type == MapMarkersGroup.FAVORITES_TYPE
|
headerIconId = type == MapMarkersGroup.FAVORITES_TYPE
|
||||||
? R.drawable.ic_action_favorite : R.drawable.ic_action_polygom_dark;
|
? R.drawable.ic_action_favorite : R.drawable.ic_action_polygom_dark;
|
||||||
categoriesSubHeader.iconRes = R.drawable.ic_action_filter;
|
subHeaderIconId = R.drawable.ic_action_filter;
|
||||||
}
|
}
|
||||||
header.group = group;
|
GroupHeader header = new GroupHeader(headerIconId, group);
|
||||||
categoriesSubHeader.group = group;
|
CategoriesSubHeader categoriesSubHeader = new CategoriesSubHeader(subHeaderIconId, group);
|
||||||
group.header = header;
|
|
||||||
group.categoriesSubHeader = categoriesSubHeader;
|
group.setHeader(header);
|
||||||
|
group.setCategoriesSubHeader(categoriesSubHeader);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void removeMarkerFromGroup(MapMarker marker) {
|
private void removeMarkerFromGroup(MapMarker marker) {
|
||||||
|
@ -502,8 +503,8 @@ public class MapMarkersHelper {
|
||||||
Collections.sort(mapMarkersGroups, new Comparator<MapMarkersGroup>() {
|
Collections.sort(mapMarkersGroups, new Comparator<MapMarkersGroup>() {
|
||||||
@Override
|
@Override
|
||||||
public int compare(MapMarkersGroup group1, MapMarkersGroup group2) {
|
public int compare(MapMarkersGroup group1, MapMarkersGroup group2) {
|
||||||
long t1 = group1.creationDate;
|
long t1 = group1.getCreationDate();
|
||||||
long t2 = group2.creationDate;
|
long t2 = group2.getCreationDate();
|
||||||
return (t1 > t2) ? -1 : ((t1 == t2) ? 0 : 1);
|
return (t1 > t2) ? -1 : ((t1 == t2) ? 0 : 1);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -515,7 +516,7 @@ public class MapMarkersHelper {
|
||||||
for (MapMarkersGroup group : mapMarkersGroups) {
|
for (MapMarkersGroup group : mapMarkersGroups) {
|
||||||
if ((id == null && group.getId() == null)
|
if ((id == null && group.getId() == null)
|
||||||
|| (group.getId() != null && group.getId().equals(id))) {
|
|| (group.getId() != null && group.getId().equals(id))) {
|
||||||
if(type == MapMarkersGroup.ANY_TYPE || type == group.type) {
|
if (type == MapMarkersGroup.ANY_TYPE || type == group.getType()) {
|
||||||
return group;
|
return group;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -549,7 +550,7 @@ public class MapMarkersHelper {
|
||||||
MapMarkersGroup search = getMarkersGroup(selected.getGpxFile());
|
MapMarkersGroup search = getMarkersGroup(selected.getGpxFile());
|
||||||
if (search == null && selected.getGpxFile() != null && selected.getGpxFile().path != null) {
|
if (search == null && selected.getGpxFile() != null && selected.getGpxFile().path != null) {
|
||||||
MapMarkersGroup group = createGPXMarkerGroup(new File(selected.getGpxFile().path));
|
MapMarkersGroup group = createGPXMarkerGroup(new File(selected.getGpxFile().path));
|
||||||
group.disabled = true;
|
group.setDisabled(true);
|
||||||
createHeadersInGroup(group);
|
createHeadersInGroup(group);
|
||||||
res.add(group);
|
res.add(group);
|
||||||
}
|
}
|
||||||
|
@ -570,7 +571,7 @@ public class MapMarkersHelper {
|
||||||
MapMarkersGroup search = getMapMarkerGroupById(getMarkerGroupId(path), MapMarkersGroup.GPX_TYPE);
|
MapMarkersGroup search = getMapMarkerGroupById(getMarkerGroupId(path), MapMarkersGroup.GPX_TYPE);
|
||||||
if (search == null) {
|
if (search == null) {
|
||||||
MapMarkersGroup group = createGPXMarkerGroup(path);
|
MapMarkersGroup group = createGPXMarkerGroup(path);
|
||||||
group.disabled = true;
|
group.setDisabled(true);
|
||||||
createHeadersInGroup(group);
|
createHeadersInGroup(group);
|
||||||
res.add(group);
|
res.add(group);
|
||||||
}
|
}
|
||||||
|
@ -1004,7 +1005,8 @@ public class MapMarkersHelper {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public String generateGpx(String fileName) {
|
public String saveMarkersToFile(String fileName) {
|
||||||
|
GPXFile gpxFile = generateGpx();
|
||||||
String dirName = IndexConstants.GPX_INDEX_DIR + IndexConstants.MAP_MARKERS_INDEX_DIR;
|
String dirName = IndexConstants.GPX_INDEX_DIR + IndexConstants.MAP_MARKERS_INDEX_DIR;
|
||||||
File dir = ctx.getAppPath(dirName);
|
File dir = ctx.getAppPath(dirName);
|
||||||
if (!dir.exists()) {
|
if (!dir.exists()) {
|
||||||
|
@ -1012,18 +1014,54 @@ public class MapMarkersHelper {
|
||||||
}
|
}
|
||||||
String uniqueFileName = FileUtils.createUniqueFileName(ctx, fileName, dirName, IndexConstants.GPX_FILE_EXT);
|
String uniqueFileName = FileUtils.createUniqueFileName(ctx, fileName, dirName, IndexConstants.GPX_FILE_EXT);
|
||||||
File fout = new File(dir, uniqueFileName + IndexConstants.GPX_FILE_EXT);
|
File fout = new File(dir, uniqueFileName + IndexConstants.GPX_FILE_EXT);
|
||||||
|
GPXUtilities.writeGpxFile(fout, gpxFile);
|
||||||
|
|
||||||
GPXFile file = new GPXFile(Version.getFullVersion(ctx));
|
return fout.getAbsolutePath();
|
||||||
for (MapMarker marker : mapMarkers) {
|
}
|
||||||
|
|
||||||
|
public GPXFile generateGpx() {
|
||||||
|
return generateGpx(mapMarkers, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public GPXFile generateGpx(List<MapMarker> markers, boolean completeBackup) {
|
||||||
|
GPXFile gpxFile = new GPXFile(Version.getFullVersion(ctx));
|
||||||
|
for (MapMarker marker : markers) {
|
||||||
WptPt wpt = new WptPt();
|
WptPt wpt = new WptPt();
|
||||||
wpt.lat = marker.getLatitude();
|
wpt.lat = marker.getLatitude();
|
||||||
wpt.lon = marker.getLongitude();
|
wpt.lon = marker.getLongitude();
|
||||||
wpt.setColor(ctx.getResources().getColor(MapMarker.getColorId(marker.colorIndex)));
|
|
||||||
wpt.name = marker.getOnlyName();
|
wpt.name = marker.getOnlyName();
|
||||||
file.addPoint(wpt);
|
wpt.setColor(ContextCompat.getColor(ctx, MapMarker.getColorId(marker.colorIndex)));
|
||||||
|
if (completeBackup) {
|
||||||
|
if (marker.creationDate != 0) {
|
||||||
|
wpt.getExtensionsToWrite().put(CREATION_DATE, String.valueOf(marker.creationDate));
|
||||||
}
|
}
|
||||||
GPXUtilities.writeGpxFile(fout, file);
|
if (marker.visitedDate != 0) {
|
||||||
return fout.getAbsolutePath();
|
wpt.getExtensionsToWrite().put(VISITED_DATE, String.valueOf(marker.visitedDate));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
gpxFile.addPoint(wpt);
|
||||||
|
}
|
||||||
|
return gpxFile;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<MapMarker> readMarkersFromGpx(GPXFile gpxFile, boolean history) {
|
||||||
|
List<MapMarker> mapMarkers = new ArrayList<>();
|
||||||
|
for (WptPt point : gpxFile.getPoints()) {
|
||||||
|
LatLon latLon = new LatLon(point.lat, point.lon);
|
||||||
|
int colorIndex = MapMarker.getColorIndex(ctx, point.getColor());
|
||||||
|
PointDescription name = new PointDescription(PointDescription.POINT_TYPE_LOCATION, point.name);
|
||||||
|
|
||||||
|
MapMarker marker = new MapMarker(latLon, name, colorIndex, false, 0);
|
||||||
|
|
||||||
|
String visitedDateStr = point.getExtensionsToRead().get(VISITED_DATE);
|
||||||
|
String creationDateStr = point.getExtensionsToRead().get(CREATION_DATE);
|
||||||
|
marker.visitedDate = Algorithms.parseLongSilently(visitedDateStr, 0);
|
||||||
|
marker.creationDate = Algorithms.parseLongSilently(creationDateStr, 0);
|
||||||
|
marker.nextKey = history ? MapMarkersDbHelper.HISTORY_NEXT_VALUE : MapMarkersDbHelper.TAIL_NEXT_VALUE;
|
||||||
|
|
||||||
|
mapMarkers.add(marker);
|
||||||
|
}
|
||||||
|
return mapMarkers;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------------------------
|
||||||
|
@ -1155,7 +1193,7 @@ public class MapMarkersHelper {
|
||||||
if (favGroup == null) {
|
if (favGroup == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
group.visible = favGroup.isVisible();
|
group.setVisible(favGroup.isVisible());
|
||||||
if (!group.isVisible() || group.isDisabled()) {
|
if (!group.isVisible() || group.isDisabled()) {
|
||||||
removeGroupActiveMarkers(group, true);
|
removeGroupActiveMarkers(group, true);
|
||||||
return;
|
return;
|
||||||
|
@ -1175,17 +1213,17 @@ public class MapMarkersHelper {
|
||||||
String gpxPath = group.getId();
|
String gpxPath = group.getId();
|
||||||
SelectedGpxFile selectedGpxFile = gpxHelper.getSelectedFileByPath(gpxPath);
|
SelectedGpxFile selectedGpxFile = gpxHelper.getSelectedFileByPath(gpxPath);
|
||||||
GPXFile gpx = selectedGpxFile == null ? null : selectedGpxFile.getGpxFile();
|
GPXFile gpx = selectedGpxFile == null ? null : selectedGpxFile.getGpxFile();
|
||||||
group.visible = gpx != null || group.visibleUntilRestart;
|
group.setVisible(gpx != null || group.isVisibleUntilRestart());
|
||||||
if (gpx == null || group.isDisabled()) {
|
if (gpx == null || group.isDisabled()) {
|
||||||
removeGroupActiveMarkers(group, true);
|
removeGroupActiveMarkers(group, true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean addAll = group.wptCategories == null || group.wptCategories.isEmpty();
|
boolean addAll = group.getWptCategories() == null || group.getWptCategories().isEmpty();
|
||||||
List<WptPt> gpxPoints = new ArrayList<>(gpx.getPoints());
|
List<WptPt> gpxPoints = new ArrayList<>(gpx.getPoints());
|
||||||
for (WptPt pt : gpxPoints) {
|
for (WptPt pt : gpxPoints) {
|
||||||
if (addAll || group.wptCategories.contains(pt.category)
|
if (addAll || group.getWptCategories().contains(pt.category)
|
||||||
|| (pt.category == null && group.wptCategories.contains(""))) {
|
|| (pt.category == null && group.getWptCategories().contains(""))) {
|
||||||
addNewMarkerIfNeeded(group, groupMarkers, new LatLon(pt.lat, pt.lon), pt.name, null, pt);
|
addNewMarkerIfNeeded(group, groupMarkers, new LatLon(pt.lat, pt.lon), pt.name, null, pt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1208,295 +1246,4 @@ public class MapMarkersHelper {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class MapMarkersGroup {
|
|
||||||
|
|
||||||
public static final int ANY_TYPE = -1;
|
|
||||||
public static final int FAVORITES_TYPE = 0;
|
|
||||||
public static final int GPX_TYPE = 1;
|
|
||||||
|
|
||||||
public static final String MARKERS_SYNC_GROUP_ID = "markers_sync_group_id";
|
|
||||||
|
|
||||||
private String id;
|
|
||||||
private String name;
|
|
||||||
private int type = -1;
|
|
||||||
private Set<String> wptCategories;
|
|
||||||
private long creationDate;
|
|
||||||
private boolean disabled;
|
|
||||||
private boolean visible = true;
|
|
||||||
private boolean wasShown = false;
|
|
||||||
private boolean visibleUntilRestart;
|
|
||||||
private List<MapMarker> markers = new ArrayList<>();
|
|
||||||
private TravelArticle wikivoyageArticle;
|
|
||||||
// TODO should be removed from this class:
|
|
||||||
private GroupHeader header;
|
|
||||||
private CategoriesSubHeader categoriesSubHeader;
|
|
||||||
private ShowHideHistoryButton showHideHistoryButton;
|
|
||||||
|
|
||||||
public MapMarkersGroup() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public MapMarkersGroup(@NonNull String id, @NonNull String name, int type) {
|
|
||||||
this.id = id;
|
|
||||||
this.name = name;
|
|
||||||
this.type = type;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getGpxPath() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public TravelArticle getWikivoyageArticle() {
|
|
||||||
return wikivoyageArticle;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWikivoyageArticle(TravelArticle wikivoyageArticle) {
|
|
||||||
this.wikivoyageArticle = wikivoyageArticle;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getType() {
|
|
||||||
return type;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWptCategories(Set<String> wptCategories) {
|
|
||||||
this.wptCategories = wptCategories;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Set<String> getWptCategories() {
|
|
||||||
return wptCategories;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isDisabled() {
|
|
||||||
return disabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDisabled(boolean disabled) {
|
|
||||||
this.disabled = disabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isVisible() {
|
|
||||||
return visible;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean wasShown() {
|
|
||||||
return wasShown;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWasShown(boolean wasShown) {
|
|
||||||
this.wasShown = wasShown;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setVisibleUntilRestart(boolean visibleUntilRestart) {
|
|
||||||
this.visibleUntilRestart = visibleUntilRestart;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<MapMarker> getMarkers() {
|
|
||||||
return markers;
|
|
||||||
}
|
|
||||||
|
|
||||||
public GroupHeader getGroupHeader() {
|
|
||||||
return header;
|
|
||||||
}
|
|
||||||
|
|
||||||
public CategoriesSubHeader getCategoriesSubHeader() {
|
|
||||||
return categoriesSubHeader;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ShowHideHistoryButton getShowHideHistoryButton() {
|
|
||||||
return showHideHistoryButton;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
|
||||||
public String getWptCategoriesString() {
|
|
||||||
if (wptCategories != null) {
|
|
||||||
return Algorithms.encodeStringSet(wptCategories);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<MapMarker> getActiveMarkers() {
|
|
||||||
List<MapMarker> markers = new ArrayList<>(this.markers);
|
|
||||||
List<MapMarker> activeMarkers = new ArrayList<>(markers.size());
|
|
||||||
for (MapMarker marker : markers) {
|
|
||||||
if (!marker.history) {
|
|
||||||
activeMarkers.add(marker);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return activeMarkers;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<MapMarker> getHistoryMarkers() {
|
|
||||||
List<MapMarker> historyMarkers = new ArrayList<>();
|
|
||||||
for (MapMarker marker : markers) {
|
|
||||||
if (marker.history) {
|
|
||||||
historyMarkers.add(marker);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return historyMarkers;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class ShowHideHistoryButton {
|
|
||||||
public boolean showHistory;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class GroupHeader {
|
|
||||||
private int iconRes;
|
|
||||||
private MapMarkersGroup group;
|
|
||||||
|
|
||||||
public int getIconRes() {
|
|
||||||
return iconRes;
|
|
||||||
}
|
|
||||||
|
|
||||||
public MapMarkersGroup getGroup() {
|
|
||||||
return group;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class CategoriesSubHeader {
|
|
||||||
private int iconRes;
|
|
||||||
private MapMarkersGroup group;
|
|
||||||
|
|
||||||
public int getIconRes() {
|
|
||||||
return iconRes;
|
|
||||||
}
|
|
||||||
|
|
||||||
public MapMarkersGroup getGroup() {
|
|
||||||
return group;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class MapMarker implements LocationPoint {
|
|
||||||
private static int[] colors;
|
|
||||||
|
|
||||||
public String id;
|
|
||||||
public LatLon point;
|
|
||||||
private PointDescription pointDescription;
|
|
||||||
public int colorIndex;
|
|
||||||
public int index;
|
|
||||||
public boolean history;
|
|
||||||
public boolean selected;
|
|
||||||
public int dist;
|
|
||||||
public long creationDate;
|
|
||||||
public long visitedDate;
|
|
||||||
public String nextKey;
|
|
||||||
public String groupKey;
|
|
||||||
public String groupName;
|
|
||||||
public WptPt wptPt;
|
|
||||||
public FavouritePoint favouritePoint;
|
|
||||||
public String mapObjectName;
|
|
||||||
|
|
||||||
public MapMarker(LatLon point, PointDescription name, int colorIndex, boolean selected, int index) {
|
|
||||||
this.point = point;
|
|
||||||
this.pointDescription = name;
|
|
||||||
this.colorIndex = colorIndex;
|
|
||||||
this.selected = selected;
|
|
||||||
this.index = index;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getType() {
|
|
||||||
return favouritePoint == null ?
|
|
||||||
(wptPt == null ? MapMarkersGroup.ANY_TYPE : MapMarkersGroup.GPX_TYPE) :
|
|
||||||
MapMarkersGroup.FAVORITES_TYPE;
|
|
||||||
}
|
|
||||||
|
|
||||||
public PointDescription getPointDescription(Context ctx) {
|
|
||||||
return new PointDescription(POINT_TYPE_MAP_MARKER, ctx.getString(R.string.map_marker), getOnlyName());
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName(Context ctx) {
|
|
||||||
String name;
|
|
||||||
PointDescription pd = getPointDescription(ctx);
|
|
||||||
if (Algorithms.isEmpty(pd.getName())) {
|
|
||||||
name = pd.getTypeName();
|
|
||||||
} else {
|
|
||||||
name = pd.getName();
|
|
||||||
}
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public PointDescription getOriginalPointDescription() {
|
|
||||||
return pointDescription;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setOriginalPointDescription(PointDescription pointDescription) {
|
|
||||||
this.pointDescription = pointDescription;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getOnlyName() {
|
|
||||||
return pointDescription == null ? "" : pointDescription.getName();
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getLatitude() {
|
|
||||||
return point.getLatitude();
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getLongitude() {
|
|
||||||
return point.getLongitude();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getColor() {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isVisible() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object o) {
|
|
||||||
if (this == o) return true;
|
|
||||||
if (o == null || getClass() != o.getClass()) return false;
|
|
||||||
|
|
||||||
MapMarker mapMarker = (MapMarker) o;
|
|
||||||
|
|
||||||
return colorIndex == mapMarker.colorIndex && point.equals(mapMarker.point);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
int result = point.hashCode();
|
|
||||||
result = 31 * result + colorIndex;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static final int[] colorsIds = new int[]{
|
|
||||||
R.color.marker_blue,
|
|
||||||
R.color.marker_green,
|
|
||||||
R.color.marker_orange,
|
|
||||||
R.color.marker_red,
|
|
||||||
R.color.marker_yellow,
|
|
||||||
R.color.marker_teal,
|
|
||||||
R.color.marker_purple
|
|
||||||
};
|
|
||||||
|
|
||||||
public static int[] getColors(Context context) {
|
|
||||||
if (colors != null) {
|
|
||||||
return colors;
|
|
||||||
}
|
|
||||||
colors = new int[colorsIds.length];
|
|
||||||
for (int i = 0; i < colorsIds.length; i++) {
|
|
||||||
colors[i] = ContextCompat.getColor(context, colorsIds[i]);
|
|
||||||
}
|
|
||||||
return colors;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int getColorId(int colorIndex) {
|
|
||||||
return (colorIndex >= 0 && colorIndex < colorsIds.length) ? colorsIds[colorIndex] : colorsIds[0];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -20,8 +20,6 @@ import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import com.google.android.material.snackbar.Snackbar;
|
import com.google.android.material.snackbar.Snackbar;
|
||||||
|
|
||||||
import net.osmand.plus.MapMarkersHelper;
|
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.UiUtilities;
|
import net.osmand.plus.UiUtilities;
|
||||||
|
|
|
@ -7,7 +7,6 @@ import net.osmand.data.LatLon;
|
||||||
import net.osmand.plus.settings.backend.ApplicationMode;
|
import net.osmand.plus.settings.backend.ApplicationMode;
|
||||||
import net.osmand.GPXUtilities.TrkSegment;
|
import net.osmand.GPXUtilities.TrkSegment;
|
||||||
import net.osmand.GPXUtilities.WptPt;
|
import net.osmand.GPXUtilities.WptPt;
|
||||||
import net.osmand.plus.MapMarkersHelper;
|
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.routing.RouteCalculationParams;
|
import net.osmand.plus.routing.RouteCalculationParams;
|
||||||
import net.osmand.plus.routing.RouteCalculationResult;
|
import net.osmand.plus.routing.RouteCalculationResult;
|
||||||
|
|
|
@ -4,8 +4,7 @@ import android.graphics.drawable.Drawable;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
import net.osmand.plus.MapMarkersHelper;
|
import net.osmand.plus.mapmarkers.MapMarkersHelper.MapMarkersSortByDef;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarkersSortByDef;
|
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.base.MenuBottomSheetDialogFragment;
|
import net.osmand.plus.base.MenuBottomSheetDialogFragment;
|
||||||
import net.osmand.plus.base.bottomsheetmenu.BaseBottomSheetItem;
|
import net.osmand.plus.base.bottomsheetmenu.BaseBottomSheetItem;
|
||||||
|
|
|
@ -39,8 +39,6 @@ import net.osmand.TspAnt;
|
||||||
import net.osmand.data.LatLon;
|
import net.osmand.data.LatLon;
|
||||||
import net.osmand.data.PointDescription;
|
import net.osmand.data.PointDescription;
|
||||||
import net.osmand.data.RotatedTileBox;
|
import net.osmand.data.RotatedTileBox;
|
||||||
import net.osmand.plus.MapMarkersHelper;
|
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
|
||||||
import net.osmand.plus.OsmAndFormatter;
|
import net.osmand.plus.OsmAndFormatter;
|
||||||
import net.osmand.plus.OsmAndLocationProvider.OsmAndLocationListener;
|
import net.osmand.plus.OsmAndLocationProvider.OsmAndLocationListener;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
|
|
|
@ -13,8 +13,6 @@ import net.osmand.GPXUtilities.WptPt;
|
||||||
import net.osmand.IndexConstants;
|
import net.osmand.IndexConstants;
|
||||||
import net.osmand.plus.GpxSelectionHelper;
|
import net.osmand.plus.GpxSelectionHelper;
|
||||||
import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile;
|
import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile;
|
||||||
import net.osmand.plus.MapMarkersHelper;
|
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarkersGroup;
|
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.base.MenuBottomSheetDialogFragment;
|
import net.osmand.plus.base.MenuBottomSheetDialogFragment;
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
package net.osmand.plus.mapmarkers;
|
||||||
|
|
||||||
|
public class ShowHideHistoryButton {
|
||||||
|
public boolean showHistory;
|
||||||
|
}
|
|
@ -13,9 +13,8 @@ import androidx.recyclerview.widget.RecyclerView;
|
||||||
import com.google.android.material.snackbar.Snackbar;
|
import com.google.android.material.snackbar.Snackbar;
|
||||||
|
|
||||||
import net.osmand.data.LatLon;
|
import net.osmand.data.LatLon;
|
||||||
import net.osmand.plus.MapMarkersHelper;
|
import net.osmand.plus.mapmarkers.MapMarker;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
import net.osmand.plus.mapmarkers.MapMarkersGroup;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarkersGroup;
|
|
||||||
import net.osmand.plus.OsmAndFormatter;
|
import net.osmand.plus.OsmAndFormatter;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.UiUtilities;
|
import net.osmand.plus.UiUtilities;
|
||||||
|
@ -215,7 +214,7 @@ public class MapMarkersActiveAdapter extends RecyclerView.Adapter<MapMarkerItemV
|
||||||
final int pos = holder.getAdapterPosition();
|
final int pos = holder.getAdapterPosition();
|
||||||
final MapMarker marker = getItem(pos);
|
final MapMarker marker = getItem(pos);
|
||||||
mapActivity.getMyApplication().getMapMarkersHelper().moveMapMarkerToHistory(marker);
|
mapActivity.getMyApplication().getMapMarkersHelper().moveMapMarkerToHistory(marker);
|
||||||
MapMarkersHelper.MapMarkersGroup group = mapActivity.getMyApplication().getMapMarkersHelper().getMapMarkerGroupById(marker.groupKey,
|
MapMarkersGroup group = mapActivity.getMyApplication().getMapMarkersHelper().getMapMarkerGroupById(marker.groupKey,
|
||||||
MapMarkersGroup.ANY_TYPE);
|
MapMarkersGroup.ANY_TYPE);
|
||||||
if (group != null) {
|
if (group != null) {
|
||||||
mapActivity.getMyApplication().getMapMarkersHelper().updateGroup(group);
|
mapActivity.getMyApplication().getMapMarkersHelper().updateGroup(group);
|
||||||
|
|
|
@ -21,11 +21,12 @@ import net.osmand.IndexConstants;
|
||||||
import net.osmand.data.LatLon;
|
import net.osmand.data.LatLon;
|
||||||
import net.osmand.plus.GpxSelectionHelper;
|
import net.osmand.plus.GpxSelectionHelper;
|
||||||
import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile;
|
import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile;
|
||||||
import net.osmand.plus.MapMarkersHelper;
|
import net.osmand.plus.mapmarkers.CategoriesSubHeader;
|
||||||
import net.osmand.plus.MapMarkersHelper.GroupHeader;
|
import net.osmand.plus.mapmarkers.MapMarkersHelper;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
import net.osmand.plus.mapmarkers.GroupHeader;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarkersGroup;
|
import net.osmand.plus.mapmarkers.MapMarker;
|
||||||
import net.osmand.plus.MapMarkersHelper.ShowHideHistoryButton;
|
import net.osmand.plus.mapmarkers.MapMarkersGroup;
|
||||||
|
import net.osmand.plus.mapmarkers.ShowHideHistoryButton;
|
||||||
import net.osmand.plus.OsmAndFormatter;
|
import net.osmand.plus.OsmAndFormatter;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
|
@ -159,7 +160,7 @@ public class MapMarkersGroupsAdapter extends RecyclerView.Adapter<RecyclerView.V
|
||||||
items.add(header);
|
items.add(header);
|
||||||
if (!group.isDisabled()) {
|
if (!group.isDisabled()) {
|
||||||
if (group.getWptCategories() != null && !group.getWptCategories().isEmpty()) {
|
if (group.getWptCategories() != null && !group.getWptCategories().isEmpty()) {
|
||||||
MapMarkersHelper.CategoriesSubHeader categoriesSubHeader = group.getCategoriesSubHeader();
|
CategoriesSubHeader categoriesSubHeader = group.getCategoriesSubHeader();
|
||||||
items.add(categoriesSubHeader);
|
items.add(categoriesSubHeader);
|
||||||
}
|
}
|
||||||
TravelDbHelper travelDbHelper = mapActivity.getMyApplication().getTravelDbHelper();
|
TravelDbHelper travelDbHelper = mapActivity.getMyApplication().getTravelDbHelper();
|
||||||
|
@ -526,8 +527,8 @@ public class MapMarkersGroupsAdapter extends RecyclerView.Adapter<RecyclerView.V
|
||||||
} else if (holder instanceof MapMarkerCategoriesViewHolder) {
|
} else if (holder instanceof MapMarkerCategoriesViewHolder) {
|
||||||
final MapMarkerCategoriesViewHolder categoriesViewHolder = (MapMarkerCategoriesViewHolder) holder;
|
final MapMarkerCategoriesViewHolder categoriesViewHolder = (MapMarkerCategoriesViewHolder) holder;
|
||||||
final Object header = getItem(position);
|
final Object header = getItem(position);
|
||||||
if (header instanceof MapMarkersHelper.CategoriesSubHeader) {
|
if (header instanceof CategoriesSubHeader) {
|
||||||
final MapMarkersHelper.CategoriesSubHeader categoriesSubHeader = (MapMarkersHelper.CategoriesSubHeader) header;
|
final CategoriesSubHeader categoriesSubHeader = (CategoriesSubHeader) header;
|
||||||
final MapMarkersGroup group = categoriesSubHeader.getGroup();
|
final MapMarkersGroup group = categoriesSubHeader.getGroup();
|
||||||
View.OnClickListener openChooseCategoriesDialog = new View.OnClickListener() {
|
View.OnClickListener openChooseCategoriesDialog = new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -599,7 +600,7 @@ public class MapMarkersGroupsAdapter extends RecyclerView.Adapter<RecyclerView.V
|
||||||
return HEADER_TYPE;
|
return HEADER_TYPE;
|
||||||
} else if (item instanceof ShowHideHistoryButton) {
|
} else if (item instanceof ShowHideHistoryButton) {
|
||||||
return SHOW_HIDE_HISTORY_TYPE;
|
return SHOW_HIDE_HISTORY_TYPE;
|
||||||
} else if (item instanceof MapMarkersHelper.CategoriesSubHeader) {
|
} else if (item instanceof CategoriesSubHeader) {
|
||||||
return CATEGORIES_TYPE;
|
return CATEGORIES_TYPE;
|
||||||
} else {
|
} else {
|
||||||
throw new IllegalArgumentException("Unsupported view type");
|
throw new IllegalArgumentException("Unsupported view type");
|
||||||
|
|
|
@ -10,7 +10,7 @@ import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import com.google.android.material.snackbar.Snackbar;
|
import com.google.android.material.snackbar.Snackbar;
|
||||||
|
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
import net.osmand.plus.mapmarkers.MapMarker;
|
||||||
import net.osmand.plus.OsmAndFormatter;
|
import net.osmand.plus.OsmAndFormatter;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
|
|
|
@ -17,7 +17,7 @@ import net.osmand.data.LatLon;
|
||||||
import net.osmand.data.PointDescription;
|
import net.osmand.data.PointDescription;
|
||||||
import net.osmand.plus.GeocodingLookupService.AddressLookupRequest;
|
import net.osmand.plus.GeocodingLookupService.AddressLookupRequest;
|
||||||
import net.osmand.plus.GeocodingLookupService.OnAddressLookupResult;
|
import net.osmand.plus.GeocodingLookupService.OnAddressLookupResult;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
import net.osmand.plus.mapmarkers.MapMarker;
|
||||||
import net.osmand.plus.OsmAndFormatter;
|
import net.osmand.plus.OsmAndFormatter;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
|
|
|
@ -67,7 +67,7 @@ public class LoginBottomSheetFragment extends MenuBottomSheetDialogFragment {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected int getThirdBottomButtonTextId() {
|
protected int getThirdBottomButtonTextId() {
|
||||||
return R.string.sing_in_with_open_street_map;
|
return R.string.sign_in_with_open_street_map;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -28,8 +28,8 @@ import net.osmand.GPXUtilities.GPXFile;
|
||||||
import net.osmand.GPXUtilities.WptPt;
|
import net.osmand.GPXUtilities.WptPt;
|
||||||
import net.osmand.plus.GpxSelectionHelper.GpxDisplayGroup;
|
import net.osmand.plus.GpxSelectionHelper.GpxDisplayGroup;
|
||||||
import net.osmand.plus.GpxSelectionHelper.GpxDisplayItem;
|
import net.osmand.plus.GpxSelectionHelper.GpxDisplayItem;
|
||||||
import net.osmand.plus.MapMarkersHelper;
|
import net.osmand.plus.mapmarkers.MapMarkersHelper;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarkersGroup;
|
import net.osmand.plus.mapmarkers.MapMarkersGroup;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.activities.EditFavoriteGroupDialogFragment.FavoriteColorAdapter;
|
import net.osmand.plus.activities.EditFavoriteGroupDialogFragment.FavoriteColorAdapter;
|
||||||
|
|
|
@ -54,8 +54,8 @@ import net.osmand.plus.GPXDatabase.GpxDataItem;
|
||||||
import net.osmand.plus.GpxSelectionHelper.GpxDisplayGroup;
|
import net.osmand.plus.GpxSelectionHelper.GpxDisplayGroup;
|
||||||
import net.osmand.plus.GpxSelectionHelper.GpxDisplayItem;
|
import net.osmand.plus.GpxSelectionHelper.GpxDisplayItem;
|
||||||
import net.osmand.plus.GpxSelectionHelper.GpxDisplayItemType;
|
import net.osmand.plus.GpxSelectionHelper.GpxDisplayItemType;
|
||||||
import net.osmand.plus.MapMarkersHelper;
|
import net.osmand.plus.mapmarkers.MapMarkersHelper;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarkersGroup;
|
import net.osmand.plus.mapmarkers.MapMarkersGroup;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.UiUtilities;
|
import net.osmand.plus.UiUtilities;
|
||||||
|
|
|
@ -6,18 +6,14 @@ import android.content.DialogInterface.OnClickListener;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.graphics.Typeface;
|
import android.graphics.Typeface;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.os.AsyncTask;
|
|
||||||
import android.text.SpannableString;
|
import android.text.SpannableString;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.text.style.StyleSpan;
|
import android.text.style.StyleSpan;
|
||||||
import android.view.LayoutInflater;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.ArrayAdapter;
|
import android.widget.ArrayAdapter;
|
||||||
import android.widget.EditText;
|
|
||||||
import android.widget.Spinner;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.appcompat.app.AlertDialog;
|
import androidx.annotation.StringRes;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.fragment.app.FragmentActivity;
|
import androidx.fragment.app.FragmentActivity;
|
||||||
|
|
||||||
|
@ -34,8 +30,6 @@ import net.osmand.plus.ContextMenuItem;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.OsmandPlugin;
|
import net.osmand.plus.OsmandPlugin;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.activities.EnumAdapter;
|
|
||||||
import net.osmand.plus.activities.EnumAdapter.IEnumWithResource;
|
|
||||||
import net.osmand.plus.activities.MapActivity;
|
import net.osmand.plus.activities.MapActivity;
|
||||||
import net.osmand.plus.activities.TabActivity;
|
import net.osmand.plus.activities.TabActivity;
|
||||||
import net.osmand.plus.dashboard.DashboardOnMap.DashboardType;
|
import net.osmand.plus.dashboard.DashboardOnMap.DashboardType;
|
||||||
|
@ -45,6 +39,7 @@ import net.osmand.plus.myplaces.AvailableGPXFragment;
|
||||||
import net.osmand.plus.myplaces.AvailableGPXFragment.GpxInfo;
|
import net.osmand.plus.myplaces.AvailableGPXFragment.GpxInfo;
|
||||||
import net.osmand.plus.myplaces.FavoritesActivity;
|
import net.osmand.plus.myplaces.FavoritesActivity;
|
||||||
import net.osmand.plus.osmedit.OsmPoint.Action;
|
import net.osmand.plus.osmedit.OsmPoint.Action;
|
||||||
|
import net.osmand.plus.osmedit.dialogs.SendGpxBottomSheetFragment;
|
||||||
import net.osmand.plus.quickaction.QuickActionType;
|
import net.osmand.plus.quickaction.QuickActionType;
|
||||||
import net.osmand.plus.settings.backend.OsmandPreference;
|
import net.osmand.plus.settings.backend.OsmandPreference;
|
||||||
import net.osmand.plus.settings.backend.OsmandSettings;
|
import net.osmand.plus.settings.backend.OsmandSettings;
|
||||||
|
@ -437,24 +432,34 @@ public class OsmEditingPlugin extends OsmandPlugin {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum UploadVisibility implements IEnumWithResource {
|
public enum UploadVisibility {
|
||||||
Public(R.string.gpxup_public),
|
PUBLIC(R.string.gpxup_public, R.string.gpx_upload_public_visibility_descr),
|
||||||
Identifiable(R.string.gpxup_identifiable),
|
IDENTIFIABLE(R.string.gpxup_identifiable, R.string.gpx_upload_identifiable_visibility_descr),
|
||||||
Trackable(R.string.gpxup_trackable),
|
TRACKABLE(R.string.gpxup_trackable, R.string.gpx_upload_trackable_visibility_descr),
|
||||||
Private(R.string.gpxup_private);
|
PRIVATE(R.string.gpxup_private, R.string.gpx_upload_private_visibility_descr);
|
||||||
private final int resourceId;
|
|
||||||
|
|
||||||
UploadVisibility(int resourceId) {
|
@StringRes
|
||||||
this.resourceId = resourceId;
|
private final int titleId;
|
||||||
|
@StringRes
|
||||||
|
private final int descriptionId;
|
||||||
|
|
||||||
|
UploadVisibility(int titleId, int descriptionId) {
|
||||||
|
this.titleId = titleId;
|
||||||
|
this.descriptionId = descriptionId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String asURLparam() {
|
public String asURLparam() {
|
||||||
return name().toLowerCase();
|
return name().toLowerCase();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@StringRes
|
||||||
public int stringResource() {
|
public int getTitleId() {
|
||||||
return resourceId;
|
return titleId;
|
||||||
|
}
|
||||||
|
|
||||||
|
@StringRes
|
||||||
|
public int getDescriptionId() {
|
||||||
|
return descriptionId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -465,36 +470,11 @@ public class OsmEditingPlugin extends OsmandPlugin {
|
||||||
if ((Algorithms.isEmpty(name) || Algorithms.isEmpty(pwd)) && Algorithms.isEmpty(authToken)) {
|
if ((Algorithms.isEmpty(name) || Algorithms.isEmpty(pwd)) && Algorithms.isEmpty(authToken)) {
|
||||||
LoginBottomSheetFragment.showInstance(activity.getSupportFragmentManager(), fragment.getTargetFragment());
|
LoginBottomSheetFragment.showInstance(activity.getSupportFragmentManager(), fragment.getTargetFragment());
|
||||||
return false;
|
return false;
|
||||||
}
|
} else {
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
|
SendGpxBottomSheetFragment.showInstance(activity.getSupportFragmentManager(), fragment.getTargetFragment(), info);
|
||||||
LayoutInflater inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
|
||||||
final View view = inflater.inflate(R.layout.send_gpx_osm, null);
|
|
||||||
final EditText descr = (EditText) view.findViewById(R.id.memory_size);
|
|
||||||
if (info.length > 0 && info[0].getFileName() != null) {
|
|
||||||
int dt = info[0].getFileName().indexOf('.');
|
|
||||||
descr.setText(info[0].getFileName().substring(0, dt));
|
|
||||||
}
|
|
||||||
final EditText tags = (EditText) view.findViewById(R.id.TagsText);
|
|
||||||
final Spinner visibility = ((Spinner) view.findViewById(R.id.Visibility));
|
|
||||||
EnumAdapter<UploadVisibility> adapter = new EnumAdapter<>(activity, android.R.layout.simple_spinner_item, UploadVisibility.values());
|
|
||||||
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
|
||||||
visibility.setAdapter(adapter);
|
|
||||||
visibility.setSelection(0);
|
|
||||||
|
|
||||||
builder.setView(view);
|
|
||||||
builder.setNegativeButton(R.string.shared_string_no, null);
|
|
||||||
builder.setPositiveButton(R.string.shared_string_yes, new DialogInterface.OnClickListener() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
|
||||||
new UploadGPXFilesTask(activity, descr.getText().toString(), tags.getText().toString(),
|
|
||||||
(UploadVisibility) visibility.getItemAtPosition(visibility.getSelectedItemPosition())
|
|
||||||
).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, info);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
builder.show();
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
|
|
|
@ -1,29 +1,36 @@
|
||||||
package net.osmand.plus.osmedit;
|
package net.osmand.plus.osmedit;
|
||||||
|
|
||||||
import java.io.File;
|
import android.app.Activity;
|
||||||
|
import android.os.AsyncTask;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
|
import net.osmand.AndroidUtils;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.myplaces.AvailableGPXFragment.GpxInfo;
|
import net.osmand.plus.myplaces.AvailableGPXFragment.GpxInfo;
|
||||||
import net.osmand.plus.osmedit.OsmEditingPlugin.UploadVisibility;
|
import net.osmand.plus.osmedit.OsmEditingPlugin.UploadVisibility;
|
||||||
import android.app.Activity;
|
|
||||||
import android.os.AsyncTask;
|
import java.io.File;
|
||||||
import android.widget.Toast;
|
import java.lang.ref.WeakReference;
|
||||||
|
|
||||||
public class UploadGPXFilesTask extends AsyncTask<GpxInfo, String, String> {
|
public class UploadGPXFilesTask extends AsyncTask<GpxInfo, String, String> {
|
||||||
|
|
||||||
|
private final OsmandApplication app;
|
||||||
|
private final WeakReference<Activity> activityRef;
|
||||||
|
|
||||||
private final String visibility;
|
private final String visibility;
|
||||||
private final String description;
|
private final String description;
|
||||||
private final String tagstring;
|
private final String tagstring;
|
||||||
private Activity la;
|
|
||||||
|
|
||||||
public UploadGPXFilesTask(Activity la,
|
public UploadGPXFilesTask(@NonNull Activity activity, String description, String tagsString,
|
||||||
String description, String tagstring, UploadVisibility visibility) {
|
@Nullable UploadVisibility visibility) {
|
||||||
this.la = la;
|
app = (OsmandApplication) activity.getApplication();
|
||||||
|
this.activityRef = new WeakReference<>(activity);
|
||||||
this.description = description;
|
this.description = description;
|
||||||
this.tagstring = tagstring;
|
this.tagstring = tagsString;
|
||||||
this.visibility = visibility != null ? visibility.asURLparam() : UploadVisibility.Private.asURLparam();
|
this.visibility = visibility != null ? visibility.asURLparam() : UploadVisibility.PRIVATE.asURLparam();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -32,10 +39,9 @@ public class UploadGPXFilesTask extends AsyncTask<GpxInfo, String, String> {
|
||||||
int total = 0;
|
int total = 0;
|
||||||
for (GpxInfo info : params) {
|
for (GpxInfo info : params) {
|
||||||
if (!isCancelled() && info.file != null) {
|
if (!isCancelled() && info.file != null) {
|
||||||
String warning = null;
|
|
||||||
File file = info.file;
|
File file = info.file;
|
||||||
warning = new OpenstreetmapRemoteUtil((OsmandApplication) la.getApplication()).uploadGPXFile(tagstring, description, visibility,
|
OpenstreetmapRemoteUtil remoteUtil = new OpenstreetmapRemoteUtil(app);
|
||||||
file);
|
String warning = remoteUtil.uploadGPXFile(tagstring, description, visibility, file);
|
||||||
total++;
|
total++;
|
||||||
if (warning == null) {
|
if (warning == null) {
|
||||||
count++;
|
count++;
|
||||||
|
@ -44,7 +50,7 @@ public class UploadGPXFilesTask extends AsyncTask<GpxInfo, String, String> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return la.getString(R.string.local_index_items_uploaded, count, total);
|
return app.getString(R.string.local_index_items_uploaded, count, total);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -57,19 +63,24 @@ public class UploadGPXFilesTask extends AsyncTask<GpxInfo, String, String> {
|
||||||
}
|
}
|
||||||
b.append(values[i]);
|
b.append(values[i]);
|
||||||
}
|
}
|
||||||
Toast.makeText(la, b.toString(), Toast.LENGTH_LONG).show();
|
app.showToastMessage(b.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPreExecute() {
|
protected void onPreExecute() {
|
||||||
la.setProgressBarIndeterminateVisibility(true);
|
Activity activity = activityRef.get();
|
||||||
|
if (AndroidUtils.isActivityNotDestroyed(activity)) {
|
||||||
|
activity.setProgressBarIndeterminateVisibility(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPostExecute(String result) {
|
protected void onPostExecute(String result) {
|
||||||
la.setProgressBarIndeterminateVisibility(false);
|
Activity activity = activityRef.get();
|
||||||
Toast.makeText(la, result, Toast.LENGTH_LONG).show();
|
if (AndroidUtils.isActivityNotDestroyed(activity)) {
|
||||||
|
activity.setProgressBarIndeterminateVisibility(false);
|
||||||
|
}
|
||||||
|
app.showToastMessage(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -0,0 +1,145 @@
|
||||||
|
package net.osmand.plus.osmedit.dialogs;
|
||||||
|
|
||||||
|
import android.os.AsyncTask;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.text.Editable;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.fragment.app.Fragment;
|
||||||
|
import androidx.fragment.app.FragmentActivity;
|
||||||
|
import androidx.fragment.app.FragmentManager;
|
||||||
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
|
import com.google.android.material.textfield.TextInputEditText;
|
||||||
|
|
||||||
|
import net.osmand.plus.OsmandApplication;
|
||||||
|
import net.osmand.plus.R;
|
||||||
|
import net.osmand.plus.UiUtilities;
|
||||||
|
import net.osmand.plus.UiUtilities.DialogButtonType;
|
||||||
|
import net.osmand.plus.base.MenuBottomSheetDialogFragment;
|
||||||
|
import net.osmand.plus.base.bottomsheetmenu.SimpleBottomSheetItem;
|
||||||
|
import net.osmand.plus.mapcontextmenu.other.HorizontalSelectionAdapter;
|
||||||
|
import net.osmand.plus.mapcontextmenu.other.HorizontalSelectionAdapter.HorizontalSelectionAdapterListener;
|
||||||
|
import net.osmand.plus.mapcontextmenu.other.HorizontalSelectionAdapter.HorizontalSelectionItem;
|
||||||
|
import net.osmand.plus.myplaces.AvailableGPXFragment.GpxInfo;
|
||||||
|
import net.osmand.plus.osmedit.OsmEditingPlugin;
|
||||||
|
import net.osmand.plus.osmedit.OsmEditingPlugin.UploadVisibility;
|
||||||
|
import net.osmand.plus.osmedit.UploadGPXFilesTask;
|
||||||
|
import net.osmand.plus.settings.backend.OsmandSettings;
|
||||||
|
import net.osmand.util.Algorithms;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class SendGpxBottomSheetFragment extends MenuBottomSheetDialogFragment {
|
||||||
|
|
||||||
|
public static final String TAG = SendGpxBottomSheetFragment.class.getSimpleName();
|
||||||
|
|
||||||
|
private GpxInfo[] gpxInfos;
|
||||||
|
private UploadVisibility selectedUploadVisibility = UploadVisibility.PUBLIC;
|
||||||
|
|
||||||
|
private TextInputEditText tagsField;
|
||||||
|
private TextInputEditText messageField;
|
||||||
|
|
||||||
|
public void setGpxInfos(GpxInfo[] gpxInfos) {
|
||||||
|
this.gpxInfos = gpxInfos;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void createMenuItems(Bundle savedInstanceState) {
|
||||||
|
OsmandApplication app = requiredMyApplication();
|
||||||
|
OsmandSettings settings = app.getSettings();
|
||||||
|
|
||||||
|
LayoutInflater themedInflater = UiUtilities.getInflater(app, nightMode);
|
||||||
|
View sendOsmPoiView = themedInflater.inflate(R.layout.send_gpx_fragment, null);
|
||||||
|
|
||||||
|
tagsField = sendOsmPoiView.findViewById(R.id.tags_field);
|
||||||
|
messageField = sendOsmPoiView.findViewById(R.id.message_field);
|
||||||
|
|
||||||
|
TextView accountName = sendOsmPoiView.findViewById(R.id.user_name);
|
||||||
|
if (!Algorithms.isEmpty(settings.USER_DISPLAY_NAME.get())) {
|
||||||
|
accountName.setText(settings.USER_DISPLAY_NAME.get());
|
||||||
|
} else {
|
||||||
|
accountName.setText(settings.USER_NAME.get());
|
||||||
|
}
|
||||||
|
|
||||||
|
String fileName = gpxInfos[0].getFileName();
|
||||||
|
messageField.setText(Algorithms.getFileNameWithoutExtension(fileName));
|
||||||
|
|
||||||
|
final TextView visibilityName = sendOsmPoiView.findViewById(R.id.visibility_name);
|
||||||
|
final TextView visibilityDescription = sendOsmPoiView.findViewById(R.id.visibility_description);
|
||||||
|
visibilityName.setText(selectedUploadVisibility.getTitleId());
|
||||||
|
visibilityDescription.setText(selectedUploadVisibility.getDescriptionId());
|
||||||
|
|
||||||
|
List<HorizontalSelectionItem> itemsVisibility = new ArrayList<>();
|
||||||
|
for (UploadVisibility visibilityType : UploadVisibility.values()) {
|
||||||
|
String title = getString(visibilityType.getTitleId());
|
||||||
|
HorizontalSelectionItem item = new HorizontalSelectionAdapter.HorizontalSelectionItem(title, visibilityType);
|
||||||
|
itemsVisibility.add(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
final HorizontalSelectionAdapter horizontalSelectionAdapter = new HorizontalSelectionAdapter(app, nightMode);
|
||||||
|
horizontalSelectionAdapter.setItems(itemsVisibility);
|
||||||
|
horizontalSelectionAdapter.setSelectedItemByTitle(getString(selectedUploadVisibility.getTitleId()));
|
||||||
|
horizontalSelectionAdapter.setListener(new HorizontalSelectionAdapterListener() {
|
||||||
|
@Override
|
||||||
|
public void onItemSelected(HorizontalSelectionAdapter.HorizontalSelectionItem item) {
|
||||||
|
selectedUploadVisibility = (OsmEditingPlugin.UploadVisibility) item.getObject();
|
||||||
|
visibilityName.setText(selectedUploadVisibility.getTitleId());
|
||||||
|
visibilityDescription.setText(selectedUploadVisibility.getDescriptionId());
|
||||||
|
horizontalSelectionAdapter.notifyDataSetChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
RecyclerView iconCategoriesRecyclerView = sendOsmPoiView.findViewById(R.id.description_view);
|
||||||
|
iconCategoriesRecyclerView.setAdapter(horizontalSelectionAdapter);
|
||||||
|
iconCategoriesRecyclerView.setLayoutManager(new LinearLayoutManager(app, RecyclerView.HORIZONTAL, false));
|
||||||
|
horizontalSelectionAdapter.notifyDataSetChanged();
|
||||||
|
|
||||||
|
SimpleBottomSheetItem titleItem = (SimpleBottomSheetItem) new SimpleBottomSheetItem.Builder()
|
||||||
|
.setCustomView(sendOsmPoiView)
|
||||||
|
.create();
|
||||||
|
items.add(titleItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected DialogButtonType getRightBottomButtonType() {
|
||||||
|
return DialogButtonType.PRIMARY;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getRightBottomButtonTextId() {
|
||||||
|
return R.string.shared_string_upload;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onRightBottomButtonClick() {
|
||||||
|
FragmentActivity activity = getActivity();
|
||||||
|
if (activity != null) {
|
||||||
|
Editable tagsText = tagsField.getText();
|
||||||
|
Editable descrText = messageField.getText();
|
||||||
|
String tags = tagsText != null ? tagsText.toString() : "";
|
||||||
|
String descr = descrText != null ? descrText.toString() : "";
|
||||||
|
|
||||||
|
UploadGPXFilesTask uploadGPXFilesTask = new UploadGPXFilesTask(activity, descr, tags, selectedUploadVisibility);
|
||||||
|
uploadGPXFilesTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, gpxInfos);
|
||||||
|
}
|
||||||
|
dismiss();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void showInstance(@NonNull FragmentManager fragmentManager, @Nullable Fragment targetFragment, GpxInfo[] info) {
|
||||||
|
if (!fragmentManager.isStateSaved()) {
|
||||||
|
SendGpxBottomSheetFragment fragment = new SendGpxBottomSheetFragment();
|
||||||
|
fragment.setTargetFragment(targetFragment, 0);
|
||||||
|
fragment.setGpxInfos(info);
|
||||||
|
fragment.setRetainInstance(true);
|
||||||
|
fragment.show(fragmentManager, TAG);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -27,8 +27,8 @@ import net.osmand.data.FavouritePoint;
|
||||||
import net.osmand.data.LatLon;
|
import net.osmand.data.LatLon;
|
||||||
import net.osmand.data.PointDescription;
|
import net.osmand.data.PointDescription;
|
||||||
import net.osmand.plus.FavouritesDbHelper;
|
import net.osmand.plus.FavouritesDbHelper;
|
||||||
import net.osmand.plus.MapMarkersHelper;
|
import net.osmand.plus.mapmarkers.MapMarkersHelper;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
import net.osmand.plus.mapmarkers.MapMarker;
|
||||||
import net.osmand.plus.OsmAndLocationProvider;
|
import net.osmand.plus.OsmAndLocationProvider;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
|
|
|
@ -51,7 +51,7 @@ import net.osmand.plus.GeocodingLookupService;
|
||||||
import net.osmand.plus.GeocodingLookupService.AddressLookupRequest;
|
import net.osmand.plus.GeocodingLookupService.AddressLookupRequest;
|
||||||
import net.osmand.plus.GeocodingLookupService.OnAddressLookupResult;
|
import net.osmand.plus.GeocodingLookupService.OnAddressLookupResult;
|
||||||
import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile;
|
import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
import net.osmand.plus.mapmarkers.MapMarker;
|
||||||
import net.osmand.plus.OsmAndLocationProvider;
|
import net.osmand.plus.OsmAndLocationProvider;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.settings.backend.OsmandSettings;
|
import net.osmand.plus.settings.backend.OsmandSettings;
|
||||||
|
|
|
@ -14,7 +14,7 @@ import androidx.appcompat.view.ContextThemeWrapper;
|
||||||
|
|
||||||
import net.osmand.AndroidUtils;
|
import net.osmand.AndroidUtils;
|
||||||
import net.osmand.data.LatLon;
|
import net.osmand.data.LatLon;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
import net.osmand.plus.mapmarkers.MapMarker;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.activities.MapActivity;
|
import net.osmand.plus.activities.MapActivity;
|
||||||
import net.osmand.plus.base.MapViewTrackingUtilities;
|
import net.osmand.plus.base.MapViewTrackingUtilities;
|
||||||
|
|
|
@ -16,5 +16,7 @@ public enum ExportSettingsType {
|
||||||
OFFLINE_MAPS,
|
OFFLINE_MAPS,
|
||||||
FAVORITES,
|
FAVORITES,
|
||||||
TTS_VOICE,
|
TTS_VOICE,
|
||||||
VOICE
|
VOICE,
|
||||||
|
ACTIVE_MARKERS,
|
||||||
|
HISTORY_MARKERS
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,10 +16,7 @@ import net.osmand.plus.R;
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.OutputStream;
|
|
||||||
import java.io.OutputStreamWriter;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -69,11 +66,6 @@ public class FavoritesSettingsItem extends CollectionSettingsItem<FavoriteGroup>
|
||||||
return ctx.getString(R.string.shared_string_favorites);
|
return ctx.getString(R.string.shared_string_favorites);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
|
||||||
public String getDefaultFileName() {
|
|
||||||
return getName() + getDefaultFileExtension();
|
|
||||||
}
|
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
public String getDefaultFileExtension() {
|
public String getDefaultFileExtension() {
|
||||||
return GPX_FILE_EXT;
|
return GPX_FILE_EXT;
|
||||||
|
@ -177,21 +169,9 @@ public class FavoritesSettingsItem extends CollectionSettingsItem<FavoriteGroup>
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
SettingsItemWriter<FavoritesSettingsItem> getWriter() {
|
SettingsItemWriter<? extends SettingsItem> getWriter() {
|
||||||
return new SettingsItemWriter<FavoritesSettingsItem>(this) {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean writeToStream(@NonNull OutputStream outputStream) throws IOException {
|
|
||||||
List<FavouritePoint> favourites = getPointsFromGroups(items);
|
List<FavouritePoint> favourites = getPointsFromGroups(items);
|
||||||
GPXFile gpxFile = favoritesHelper.asGpxFile(favourites);
|
GPXFile gpxFile = favoritesHelper.asGpxFile(favourites);
|
||||||
Exception error = GPXUtilities.writeGpx(new OutputStreamWriter(outputStream, "UTF-8"), gpxFile);
|
return getGpxWriter(gpxFile);
|
||||||
if (error != null) {
|
|
||||||
warnings.add(app.getString(R.string.settings_item_write_error, String.valueOf(getType())));
|
|
||||||
SettingsHelper.LOG.error("Failed write to gpx file", error);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,160 @@
|
||||||
|
package net.osmand.plus.settings.backend.backup;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
|
import net.osmand.GPXUtilities;
|
||||||
|
import net.osmand.GPXUtilities.GPXFile;
|
||||||
|
import net.osmand.data.PointDescription;
|
||||||
|
import net.osmand.plus.OsmandApplication;
|
||||||
|
import net.osmand.plus.R;
|
||||||
|
import net.osmand.plus.mapmarkers.MapMarker;
|
||||||
|
import net.osmand.plus.mapmarkers.MapMarkersDbHelper;
|
||||||
|
import net.osmand.plus.mapmarkers.MapMarkersGroup;
|
||||||
|
import net.osmand.plus.mapmarkers.MapMarkersHelper;
|
||||||
|
import net.osmand.plus.settings.backend.ExportSettingsType;
|
||||||
|
import net.osmand.util.Algorithms;
|
||||||
|
|
||||||
|
import org.json.JSONException;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static net.osmand.IndexConstants.GPX_FILE_EXT;
|
||||||
|
|
||||||
|
public class HistoryMarkersSettingsItem extends CollectionSettingsItem<MapMarker> {
|
||||||
|
|
||||||
|
private MapMarkersHelper markersHelper;
|
||||||
|
|
||||||
|
public HistoryMarkersSettingsItem(@NonNull OsmandApplication app, @NonNull List<MapMarker> items) {
|
||||||
|
super(app, null, items);
|
||||||
|
}
|
||||||
|
|
||||||
|
public HistoryMarkersSettingsItem(@NonNull OsmandApplication app, @Nullable HistoryMarkersSettingsItem baseItem, @NonNull List<MapMarker> items) {
|
||||||
|
super(app, baseItem, items);
|
||||||
|
}
|
||||||
|
|
||||||
|
HistoryMarkersSettingsItem(@NonNull OsmandApplication app, @NonNull JSONObject json) throws JSONException {
|
||||||
|
super(app, json);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void init() {
|
||||||
|
super.init();
|
||||||
|
markersHelper = app.getMapMarkersHelper();
|
||||||
|
existingItems = new ArrayList<>(markersHelper.getMapMarkersHistory());
|
||||||
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
public SettingsItemType getType() {
|
||||||
|
return SettingsItemType.HISTORY_MARKERS;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "history_markers";
|
||||||
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
public String getPublicName(@NonNull Context ctx) {
|
||||||
|
return ctx.getString(R.string.markers_history);
|
||||||
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
public String getDefaultFileExtension() {
|
||||||
|
return GPX_FILE_EXT;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void apply() {
|
||||||
|
List<MapMarker> newItems = getNewItems();
|
||||||
|
if (!newItems.isEmpty() || !duplicateItems.isEmpty()) {
|
||||||
|
appliedItems = new ArrayList<>(newItems);
|
||||||
|
|
||||||
|
for (MapMarker duplicate : duplicateItems) {
|
||||||
|
if (shouldReplace) {
|
||||||
|
MapMarker existingMarker = markersHelper.getMapMarker(duplicate.point);
|
||||||
|
markersHelper.removeMarker(existingMarker);
|
||||||
|
}
|
||||||
|
appliedItems.add(shouldReplace ? duplicate : renameItem(duplicate));
|
||||||
|
}
|
||||||
|
|
||||||
|
for (MapMarker marker : appliedItems) {
|
||||||
|
markersHelper.moveMapMarkerToHistory(marker);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isDuplicate(@NonNull MapMarker mapMarker) {
|
||||||
|
for (MapMarker marker : existingItems) {
|
||||||
|
if (marker.equals(mapMarker)
|
||||||
|
&& Algorithms.objectEquals(marker.getOriginalPointDescription(), mapMarker.getOriginalPointDescription())) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldReadOnCollecting() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
public MapMarker renameItem(@NonNull MapMarker item) {
|
||||||
|
int number = 0;
|
||||||
|
while (true) {
|
||||||
|
number++;
|
||||||
|
String name = item.getOnlyName() + "_" + number;
|
||||||
|
PointDescription description = new PointDescription(PointDescription.POINT_TYPE_LOCATION, name);
|
||||||
|
MapMarker renamedMarker = new MapMarker(item.point, description, item.getColor(), item.selected, item.index);
|
||||||
|
if (!isDuplicate(renamedMarker)) {
|
||||||
|
renamedMarker.nextKey = MapMarkersDbHelper.HISTORY_NEXT_VALUE;
|
||||||
|
return renamedMarker;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public MapMarkersGroup getMarkersGroup() {
|
||||||
|
String name = app.getString(R.string.markers_history);
|
||||||
|
String groupId = ExportSettingsType.HISTORY_MARKERS.name();
|
||||||
|
MapMarkersGroup markersGroup = new MapMarkersGroup(groupId, name, MapMarkersGroup.ANY_TYPE);
|
||||||
|
markersGroup.setMarkers(items);
|
||||||
|
return markersGroup;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
SettingsItemReader<HistoryMarkersSettingsItem> getReader() {
|
||||||
|
return new SettingsItemReader<HistoryMarkersSettingsItem>(this) {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void readFromStream(@NonNull InputStream inputStream, String entryName) throws IllegalArgumentException {
|
||||||
|
GPXFile gpxFile = GPXUtilities.loadGPXFile(inputStream);
|
||||||
|
if (gpxFile.error != null) {
|
||||||
|
warnings.add(app.getString(R.string.settings_item_read_error, String.valueOf(getType())));
|
||||||
|
SettingsHelper.LOG.error("Failed read gpx file", gpxFile.error);
|
||||||
|
} else {
|
||||||
|
List<MapMarker> mapMarkers = markersHelper.readMarkersFromGpx(gpxFile, true);
|
||||||
|
items.addAll(mapMarkers);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
SettingsItemWriter<? extends SettingsItem> getWriter() {
|
||||||
|
GPXFile gpxFile = markersHelper.generateGpx(items, true);
|
||||||
|
return getGpxWriter(gpxFile);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,160 @@
|
||||||
|
package net.osmand.plus.settings.backend.backup;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
|
import net.osmand.GPXUtilities;
|
||||||
|
import net.osmand.GPXUtilities.GPXFile;
|
||||||
|
import net.osmand.data.PointDescription;
|
||||||
|
import net.osmand.plus.OsmandApplication;
|
||||||
|
import net.osmand.plus.R;
|
||||||
|
import net.osmand.plus.mapmarkers.MapMarker;
|
||||||
|
import net.osmand.plus.mapmarkers.MapMarkersDbHelper;
|
||||||
|
import net.osmand.plus.mapmarkers.MapMarkersGroup;
|
||||||
|
import net.osmand.plus.mapmarkers.MapMarkersHelper;
|
||||||
|
import net.osmand.plus.settings.backend.ExportSettingsType;
|
||||||
|
import net.osmand.util.Algorithms;
|
||||||
|
|
||||||
|
import org.json.JSONException;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static net.osmand.IndexConstants.GPX_FILE_EXT;
|
||||||
|
|
||||||
|
public class MarkersSettingsItem extends CollectionSettingsItem<MapMarker> {
|
||||||
|
|
||||||
|
private MapMarkersHelper markersHelper;
|
||||||
|
|
||||||
|
public MarkersSettingsItem(@NonNull OsmandApplication app, @NonNull List<MapMarker> items) {
|
||||||
|
super(app, null, items);
|
||||||
|
}
|
||||||
|
|
||||||
|
public MarkersSettingsItem(@NonNull OsmandApplication app, @Nullable MarkersSettingsItem baseItem, @NonNull List<MapMarker> items) {
|
||||||
|
super(app, baseItem, items);
|
||||||
|
}
|
||||||
|
|
||||||
|
MarkersSettingsItem(@NonNull OsmandApplication app, @NonNull JSONObject json) throws JSONException {
|
||||||
|
super(app, json);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void init() {
|
||||||
|
super.init();
|
||||||
|
markersHelper = app.getMapMarkersHelper();
|
||||||
|
existingItems = new ArrayList<>(markersHelper.getMapMarkers());
|
||||||
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
public SettingsItemType getType() {
|
||||||
|
return SettingsItemType.ACTIVE_MARKERS;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "markers";
|
||||||
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
public String getPublicName(@NonNull Context ctx) {
|
||||||
|
return ctx.getString(R.string.map_markers);
|
||||||
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
public String getDefaultFileExtension() {
|
||||||
|
return GPX_FILE_EXT;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void apply() {
|
||||||
|
List<MapMarker> newItems = getNewItems();
|
||||||
|
if (!newItems.isEmpty() || !duplicateItems.isEmpty()) {
|
||||||
|
appliedItems = new ArrayList<>(newItems);
|
||||||
|
|
||||||
|
for (MapMarker duplicate : duplicateItems) {
|
||||||
|
if (shouldReplace) {
|
||||||
|
MapMarker existingMarker = markersHelper.getMapMarker(duplicate.point);
|
||||||
|
markersHelper.removeMarker(existingMarker);
|
||||||
|
}
|
||||||
|
appliedItems.add(shouldReplace ? duplicate : renameItem(duplicate));
|
||||||
|
}
|
||||||
|
|
||||||
|
for (MapMarker marker : appliedItems) {
|
||||||
|
markersHelper.addMarker(marker);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isDuplicate(@NonNull MapMarker mapMarker) {
|
||||||
|
for (MapMarker marker : existingItems) {
|
||||||
|
if (marker.equals(mapMarker)
|
||||||
|
&& Algorithms.objectEquals(marker.getOriginalPointDescription(), mapMarker.getOriginalPointDescription())) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldReadOnCollecting() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
public MapMarker renameItem(@NonNull MapMarker item) {
|
||||||
|
int number = 0;
|
||||||
|
while (true) {
|
||||||
|
number++;
|
||||||
|
String name = item.getOnlyName() + "_" + number;
|
||||||
|
PointDescription description = new PointDescription(PointDescription.POINT_TYPE_LOCATION, name);
|
||||||
|
MapMarker renamedMarker = new MapMarker(item.point, description, item.getColor(), item.selected, item.index);
|
||||||
|
if (!isDuplicate(renamedMarker)) {
|
||||||
|
renamedMarker.nextKey = MapMarkersDbHelper.TAIL_NEXT_VALUE;
|
||||||
|
return renamedMarker;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public MapMarkersGroup getMarkersGroup() {
|
||||||
|
String name = app.getString(R.string.map_markers);
|
||||||
|
String groupId = ExportSettingsType.ACTIVE_MARKERS.name();
|
||||||
|
MapMarkersGroup markersGroup = new MapMarkersGroup(groupId, name, MapMarkersGroup.ANY_TYPE);
|
||||||
|
markersGroup.setMarkers(items);
|
||||||
|
return markersGroup;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
SettingsItemReader<MarkersSettingsItem> getReader() {
|
||||||
|
return new SettingsItemReader<MarkersSettingsItem>(this) {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void readFromStream(@NonNull InputStream inputStream, String entryName) throws IllegalArgumentException {
|
||||||
|
GPXFile gpxFile = GPXUtilities.loadGPXFile(inputStream);
|
||||||
|
if (gpxFile.error != null) {
|
||||||
|
warnings.add(app.getString(R.string.settings_item_read_error, String.valueOf(getType())));
|
||||||
|
SettingsHelper.LOG.error("Failed read gpx file", gpxFile.error);
|
||||||
|
} else {
|
||||||
|
List<MapMarker> mapMarkers = markersHelper.readMarkersFromGpx(gpxFile, false);
|
||||||
|
items.addAll(mapMarkers);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
SettingsItemWriter<? extends SettingsItem> getWriter() {
|
||||||
|
GPXFile gpxFile = markersHelper.generateGpx(items, true);
|
||||||
|
return getGpxWriter(gpxFile);
|
||||||
|
}
|
||||||
|
}
|
|
@ -18,6 +18,7 @@ import net.osmand.map.TileSourceManager.TileSourceTemplate;
|
||||||
import net.osmand.plus.FavouritesDbHelper.FavoriteGroup;
|
import net.osmand.plus.FavouritesDbHelper.FavoriteGroup;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.OsmandPlugin;
|
import net.osmand.plus.OsmandPlugin;
|
||||||
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.SQLiteTileSource;
|
import net.osmand.plus.SQLiteTileSource;
|
||||||
import net.osmand.plus.activities.LocalIndexHelper;
|
import net.osmand.plus.activities.LocalIndexHelper;
|
||||||
import net.osmand.plus.activities.LocalIndexInfo;
|
import net.osmand.plus.activities.LocalIndexInfo;
|
||||||
|
@ -28,6 +29,8 @@ import net.osmand.plus.helpers.AvoidSpecificRoads.AvoidRoadInfo;
|
||||||
import net.osmand.plus.helpers.FileNameTranslationHelper;
|
import net.osmand.plus.helpers.FileNameTranslationHelper;
|
||||||
import net.osmand.plus.helpers.GpxUiHelper;
|
import net.osmand.plus.helpers.GpxUiHelper;
|
||||||
import net.osmand.plus.helpers.GpxUiHelper.GPXInfo;
|
import net.osmand.plus.helpers.GpxUiHelper.GPXInfo;
|
||||||
|
import net.osmand.plus.mapmarkers.MapMarker;
|
||||||
|
import net.osmand.plus.mapmarkers.MapMarkersGroup;
|
||||||
import net.osmand.plus.osmedit.OpenstreetmapPoint;
|
import net.osmand.plus.osmedit.OpenstreetmapPoint;
|
||||||
import net.osmand.plus.osmedit.OsmEditingPlugin;
|
import net.osmand.plus.osmedit.OsmEditingPlugin;
|
||||||
import net.osmand.plus.osmedit.OsmNotesPoint;
|
import net.osmand.plus.osmedit.OsmNotesPoint;
|
||||||
|
@ -594,6 +597,22 @@ public class SettingsHelper {
|
||||||
if (!files.isEmpty()) {
|
if (!files.isEmpty()) {
|
||||||
dataList.put(ExportSettingsType.VOICE, files);
|
dataList.put(ExportSettingsType.VOICE, files);
|
||||||
}
|
}
|
||||||
|
List<MapMarker> mapMarkers = app.getMapMarkersHelper().getMapMarkers();
|
||||||
|
if (!mapMarkers.isEmpty()) {
|
||||||
|
String name = app.getString(R.string.map_markers);
|
||||||
|
String groupId = ExportSettingsType.ACTIVE_MARKERS.name();
|
||||||
|
MapMarkersGroup markersGroup = new MapMarkersGroup(groupId, name, MapMarkersGroup.ANY_TYPE);
|
||||||
|
markersGroup.setMarkers(mapMarkers);
|
||||||
|
dataList.put(ExportSettingsType.ACTIVE_MARKERS, Collections.singletonList(markersGroup));
|
||||||
|
}
|
||||||
|
List<MapMarker> markersHistory = app.getMapMarkersHelper().getMapMarkersHistory();
|
||||||
|
if (!markersHistory.isEmpty()) {
|
||||||
|
String name = app.getString(R.string.shared_string_history);
|
||||||
|
String groupId = ExportSettingsType.HISTORY_MARKERS.name();
|
||||||
|
MapMarkersGroup markersGroup = new MapMarkersGroup(groupId, name, MapMarkersGroup.ANY_TYPE);
|
||||||
|
markersGroup.setMarkers(markersHistory);
|
||||||
|
dataList.put(ExportSettingsType.HISTORY_MARKERS, Collections.singletonList(markersGroup));
|
||||||
|
}
|
||||||
return dataList;
|
return dataList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -633,6 +652,8 @@ public class SettingsHelper {
|
||||||
List<FavoriteGroup> favoriteGroups = new ArrayList<>();
|
List<FavoriteGroup> favoriteGroups = new ArrayList<>();
|
||||||
List<OsmNotesPoint> osmNotesPointList = new ArrayList<>();
|
List<OsmNotesPoint> osmNotesPointList = new ArrayList<>();
|
||||||
List<OpenstreetmapPoint> osmEditsPointList = new ArrayList<>();
|
List<OpenstreetmapPoint> osmEditsPointList = new ArrayList<>();
|
||||||
|
List<MapMarkersGroup> markersGroups = new ArrayList<>();
|
||||||
|
List<MapMarkersGroup> markersHistoryGroups = new ArrayList<>();
|
||||||
|
|
||||||
for (Object object : data) {
|
for (Object object : data) {
|
||||||
if (object instanceof QuickAction) {
|
if (object instanceof QuickAction) {
|
||||||
|
@ -657,6 +678,13 @@ public class SettingsHelper {
|
||||||
osmEditsPointList.add((OpenstreetmapPoint) object);
|
osmEditsPointList.add((OpenstreetmapPoint) object);
|
||||||
} else if (object instanceof FavoriteGroup) {
|
} else if (object instanceof FavoriteGroup) {
|
||||||
favoriteGroups.add((FavoriteGroup) object);
|
favoriteGroups.add((FavoriteGroup) object);
|
||||||
|
} else if (object instanceof MapMarkersGroup) {
|
||||||
|
MapMarkersGroup markersGroup = (MapMarkersGroup) object;
|
||||||
|
if (ExportSettingsType.ACTIVE_MARKERS.name().equals(markersGroup.getId())) {
|
||||||
|
markersGroups.add((MapMarkersGroup) object);
|
||||||
|
} else if (ExportSettingsType.HISTORY_MARKERS.name().equals(markersGroup.getId())) {
|
||||||
|
markersHistoryGroups.add((MapMarkersGroup) object);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!quickActions.isEmpty()) {
|
if (!quickActions.isEmpty()) {
|
||||||
|
@ -688,6 +716,20 @@ public class SettingsHelper {
|
||||||
if (!favoriteGroups.isEmpty()) {
|
if (!favoriteGroups.isEmpty()) {
|
||||||
settingsItems.add(new FavoritesSettingsItem(app, favoriteGroups));
|
settingsItems.add(new FavoritesSettingsItem(app, favoriteGroups));
|
||||||
}
|
}
|
||||||
|
if (!markersGroups.isEmpty()) {
|
||||||
|
List<MapMarker> mapMarkers = new ArrayList<>();
|
||||||
|
for (MapMarkersGroup group : markersGroups) {
|
||||||
|
mapMarkers.addAll(group.getMarkers());
|
||||||
|
}
|
||||||
|
settingsItems.add(new MarkersSettingsItem(app, mapMarkers));
|
||||||
|
}
|
||||||
|
if (!markersHistoryGroups.isEmpty()) {
|
||||||
|
List<MapMarker> mapMarkers = new ArrayList<>();
|
||||||
|
for (MapMarkersGroup group : markersHistoryGroups) {
|
||||||
|
mapMarkers.addAll(group.getMarkers());
|
||||||
|
}
|
||||||
|
settingsItems.add(new HistoryMarkersSettingsItem(app, mapMarkers));
|
||||||
|
}
|
||||||
return settingsItems;
|
return settingsItems;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -709,6 +751,8 @@ public class SettingsHelper {
|
||||||
List<OsmNotesPoint> notesPointList = new ArrayList<>();
|
List<OsmNotesPoint> notesPointList = new ArrayList<>();
|
||||||
List<OpenstreetmapPoint> editsPointList = new ArrayList<>();
|
List<OpenstreetmapPoint> editsPointList = new ArrayList<>();
|
||||||
List<FavoriteGroup> favoriteGroups = new ArrayList<>();
|
List<FavoriteGroup> favoriteGroups = new ArrayList<>();
|
||||||
|
List<MapMarkersGroup> markersGroups = new ArrayList<>();
|
||||||
|
List<MapMarkersGroup> markersHistoryGroups = new ArrayList<>();
|
||||||
|
|
||||||
for (SettingsItem item : settingsItems) {
|
for (SettingsItem item : settingsItems) {
|
||||||
switch (item.getType()) {
|
switch (item.getType()) {
|
||||||
|
@ -788,6 +832,14 @@ public class SettingsHelper {
|
||||||
FavoritesSettingsItem favoritesSettingsItem = (FavoritesSettingsItem) item;
|
FavoritesSettingsItem favoritesSettingsItem = (FavoritesSettingsItem) item;
|
||||||
favoriteGroups.addAll(favoritesSettingsItem.getItems());
|
favoriteGroups.addAll(favoritesSettingsItem.getItems());
|
||||||
break;
|
break;
|
||||||
|
case ACTIVE_MARKERS:
|
||||||
|
MarkersSettingsItem markersSettingsItem = (MarkersSettingsItem) item;
|
||||||
|
markersGroups.add(markersSettingsItem.getMarkersGroup());
|
||||||
|
break;
|
||||||
|
case HISTORY_MARKERS:
|
||||||
|
HistoryMarkersSettingsItem historyMarkersSettingsItem = (HistoryMarkersSettingsItem) item;
|
||||||
|
markersHistoryGroups.add(historyMarkersSettingsItem.getMarkersGroup());
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -841,6 +893,12 @@ public class SettingsHelper {
|
||||||
if (!voiceFilesList.isEmpty()) {
|
if (!voiceFilesList.isEmpty()) {
|
||||||
settingsToOperate.put(ExportSettingsType.VOICE, voiceFilesList);
|
settingsToOperate.put(ExportSettingsType.VOICE, voiceFilesList);
|
||||||
}
|
}
|
||||||
|
if (!markersGroups.isEmpty()) {
|
||||||
|
settingsToOperate.put(ExportSettingsType.ACTIVE_MARKERS, markersGroups);
|
||||||
|
}
|
||||||
|
if (!markersGroups.isEmpty()) {
|
||||||
|
settingsToOperate.put(ExportSettingsType.HISTORY_MARKERS, markersHistoryGroups);
|
||||||
|
}
|
||||||
return settingsToOperate;
|
return settingsToOperate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,10 @@ import android.content.Context;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
|
import net.osmand.GPXUtilities;
|
||||||
|
import net.osmand.GPXUtilities.GPXFile;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
|
import net.osmand.plus.R;
|
||||||
import net.osmand.util.Algorithms;
|
import net.osmand.util.Algorithms;
|
||||||
|
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
|
@ -17,6 +20,7 @@ import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
|
import java.io.OutputStreamWriter;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -205,6 +209,7 @@ public abstract class SettingsItem {
|
||||||
String s = json.toString(2);
|
String s = json.toString(2);
|
||||||
outputStream.write(s.getBytes("UTF-8"));
|
outputStream.write(s.getBytes("UTF-8"));
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
|
warnings.add(app.getString(R.string.settings_item_write_error, String.valueOf(getType())));
|
||||||
SettingsHelper.LOG.error("Failed to write json to stream", e);
|
SettingsHelper.LOG.error("Failed to write json to stream", e);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -214,6 +219,22 @@ public abstract class SettingsItem {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
SettingsItemWriter<? extends SettingsItem> getGpxWriter(@NonNull final GPXFile gpxFile) {
|
||||||
|
return new SettingsItemWriter<SettingsItem>(this) {
|
||||||
|
@Override
|
||||||
|
public boolean writeToStream(@NonNull OutputStream outputStream) throws IOException {
|
||||||
|
Exception error = GPXUtilities.writeGpx(new OutputStreamWriter(outputStream, "UTF-8"), gpxFile);
|
||||||
|
if (error != null) {
|
||||||
|
warnings.add(app.getString(R.string.settings_item_write_error, String.valueOf(getType())));
|
||||||
|
SettingsHelper.LOG.error("Failed write to gpx file", error);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return (getType().name() + getName()).hashCode();
|
return (getType().name() + getName()).hashCode();
|
||||||
|
|
|
@ -15,5 +15,7 @@ public enum SettingsItemType {
|
||||||
DOWNLOADS,
|
DOWNLOADS,
|
||||||
OSM_NOTES,
|
OSM_NOTES,
|
||||||
OSM_EDITS,
|
OSM_EDITS,
|
||||||
FAVOURITES
|
FAVOURITES,
|
||||||
|
ACTIVE_MARKERS,
|
||||||
|
HISTORY_MARKERS
|
||||||
}
|
}
|
|
@ -134,6 +134,12 @@ class SettingsItemsFactory {
|
||||||
case FAVOURITES:
|
case FAVOURITES:
|
||||||
item = new FavoritesSettingsItem(app, json);
|
item = new FavoritesSettingsItem(app, json);
|
||||||
break;
|
break;
|
||||||
|
case ACTIVE_MARKERS:
|
||||||
|
item = new MarkersSettingsItem(app, json);
|
||||||
|
break;
|
||||||
|
case HISTORY_MARKERS:
|
||||||
|
item = new HistoryMarkersSettingsItem(app, json);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,20 +14,21 @@ import net.osmand.IndexConstants;
|
||||||
import net.osmand.PlatformUtil;
|
import net.osmand.PlatformUtil;
|
||||||
import net.osmand.map.ITileSource;
|
import net.osmand.map.ITileSource;
|
||||||
import net.osmand.plus.FavouritesDbHelper.FavoriteGroup;
|
import net.osmand.plus.FavouritesDbHelper.FavoriteGroup;
|
||||||
import net.osmand.plus.audionotes.AudioVideoNotesPlugin;
|
|
||||||
import net.osmand.plus.helpers.FileNameTranslationHelper;
|
|
||||||
import net.osmand.plus.helpers.GpxUiHelper;
|
|
||||||
import net.osmand.plus.settings.backend.ApplicationMode;
|
|
||||||
import net.osmand.plus.settings.backend.ApplicationMode.ApplicationModeBean;
|
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.UiUtilities;
|
import net.osmand.plus.UiUtilities;
|
||||||
|
import net.osmand.plus.audionotes.AudioVideoNotesPlugin;
|
||||||
import net.osmand.plus.helpers.AvoidSpecificRoads.AvoidRoadInfo;
|
import net.osmand.plus.helpers.AvoidSpecificRoads.AvoidRoadInfo;
|
||||||
|
import net.osmand.plus.helpers.FileNameTranslationHelper;
|
||||||
|
import net.osmand.plus.helpers.GpxUiHelper;
|
||||||
|
import net.osmand.plus.mapmarkers.MapMarkersGroup;
|
||||||
import net.osmand.plus.poi.PoiUIFilter;
|
import net.osmand.plus.poi.PoiUIFilter;
|
||||||
import net.osmand.plus.profiles.ProfileIconColors;
|
import net.osmand.plus.profiles.ProfileIconColors;
|
||||||
import net.osmand.plus.profiles.RoutingProfileDataObject.RoutingProfilesResources;
|
import net.osmand.plus.profiles.RoutingProfileDataObject.RoutingProfilesResources;
|
||||||
import net.osmand.plus.quickaction.QuickAction;
|
import net.osmand.plus.quickaction.QuickAction;
|
||||||
import net.osmand.plus.render.RenderingIcons;
|
import net.osmand.plus.render.RenderingIcons;
|
||||||
|
import net.osmand.plus.settings.backend.ApplicationMode;
|
||||||
|
import net.osmand.plus.settings.backend.ApplicationMode.ApplicationModeBean;
|
||||||
import net.osmand.util.Algorithms;
|
import net.osmand.util.Algorithms;
|
||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
|
@ -35,7 +36,7 @@ import org.apache.commons.logging.Log;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static net.osmand.plus.settings.backend.backup.FileSettingsItem.*;
|
import static net.osmand.plus.settings.backend.backup.FileSettingsItem.FileSubtype;
|
||||||
|
|
||||||
public class DuplicatesSettingsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
public class DuplicatesSettingsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
||||||
|
|
||||||
|
@ -155,6 +156,10 @@ public class DuplicatesSettingsAdapter extends RecyclerView.Adapter<RecyclerView
|
||||||
} else if (currentItem instanceof FavoriteGroup) {
|
} else if (currentItem instanceof FavoriteGroup) {
|
||||||
itemHolder.title.setText(((FavoriteGroup) currentItem).getDisplayName(app));
|
itemHolder.title.setText(((FavoriteGroup) currentItem).getDisplayName(app));
|
||||||
itemHolder.icon.setImageDrawable(app.getUIUtilities().getIcon(R.drawable.ic_action_favorite, activeColorRes));
|
itemHolder.icon.setImageDrawable(app.getUIUtilities().getIcon(R.drawable.ic_action_favorite, activeColorRes));
|
||||||
|
} else if (currentItem instanceof MapMarkersGroup) {
|
||||||
|
MapMarkersGroup markersGroup = (MapMarkersGroup) currentItem;
|
||||||
|
itemHolder.title.setText(markersGroup.getName());
|
||||||
|
itemHolder.icon.setImageDrawable(app.getUIUtilities().getIcon(R.drawable.ic_action_flag, activeColorRes));
|
||||||
}
|
}
|
||||||
itemHolder.divider.setVisibility(shouldShowDivider(position) ? View.VISIBLE : View.GONE);
|
itemHolder.divider.setVisibility(shouldShowDivider(position) ? View.VISIBLE : View.GONE);
|
||||||
}
|
}
|
||||||
|
|
|
@ -302,6 +302,14 @@ class ExportImportSettingsAdapter extends OsmandBaseExpandableListAdapter {
|
||||||
title.setText(FileNameTranslationHelper.getFileNameWithRegion(app, file.getName()));
|
title.setText(FileNameTranslationHelper.getFileNameWithRegion(app, file.getName()));
|
||||||
setupIcon(icon, R.drawable.ic_action_volume_up, itemSelected);
|
setupIcon(icon, R.drawable.ic_action_volume_up, itemSelected);
|
||||||
break;
|
break;
|
||||||
|
case ACTIVE_MARKERS:
|
||||||
|
title.setText(R.string.map_markers);
|
||||||
|
setupIcon(icon, R.drawable.ic_action_flag, itemSelected);
|
||||||
|
break;
|
||||||
|
case HISTORY_MARKERS:
|
||||||
|
title.setText(R.string.markers_history);
|
||||||
|
setupIcon(icon, R.drawable.ic_action_flag, itemSelected);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return child;
|
return child;
|
||||||
}
|
}
|
||||||
|
@ -402,6 +410,10 @@ class ExportImportSettingsAdapter extends OsmandBaseExpandableListAdapter {
|
||||||
return R.string.local_indexes_cat_tts;
|
return R.string.local_indexes_cat_tts;
|
||||||
case VOICE:
|
case VOICE:
|
||||||
return R.string.local_indexes_cat_voice;
|
return R.string.local_indexes_cat_voice;
|
||||||
|
case ACTIVE_MARKERS:
|
||||||
|
return R.string.map_markers;
|
||||||
|
case HISTORY_MARKERS:
|
||||||
|
return R.string.markers_history;
|
||||||
default:
|
default:
|
||||||
return R.string.access_empty_list;
|
return R.string.access_empty_list;
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,11 +32,13 @@ import net.osmand.plus.R;
|
||||||
import net.osmand.plus.UiUtilities;
|
import net.osmand.plus.UiUtilities;
|
||||||
import net.osmand.plus.base.BaseOsmAndFragment;
|
import net.osmand.plus.base.BaseOsmAndFragment;
|
||||||
import net.osmand.plus.helpers.AvoidSpecificRoads.AvoidRoadInfo;
|
import net.osmand.plus.helpers.AvoidSpecificRoads.AvoidRoadInfo;
|
||||||
|
import net.osmand.plus.mapmarkers.MapMarkersGroup;
|
||||||
import net.osmand.plus.osmedit.OpenstreetmapPoint;
|
import net.osmand.plus.osmedit.OpenstreetmapPoint;
|
||||||
import net.osmand.plus.osmedit.OsmNotesPoint;
|
import net.osmand.plus.osmedit.OsmNotesPoint;
|
||||||
import net.osmand.plus.poi.PoiUIFilter;
|
import net.osmand.plus.poi.PoiUIFilter;
|
||||||
import net.osmand.plus.quickaction.QuickAction;
|
import net.osmand.plus.quickaction.QuickAction;
|
||||||
import net.osmand.plus.settings.backend.ApplicationMode;
|
import net.osmand.plus.settings.backend.ApplicationMode;
|
||||||
|
import net.osmand.plus.settings.backend.ExportSettingsType;
|
||||||
import net.osmand.plus.settings.backend.backup.SettingsHelper;
|
import net.osmand.plus.settings.backend.backup.SettingsHelper;
|
||||||
import net.osmand.plus.settings.backend.backup.SettingsHelper.ImportAsyncTask;
|
import net.osmand.plus.settings.backend.backup.SettingsHelper.ImportAsyncTask;
|
||||||
import net.osmand.plus.settings.backend.backup.SettingsHelper.ImportType;
|
import net.osmand.plus.settings.backend.backup.SettingsHelper.ImportType;
|
||||||
|
@ -48,7 +50,7 @@ import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static net.osmand.plus.settings.backend.backup.FileSettingsItem.*;
|
import static net.osmand.plus.settings.backend.backup.FileSettingsItem.FileSubtype;
|
||||||
import static net.osmand.plus.settings.fragments.ImportSettingsFragment.IMPORT_SETTINGS_TAG;
|
import static net.osmand.plus.settings.fragments.ImportSettingsFragment.IMPORT_SETTINGS_TAG;
|
||||||
|
|
||||||
|
|
||||||
|
@ -200,6 +202,8 @@ public class ImportDuplicatesFragment extends BaseOsmAndFragment {
|
||||||
List<File> ttsVoiceFilesList = new ArrayList<>();
|
List<File> ttsVoiceFilesList = new ArrayList<>();
|
||||||
List<File> voiceFilesList = new ArrayList<>();
|
List<File> voiceFilesList = new ArrayList<>();
|
||||||
List<File> mapFilesList = new ArrayList<>();
|
List<File> mapFilesList = new ArrayList<>();
|
||||||
|
List<MapMarkersGroup> markersGroups = new ArrayList<>();
|
||||||
|
List<MapMarkersGroup> markersHistoryGroups = new ArrayList<>();
|
||||||
|
|
||||||
for (Object object : duplicatesList) {
|
for (Object object : duplicatesList) {
|
||||||
if (object instanceof ApplicationMode.ApplicationModeBean) {
|
if (object instanceof ApplicationMode.ApplicationModeBean) {
|
||||||
|
@ -236,6 +240,13 @@ public class ImportDuplicatesFragment extends BaseOsmAndFragment {
|
||||||
osmNotesPointList.add((OsmNotesPoint) object);
|
osmNotesPointList.add((OsmNotesPoint) object);
|
||||||
} else if (object instanceof OpenstreetmapPoint) {
|
} else if (object instanceof OpenstreetmapPoint) {
|
||||||
osmEditsPointList.add((OpenstreetmapPoint) object);
|
osmEditsPointList.add((OpenstreetmapPoint) object);
|
||||||
|
} else if (object instanceof MapMarkersGroup) {
|
||||||
|
MapMarkersGroup markersGroup = (MapMarkersGroup) object;
|
||||||
|
if (ExportSettingsType.ACTIVE_MARKERS.name().equals(markersGroup.getId())) {
|
||||||
|
markersGroups.add(markersGroup);
|
||||||
|
} else if (ExportSettingsType.HISTORY_MARKERS.name().equals(markersGroup.getId())) {
|
||||||
|
markersHistoryGroups.add(markersGroup);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!profiles.isEmpty()) {
|
if (!profiles.isEmpty()) {
|
||||||
|
@ -298,6 +309,14 @@ public class ImportDuplicatesFragment extends BaseOsmAndFragment {
|
||||||
duplicates.add(getString(R.string.local_indexes_cat_voice));
|
duplicates.add(getString(R.string.local_indexes_cat_voice));
|
||||||
duplicates.addAll(voiceFilesList);
|
duplicates.addAll(voiceFilesList);
|
||||||
}
|
}
|
||||||
|
if (!markersGroups.isEmpty()) {
|
||||||
|
duplicates.add(getString(R.string.map_markers));
|
||||||
|
duplicates.addAll(markersGroups);
|
||||||
|
}
|
||||||
|
if (!markersHistoryGroups.isEmpty()) {
|
||||||
|
duplicates.add(getString(R.string.markers_history));
|
||||||
|
duplicates.addAll(markersHistoryGroups);
|
||||||
|
}
|
||||||
return duplicates;
|
return duplicates;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -41,25 +41,29 @@ import net.osmand.plus.UiUtilities;
|
||||||
import net.osmand.plus.activities.MapActivity;
|
import net.osmand.plus.activities.MapActivity;
|
||||||
import net.osmand.plus.base.BaseOsmAndFragment;
|
import net.osmand.plus.base.BaseOsmAndFragment;
|
||||||
import net.osmand.plus.helpers.AvoidSpecificRoads.AvoidRoadInfo;
|
import net.osmand.plus.helpers.AvoidSpecificRoads.AvoidRoadInfo;
|
||||||
|
import net.osmand.plus.mapmarkers.MapMarker;
|
||||||
|
import net.osmand.plus.mapmarkers.MapMarkersGroup;
|
||||||
import net.osmand.plus.osmedit.OpenstreetmapPoint;
|
import net.osmand.plus.osmedit.OpenstreetmapPoint;
|
||||||
import net.osmand.plus.osmedit.OsmNotesPoint;
|
import net.osmand.plus.osmedit.OsmNotesPoint;
|
||||||
import net.osmand.plus.poi.PoiUIFilter;
|
import net.osmand.plus.poi.PoiUIFilter;
|
||||||
import net.osmand.plus.quickaction.QuickAction;
|
import net.osmand.plus.quickaction.QuickAction;
|
||||||
import net.osmand.plus.settings.backend.ApplicationMode.ApplicationModeBean;
|
import net.osmand.plus.settings.backend.ApplicationMode.ApplicationModeBean;
|
||||||
import net.osmand.plus.settings.backend.ExportSettingsType;
|
import net.osmand.plus.settings.backend.ExportSettingsType;
|
||||||
|
import net.osmand.plus.settings.backend.backup.AvoidRoadsSettingsItem;
|
||||||
import net.osmand.plus.settings.backend.backup.FavoritesSettingsItem;
|
import net.osmand.plus.settings.backend.backup.FavoritesSettingsItem;
|
||||||
|
import net.osmand.plus.settings.backend.backup.FileSettingsItem;
|
||||||
import net.osmand.plus.settings.backend.backup.GlobalSettingsItem;
|
import net.osmand.plus.settings.backend.backup.GlobalSettingsItem;
|
||||||
|
import net.osmand.plus.settings.backend.backup.HistoryMarkersSettingsItem;
|
||||||
|
import net.osmand.plus.settings.backend.backup.MapSourcesSettingsItem;
|
||||||
|
import net.osmand.plus.settings.backend.backup.MarkersSettingsItem;
|
||||||
import net.osmand.plus.settings.backend.backup.OsmEditsSettingsItem;
|
import net.osmand.plus.settings.backend.backup.OsmEditsSettingsItem;
|
||||||
import net.osmand.plus.settings.backend.backup.OsmNotesSettingsItem;
|
import net.osmand.plus.settings.backend.backup.OsmNotesSettingsItem;
|
||||||
import net.osmand.plus.settings.backend.backup.SettingsHelper;
|
|
||||||
import net.osmand.plus.settings.backend.backup.AvoidRoadsSettingsItem;
|
|
||||||
import net.osmand.plus.settings.backend.backup.FileSettingsItem;
|
|
||||||
import net.osmand.plus.settings.backend.backup.SettingsHelper.ImportAsyncTask;
|
|
||||||
import net.osmand.plus.settings.backend.backup.SettingsHelper.ImportType;
|
|
||||||
import net.osmand.plus.settings.backend.backup.MapSourcesSettingsItem;
|
|
||||||
import net.osmand.plus.settings.backend.backup.PoiUiFiltersSettingsItem;
|
import net.osmand.plus.settings.backend.backup.PoiUiFiltersSettingsItem;
|
||||||
import net.osmand.plus.settings.backend.backup.ProfileSettingsItem;
|
import net.osmand.plus.settings.backend.backup.ProfileSettingsItem;
|
||||||
import net.osmand.plus.settings.backend.backup.QuickActionsSettingsItem;
|
import net.osmand.plus.settings.backend.backup.QuickActionsSettingsItem;
|
||||||
|
import net.osmand.plus.settings.backend.backup.SettingsHelper;
|
||||||
|
import net.osmand.plus.settings.backend.backup.SettingsHelper.ImportAsyncTask;
|
||||||
|
import net.osmand.plus.settings.backend.backup.SettingsHelper.ImportType;
|
||||||
import net.osmand.plus.settings.backend.backup.SettingsItem;
|
import net.osmand.plus.settings.backend.backup.SettingsItem;
|
||||||
import net.osmand.plus.settings.backend.backup.SettingsItemType;
|
import net.osmand.plus.settings.backend.backup.SettingsItemType;
|
||||||
import net.osmand.plus.widgets.TextViewEx;
|
import net.osmand.plus.widgets.TextViewEx;
|
||||||
|
@ -436,6 +440,8 @@ public class ImportSettingsFragment extends BaseOsmAndFragment {
|
||||||
List<OsmNotesPoint> osmNotesPointList = new ArrayList<>();
|
List<OsmNotesPoint> osmNotesPointList = new ArrayList<>();
|
||||||
List<OpenstreetmapPoint> osmEditsPointList = new ArrayList<>();
|
List<OpenstreetmapPoint> osmEditsPointList = new ArrayList<>();
|
||||||
List<FavoriteGroup> favoriteGroups = new ArrayList<>();
|
List<FavoriteGroup> favoriteGroups = new ArrayList<>();
|
||||||
|
List<MapMarkersGroup> markersGroups = new ArrayList<>();
|
||||||
|
List<MapMarkersGroup> markersHistoryGroups = new ArrayList<>();
|
||||||
for (Object object : data) {
|
for (Object object : data) {
|
||||||
if (object instanceof ApplicationModeBean) {
|
if (object instanceof ApplicationModeBean) {
|
||||||
appModeBeans.add((ApplicationModeBean) object);
|
appModeBeans.add((ApplicationModeBean) object);
|
||||||
|
@ -459,6 +465,13 @@ public class ImportSettingsFragment extends BaseOsmAndFragment {
|
||||||
favoriteGroups.add((FavoriteGroup) object);
|
favoriteGroups.add((FavoriteGroup) object);
|
||||||
} else if (object instanceof GlobalSettingsItem) {
|
} else if (object instanceof GlobalSettingsItem) {
|
||||||
settingsItems.add((GlobalSettingsItem) object);
|
settingsItems.add((GlobalSettingsItem) object);
|
||||||
|
} else if (object instanceof MapMarkersGroup) {
|
||||||
|
MapMarkersGroup markersGroup = (MapMarkersGroup) object;
|
||||||
|
if (ExportSettingsType.ACTIVE_MARKERS.name().equals(markersGroup.getId())) {
|
||||||
|
markersGroups.add((MapMarkersGroup) object);
|
||||||
|
} else if (ExportSettingsType.HISTORY_MARKERS.name().equals(markersGroup.getId())) {
|
||||||
|
markersHistoryGroups.add((MapMarkersGroup) object);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!appModeBeans.isEmpty()) {
|
if (!appModeBeans.isEmpty()) {
|
||||||
|
@ -490,6 +503,23 @@ public class ImportSettingsFragment extends BaseOsmAndFragment {
|
||||||
FavoritesSettingsItem baseItem = getBaseItem(SettingsItemType.FAVOURITES, FavoritesSettingsItem.class);
|
FavoritesSettingsItem baseItem = getBaseItem(SettingsItemType.FAVOURITES, FavoritesSettingsItem.class);
|
||||||
settingsItems.add(new FavoritesSettingsItem(app, baseItem, favoriteGroups));
|
settingsItems.add(new FavoritesSettingsItem(app, baseItem, favoriteGroups));
|
||||||
}
|
}
|
||||||
|
if (!markersGroups.isEmpty()) {
|
||||||
|
List<MapMarker> mapMarkers = new ArrayList<>();
|
||||||
|
for (MapMarkersGroup group : markersGroups) {
|
||||||
|
mapMarkers.addAll(group.getMarkers());
|
||||||
|
}
|
||||||
|
MarkersSettingsItem baseItem = getBaseItem(SettingsItemType.ACTIVE_MARKERS, MarkersSettingsItem.class);
|
||||||
|
settingsItems.add(new MarkersSettingsItem(app, baseItem, mapMarkers));
|
||||||
|
}
|
||||||
|
if (!markersHistoryGroups.isEmpty()) {
|
||||||
|
List<MapMarker> mapMarkers = new ArrayList<>();
|
||||||
|
for (MapMarkersGroup group : markersHistoryGroups) {
|
||||||
|
mapMarkers.addAll(group.getMarkers());
|
||||||
|
}
|
||||||
|
HistoryMarkersSettingsItem baseItem = getBaseItem(SettingsItemType.HISTORY_MARKERS, HistoryMarkersSettingsItem.class);
|
||||||
|
settingsItems.add(new HistoryMarkersSettingsItem(app, baseItem, mapMarkers));
|
||||||
|
}
|
||||||
|
|
||||||
return settingsItems;
|
return settingsItems;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -142,6 +142,14 @@ public class ImportedSettingsItemsAdapter extends
|
||||||
holder.icon.setImageDrawable(uiUtils.getIcon(R.drawable.ic_action_settings, activeColorRes));
|
holder.icon.setImageDrawable(uiUtils.getIcon(R.drawable.ic_action_settings, activeColorRes));
|
||||||
holder.title.setText(R.string.general_settings_2);
|
holder.title.setText(R.string.general_settings_2);
|
||||||
break;
|
break;
|
||||||
|
case ACTIVE_MARKERS:
|
||||||
|
holder.icon.setImageDrawable(uiUtils.getIcon(R.drawable.ic_action_flag, activeColorRes));
|
||||||
|
holder.title.setText(R.string.map_markers);
|
||||||
|
break;
|
||||||
|
case HISTORY_MARKERS:
|
||||||
|
holder.icon.setImageDrawable(uiUtils.getIcon(R.drawable.ic_action_flag, activeColorRes));
|
||||||
|
holder.title.setText(R.string.markers_history);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,8 @@ import net.osmand.data.QuadTree;
|
||||||
import net.osmand.data.RotatedTileBox;
|
import net.osmand.data.RotatedTileBox;
|
||||||
import net.osmand.plus.FavouritesDbHelper;
|
import net.osmand.plus.FavouritesDbHelper;
|
||||||
import net.osmand.plus.FavouritesDbHelper.FavoriteGroup;
|
import net.osmand.plus.FavouritesDbHelper.FavoriteGroup;
|
||||||
import net.osmand.plus.MapMarkersHelper;
|
import net.osmand.plus.mapmarkers.MapMarkersHelper;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
import net.osmand.plus.mapmarkers.MapMarker;
|
||||||
import net.osmand.plus.settings.backend.OsmandSettings;
|
import net.osmand.plus.settings.backend.OsmandSettings;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.base.PointImageDrawable;
|
import net.osmand.plus.base.PointImageDrawable;
|
||||||
|
|
|
@ -37,9 +37,9 @@ import net.osmand.plus.GpxSelectionHelper;
|
||||||
import net.osmand.plus.GpxSelectionHelper.GpxDisplayGroup;
|
import net.osmand.plus.GpxSelectionHelper.GpxDisplayGroup;
|
||||||
import net.osmand.plus.GpxSelectionHelper.GpxDisplayItem;
|
import net.osmand.plus.GpxSelectionHelper.GpxDisplayItem;
|
||||||
import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile;
|
import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile;
|
||||||
import net.osmand.plus.MapMarkersHelper;
|
import net.osmand.plus.mapmarkers.MapMarkersHelper;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
import net.osmand.plus.mapmarkers.MapMarker;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarkersGroup;
|
import net.osmand.plus.mapmarkers.MapMarkersGroup;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.UiUtilities;
|
import net.osmand.plus.UiUtilities;
|
||||||
|
|
|
@ -31,8 +31,8 @@ import net.osmand.data.LatLon;
|
||||||
import net.osmand.data.PointDescription;
|
import net.osmand.data.PointDescription;
|
||||||
import net.osmand.data.QuadPoint;
|
import net.osmand.data.QuadPoint;
|
||||||
import net.osmand.data.RotatedTileBox;
|
import net.osmand.data.RotatedTileBox;
|
||||||
import net.osmand.plus.MapMarkersHelper;
|
import net.osmand.plus.mapmarkers.MapMarkersHelper;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
import net.osmand.plus.mapmarkers.MapMarker;
|
||||||
import net.osmand.plus.OsmAndConstants;
|
import net.osmand.plus.OsmAndConstants;
|
||||||
import net.osmand.plus.OsmAndFormatter;
|
import net.osmand.plus.OsmAndFormatter;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
|
|
|
@ -9,8 +9,8 @@ import net.osmand.Location;
|
||||||
import net.osmand.data.LatLon;
|
import net.osmand.data.LatLon;
|
||||||
import net.osmand.data.PointDescription;
|
import net.osmand.data.PointDescription;
|
||||||
import net.osmand.plus.UiUtilities;
|
import net.osmand.plus.UiUtilities;
|
||||||
import net.osmand.plus.MapMarkersHelper;
|
import net.osmand.plus.mapmarkers.MapMarkersHelper;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
import net.osmand.plus.mapmarkers.MapMarker;
|
||||||
import net.osmand.plus.OsmAndFormatter;
|
import net.osmand.plus.OsmAndFormatter;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.activities.MapActivity;
|
import net.osmand.plus.activities.MapActivity;
|
||||||
|
|
|
@ -12,7 +12,7 @@ import android.view.View;
|
||||||
import net.osmand.Location;
|
import net.osmand.Location;
|
||||||
import net.osmand.binary.RouteDataObject;
|
import net.osmand.binary.RouteDataObject;
|
||||||
import net.osmand.data.LatLon;
|
import net.osmand.data.LatLon;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
import net.osmand.plus.mapmarkers.MapMarker;
|
||||||
import net.osmand.plus.OsmAndFormatter;
|
import net.osmand.plus.OsmAndFormatter;
|
||||||
import net.osmand.plus.OsmAndLocationProvider;
|
import net.osmand.plus.OsmAndLocationProvider;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
|
|
Loading…
Reference in a new issue