Merge branch 'master' of github.com:osmandapp/Osmand
This commit is contained in:
commit
bf35f55072
60 changed files with 613 additions and 438 deletions
|
@ -764,6 +764,7 @@ public class CommonWords {
|
|||
addFrequentlyUsed("martiri");
|
||||
addFrequentlyUsed("verdi");
|
||||
addFrequentlyUsed("augusta");
|
||||
addFrequentlyUsed("neuburger");
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -63,9 +63,9 @@ public class GeneralRouter implements VehicleRouter {
|
|||
|
||||
// cached values
|
||||
private boolean restrictionsAware = true;
|
||||
private float leftTurn;
|
||||
private float sharpTurn;
|
||||
private float roundaboutTurn;
|
||||
private float rightTurn;
|
||||
private float slightTurn;
|
||||
// speed in m/s
|
||||
private float minSpeed = 0.28f;
|
||||
// speed in m/s
|
||||
|
@ -220,19 +220,19 @@ public class GeneralRouter implements VehicleRouter {
|
|||
|
||||
public void addAttribute(String k, String v) {
|
||||
attributes.put(k, v);
|
||||
if(k.equals("restrictionsAware")) {
|
||||
if (k.equals("restrictionsAware")) {
|
||||
restrictionsAware = parseSilentBoolean(v, restrictionsAware);
|
||||
} else if(k.equals("leftTurn")) {
|
||||
leftTurn = parseSilentFloat(v, leftTurn);
|
||||
} else if(k.equals("rightTurn")) {
|
||||
rightTurn = parseSilentFloat(v, rightTurn);
|
||||
} else if(k.equals("roundaboutTurn")) {
|
||||
} else if (k.equals("sharpTurn") || k.equals("leftTurn")) {
|
||||
sharpTurn = parseSilentFloat(v, sharpTurn);
|
||||
} else if (k.equals("slightTurn") || k.equals("rightTurn")) {
|
||||
slightTurn = parseSilentFloat(v, slightTurn);
|
||||
} else if (k.equals("roundaboutTurn")) {
|
||||
roundaboutTurn = parseSilentFloat(v, roundaboutTurn);
|
||||
} else if(k.equals("minDefaultSpeed") || k.equals("defaultSpeed")) {
|
||||
} else if (k.equals("minDefaultSpeed") || k.equals("defaultSpeed")) {
|
||||
defaultSpeed = parseSilentFloat(v, defaultSpeed * 3.6f) / 3.6f;
|
||||
} else if( k.equals("minSpeed")) {
|
||||
} else if (k.equals("minSpeed")) {
|
||||
minSpeed = parseSilentFloat(v, minSpeed * 3.6f) / 3.6f;
|
||||
} else if(k.equals("maxDefaultSpeed") || k.equals("maxSpeed")) {
|
||||
} else if (k.equals("maxDefaultSpeed") || k.equals("maxSpeed")) {
|
||||
maxSpeed = parseSilentFloat(v, maxSpeed * 3.6f) / 3.6f;
|
||||
}
|
||||
}
|
||||
|
@ -605,11 +605,11 @@ public class GeneralRouter implements VehicleRouter {
|
|||
}
|
||||
|
||||
public double getLeftTurn() {
|
||||
return leftTurn;
|
||||
return sharpTurn;
|
||||
}
|
||||
|
||||
public double getRightTurn() {
|
||||
return rightTurn;
|
||||
return slightTurn;
|
||||
}
|
||||
|
||||
public double getRoundaboutTurn() {
|
||||
|
@ -620,9 +620,13 @@ public class GeneralRouter implements VehicleRouter {
|
|||
public double calculateTurnTime(RouteSegment segment, int segmentEnd, RouteSegment prev, int prevSegmentEnd) {
|
||||
float ts = getPenaltyTransition(segment.getRoad());
|
||||
float prevTs = getPenaltyTransition(prev.getRoad());
|
||||
if(prevTs != ts) {
|
||||
return Math.abs(ts - prevTs) / 2;
|
||||
|
||||
float totalPenalty = 0;
|
||||
|
||||
if (prevTs != ts) {
|
||||
totalPenalty += Math.abs(ts - prevTs) / 2;
|
||||
}
|
||||
|
||||
// int[] pt = prev.getRoad().getPointTypes(prevSegmentEnd);
|
||||
// if(pt != null) {
|
||||
// RouteRegion reg = prev.getRoad().region;
|
||||
|
@ -635,26 +639,25 @@ public class GeneralRouter implements VehicleRouter {
|
|||
// }
|
||||
// }
|
||||
|
||||
|
||||
if(segment.getRoad().roundabout() && !prev.getRoad().roundabout()) {
|
||||
double rt = getRoundaboutTurn();
|
||||
if(rt > 0) {
|
||||
return rt;
|
||||
totalPenalty += rt;
|
||||
}
|
||||
}
|
||||
if (getLeftTurn() > 0 || getRightTurn() > 0) {
|
||||
double a1 = segment.getRoad().directionRoute(segment.getSegmentStart(), segment.getSegmentStart() < segmentEnd);
|
||||
} else if (getLeftTurn() > 0 || getRightTurn() > 0) {
|
||||
double a1 = segment.getRoad().directionRoute(segment.getSegmentStart(),
|
||||
segment.getSegmentStart() < segmentEnd);
|
||||
double a2 = prev.getRoad().directionRoute(prevSegmentEnd, prevSegmentEnd < prev.getSegmentStart());
|
||||
double diff = Math.abs(MapUtils.alignAngleDifference(a1 - a2 - Math.PI));
|
||||
// more like UT
|
||||
if (diff > 2 * Math.PI / 3) {
|
||||
return getLeftTurn();
|
||||
totalPenalty += getLeftTurn();
|
||||
} else if (diff > Math.PI / 3) {
|
||||
return getRightTurn();
|
||||
totalPenalty += getRightTurn();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
return 0;
|
||||
|
||||
return totalPenalty;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -65,7 +65,6 @@
|
|||
<meta-data android:name="com.sec.minimode.icon.landscape.normal" android:resource="@mipmap/icon" android:value="" />
|
||||
<activity android:name="net.osmand.plus.activities.HelpActivity" />
|
||||
<activity android:name="net.osmand.plus.activities.ExitActivity" />
|
||||
<activity android:name="net.osmand.plus.openplacereviews.OPRWebviewActivity" android:theme="@style/Theme.AppCompat.NoActionBar" />
|
||||
|
||||
<provider
|
||||
android:name="androidx.core.content.FileProvider"
|
||||
|
@ -475,6 +474,15 @@
|
|||
<data android:scheme="osmand-oauth" />
|
||||
</intent-filter>
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
|
||||
<data android:scheme="opr-oauth" />
|
||||
</intent-filter>
|
||||
|
||||
</activity>
|
||||
|
||||
<receiver android:name="net.osmand.plus.audionotes.MediaRemoteControlReceiver">
|
||||
|
|
|
@ -1,31 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:orientation="vertical"
|
||||
android:background="?attr/bg_color"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:background="?attr/bg_color"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/toolbar_height">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/toolbar_text"
|
||||
android:textSize="@dimen/dialog_header_text_size"
|
||||
android:textColor="?android:textColorPrimary"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
</androidx.appcompat.widget.Toolbar>
|
||||
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
<WebView
|
||||
android:id="@+id/printDialogWebview"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"/>
|
||||
</LinearLayout>
|
|
@ -2374,7 +2374,7 @@
|
|||
<string name="poi_street_cabinet_postal_service">نوع الكبينة/الخزانة: خدمة بريدية</string>
|
||||
<string name="poi_street_cabinet_gas">نوع الكبينة/الخزانة: غاز</string>
|
||||
<string name="poi_street_cabinet_telecom">نوع الكبينة/الخزانة: اتصالات</string>
|
||||
<string name="poi_street_cabinet_power">نوع الكبينة/الخزانة: طاقة</string>
|
||||
<string name="poi_street_cabinet_power">نوع الكبينة/الخزانة: كهرباء</string>
|
||||
<string name="poi_in_service_yes">في الخدمة: نعم</string>
|
||||
<string name="poi_fire_hydrant_style_water_source_cistern">صهريج</string>
|
||||
<string name="poi_water_source_stream">مجرى</string>
|
||||
|
@ -2510,7 +2510,7 @@
|
|||
<string name="poi_site_type_petroglyph">بتروجليف</string>
|
||||
<string name="poi_site_type_necropolis">مقبرة كبيرة قديمة</string>
|
||||
<string name="poi_site_type_hut_circle">دائرة الكوخ</string>
|
||||
<string name="poi_site_type_settlement">مستعمرة</string>
|
||||
<string name="poi_site_type_settlement">مستوطنة/هجرة</string>
|
||||
<string name="poi_site_type_fortification">حصن</string>
|
||||
<string name="poi_site_type_tumulus">تومولوس</string>
|
||||
<string name="poi_site_type_megalith">المغليث حجر ضخم</string>
|
||||
|
@ -3672,4 +3672,8 @@
|
|||
<string name="poi_lifeguard_base">منصة الانقاذ</string>
|
||||
<string name="poi_siren">صفارت إنذار</string>
|
||||
<string name="poi_community_gender_mixed">نوع المجتمع: مختلط</string>
|
||||
<string name="poi_lavoir">مكان لغسل الملابس يدويا</string>
|
||||
<string name="poi_waste_transfer_station">محطة نقل نفايات</string>
|
||||
<string name="poi_weightbridge">ميزان المركبات</string>
|
||||
<string name="poi_ranger_station">مكتب الحارس</string>
|
||||
</resources>
|
|
@ -4006,4 +4006,12 @@
|
|||
<string name="profile_type_osmand_string">ملف تعريف أوسماند</string>
|
||||
<string name="profile_type_user_string">ملف تعريف المستخدم</string>
|
||||
<string name="reverse_all_points">عكس جميع النقاط</string>
|
||||
<string name="profile_by_default_description">حدد ملف التعريف، الذي سيتم استخدامه في بدء التطبيق.</string>
|
||||
<string name="shared_string_last_used">آخر استخدام</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_description">تفضيل طرق التنزه</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_name">تفضيل طرق التنزه</string>
|
||||
<string name="routing_attr_allow_streams_description">السماح بالتيارات والمصارف</string>
|
||||
<string name="routing_attr_allow_streams_name">السماح بالتيارات والمصارف</string>
|
||||
<string name="routing_attr_allow_intermittent_description">السماح بالممرات المائية المتقطعة</string>
|
||||
<string name="routing_attr_allow_intermittent_name">السماح بالممرات المائية المتقطعة</string>
|
||||
</resources>
|
|
@ -272,7 +272,7 @@
|
|||
<string name="overlay_transparency">Průhlednost překryvu</string>
|
||||
<string name="map_transparency_descr">Upravit průhlednost základní mapy.</string>
|
||||
<string name="map_transparency">Průhlednost základní mapy</string>
|
||||
<string name="modify_transparency">Upravit průhlednost</string>
|
||||
<string name="modify_transparency">Nastavte průhlednost (0 - průhledný, 255 - neprůhledný)</string>
|
||||
<string name="layer_underlay">Podkladová mapa…</string>
|
||||
<string name="map_underlay">Podkresová mapa</string>
|
||||
<string name="map_underlay_descr">Vyberte podkladovou mapu.</string>
|
||||
|
@ -350,7 +350,7 @@
|
|||
<string name="download_type_to_filter">vyhledat</string>
|
||||
<string name="use_high_res_maps">Vysoké rozlišení</string>
|
||||
<string name="use_high_res_maps_descr">Použít mapu s vysokým rozlišením pro jemné displeje.</string>
|
||||
<string name="unknown_location">Pozice ještě není známa</string>
|
||||
<string name="unknown_location">Pozice ještě není známa.</string>
|
||||
<string name="context_menu_item_search_transport">Hledat veřejnou dopravu</string>
|
||||
<string name="transport_searching_transport">Hledání dopravy (žádný cíl):</string>
|
||||
<string name="transport_searching_route">Hledání dopravy (cíl vzdálen {0}):</string>
|
||||
|
@ -642,14 +642,14 @@
|
|||
<string name="offline_navigation_not_available">Off-line navigace OsmAnd je dočasně nedostupná.</string>
|
||||
<string name="left_side_navigation">Levostranný provoz</string>
|
||||
<string name="left_side_navigation_descr">Pro země, kde se jezdí po levé straně cesty.</string>
|
||||
<string name="unknown_from_location">Startovní bod navigace není ještě zvolen</string>
|
||||
<string name="confirm_interrupt_download">Přerušit stahování souboru\?</string>
|
||||
<string name="unknown_from_location">Výchozí bod navigace ještě nebyl zjištěn.</string>
|
||||
<string name="confirm_interrupt_download">Zrušit stahování\?</string>
|
||||
<string name="basemap_was_selected_to_download">Základní mapa byla vybrána ke stažení. Je potřeba pro správnou funkci aplikace.</string>
|
||||
<string name="map_online_plugin_is_not_installed">Pro výběr různých zdrojů map povolte modul \'Online mapy\'</string>
|
||||
<string name="map_online_data">On-line mapy a dlaždice</string>
|
||||
<string name="map_online_data_descr">Používat on-line mapy (ukládat dlaždice do mezipaměti na paměťové kartě).</string>
|
||||
<string name="shared_string_online_maps">On-line mapy</string>
|
||||
<string name="online_map_settings_descr">Nastavení rastrových překryvných nebo podkresových map.</string>
|
||||
<string name="online_map_settings_descr">Zvolit online nebo uložené dlaždicové mapové zdroje.</string>
|
||||
<string name="osmand_rastermaps_plugin_description">Získejte přístup k mnoha druhům on-line map (tzv. dlaždicové nebo rastrové mapy), od předdefinovaných OpenStreetMap dlaždic (jako Mapnik) až po satelitní snímky a speciální vrstvy jako mapy počasí, klimatické mapy, geologické mapy, stínované svahy, atd.
|
||||
\n
|
||||
\n Všechny tyto mapy mohou být použity jako hlavní (základní) mapa na obrazovce OsmAnd nebo jako překryvná popř. podkladová mapa k jiné základní mapě (např. standardní OsmAnd off-line mapě). Pro zlepšení viditelnosti podkladových map je možné vypnout některé objekty z vektorových map OsmAnd, přes menu \'Nastavení mapy\'.
|
||||
|
@ -663,7 +663,7 @@
|
|||
<string name="prefs_plugins">Moduly</string>
|
||||
<string name="osm_editing_plugin_description">Po zadání svých přihlašovacích údajů můžete přispívat do OSM - například vytvářením nebo úpravami bodů zájmu, otevíráním nebo komentováním OSM poznámek a přidáváním zaznamenanými GPX soubory. OSM je celosvětový komunitní projekt mapování.</string>
|
||||
<string name="vector_maps_may_display_faster_on_some_devices">Akcelerace vykreslování pomocí \'Android native\' knihovny. Vektorové mapy se zpravidla vykreslují rychleji, pokud je tato možnost zaškrtnuta. Avšak na některých zařízeních tato funkce nemusí fungovat.</string>
|
||||
<string name="play_commands_of_currently_selected_voice">Přehrát hlasové pokyny zvoleným hlasem</string>
|
||||
<string name="play_commands_of_currently_selected_voice">Zvolte hlas a otestujte ho přehráním oznámení:</string>
|
||||
<string name="debugging_and_development">Vývoj a ladění OsmAnd</string>
|
||||
<string name="native_rendering">Akcelerace vykreslování</string>
|
||||
<string name="test_voice_prompts">Test hlasových pokynů</string>
|
||||
|
@ -1919,7 +1919,7 @@ Délka %2$s</string>
|
|||
<string name="rendering_attr_showMtbRoutes_name">Zobrazit trasy pro horská kola</string>
|
||||
<string name="storage_permission_restart_is_required">Aplikace nyní smí zapisovat na externí úložiště, ale je potřeba její restart.</string>
|
||||
<string name="file_name_containes_illegal_char">Název souboru obsahuje nepovolené znaky</string>
|
||||
<string name="access_no_destination">Cíl není nastaven</string>
|
||||
<string name="access_no_destination">Modul usnadnění: Cíl není nastaven</string>
|
||||
<string name="map_widget_magnetic_bearing">Magnetické směrování</string>
|
||||
<string name="map_widget_bearing">Relativní směrování</string>
|
||||
<string name="access_disable_offroute_recalc">Nepřepočítávat trasu, pokud se od ní odchýlíte</string>
|
||||
|
@ -2701,7 +2701,7 @@ Zobrazená oblast: %1$s x %2$s</string>
|
|||
<string name="shared_string_explore">Prozkoumat</string>
|
||||
<string name="shared_string_contents">Obsah</string>
|
||||
<string name="index_item_world_wikivoyage">Celosvětové články Wikivoyage</string>
|
||||
<string name="contour_lines_hillshade_maps">Vrstevnice & stínování terénu</string>
|
||||
<string name="contour_lines_hillshade_maps">Vrstevnice & stínování svahů</string>
|
||||
<string name="shared_string_restart">Restartovat aplikaci</string>
|
||||
<string name="show_images">Zobrazit obrázky</string>
|
||||
<string name="purchase_cancelled_dialog_descr">Obnovte předplatné, abyste nadále mohli využívat všechny funkce:</string>
|
||||
|
@ -3299,7 +3299,7 @@ Zobrazená oblast: %1$s x %2$s</string>
|
|||
<string name="hillshade_description">Stínované svahy používají tmavé odstíny pro vyjádření svahů, vrcholů a nížin.</string>
|
||||
<string name="slope_description">Svahy využívají barvy k vizualizaci strmosti terénu.</string>
|
||||
<string name="terrain_slider_description">Nastavte minimální a maximální úroveň přiblížení, při které bude vrstva zobrazená.</string>
|
||||
<string name="hillshade_download_description">Pro zobrazení stínování kopců jsou potřeba další mapy.</string>
|
||||
<string name="hillshade_download_description">Pro zobrazení stínování svahů jsou potřeba další mapy.</string>
|
||||
<string name="slope_download_description">Pro zobrazení svahů jsou potřeba další mapy.</string>
|
||||
<string name="slope_read_more">O svazích si můžete přečíst více na %1$s.</string>
|
||||
<string name="shared_string_transparency">Průhlednost</string>
|
||||
|
@ -3499,9 +3499,9 @@ Zobrazená oblast: %1$s x %2$s</string>
|
|||
<string name="plan_route_select_track_file_for_open">Vyberte stopu k otevření.</string>
|
||||
<string name="shared_string_done">Hotovo</string>
|
||||
<string name="please_provide_point_name_error">Zadejte prosím název bodu</string>
|
||||
<string name="quick_action_remove_next_destination_descr">Současný cílový bod na trase bude smazán. Jestliže to je poslední cíl, navigace se zastaví.</string>
|
||||
<string name="quick_action_remove_next_destination_descr">Vymaže následující cíl na trase. Jestliže to je poslední cíl, navigace se zastaví.</string>
|
||||
<string name="search_download_wikipedia_maps">Stáhnout Wikipedia mapy</string>
|
||||
<string name="plugin_wikipedia_description">Získejte informace o zájmových bodech z Wikipedie. Je to váš offline kapesní průvodce - zapněte modul Wikipedia a užívejte si články o objektech okolo vás.</string>
|
||||
<string name="plugin_wikipedia_description">Získejte informace o zájmových bodech z Wikipedie, offline kapesního průvodce obsahujícího články o místech a destinacích.</string>
|
||||
<string name="add_hidden_group_info">Přidaný bod nebude na mapě vidět, protože vybraná skupina je skrytá. Můžete jej najít v \"%s\".</string>
|
||||
<string name="app_mode_enduro_motorcycle">Enduro motorka</string>
|
||||
<string name="app_mode_motor_scooter">Motorový skútr</string>
|
||||
|
@ -3549,7 +3549,7 @@ Zobrazená oblast: %1$s x %2$s</string>
|
|||
<string name="navigation_profile">Navigační profil</string>
|
||||
<string name="route_between_points_add_track_desc">Vyberte soubor stopy, do níž se nový úsek přidá.</string>
|
||||
<string name="street_level_imagery">Snímky z úrovně ulice</string>
|
||||
<string name="plan_route_exit_dialog_descr">Opravdu chcete zavřít plánovanou trasu a zahodit tak všechny změny\?</string>
|
||||
<string name="plan_route_exit_dialog_descr">Opravdu chcete zahodit všechny změny v plánované trase\?</string>
|
||||
<string name="in_case_of_reverse_direction">V případě opačného směru</string>
|
||||
<string name="shared_string_save_as_gpx">Uložit jako nový soubor stopy</string>
|
||||
<string name="add_segment_to_the_track">Přidat do souboru stopy</string>
|
||||
|
@ -3564,7 +3564,7 @@ Zobrazená oblast: %1$s x %2$s</string>
|
|||
<string name="shared_string_file_name">Název souboru</string>
|
||||
<string name="number_of_gpx_files_selected_pattern">%s vybraných souborů stop</string>
|
||||
<string name="monitoring_control_start">REC</string>
|
||||
<string name="disable_recording_once_app_killed_descrp">Pozastaví záznam trasy, pokud je aplikace ukončena (přes nedávné aplikace). (Ikona režimu na pozadí zmizí z notifikační oblasti Androidu.)</string>
|
||||
<string name="disable_recording_once_app_killed_descrp">Záznam trasy bude pozastaven, když je aplikace ukončena (přes nedávné aplikace). (Ikona režimu na pozadí zmizí z notifikační oblasti Androidu.)</string>
|
||||
<string name="gpx_monitoring_stop">Pozastavit záznam trasy</string>
|
||||
<string name="gpx_monitoring_start">Pokračovat v záznamu trasy</string>
|
||||
<string name="system_default_theme">Výchozí</string>
|
||||
|
@ -3744,7 +3744,7 @@ Zobrazená oblast: %1$s x %2$s</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">Přidejte 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. Klepněte na tlačítko pro přechod do nastavení předplatného v Google Play a opravte způsob platby.</string>
|
||||
<string name="subscription_payment_issue_title">Pro opravu vašeho předplatného klepněte na tlačítko pro nastavení způsobu platby v Google Play.</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>
|
||||
|
@ -3914,7 +3914,7 @@ Zobrazená oblast: %1$s x %2$s</string>
|
|||
<string name="login_open_street_map">Přihlásit se do OpenStreetMap</string>
|
||||
<string name="login_open_street_map_org">Přihlásit se do OpenStreetMap.org</string>
|
||||
<string name="sign_in_with_open_street_map">Zaregistrovat se do OpenStreetMap</string>
|
||||
<string name="osm_edits_view_descr">Můžete zobrazit své dosud neodeslané změny či chyby v OSM v %1$s. Odeslané body se již v OsmAnd nezobrazují.</string>
|
||||
<string name="osm_edits_view_descr">Zobrazte své dosud neodeslané změny či chyby v OSM v %1$s. Odeslané změny se již v OsmAnd nezobrazují.</string>
|
||||
<string name="open_street_map_login_mode">Abyste mohli odesílat nová nebo změněná data, musíte se přihlásit.
|
||||
\n
|
||||
\nPřihlásit se můžete pomocí bezpečné metody OAuth nebo jménem a heslem.</string>
|
||||
|
@ -4003,4 +4003,15 @@ Zobrazená oblast: %1$s x %2$s</string>
|
|||
\n• Podpora pro vlastní barvy u oblíbených bodů a mezicílů trasy
|
||||
\n
|
||||
\n</string>
|
||||
<string name="profile_type_osmand_string">Profil OsmAnd</string>
|
||||
<string name="profile_type_user_string">Uživatelský profil</string>
|
||||
<string name="reverse_all_points">Otočit všechny body</string>
|
||||
<string name="profile_by_default_description">Vyberte profil, který bude použitý při startu aplikace.</string>
|
||||
<string name="shared_string_last_used">Naposledy použito</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_description">Upřednostňovat turistické trasy</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_name">Upřednostňovat turistické trasy</string>
|
||||
<string name="routing_attr_allow_streams_description">Povolit říčky a stoky</string>
|
||||
<string name="routing_attr_allow_streams_name">Povolit říčky a stoky</string>
|
||||
<string name="routing_attr_allow_intermittent_description">Povolit občasné vodní cesty</string>
|
||||
<string name="routing_attr_allow_intermittent_name">Povolit občasné vodní cesty</string>
|
||||
</resources>
|
|
@ -3832,7 +3832,7 @@
|
|||
<string name="poi_traffic_signals_vibration_no">kein Vibrieren</string>
|
||||
<string name="poi_traffic_signals_arrow">Pfeil</string>
|
||||
<string name="poi_traffic_signals_vibration">Vibrieren</string>
|
||||
<string name="poi_give_box">Give box</string>
|
||||
<string name="poi_give_box">Tauschbox</string>
|
||||
<string name="poi_city_block">Stadtteil</string>
|
||||
<string name="poi_borough">Bezirk</string>
|
||||
<string name="poi_elevator">Aufzug</string>
|
||||
|
@ -3848,7 +3848,7 @@
|
|||
<string name="poi_recycling_small_electrical_appliances">Kleine Elektrogeräte</string>
|
||||
<string name="poi_nuts">Nussladen</string>
|
||||
<string name="poi_fuel_lng">Flüssigerdgas</string>
|
||||
<string name="poi_parking_layby">Rastplatz</string>
|
||||
<string name="poi_parking_layby">Parkbucht</string>
|
||||
<string name="poi_parking_sheds">Überdachter Parkplatz</string>
|
||||
<string name="poi_parking_rooftop">Dachparkplätze</string>
|
||||
<string name="poi_gpx_point">GPX-Wegpunkt</string>
|
||||
|
|
|
@ -2418,7 +2418,7 @@
|
|||
<string name="mapillary_widget_descr">Ermöglicht schnelle Beiträge zu Mapillary.</string>
|
||||
<string name="mapillary_descr">Fotos von der Straße aus dem Netz für jeden. Orte entdecken, mitwirken und die Welt in Bildern festhalten.</string>
|
||||
<string name="mapillary">Mapillary</string>
|
||||
<string name="mapillary_action_descr">Mit Mapillary Bilder dieses Orts beitragen.</string>
|
||||
<string name="mapillary_action_descr">Mit Mapillary Bilder von diesem Ort beisteuern.</string>
|
||||
<string name="shared_string_install">Installieren</string>
|
||||
<string name="online_photos">Online-Fotos</string>
|
||||
<string name="no_photos_descr">Keine Fotos hier.</string>
|
||||
|
@ -3181,7 +3181,7 @@
|
|||
<string name="shared_string_file_is_saved">%s ist gespeichert</string>
|
||||
<string name="shared_string_open_track">Track öffnen</string>
|
||||
<string name="shared_string_track_is_saved">Track %s ist gespeichert</string>
|
||||
<string name="sett_no_ext_input">Keine</string>
|
||||
<string name="sett_no_ext_input">Keines</string>
|
||||
<string name="sett_wunderlinq_ext_input">WunderLINQ</string>
|
||||
<string name="sett_parrot_ext_input">Parrot</string>
|
||||
<string name="external_input_device_descr">Ein externes Steuergerät, wie beispielsweise eine Tastatur oder ein WunderLINQ, wählen.</string>
|
||||
|
@ -3839,7 +3839,7 @@
|
|||
<string name="next_segment">Nächstes Segment</string>
|
||||
<string name="navigation_profile">Navigationsprofil</string>
|
||||
<string name="route_between_points_add_track_desc">Wählen Sie eine Trackdatei, für die ein neues Segment hinzugefügt werden soll.</string>
|
||||
<string name="follow_track_descr">Track auswählen, der verfolgt werden soll</string>
|
||||
<string name="follow_track_descr">Track auswählen, dem gefolgt werden soll</string>
|
||||
<string name="delete_address">Adresse löschen</string>
|
||||
<string name="add_address">Adresse hinzufügen</string>
|
||||
<string name="access_hint_enter_address">Adresse eingeben</string>
|
||||
|
@ -4025,4 +4025,10 @@
|
|||
<string name="reverse_all_points">Alle Punkte umkehren</string>
|
||||
<string name="profile_by_default_description">Wählen Sie das Profil, das beim Start der Anwendung verwendet werden soll.</string>
|
||||
<string name="shared_string_last_used">Zuletzt verwendet</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_description">Wanderwege bevorzugen</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_name">Wanderwege bevorzugen</string>
|
||||
<string name="routing_attr_allow_streams_description">Bäche und Entwässerungsgräben erlauben</string>
|
||||
<string name="routing_attr_allow_streams_name">Bäche und Entwässerungsgräben erlauben</string>
|
||||
<string name="routing_attr_allow_intermittent_description">Gewässer erlauben, die nicht ständig Wasser führen</string>
|
||||
<string name="routing_attr_allow_intermittent_name">Gewässer erlauben, die nicht ständig Wasser führen</string>
|
||||
</resources>
|
|
@ -517,7 +517,7 @@
|
|||
<string name="rendering_value_americanRoadAtlas_name">Usona voja maparo</string>
|
||||
<string name="routing_attr_no_new_routing_name">Sen v1.9 kursaj reguloj</string>
|
||||
<string name="routing_attr_no_new_routing_description">Ne uzi regulojn por difini kurson enkondukitajn en v1.9.</string>
|
||||
<string name="dash_download_msg_none">Ĉu elŝuti eksterretajn mapojn?</string>
|
||||
<string name="dash_download_msg_none">Ĉu elŝuti malkonektajn mapojn\?</string>
|
||||
<string name="dash_download_msg">Vi elŝutis %1$s mapojn</string>
|
||||
<string name="dash_download_new_one">Elŝuti novan mapon</string>
|
||||
<string name="dash_download_manage">Administri</string>
|
||||
|
@ -1606,7 +1606,7 @@
|
|||
<string name="voice">Registrita voĉo</string>
|
||||
<string name="voices">Voĉaj anoncoj</string>
|
||||
<string name="no_vector_map_loaded">Ne ŝargis vektorajn mapojn</string>
|
||||
<string name="vector_data">Eksterretaj vektoraj mapoj</string>
|
||||
<string name="vector_data">Malkonektaj vektoraj mapoj</string>
|
||||
<string name="transport_context_menu">Serĉi transporton ĉe haltejo</string>
|
||||
<string name="poi_context_menu_modify">Modifi interesejon</string>
|
||||
<string name="poi_context_menu_delete">Forigi interesejon</string>
|
||||
|
@ -1867,7 +1867,8 @@
|
|||
<string name="shared_string_card_was_hidden">Langeto kaŝita</string>
|
||||
<string name="shared_string_undo">Malfari</string>
|
||||
<string name="shared_string_skip">Transsalti</string>
|
||||
<string name="offline_maps_and_navigation">Mapoj eksterretaj\nkaj navigado</string>
|
||||
<string name="offline_maps_and_navigation">Malkonektaj mapoj
|
||||
\nkaj navigado</string>
|
||||
<string name="commit_poi">Enmeti interesejon</string>
|
||||
<string name="tab_title_basic">Bazaj</string>
|
||||
<string name="tab_title_advanced">Altnivelaj</string>
|
||||
|
@ -4006,7 +4007,7 @@
|
|||
<string name="plan_route_split_before">Dividi antaŭ</string>
|
||||
<string name="plan_route_split_after">Dividi post</string>
|
||||
<string name="plan_route_add_new_segment">Aldoni novan segmenton</string>
|
||||
<string name="release_3_9">• aldonita agordo por el-/en-porti ĉiujn datumojn, inkluzivante agordojn, map‑datumojn kaj miajn lokojn
|
||||
<string name="release_3_9">• eblo el-/en-porti ĉiujn datumojn, inkluzivante agordojn, map‑datumojn kaj miajn lokojn
|
||||
\n
|
||||
\n • plani kurson: diagramoj por segmentoj kun la kurso, aldonita eblo por krei kaj redakti plurajn segmentojn de kurso
|
||||
\n
|
||||
|
@ -4018,4 +4019,12 @@
|
|||
<string name="profile_type_osmand_string">OsmAnd‑profilo</string>
|
||||
<string name="profile_type_user_string">Profilo de uzanto</string>
|
||||
<string name="reverse_all_points">Inversigi ĉiujn punktojn</string>
|
||||
<string name="profile_by_default_description">Elekti profolin, kiu estos uzita je starto de la aplikaĵo.</string>
|
||||
<string name="shared_string_last_used">Antaŭe uzita</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_description">Preferi piediradajn kursojn</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_name">Preferi piediradajn kursojn</string>
|
||||
<string name="routing_attr_allow_streams_description">Permesi navigi per riveretoj kaj fosaĵoj defluigaj</string>
|
||||
<string name="routing_attr_allow_streams_name">Permesi riveretojn kaj fosaĵojn</string>
|
||||
<string name="routing_attr_allow_intermittent_description">Permesi navigi per periode sekiĝantaj akvovojoj</string>
|
||||
<string name="routing_attr_allow_intermittent_name">Permesi sezonajn akvovojojn</string>
|
||||
</resources>
|
|
@ -3935,7 +3935,7 @@
|
|||
<string name="file_already_imported">El archivo ya fue importado en OsmAnd</string>
|
||||
<string name="use_two_phase_routing">Usar el algoritmo de navegación A* bifásica</string>
|
||||
<string name="shared_string_graph">Gráfico</string>
|
||||
<string name="message_need_calculate_route_before_show_graph">Hay %1$s datos disponibles sólo en los caminos, calcular una ruta usando «Ruta entre puntos» para ver los gráficos.</string>
|
||||
<string name="message_need_calculate_route_before_show_graph">Los datos de «%1$s» sólo están disponibles con los caminos, calcula una ruta usando «Ruta entre puntos» para ver los gráficos.</string>
|
||||
<string name="message_graph_will_be_available_after_recalculation">Ten paciencia.
|
||||
\nEl gráfico estará disponible al recalcular la ruta.</string>
|
||||
<string name="ltr_or_rtl_combine_via_dash">%1$s — %2$s</string>
|
||||
|
@ -4024,4 +4024,12 @@
|
|||
<string name="profile_type_osmand_string">Perfil de OsmAnd</string>
|
||||
<string name="profile_type_user_string">Perfil de usuario</string>
|
||||
<string name="reverse_all_points">Invertir todos los puntos</string>
|
||||
<string name="profile_by_default_description">Elige el perfil que será usado al iniciar la aplicación.</string>
|
||||
<string name="shared_string_last_used">Usado por última vez</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_description">Prefiere rutas de senderismo</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_name">Preferir rutas de senderismo</string>
|
||||
<string name="routing_attr_allow_streams_description">Permite arroyos y desagües</string>
|
||||
<string name="routing_attr_allow_streams_name">Permitir arroyos y desagües</string>
|
||||
<string name="routing_attr_allow_intermittent_description">Permite cursos de agua intermitentes</string>
|
||||
<string name="routing_attr_allow_intermittent_name">Permitir cursos de agua intermitentes</string>
|
||||
</resources>
|
|
@ -3893,4 +3893,16 @@
|
|||
<string name="poi_mobile_money_agent">Agente de dinero móvil</string>
|
||||
<string name="poi_vaccination_covid19">Vacunación: COVID19</string>
|
||||
<string name="poi_health_specialty_vaccination_yes">Vacunación</string>
|
||||
<string name="poi_lavoir">Lavadero público de ropa</string>
|
||||
<string name="poi_waste_transfer_station">Estación de transferencia de residuos</string>
|
||||
<string name="poi_weightbridge">Báscula puente</string>
|
||||
<string name="poi_ranger_station">Estación de guardabosque</string>
|
||||
<string name="poi_water_source_lake">Lago</string>
|
||||
<string name="poi_water_source_river">Río</string>
|
||||
<string name="poi_water_source_well">Pozo</string>
|
||||
<string name="poi_water_source_powered_pump">Bomba accionada</string>
|
||||
<string name="poi_water_source_water_tank">Tanque de agua</string>
|
||||
<string name="poi_water_source_tap">Grifo</string>
|
||||
<string name="poi_water_source_water_works">Planta potabilizadora</string>
|
||||
<string name="poi_water_source_tube_well">Pozo entubado</string>
|
||||
</resources>
|
|
@ -1952,7 +1952,7 @@
|
|||
<string name="access_autoannounce_period_descr">Lapso de tiempo mínimo entre avisos.</string>
|
||||
<string name="map_widget_bearing">Rumbo relativo</string>
|
||||
<string name="map_widget_magnetic_bearing">Rumbo magnético</string>
|
||||
<string name="access_no_destination">Destino indefinido</string>
|
||||
<string name="access_no_destination">Complemento de accesibilidad: Destino indefinido</string>
|
||||
<string name="use_osm_live_routing_description">Activa la navegación para cambios en vivo de OsmAnd.</string>
|
||||
<string name="use_osm_live_routing">Navegación con OsmAnd Live</string>
|
||||
<string name="follow_us">Síguenos</string>
|
||||
|
@ -2396,7 +2396,7 @@
|
|||
<string name="srtm_menu_download_descr">Descarga el mapa de «Curvas de nivel» para usarlas en esta región.</string>
|
||||
<string name="shared_string_plugin">Complemento</string>
|
||||
<string name="srtm_purchase_header">Compra e instala el complemento «Curvas de nivel» para mostrar áreas verticales graduadas.</string>
|
||||
<string name="hillshade_menu_download_descr">Descarga el mapa «Superposición de sombreado» para mostrar el sombreado vertical.</string>
|
||||
<string name="hillshade_menu_download_descr">Descarga la capa superpuesta del mapa «Sombreado» para mostrar el sombreado vertical.</string>
|
||||
<string name="hillshade_purchase_header">Instala el complemento «Curvas de nivel» para mostrar las áreas verticales graduadas.</string>
|
||||
<string name="hide_from_zoom_level">Ocultar desde el nivel de zoom</string>
|
||||
<string name="quick_action_showhide_osmbugs_title">Mostrar u ocultar notas de OSM</string>
|
||||
|
@ -3432,7 +3432,7 @@
|
|||
<string name="login_and_pass">Nombre de usuario y contraseña</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_edits_view_descr">Puedes ver todas tus ediciones aún no subidas o errores de OSM en «%1$s». Los puntos subidos no se muestran en OsmAnd.</string>
|
||||
<string name="osm_edits_view_descr">Vea todas las ediciones aún no subidas o errores de OSM en «%1$s». Los cambios ya cargados no se mostrarán más.</string>
|
||||
<string name="app_mode_osm">OSM</string>
|
||||
<string name="select_nav_icon_descr">El icono se muestra mientras se navega o se mueve.</string>
|
||||
<string name="select_map_icon_descr">El icono se muestra en reposo.</string>
|
||||
|
@ -3794,9 +3794,9 @@
|
|||
<string name="use_volume_buttons_as_zoom_descr">Controla el nivel de zoom del mapa usando los botones de volumen del dispositivo.</string>
|
||||
<string name="use_volume_buttons_as_zoom">Botones de volumen como zoom</string>
|
||||
<string name="search_download_wikipedia_maps">Descargar datos de Wikipedia</string>
|
||||
<string name="quick_action_remove_next_destination_descr">El punto de destino actual de la ruta será borrado. Si será el destino, la navegación se detendrá.</string>
|
||||
<string name="quick_action_remove_next_destination_descr">Quita el siguiente destino de la ruta. Si es el destino final, la navegación se detendrá.</string>
|
||||
<string name="quick_action_remove_next_destination">Borrar el punto de destino más cercano</string>
|
||||
<string name="plugin_wikipedia_description">Obtén información sobre los puntos de interés de Wikipedia. Es tu guía de bolsillo sin conexión - sólo activa el complemento de Wikipedia y disfruta los artículos sobre los objetos de alrededor.</string>
|
||||
<string name="plugin_wikipedia_description">Obtén información sobre los puntos de interés de Wikipedia, una guía de bolsillo sin conexión que incluye artículos sobre objetos y destinos.</string>
|
||||
<string name="please_provide_point_name_error">Proporciona un nombre para el punto</string>
|
||||
<string name="lenght_limit_description">Proporciona la longitud del vehículo, se pueden aplicar algunas restricciones de rutas para vehículos largos.</string>
|
||||
<string name="app_mode_motor_scooter">Motoneta (motor)</string>
|
||||
|
@ -3851,7 +3851,7 @@
|
|||
<string name="plan_route_open_existing_track">Abrir traza existente</string>
|
||||
<string name="plan_route_last_edited">Última edición</string>
|
||||
<string name="plan_route_import_track">Importar traza</string>
|
||||
<string name="plan_route_exit_dialog_descr">¿Cerrar el plan de ruta sin guardar\?, se descartarán todos los cambios.</string>
|
||||
<string name="plan_route_exit_dialog_descr">¿Descartar todos los cambios en la ruta planificada\?</string>
|
||||
<string name="plan_route_create_new_route">Crear nueva ruta</string>
|
||||
<string name="plan_route_change_route_type_before">Cambiar el tipo de ruta anterior</string>
|
||||
<string name="plan_route_change_route_type_after">Cambiar el tipo de ruta posterior</string>
|
||||
|
@ -3908,12 +3908,12 @@
|
|||
<string name="sort_last_modified">Último modificado</string>
|
||||
<string name="start_finish_icons">Iconos de inicio y fin</string>
|
||||
<string name="contour_lines_thanks">Gracias por comprar las «Curvas de nivel»</string>
|
||||
<string name="osm_live_payment_desc_hw">La suscripción se cobra por el período elegido. Puedes cancelarlo en cualquier momento en AppGallery.</string>
|
||||
<string name="osm_live_payment_desc_hw">La suscripción se cobra por el período elegido. Puedes cancelarlo en AppGallery en cualquier momento.</string>
|
||||
<string name="osm_live_payment_subscription_management_hw">El pago será cargado a la cuenta de AppGallery al confirmar la compra.
|
||||
\n
|
||||
\nLa suscripción se renueva automáticamente a menos que se cancele antes de la fecha de renovación. La cuenta será cargada por el período de renovación (mes/trimestre/año) sólo en la fecha de renovación.
|
||||
\n
|
||||
\nPuedes administrar y cancelar las suscripciones accediendo a los ajustes de AppGallery.</string>
|
||||
\nPuedes administrar y cancelar las suscripciones en los ajustes de AppGallery.</string>
|
||||
<string name="routing_attr_avoid_footways_description">Evita pasar por aceras o veredas</string>
|
||||
<string name="routing_attr_avoid_footways_name">Evitar aceras</string>
|
||||
<string name="what_is_new">Novedades</string>
|
||||
|
@ -3935,8 +3935,8 @@
|
|||
<string name="navigate_point_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="message_need_calculate_route_before_show_graph">Hay %1$s datos disponibles sólo en los caminos, calcular una ruta usando «Ruta entre puntos» para ver los gráficos.</string>
|
||||
<string name="message_graph_will_be_available_after_recalculation">Ten paciencia
|
||||
<string name="message_need_calculate_route_before_show_graph">Los datos de «%1$s» sólo están disponibles con los caminos, calcula una ruta usando «Ruta entre puntos» para ver los gráficos.</string>
|
||||
<string name="message_graph_will_be_available_after_recalculation">Ten paciencia.
|
||||
\nEl gráfico estará disponible al recalcular la ruta.</string>
|
||||
<string name="ltr_or_rtl_combine_via_dash">%1$s — %2$s</string>
|
||||
<string name="icon_group_travel">Viaje</string>
|
||||
|
@ -4018,4 +4018,15 @@
|
|||
<string name="lang_de_casual">Alemán (casual)</string>
|
||||
<string name="elevation_data">Puedes usar los datos de elevación para tener en cuenta el ascenso y descenso del viaje</string>
|
||||
<string name="app_mode_light_aircraft">Avión ligero</string>
|
||||
<string name="shared_string_last_used">Usado por última vez</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_name">Preferir rutas de senderismo</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_description">Prefiere rutas de senderismo</string>
|
||||
<string name="routing_attr_allow_streams_name">Permitir arroyos y desagües</string>
|
||||
<string name="routing_attr_allow_streams_description">Permite arroyos y desagües</string>
|
||||
<string name="routing_attr_allow_intermittent_name">Permitir cursos de agua intermitentes</string>
|
||||
<string name="routing_attr_allow_intermittent_description">Permite cursos de agua intermitentes</string>
|
||||
<string name="reverse_all_points">Invertir todos los puntos</string>
|
||||
<string name="profile_type_user_string">Perfil de usuario</string>
|
||||
<string name="profile_type_osmand_string">Perfil de OsmAnd</string>
|
||||
<string name="profile_by_default_description">Elige el perfil que será usado al iniciar la aplicación.</string>
|
||||
</resources>
|
|
@ -3856,31 +3856,31 @@
|
|||
\n
|
||||
\nKui see on lubatud, kasutab OsmAnd süsteemi ajalõpu sätet.</string>
|
||||
<string name="use_system_screen_timeout">Kasutage süsteemi ekraani ajalõppu</string>
|
||||
<string name="release_3_6">"• Profiilid: nüüd saate muuta järjestust, määrata kaardi ikooni, muuta kõiki põhiprofiilide sätteid ja taastada need vaikeseadetesse
|
||||
<string name="release_3_6">• Profiilid: nüüd saate muuta järjestust, määrata kaardi ikooni, muuta kõiki põhiprofiilide sätteid ja taastada need vaikeseadetesse
|
||||
\n
|
||||
\n • Navigatsioonis on lisatud väljumisnumber
|
||||
\n
|
||||
\n • Ümber töötatud pistikprogrammi seaded
|
||||
\n • Ümber töötatud pistikprogrammi seaded
|
||||
\n
|
||||
\n • Kõigile profiilidele kiireks juurdepääsuks kuvatakse ümbertöödeldud seadete ekraan
|
||||
\n • Kõigile profiilidele kiireks juurdepääsuks kuvatakse ümbertöödeldud seadete ekraan
|
||||
\n
|
||||
\n • Lisatud võimalus seadete kopeerimiseks teiselt profiililt
|
||||
\n • Lisatud võimalus seadete kopeerimiseks teisest profiilist
|
||||
\n
|
||||
\n • Lisatud võime muuta järjestust või peita HP kategooriaid otsingus
|
||||
\n • Lisatud võime muuta järjestust või peita HP kategooriaid otsingus
|
||||
\n
|
||||
\n • POI ikoonid kaardil õigesti joondatud
|
||||
\n • POI ikoonid on kaardil õigesti joondatud
|
||||
\n
|
||||
\n • Kaardi seadistamiseks on lisatud päikeseloojangu / päikesetõusu andmed
|
||||
\n • Kaardi seadistamiseks on lisatud päikeseloojangu / päikesetõusu andmed
|
||||
\n
|
||||
\n • Lisatud kaardil kodu / töökoha ikoonid
|
||||
\n • Kaardile on lisatud kodu / töökoha ikoonid
|
||||
\n
|
||||
\n • Lisatud seadetes mitmerealise kirjelduse tugi
|
||||
\n • Seadetesse on lisatud mitmerealise kirjelduse tugi
|
||||
\n
|
||||
\n • Lisas Jaapani kaardile õige transliteratsiooni
|
||||
\n • Jaapani kaardile on lisatud õige transliteratsioon
|
||||
\n
|
||||
\n • Lisatud Antarktika kaart
|
||||
\n • Lisatud on Antarktika kaart
|
||||
\n
|
||||
\n"</string>
|
||||
\n</string>
|
||||
<string name="route_recalculation_dist_descr">Teekond arvutatakse ümber, kui vahemaa teekonnani on suurem kui määratud parameeter</string>
|
||||
<string name="plugin_disabled_descr">See pistikprogramm on eraldi rakendus, peate selle eraldi eemaldama, kui te ei kavatse seda enam kasutada.
|
||||
\n
|
||||
|
@ -3892,25 +3892,25 @@
|
|||
<string name="ui_customization_short_descr">Sahtli osad, kontekstimenüü</string>
|
||||
<string name="shared_string_drawer">Sahtel</string>
|
||||
<string name="search_poi_types_descr">Ühendage erinevate kategooriate HP-de tüübid. Kõigi valimiseks puudutage lülitit, kategooria valimiseks puudutage vasakut serva.</string>
|
||||
<string name="release_3_7">"• Uued võrguühenduseta nõlvakaardid
|
||||
<string name="release_3_7">• Uued võrguühenduseta nõlvakaardid
|
||||
\n
|
||||
\n • Lemmikute ja GPX-teekonnapunktide täielik kohandamine - kohandatud värvid, ikoonid, kujundid
|
||||
\n
|
||||
\n • Kohandatud üksuste järjekorda jaotistes \"Kontekstimenüü\", \"Kaardi seadistamine\" ja \"Sahtel\"
|
||||
\n • Kohandatud üksuste järjekorda jaotistes \"Kontekstimenüü\", \"Kaardi seadistamine\" ja \"Sahtel\"
|
||||
\n
|
||||
\n • Vikipeedia eraldi kihina jaotises Kaardi seadistamine valige ainult vajalikud keeled
|
||||
\n • Vikipeedia eraldi kihina jaotises Kaardi seadistamine valige ainult vajalikud keeled
|
||||
\n
|
||||
\n • Loodud oma HP-de filter / kaardid täieliku paindlikkusega
|
||||
\n • Loodud oma HP-de filter / kaardid täieliku paindlikkusega
|
||||
\n
|
||||
\n • Lisatud valikud kohandatud profiilide sätete taastamiseks
|
||||
\n • Lisatud valikud kohandatud profiilide sätete taastamiseks
|
||||
\n
|
||||
\n • Täielikud GPX-marsruudid navigeerimisest toetavad liiklusradasid ja täitke pööramisjuhised
|
||||
\n • Täielikud GPX-marsruudid navigeerimisest toetavad liiklusradasid ja täitke pööramisjuhised
|
||||
\n
|
||||
\n • Parandatud tahvelarvutite kasutajaliidese suurused
|
||||
\n • Parandatud tahvelarvutite kasutajaliidese suurused
|
||||
\n
|
||||
\n • Parandatud vead RTL-iga
|
||||
\n • Parandatud vead RTL-iga
|
||||
\n
|
||||
\n"</string>
|
||||
\n</string>
|
||||
<string name="system_screen_timeout_descr">Lülitab ekraani välja vastavalt süsteemi ekraani aegumisele.</string>
|
||||
<string name="system_screen_timeout">Kasuta süsteemi ekraani ajalõppu</string>
|
||||
<string name="turn_screen_on_descr">Valige ekraani äratussuvandid (veenduge, et seadme lukustamisel oleks esiplaanil OsmAnd):</string>
|
||||
|
@ -3948,4 +3948,6 @@
|
|||
\n
|
||||
\n</string>
|
||||
<string name="reverse_all_points">Pööra kõik punktid ümber</string>
|
||||
<string name="profile_by_default_description">Vali rakenduse käivitamisel kasutatav profiil.</string>
|
||||
<string name="shared_string_last_used">Viimati kasutatud</string>
|
||||
</resources>
|
|
@ -1128,7 +1128,7 @@
|
|||
<string name="poi_aerialway_bicycle_summer">Autorisés en été seulement</string>
|
||||
<string name="poi_aerialway_access_entry">Entrée uniquement</string>
|
||||
<string name="poi_aerialway_access_exit">Sortie uniquement</string>
|
||||
<string name="poi_aerialway_access_both">Entrée et Sortie</string>
|
||||
<string name="poi_aerialway_access_both">Entrée et sortie</string>
|
||||
<string name="poi_aerialway_summer_access_entry">Accès d\'été : entrée uniquement</string>
|
||||
<string name="poi_aerialway_summer_access_exit">Accès d\'été : sortie uniquement</string>
|
||||
<string name="poi_aerialway_summer_access_both">Accès d\'été : entrée et sortie</string>
|
||||
|
@ -3559,7 +3559,7 @@
|
|||
<string name="poi_motorcycle_type_dualsport">Trail (moto)</string>
|
||||
<string name="poi_government_transportation">Institution pour les transports</string>
|
||||
<string name="poi_water_supply_water_trucking">Point d\'eau pour poids lourds</string>
|
||||
<string name="poi_water_place_access_multifamilies">Multi-famille</string>
|
||||
<string name="poi_water_place_access_multifamilies">Multi-familles</string>
|
||||
<string name="poi_flooring">Magasin de parquet</string>
|
||||
<string name="poi_outpost">Point de livraison</string>
|
||||
<string name="poi_water_utility">Service des eaux</string>
|
||||
|
@ -3625,7 +3625,7 @@
|
|||
<string name="poi_vehicle_military">Accès véhicules : militaires</string>
|
||||
<string name="poi_vehicle_delivery">Accès véhicules : livraisons</string>
|
||||
<string name="poi_vehicle_forestry">Accès véhicules : foresterie</string>
|
||||
<string name="poi_motor_vehicle_no">Accès véhicules à moteur : non</string>
|
||||
<string name="poi_motor_vehicle_no">Accès véhicule motorisé : non</string>
|
||||
<string name="poi_snowmobile_no">Accès motoneige : non</string>
|
||||
<string name="poi_bus_yes">Oui</string>
|
||||
<string name="poi_hgv_delivery">Livraison</string>
|
||||
|
@ -3633,22 +3633,22 @@
|
|||
<string name="poi_goods_designated">Indiqué</string>
|
||||
<string name="poi_disabled_yes">Oui</string>
|
||||
<string name="poi_glacier_type_hanging">suspendu</string>
|
||||
<string name="poi_motorcar_yes">Accès véhicules : oui</string>
|
||||
<string name="poi_motorcar_private">accès-voiture : privé</string>
|
||||
<string name="poi_motorcar_no">accès-voiture : impossible</string>
|
||||
<string name="poi_motorcar_permissive">accès-voiture : possible</string>
|
||||
<string name="poi_motorcar_customers">Accès aux automobiles:forestiers</string>
|
||||
<string name="poi_motor_vehicle_yes">accès-voiture : autorisé</string>
|
||||
<string name="poi_motor_vehicle_private">Accès-voiture : privé</string>
|
||||
<string name="poi_motor_vehicle_delivery">Accès aux véhicules à moteur : livraison</string>
|
||||
<string name="poi_motor_vehicle_agricultural">Accès-véhicules : agricoles</string>
|
||||
<string name="poi_motorcar_destination">Accès aux automobiles:riverains</string>
|
||||
<string name="poi_motorcar_forestry">Accès aux automobiles:forestiers</string>
|
||||
<string name="poi_motor_vehicle_destination">Accès aux véhicules à moteurs:riverains</string>
|
||||
<string name="poi_motor_vehicle_permissive">Accès véhicule à moteur:toléré</string>
|
||||
<string name="poi_motor_vehicle_customers">Accès au véhicule à moteur:clients</string>
|
||||
<string name="poi_motor_vehicle_military">Accès aux véhicules à moteur:militaires</string>
|
||||
<string name="poi_motor_vehicle_forestry">Accès aux véhicules à moteurs:forestiers</string>
|
||||
<string name="poi_motorcar_yes">Accès voiture : oui</string>
|
||||
<string name="poi_motorcar_private">Accès voiture : privé</string>
|
||||
<string name="poi_motorcar_no">Accès voiture : non</string>
|
||||
<string name="poi_motorcar_permissive">Accès voiture : permis</string>
|
||||
<string name="poi_motorcar_customers">Accès voiture : clientèle</string>
|
||||
<string name="poi_motor_vehicle_yes">Accès véhicule motorisé : oui</string>
|
||||
<string name="poi_motor_vehicle_private">Accès véhicule motorisé : privé</string>
|
||||
<string name="poi_motor_vehicle_delivery">Accès véhicule motorisé : livraison</string>
|
||||
<string name="poi_motor_vehicle_agricultural">Accès véhicule motorisé : agricole</string>
|
||||
<string name="poi_motorcar_destination">Accès voiture : riverains</string>
|
||||
<string name="poi_motorcar_forestry">Accès voiture : forestier</string>
|
||||
<string name="poi_motor_vehicle_destination">Accès véhicule motorisé : riverains</string>
|
||||
<string name="poi_motor_vehicle_permissive">Accès véhicule motorisé : toléré</string>
|
||||
<string name="poi_motor_vehicle_customers">Accès véhicule motorisé : clientèle</string>
|
||||
<string name="poi_motor_vehicle_military">Accès véhicule motorisé : militaire</string>
|
||||
<string name="poi_motor_vehicle_forestry">Accès véhicule motorisé : forestier</string>
|
||||
<string name="poi_cellar_entrance">Entrée de cave</string>
|
||||
<string name="poi_health_food">Magasin de diététique</string>
|
||||
<string name="poi_craft_builder">Constructeur</string>
|
||||
|
@ -3688,7 +3688,7 @@
|
|||
<string name="poi_bath_type">Type</string>
|
||||
<string name="poi_bath_open_air">Plein-air</string>
|
||||
<string name="poi_bath_type_lake">Lac</string>
|
||||
<string name="poi_horse_forestry">Accès à cheval : forestiers seuls</string>
|
||||
<string name="poi_horse_forestry">Accès à cheval : forestier</string>
|
||||
<string name="poi_foot_destination">Accès piétonnier : riverains</string>
|
||||
<string name="poi_trailer_no">Accès aux remorques : non</string>
|
||||
<string name="poi_psv_yes">Accès aux transports publics ou taxis : oui</string>
|
||||
|
|
|
@ -3774,7 +3774,7 @@
|
|||
<string name="lenght_limit_description">Indiquez la longueur de votre véhicule, certaines restrictions d\'itinéraire peuvent s\'appliquer aux véhicules longs.</string>
|
||||
<string name="quick_action_remove_next_destination">Supprimer le prochain point</string>
|
||||
<string name="please_provide_point_name_error">Merci de renseigner un nom pour le point</string>
|
||||
<string name="plugin_wikipedia_description">Utilisez le guide Wikipédia hors ligne. Activez le plugin Wikipédia : des points d\'intérêt seront affichés, ils vous permettrons d\'obtenir des informations sur les lieux qui vous entourent.</string>
|
||||
<string name="plugin_wikipedia_description">Obtenez des informations sur les points d\'intérêt avec les articles Wikipédia, un guide disponible hors-ligne.</string>
|
||||
<string name="search_download_wikipedia_maps">Télécharger les cartes Wikipédia</string>
|
||||
<string name="app_mode_motor_scooter">Scooter</string>
|
||||
<string name="app_mode_enduro_motorcycle">Moto enduro</string>
|
||||
|
@ -3998,4 +3998,12 @@
|
|||
<string name="profile_type_osmand_string">Profil OsmAnd</string>
|
||||
<string name="profile_type_user_string">Profil utilisateur</string>
|
||||
<string name="reverse_all_points">Inverser tous les points</string>
|
||||
<string name="profile_by_default_description">Sélectionnez le profil utilisé au démarrage de l\'application.</string>
|
||||
<string name="shared_string_last_used">Dernier utilisé</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_name">Pirivilégier les itinéraires de randonnée</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_description">Pirivilégier les itinéraires de randonnée</string>
|
||||
<string name="routing_attr_allow_intermittent_description">Autoriser les voies navigables intermittentes</string>
|
||||
<string name="routing_attr_allow_intermittent_name">Autoriser les voies navigables intermittentes</string>
|
||||
<string name="routing_attr_allow_streams_description">Autoriser les cours d’eau et les drains</string>
|
||||
<string name="routing_attr_allow_streams_name">Autoriser les cours d’eau et les drains</string>
|
||||
</resources>
|
|
@ -1621,7 +1621,7 @@
|
|||
<string name="shared_string_skip">Kihagyás</string>
|
||||
<string name="app_name_osmand">OsmAnd</string>
|
||||
<string name="offline_maps_and_navigation">Offline térképek\nés navigáció</string>
|
||||
<string name="next_proceed">Tovább</string>
|
||||
<string name="next_proceed">Következő</string>
|
||||
<string name="dahboard_options_dialog_title">Műszerfal beállításai</string>
|
||||
<string name="traffic_warning_hazard">Veszély</string>
|
||||
<string name="poi_action_delete">törlés</string>
|
||||
|
@ -2277,7 +2277,7 @@
|
|||
\n
|
||||
\nÉlvezd a hangalapú és vizuális navigációs szolgáltatást, tekints meg érdekes helyeket (POI-kat), hozz létre és kezelj GPX nyomvonalakat, szintvonalak és magasságinformációk használatával (egy plugin segítségével), válassz az autós, kerékpáros és gyalogos üzemmód közül, szerkessz OSM-et és használd ki a számos egyéb lehetőséget.</string>
|
||||
<string name="save_poi_too_many_uppercase">A név túl sok nagybetűt tartalmaz. Folytatja\?</string>
|
||||
<string name="private_access_routing_req">A célpont korlátozott hozzáférésű területen található. Engedélyezed a magánutak használatát ennél az útvonaltervnél\?</string>
|
||||
<string name="private_access_routing_req">A célpont korlátozott hozzáférésű területen található. Engedélyezi a magánutak használatát ennél az útvonaltervnél\?</string>
|
||||
<string name="restart_search">Keresés újraindítása</string>
|
||||
<string name="increase_search_radius">Keresett terület szélesítése</string>
|
||||
<string name="nothing_found">Nincs találat</string>
|
||||
|
@ -3422,7 +3422,7 @@
|
|||
<string name="login_and_pass">Felhasználónév és jelszó</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_edits_view_descr">"A még fel nem töltött szerkesztéseket vagy OSM-hibákat megtekintheti itt: %1$s. A már feltöltött módosítások nem jelennek meg."</string>
|
||||
<string name="osm_edits_view_descr">A még fel nem töltött szerkesztéseket vagy OSM-hibákat megtekintheti itt: %1$s. A már feltöltött módosítások nem jelennek meg.</string>
|
||||
<string name="app_mode_osm">OSM</string>
|
||||
<string name="select_nav_icon_descr">Navigáció vagy haladás közben megjelenő ikon.</string>
|
||||
<string name="select_map_icon_descr">Álló helyzetben megjelenő ikon.</string>
|
||||
|
@ -3998,16 +3998,25 @@
|
|||
<string name="plan_route_split_after">Elvágás utána</string>
|
||||
<string name="plan_route_join_segments">Szakaszok egyesítése</string>
|
||||
<string name="plan_route_add_new_segment">Új szakasz hozzáadása</string>
|
||||
<string name="release_3_9">"• Lehetőség az összes adat exportálására és importálására, beleértve a beállításokat, erőforrásokat és a saját helyeket is
|
||||
<string name="release_3_9">• Lehetőség az összes adat exportálására és importálására, beleértve a beállításokat, erőforrásokat és a saját helyeket is
|
||||
\n
|
||||
\n • Útvonaltervezés: grafikonok a nyomvonalszakaszokhoz útvonallal, valamint lehetőség több nyomvonalszakasz létrehozására és szerkesztésére
|
||||
\n • Útvonaltervezés: grafikonok a nyomvonalszakaszokhoz útvonallal, valamint lehetőség több nyomvonalszakasz létrehozására és szerkesztésére
|
||||
\n
|
||||
\n • OAuth hitelesítési módszer az OpenStreetMap-hez, az OSM párbeszédpanelek felhasználói felületének javítása
|
||||
\n • OAuth hitelesítési módszer az OpenStreetMap-hez, az OSM párbeszédpanelek felhasználói felületének javítása
|
||||
\n
|
||||
\n • Egyéni színek támogatása a kedvenceknél és a nyomvonalak útpontjainál
|
||||
\n • Egyéni színek támogatása a kedvenceknél és a nyomvonalak útpontjainál
|
||||
\n
|
||||
\n"</string>
|
||||
\n</string>
|
||||
<string name="profile_type_osmand_string">OsmAnd profil</string>
|
||||
<string name="profile_type_user_string">Felhasználói profil</string>
|
||||
<string name="reverse_all_points">Összes pont megfordítása</string>
|
||||
<string name="app_mode_gap">Rés</string>
|
||||
<string name="profile_by_default_description">Jelölje ki az alkalmazás elindításakor használandó profilt.</string>
|
||||
<string name="shared_string_last_used">Utoljára használt</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_description">Túraútvonalak előnyben részesítése</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_name">Túraútvonalak előnyben részesítése</string>
|
||||
<string name="routing_attr_allow_streams_description">Patakok és vízelvezető árkok engedélyezése</string>
|
||||
<string name="routing_attr_allow_streams_name">Patakok és vízelvezető árkok engedélyezése</string>
|
||||
<string name="routing_attr_allow_intermittent_description">Időszakos vízfolyások engedélyezése</string>
|
||||
<string name="routing_attr_allow_intermittent_name">Időszakos vízfolyások engedélyezése</string>
|
||||
</resources>
|
|
@ -3913,7 +3913,7 @@
|
|||
<string name="contour_lines_thanks">תודה לך על רכישת ‚קווי מתאר’</string>
|
||||
<string name="routing_attr_avoid_footways_description">הימנעות משבילי הולכי רגל</string>
|
||||
<string name="routing_attr_avoid_footways_name">הימנעות משבילי הולכי רגל</string>
|
||||
<string name="osm_live_payment_desc_hw">המינוי חויב לתקופה הנבחרת. ניתן לבטל דרך ה־AppGallery בכל עת.</string>
|
||||
<string name="osm_live_payment_desc_hw">המינוי מחויב לפי התקופה הנבחרת. ניתן לבטל אותו דרך ה־AppGallery בכל עת.</string>
|
||||
<string name="osm_live_payment_subscription_management_hw">חשבון ה־AppGallery שלך יחויב עם אישור הרכישה.
|
||||
\n
|
||||
\nתוקף המינוי מתארך אוטומטי אלא אם כן בוטל בטרם תאריך החידוש. החשבון שלך יחויב על תקופת החידוש (חודש/שלושה חודשים/שנה) רק בתאריך החידוש.
|
||||
|
@ -4023,4 +4023,10 @@
|
|||
<string name="reverse_all_points">להפוך את כל הנקודות</string>
|
||||
<string name="profile_by_default_description">נא לבחור את הפרופיל בו יעשה שימוש עם הפעלת היישומון.</string>
|
||||
<string name="shared_string_last_used">שימוש אחרון</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_description">להעדיף מסלולי הליכה</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_name">להעדיף מסלולי הליכה</string>
|
||||
<string name="routing_attr_allow_streams_description">לאפשר נחלים וניקוזים</string>
|
||||
<string name="routing_attr_allow_streams_name">לאפשר נחלים וניקוזים</string>
|
||||
<string name="routing_attr_allow_intermittent_description">לאפשר מקטעים עם דרכי מים עונתיים</string>
|
||||
<string name="routing_attr_allow_intermittent_name">לאפשר מקטעים עם דרכי מים עונתיים</string>
|
||||
</resources>
|
|
@ -3940,4 +3940,7 @@
|
|||
<string name="profile_type_osmand_string">OsmAnd-profil</string>
|
||||
<string name="profile_type_user_string">Brukerprofil</string>
|
||||
<string name="button_rate">Bedøm</string>
|
||||
<string name="shared_string_resources">Ressurser</string>
|
||||
<string name="profile_by_default_description">Velg profilen som skal brukes når programmet starter.</string>
|
||||
<string name="shared_string_last_used">Sist brukt</string>
|
||||
</resources>
|
|
@ -1267,7 +1267,7 @@
|
|||
<string name="poi_piste_difficulty_advanced">Moeilijk</string>
|
||||
<string name="poi_piste_difficulty_novice">Beginner</string>
|
||||
<string name="poi_piste_difficulty_expert">Expert</string>
|
||||
<string name="poi_piste_difficulty_freeride">Freeride</string>
|
||||
<string name="poi_piste_difficulty_freeride">Gratis rit</string>
|
||||
<string name="poi_piste_grooming_classic">Klassiek</string>
|
||||
<string name="poi_piste_grooming_classic_skating">Klassiek en skating</string>
|
||||
<string name="poi_piste_grooming_backcountry">Uithoek</string>
|
||||
|
|
|
@ -3271,7 +3271,7 @@
|
|||
<string name="rendering_attr_piste_difficulty_intermediate_name">Middelmatig</string>
|
||||
<string name="rendering_attr_piste_difficulty_advanced_name">Gevorderd</string>
|
||||
<string name="rendering_attr_piste_difficulty_expert_name">Expert</string>
|
||||
<string name="rendering_attr_piste_difficulty_freeride_name">Gratische rit</string>
|
||||
<string name="rendering_attr_piste_difficulty_freeride_name">Gratis rit</string>
|
||||
<string name="rendering_attr_piste_difficulty_extreme_name">Extreem</string>
|
||||
<string name="rendering_attr_piste_difficulty_undefined_name">Ongedefinieerd</string>
|
||||
<string name="routeInfo_piste_difficulty_name">Moeilijkheidsgraad piste</string>
|
||||
|
|
|
@ -3624,7 +3624,7 @@
|
|||
<string name="poi_vehicle_military">Dostęp dla pojazdów: dla wojska</string>
|
||||
<string name="poi_vehicle_delivery">Dostęp dla pojazdów: dla dostaw</string>
|
||||
<string name="poi_vehicle_forestry">Dostęp dla pojazdów: dla leśnictwa</string>
|
||||
<string name="poi_motorcar_yes">Dostęp dla samochodów:</string>
|
||||
<string name="poi_motorcar_yes">Dostęp dla samochodów: tak</string>
|
||||
<string name="poi_motorcar_private">Dostęp dla samochodów: prywatny</string>
|
||||
<string name="poi_motorcar_no">Dostęp dla samochodów: nie</string>
|
||||
<string name="poi_motorcar_destination">Dostęp dla samochodów: do celu podróży</string>
|
||||
|
@ -3872,4 +3872,12 @@
|
|||
<string name="poi_diplomatic_services_non_immigrant_visas_filter">Wizy nieimigracyjne</string>
|
||||
<string name="poi_consulate_filter">Konsulat</string>
|
||||
<string name="poi_embassy_filter">Ambasada</string>
|
||||
<string name="poi_nurse">Pielęgniarka</string>
|
||||
<string name="poi_siren">Syrena</string>
|
||||
<string name="poi_water_source_water_tank">Zbiornik wodny</string>
|
||||
<string name="poi_water_source_well">Studnia</string>
|
||||
<string name="poi_water_source_lake">Jezioro</string>
|
||||
<string name="poi_water_source_river">Rzeka</string>
|
||||
<string name="poi_vaccination_covid19">Szczepienia: COVID19</string>
|
||||
<string name="poi_health_specialty_vaccination_yes">Szczepienia</string>
|
||||
</resources>
|
|
@ -3549,7 +3549,7 @@
|
|||
<string name="shared_string_quick_actions">Szybka czynność</string>
|
||||
<string name="keep_both">Zatrzymaj oba</string>
|
||||
<string name="shared_string_rendering_style">Styl renderowania</string>
|
||||
<string name="osm_edits_view_descr">Możesz wyświetlić wszystkie swoje jeszcze nie przesłane edycje lub błędy OSM w %1$s. Przesłane punkty nie są wyświetlane w OsmAnd.</string>
|
||||
<string name="osm_edits_view_descr">Wyświetl wszystkie jeszcze nie przesłane swoje edycje lub błędy OSM w %1$s. Przesłane już zmiany nie będą wyświetlane.</string>
|
||||
<string name="import_rendering_file">Importowanie pliku renderowania</string>
|
||||
<string name="restore_all_profile_settings">Przywrócić wszystkie ustawienia profilu\?</string>
|
||||
<string name="saving_new_profile">Zapisywanie nowego profilu</string>
|
||||
|
@ -3793,7 +3793,7 @@
|
|||
<string name="please_provide_point_name_error">Podaj nazwę punktu</string>
|
||||
<string name="quick_action_remove_next_destination_descr">Usuwa następny cel na trasie. Jeśli jest to miejsce docelowe, nawigacja zostanie zatrzymana.</string>
|
||||
<string name="search_download_wikipedia_maps">Pobierz mapy Wikipedii</string>
|
||||
<string name="plugin_wikipedia_description">Uzyskaj informacje o ciekawych miejscach z Wikipedii, kieszonkowego przewodnika offline zawierającego artykuły o miejscach i celach.</string>
|
||||
<string name="plugin_wikipedia_description">Uzyskaj informacje o ciekawych miejscach z Wikipedii, kieszonkowego przewodnika offline zawierającego artykuły o miejscach i celach podróży.</string>
|
||||
<string name="app_mode_enduro_motorcycle">Motocykl Enduro</string>
|
||||
<string name="app_mode_motor_scooter">Skuter</string>
|
||||
<string name="routing_attr_length_description">Określ długość pojazdu dozwoloną na trasach.</string>
|
||||
|
@ -3913,11 +3913,11 @@
|
|||
<string name="start_finish_icons">Ikony startu i końca</string>
|
||||
<string name="contour_lines_thanks">Dziękujemy za zakup \"Linii konturowych\"</string>
|
||||
<string name="osm_live_payment_desc_hw">Subskrypcja jest naliczana za wybrany okres. Anuluj go w AppGallery w dowolnym momencie.</string>
|
||||
<string name="osm_live_payment_subscription_management_hw">Płatność zostanie pobrana z konta AppGallery po potwierdzeniu zakupu.
|
||||
<string name="osm_live_payment_subscription_management_hw">Twoje konto AppGallery jest obciążane po potwierdzeniu zakupu.
|
||||
\n
|
||||
\nSubskrypcja jest automatycznie odnawiana, chyba że zostanie anulowana przed datą odnowienia. Twoje konto zostanie obciążone opłatą za okres odnowienia (miesiąc/trzy miesiące/rok) tylko w dniu odnowienia.
|
||||
\nSubskrypcja przedłuża się automatycznie, chyba że zostanie anulowana przed datą odnowienia. Twoje konto zostanie obciążone za okres odnowienia (miesiąc/trzy miesiące/rok) tylko w dniu odnowienia.
|
||||
\n
|
||||
\nMożesz zarządzać subskrypcjami i anulować je, przechodząc do ustawień Galerii aplikacji.</string>
|
||||
\nMożesz zarządzać swoimi subskrypcjami i anulować je w ustawieniach AppGallery.</string>
|
||||
<string name="routing_attr_avoid_footways_description">Unikaj chodników</string>
|
||||
<string name="routing_attr_avoid_footways_name">Unikaj chodników</string>
|
||||
<string name="development">Rozwój</string>
|
||||
|
@ -3926,7 +3926,7 @@
|
|||
<string name="use_complex_routing">Routing złożony</string>
|
||||
<string name="complex_routing_descr">Dwufazowe wyznaczanie tras do nawigacji samochodowej.</string>
|
||||
<string name="use_native_pt">Rozwój rodzimego transportu publicznego</string>
|
||||
<string name="use_native_pt_desc">Przejdź do (bezpiecznego) obliczania tras transportu publicznego w języku Java</string>
|
||||
<string name="use_native_pt_desc">Przejdź do (bezpiecznego) obliczania trasy transportu publicznego w języku Java</string>
|
||||
<string name="perform_oauth_authorization_description">Zaloguj się za pomocą protokołu OAuth, aby korzystać z funkcji osmedit</string>
|
||||
<string name="perform_oauth_authorization">Zaloguj się przez OAuth</string>
|
||||
<string name="clear_osm_token">Wyczyść token OpenStreetMap OAuth</string>
|
||||
|
@ -4024,4 +4024,12 @@
|
|||
<string name="profile_type_osmand_string">Profil OsmAnd</string>
|
||||
<string name="profile_type_user_string">Profil użytkownika</string>
|
||||
<string name="reverse_all_points">Odwróć wszystkie punkty</string>
|
||||
<string name="profile_by_default_description">Wybierz profil, który będzie używany przy uruchomieniu aplikacji.</string>
|
||||
<string name="shared_string_last_used">Ostatnio używane</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_description">Preferowane szlaki turystyczne</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_name">Preferuj szlaki turystyczne</string>
|
||||
<string name="routing_attr_allow_streams_description">Zezwalaj na strumienie i dreny</string>
|
||||
<string name="routing_attr_allow_streams_name">Zezwalaj na strumienie i dreny</string>
|
||||
<string name="routing_attr_allow_intermittent_description">Zezwalaj na przerywane drogi wodne</string>
|
||||
<string name="routing_attr_allow_intermittent_name">Zezwalaj na przerywane drogi wodne</string>
|
||||
</resources>
|
|
@ -3897,4 +3897,5 @@
|
|||
<string name="poi_weightbridge">Balança</string>
|
||||
<string name="poi_ranger_station">Posto de guarda florestal</string>
|
||||
<string name="poi_waste_transfer_station">Estação de transferência de resíduos</string>
|
||||
<string name="poi_lavoir">Lavandaria pública</string>
|
||||
</resources>
|
|
@ -4014,4 +4014,12 @@
|
|||
<string name="profile_type_osmand_string">Perfil do OsmAnd</string>
|
||||
<string name="profile_type_user_string">Perfil de usuário</string>
|
||||
<string name="reverse_all_points">Reverter todos os pontos</string>
|
||||
<string name="profile_by_default_description">Selecione o perfil que será utilizado na inicialização do aplicativo.</string>
|
||||
<string name="shared_string_last_used">Usado por último</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_description">Percursos de caminhada preferidos</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_name">Percursos de caminhada preferidos</string>
|
||||
<string name="routing_attr_allow_streams_description">Permitir riachos e drenos</string>
|
||||
<string name="routing_attr_allow_streams_name">Permitir riachos e drenos</string>
|
||||
<string name="routing_attr_allow_intermittent_description">Permitir vias de água intermitentes</string>
|
||||
<string name="routing_attr_allow_intermittent_name">Permitir vias de água intermitentes</string>
|
||||
</resources>
|
|
@ -3878,4 +3878,5 @@
|
|||
<string name="poi_water_source_water_tank">Tanque de água</string>
|
||||
<string name="poi_water_source_tap">Torneira</string>
|
||||
<string name="poi_water_source_water_works">Estação de tratamento de água</string>
|
||||
<string name="poi_ranger_station">Posto de guarda florestal</string>
|
||||
</resources>
|
|
@ -4001,4 +4001,8 @@
|
|||
<string name="plan_route_split_after">Разделить после</string>
|
||||
<string name="profile_type_user_string">Профиль пользователя</string>
|
||||
<string name="profile_type_osmand_string">Профиль OsmAnd</string>
|
||||
<string name="profile_by_default_description">Выберите профиль, который будет использоваться при запуске приложения.</string>
|
||||
<string name="shared_string_last_used">Последний раз использовалось</string>
|
||||
<string name="routing_attr_allow_intermittent_description">Разрешить прерывистые водные пути</string>
|
||||
<string name="routing_attr_allow_intermittent_name">Разрешить прерывистые водные пути</string>
|
||||
</resources>
|
|
@ -4016,4 +4016,12 @@
|
|||
<string name="profile_type_osmand_string">Profilu de OsmAnd</string>
|
||||
<string name="profile_type_user_string">Profilu de s\'impreadore</string>
|
||||
<string name="reverse_all_points">Fùrria totu sos puntos</string>
|
||||
<string name="profile_by_default_description">Ischerta su profilu de impreare a s\'allughìngiu de s\'aplicatzione.</string>
|
||||
<string name="shared_string_last_used">Ùrtimu impreu</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_description">Preferi sas àndalas pro s\'escursionismu</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_name">Preferi sas àndalas pro s\'escursionismu</string>
|
||||
<string name="routing_attr_allow_streams_description">Permite flussos e iscàrrigos</string>
|
||||
<string name="routing_attr_allow_streams_name">Permite flussos e iscàrrigos</string>
|
||||
<string name="routing_attr_allow_intermittent_description">Permite caminos de abba intermitentes</string>
|
||||
<string name="routing_attr_allow_intermittent_name">Permite caminos de abba intermitentes</string>
|
||||
</resources>
|
|
@ -4019,4 +4019,12 @@
|
|||
<string name="profile_type_osmand_string">Profil OsmAnd</string>
|
||||
<string name="profile_type_user_string">Profil používateľa</string>
|
||||
<string name="reverse_all_points">Otočiť všetky body</string>
|
||||
<string name="profile_by_default_description">Zvoľte profil, ktorý bude použitý pri štarte aplikácie.</string>
|
||||
<string name="shared_string_last_used">Naposledy použité</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_description">Uprednostniť turistické trasy</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_name">Uprednostniť turistické trasy</string>
|
||||
<string name="routing_attr_allow_streams_description">Povoliť potoky a odtokové kanály</string>
|
||||
<string name="routing_attr_allow_streams_name">Povoliť potoky a odtokové kanály</string>
|
||||
<string name="routing_attr_allow_intermittent_description">Povoliť dočasné vodné toky</string>
|
||||
<string name="routing_attr_allow_intermittent_name">Povoliť dočasné vodné toky</string>
|
||||
</resources>
|
|
@ -2915,4 +2915,22 @@ Vänligen tillhandahåll fullständig kod</string>
|
|||
<string name="shared_string_languages">Språk</string>
|
||||
<string name="shared_string_language">Språk</string>
|
||||
<string name="shared_string_all_languages">Alla språk</string>
|
||||
<string name="release_3_9">• La till inställning för att exportera och importera all data, inklusive inställningar, resurser, mina platser
|
||||
\n
|
||||
\n • Planera rutt: Grafer för seggraphs for track segments with route, and added the ability to create and edit multiple track segments
|
||||
\n
|
||||
\n • Added OAuth authentication method for OpenStreetMap, improved UI of OSM dialogs
|
||||
\n
|
||||
\n • Support custom colors for favorites and track waypoints
|
||||
\n
|
||||
\n</string>
|
||||
<string name="reverse_all_points">Vänd alla punkter</string>
|
||||
<string name="profile_by_default_description">Välj den profil som ska användas när appen startas.</string>
|
||||
<string name="shared_string_last_used">Senast använd</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_description">Föredra vandringsleder</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_name">Föredra vandringsleder</string>
|
||||
<string name="routing_attr_allow_streams_description">Tillåt strömmar och torrläggningar</string>
|
||||
<string name="routing_attr_allow_streams_name">Tillåt strömmar och torrläggningar</string>
|
||||
<string name="routing_attr_allow_intermittent_description">Tillåt vägar över vatten</string>
|
||||
<string name="routing_attr_allow_intermittent_name">Tillåt vägar över vatten</string>
|
||||
</resources>
|
|
@ -13,7 +13,7 @@
|
|||
<string name="poi_bicycle_transport">Bisiklet taşıma</string>
|
||||
<string name="poi_aerialway_transport">Askılı taşıma</string>
|
||||
<string name="poi_node_networks">Yürüyüş/bisiklet ağ noktaları</string>
|
||||
<string name="poi_hiking_routes">Yürüyüş rotaları</string>
|
||||
<string name="poi_hiking_routes">Yürüyüş güzergahları</string>
|
||||
<string name="poi_traffic_enforcement">Trafik uygulama</string>
|
||||
<string name="poi_man_made">İnsan yapımı</string>
|
||||
<string name="poi_transport_construction">Ulaştırma inşaatı</string>
|
||||
|
@ -938,10 +938,10 @@
|
|||
<string name="poi_nwn_ref">Ulusal giden ağ düğümü</string>
|
||||
<string name="poi_rwn_ref">Bölgesel giden ağ düğümü</string>
|
||||
<string name="poi_lwn_ref">Yerel yürüyüş ağ düğümü</string>
|
||||
<string name="poi_route_hiking_iwn_poi">Uluslararası yürüyüş izleği</string>
|
||||
<string name="poi_route_hiking_nwn_poi">Ulusal yürüyüş izleği</string>
|
||||
<string name="poi_route_hiking_rwn_poi">Bölgesel yürüyüş izleği</string>
|
||||
<string name="poi_route_hiking_lwn_poi">Yerel yürüyüş izleği</string>
|
||||
<string name="poi_route_hiking_iwn_poi">Uluslararası yürüyüş güzergahı</string>
|
||||
<string name="poi_route_hiking_nwn_poi">Ulusal yürüyüş güzergahı</string>
|
||||
<string name="poi_route_hiking_rwn_poi">Bölgesel yürüyüş güzergahı</string>
|
||||
<string name="poi_route_hiking_lwn_poi">Yerel yürüyüş güzergahı</string>
|
||||
<string name="poi_route_hiking_ref_poi">Yürüyüş yolu başvurusu</string>
|
||||
<string name="poi_opening_hours">Çalışma saatleri</string>
|
||||
<string name="poi_collection_times">Koleksiyon kez</string>
|
||||
|
@ -3135,4 +3135,6 @@
|
|||
<string name="poi_diplomatic_services_citizen_services_filter">Vatandaş hizmetleri</string>
|
||||
<string name="poi_diplomatic_services_immigrant_visas_filter">Göçmen vizeleri</string>
|
||||
<string name="poi_diplomatic_services_non_immigrant_visas_filter">Göçmen olmayan vizeleri</string>
|
||||
<string name="poi_military_checkpoint">Askeri denetim noktası</string>
|
||||
<string name="poi_checkpoint_hiking">Yürüyüş denetim noktası</string>
|
||||
</resources>
|
|
@ -3976,4 +3976,10 @@
|
|||
<string name="reverse_all_points">Tüm noktaları tersine çevir</string>
|
||||
<string name="profile_by_default_description">Uygulama başlangıcında kullanılacak profili seçin.</string>
|
||||
<string name="shared_string_last_used">Son kullanılan</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_description">Yürüyüş güzergahlarını tercih edin</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_name">Yürüyüş güzergahlarını tercih et</string>
|
||||
<string name="routing_attr_allow_streams_description">Dere ve kanalizasyonlara izin verin</string>
|
||||
<string name="routing_attr_allow_streams_name">Dere ve kanalizasyonlara izin ver</string>
|
||||
<string name="routing_attr_allow_intermittent_description">Aralıklı su yollarına izin verin</string>
|
||||
<string name="routing_attr_allow_intermittent_name">Aralıklı su yollarına izin ver</string>
|
||||
</resources>
|
|
@ -3185,7 +3185,7 @@
|
|||
<string name="app_mode_campervan">Дім на колесах</string>
|
||||
<string name="rendering_attr_showLez_description">Показати на мапі зони низьких викидів. Не впливає на маршрутизацію.</string>
|
||||
<string name="rendering_attr_showLez_name">Показати зони низьких викидів</string>
|
||||
<string name="temporary_conditional_routing">Враховувати тимчасові обмеження</string>
|
||||
<string name="temporary_conditional_routing">Враховувати часові обмеження</string>
|
||||
<string name="shared_string_default">Усталений</string>
|
||||
<string name="new_route_calculated_dist_dbg">Маршрут: відстань %s, час навігації %s
|
||||
\nРозрахунок: %.1f с, %d доріг, %d тайлів)</string>
|
||||
|
@ -4017,4 +4017,10 @@
|
|||
<string name="reverse_all_points">Повернути назад всі точки</string>
|
||||
<string name="profile_by_default_description">Виберіть профіль, який застосовуватиметься під час запуску.</string>
|
||||
<string name="shared_string_last_used">Востаннє використовувалось</string>
|
||||
<string name="routing_attr_allow_intermittent_description">Дозволити переривчасті водні шляхи</string>
|
||||
<string name="routing_attr_allow_intermittent_name">Дозволити переривчасті водні шляхи</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_description">Надавати перевагу пішохідним маршрутам</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_name">Надавати перевагу пішохідним маршрутам</string>
|
||||
<string name="routing_attr_allow_streams_description">Дозволити потоки та стічні канали</string>
|
||||
<string name="routing_attr_allow_streams_name">Дозволити потоки та стічні канали</string>
|
||||
</resources>
|
|
@ -4014,4 +4014,12 @@
|
|||
<string name="profile_type_osmand_string">OsmAnd 設定檔</string>
|
||||
<string name="profile_type_user_string">使用者設定檔</string>
|
||||
<string name="reverse_all_points">反轉所有點</string>
|
||||
<string name="profile_by_default_description">選取要在應用程式啟動時使用的設定檔。</string>
|
||||
<string name="shared_string_last_used">最後使用</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_description">偏好遠足路線</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_name">偏好遠足路線</string>
|
||||
<string name="routing_attr_allow_streams_description">允許溪流與水溝</string>
|
||||
<string name="routing_attr_allow_streams_name">允許溪流與水溝</string>
|
||||
<string name="routing_attr_allow_intermittent_description">允許間歇水路</string>
|
||||
<string name="routing_attr_allow_intermittent_name">允許間歇水路</string>
|
||||
</resources>
|
|
@ -384,7 +384,7 @@
|
|||
<string name="poi_fuel_electricity">Electricity</string>
|
||||
<string name="poi_aeroway_fuel">Aircraft fuel station</string>
|
||||
<string name="poi_waterway_fuel">Gas station for boats</string>
|
||||
<string name="poi_electricity_combined_charging">Charging station</string>
|
||||
<string name="poi_electricity_combined_charging">Charging station;Electric vehicle charging station;EV charging station;Electric recharging point;Charge point;Electronic charging station;Electric vehicle supply equipment</string>
|
||||
<string name="poi_fuel_wood">Fuel: wood</string>
|
||||
<string name="poi_fuel_charcoal">Fuel: charcoal</string>
|
||||
<string name="poi_fuel_coal">Fuel: coal</string>
|
||||
|
@ -4326,5 +4326,8 @@
|
|||
|
||||
<string name="poi_lavoir">Lavoir</string>
|
||||
|
||||
<string name="poi_swimming_area">Swimming area</string>
|
||||
|
||||
|
||||
|
||||
</resources>
|
||||
|
|
|
@ -11,6 +11,11 @@
|
|||
Thx - Hardy
|
||||
|
||||
-->
|
||||
|
||||
<string name="routing_attr_allow_intermittent_name">Allow intermittent water ways</string>
|
||||
<string name="routing_attr_allow_intermittent_description">Allow intermittent water ways</string>
|
||||
<string name="routing_attr_allow_streams_name">Allow streams and drains</string>
|
||||
<string name="routing_attr_allow_streams_description">Allow streams and drains</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_name">Prefer hiking routes</string>
|
||||
<string name="routing_attr_prefer_hiking_routes_description">Prefer hiking routes</string>
|
||||
<string name="shared_string_last_used">Last used</string>
|
||||
|
|
|
@ -556,6 +556,22 @@ public class TargetPointsHelper {
|
|||
updateRouteAndRefresh(updateRoute);
|
||||
}
|
||||
|
||||
public void reorderIntermediatePoints(List<TargetPoint> points, boolean updateRoute) {
|
||||
cancelAllIntermediatePointsAddressRequests();
|
||||
if (points.size() > 0) {
|
||||
ArrayList<String> names = new ArrayList<>(points.size());
|
||||
ArrayList<LatLon> ls = new ArrayList<>(points.size());
|
||||
for (int i = 0; i < points.size(); i++) {
|
||||
names.add(PointDescription.serializeToString(points.get(i).pointDescription));
|
||||
ls.add(points.get(i).point);
|
||||
}
|
||||
settings.saveIntermediatePoints(ls, names);
|
||||
} else {
|
||||
settings.clearIntermediatePoints();
|
||||
}
|
||||
readFromSettings();
|
||||
updateRouteAndRefresh(updateRoute);
|
||||
}
|
||||
|
||||
public boolean hasTooLongDistanceToNavigate() {
|
||||
if (routingHelper.getAppMode().getRouteService() != RouteService.OSMAND) {
|
||||
|
|
|
@ -8,9 +8,9 @@ import net.osmand.PlatformUtil;
|
|||
import net.osmand.data.LatLon;
|
||||
import net.osmand.map.OsmandRegions;
|
||||
import net.osmand.map.WorldRegion;
|
||||
import net.osmand.plus.CustomRegion;
|
||||
import net.osmand.plus.OsmandApplication;
|
||||
import net.osmand.plus.OsmandPlugin;
|
||||
import net.osmand.plus.CustomRegion;
|
||||
import net.osmand.plus.download.DownloadOsmandIndexesHelper.AssetIndexItem;
|
||||
import net.osmand.plus.inapp.InAppPurchaseHelper;
|
||||
import net.osmand.util.Algorithms;
|
||||
|
@ -21,6 +21,7 @@ import java.io.File;
|
|||
import java.io.FilenameFilter;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.text.DateFormat;
|
||||
import java.text.ParseException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
|
@ -80,7 +81,7 @@ public class DownloadResources extends DownloadResourceGroup {
|
|||
List<IndexItem> items = getWikivoyageItems();
|
||||
if (items != null) {
|
||||
for (IndexItem ii : items) {
|
||||
if (ii.getFileName().equals(fileName)) {
|
||||
if (ii.getTargetFile(app).getName().equals(fileName)) {
|
||||
return ii;
|
||||
}
|
||||
}
|
||||
|
@ -177,6 +178,8 @@ public class DownloadResources extends DownloadResourceGroup {
|
|||
}
|
||||
}
|
||||
if (date != null && !date.equals(indexActivatedDate) && !date.equals(indexFilesDate)) {
|
||||
long oldItemSize = 0;
|
||||
long itemSize = item.getContentSize();
|
||||
if ((item.getType() == DownloadActivityType.NORMAL_FILE && !item.extra)
|
||||
|| item.getType() == DownloadActivityType.ROADS_FILE
|
||||
|| item.getType() == DownloadActivityType.WIKIPEDIA_FILE
|
||||
|
@ -185,15 +188,12 @@ public class DownloadResources extends DownloadResourceGroup {
|
|||
outdated = true;
|
||||
} else if (item.getType() == DownloadActivityType.WIKIVOYAGE_FILE
|
||||
|| item.getType() == DownloadActivityType.TRAVEL_FILE) {
|
||||
long itemSize = item.getContentSize();
|
||||
long oldItemSize = app.getAppPath(IndexConstants.WIKIVOYAGE_INDEX_DIR +
|
||||
oldItemSize = app.getAppPath(IndexConstants.WIKIVOYAGE_INDEX_DIR +
|
||||
item.getTargetFileName()).length();
|
||||
if (itemSize != oldItemSize) {
|
||||
outdated = true;
|
||||
}
|
||||
} else {
|
||||
long itemSize = item.getContentSize();
|
||||
long oldItemSize = 0;
|
||||
if (parsed && item.getTimestamp() > item.getLocalTimestamp()) {
|
||||
outdated = true;
|
||||
} else if (item.getType() == DownloadActivityType.VOICE_FILE) {
|
||||
|
@ -223,12 +223,23 @@ public class DownloadResources extends DownloadResourceGroup {
|
|||
outdated = true;
|
||||
}
|
||||
}
|
||||
if (outdated) {
|
||||
logItemUpdateInfo(item, format, itemSize, oldItemSize);
|
||||
}
|
||||
}
|
||||
item.setOutdated(outdated);
|
||||
return outdated;
|
||||
}
|
||||
|
||||
|
||||
private void logItemUpdateInfo(IndexItem item, DateFormat format, long itemSize, long oldItemSize) {
|
||||
String date = item.getDate(format);
|
||||
String sfName = item.getTargetFileName();
|
||||
String indexActivatedDate = indexActivatedFileNames.get(sfName);
|
||||
String indexFilesDate = indexFileNames.get(sfName);
|
||||
LOG.info("name " + item.getFileName() + " timestamp " + item.timestamp + " localTimestamp " + item.localTimestamp + " date " + date
|
||||
+ " indexActivatedDate " + indexActivatedDate + " indexFilesDate " + indexFilesDate
|
||||
+ " itemSize " + itemSize + " oldItemSize " + oldItemSize);
|
||||
}
|
||||
|
||||
protected void updateFilesToUpdate() {
|
||||
initAlreadyLoadedFiles();
|
||||
|
|
|
@ -13,14 +13,15 @@ import net.osmand.PlatformUtil;
|
|||
import net.osmand.data.LatLon;
|
||||
import net.osmand.data.PointDescription;
|
||||
import net.osmand.map.TileSourceManager;
|
||||
import net.osmand.plus.mapmarkers.MapMarkersGroup;
|
||||
import net.osmand.plus.OsmandApplication;
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.activities.MapActivity;
|
||||
import net.osmand.plus.activities.PluginsFragment;
|
||||
import net.osmand.plus.dashboard.DashboardOnMap.DashboardType;
|
||||
import net.osmand.plus.mapmarkers.MapMarkersDialogFragment;
|
||||
import net.osmand.plus.mapmarkers.MapMarkersGroup;
|
||||
import net.osmand.plus.mapsource.EditMapSourceDialogFragment;
|
||||
import net.osmand.plus.openplacereviews.OPRConstants;
|
||||
import net.osmand.plus.search.QuickSearchDialogFragment;
|
||||
import net.osmand.plus.settings.backend.ApplicationMode;
|
||||
import net.osmand.plus.settings.backend.OsmandSettings;
|
||||
|
@ -36,7 +37,7 @@ import java.util.Map;
|
|||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import static net.osmand.plus.osmedit.oauth.OsmOAuthHelper.*;
|
||||
import static net.osmand.plus.osmedit.oauth.OsmOAuthHelper.OsmAuthorizationListener;
|
||||
|
||||
public class IntentHelper {
|
||||
|
||||
|
@ -66,6 +67,9 @@ public class IntentHelper {
|
|||
if (!applied) {
|
||||
applied = parseOAuthIntent();
|
||||
}
|
||||
if (!applied) {
|
||||
applied = parseOprOAuthIntent();
|
||||
}
|
||||
return applied;
|
||||
}
|
||||
|
||||
|
@ -306,6 +310,22 @@ public class IntentHelper {
|
|||
return false;
|
||||
}
|
||||
|
||||
private boolean parseOprOAuthIntent() {
|
||||
Intent intent = mapActivity.getIntent();
|
||||
if (intent != null && intent.getData() != null) {
|
||||
Uri uri = intent.getData();
|
||||
if (uri.toString().startsWith(OPRConstants.OPR_OAUTH_PREFIX)) {
|
||||
String token = uri.getQueryParameter("opr-token");
|
||||
String username = uri.getQueryParameter("opr-nickname");
|
||||
app.getSettings().OPR_ACCESS_TOKEN.set(token);
|
||||
app.getSettings().OPR_USERNAME.set(username);
|
||||
mapActivity.setIntent(null);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private OsmAuthorizationListener getOnAuthorizeListener() {
|
||||
return new OsmAuthorizationListener() {
|
||||
@Override
|
||||
|
|
|
@ -242,43 +242,45 @@ public class WaypointDialogHelper {
|
|||
}
|
||||
}
|
||||
|
||||
// switch start & finish
|
||||
public static void switchStartAndFinish(TargetPointsHelper targetPointsHelper, TargetPoint finish,
|
||||
Activity ctx, TargetPoint start, OsmandApplication app,
|
||||
WaypointDialogHelper helper) {
|
||||
public static void switchStartAndFinish(OsmandApplication app, Activity ctx, WaypointDialogHelper helper, boolean updateRoute) {
|
||||
TargetPointsHelper targetsHelper = app.getTargetPointsHelper();
|
||||
TargetPoint finish = targetsHelper.getPointToNavigate();
|
||||
TargetPoint start = targetsHelper.getPointToStart();
|
||||
if (finish == null) {
|
||||
app.showShortToastMessage(R.string.mark_final_location_first);
|
||||
} else {
|
||||
targetPointsHelper.setStartPoint(new LatLon(finish.getLatitude(),
|
||||
finish.getLongitude()), false, finish.getPointDescription(ctx));
|
||||
if (start == null) {
|
||||
Location loc = app.getLocationProvider().getLastKnownLocation();
|
||||
if (loc != null) {
|
||||
targetPointsHelper.navigateToPoint(new LatLon(loc.getLatitude(),
|
||||
loc.getLongitude()), true, -1);
|
||||
}
|
||||
} else {
|
||||
targetPointsHelper.navigateToPoint(new LatLon(start.getLatitude(),
|
||||
start.getLongitude()), true, -1, start.getPointDescription(ctx));
|
||||
}
|
||||
switchStartAndFinish(app, start, finish, updateRoute);
|
||||
updateControls(ctx, helper);
|
||||
}
|
||||
}
|
||||
|
||||
public static void reverseAllPoints(OsmandApplication app, Activity ctx,
|
||||
WaypointDialogHelper helper) {
|
||||
TargetPointsHelper targets = app.getTargetPointsHelper();
|
||||
if (!targets.getAllPoints().isEmpty()) {
|
||||
List<TargetPoint> points = targets.getAllPoints();
|
||||
Collections.reverse(points);
|
||||
TargetPoint start = points.get(0);
|
||||
targets.setStartPoint(start.point, false, start.getOriginalPointDescription());
|
||||
points.remove(start);
|
||||
targets.reorderAllTargetPoints(points, true);
|
||||
updateControls(ctx, helper);
|
||||
private static void switchStartAndFinish(OsmandApplication app, TargetPoint start, TargetPoint finish, boolean updateRoute) {
|
||||
TargetPointsHelper targetsHelper = app.getTargetPointsHelper();
|
||||
targetsHelper.setStartPoint(new LatLon(finish.getLatitude(), finish.getLongitude()),
|
||||
false, finish.getPointDescription(app));
|
||||
if (start == null) {
|
||||
Location loc = app.getLocationProvider().getLastKnownLocation();
|
||||
if (loc != null) {
|
||||
targetsHelper.navigateToPoint(new LatLon(loc.getLatitude(),
|
||||
loc.getLongitude()), updateRoute, -1);
|
||||
}
|
||||
} else {
|
||||
targetsHelper.navigateToPoint(new LatLon(start.getLatitude(),
|
||||
start.getLongitude()), updateRoute, -1, start.getPointDescription(app));
|
||||
}
|
||||
}
|
||||
|
||||
public static void reverseAllPoints(OsmandApplication app, Activity ctx, WaypointDialogHelper helper) {
|
||||
TargetPointsHelper targetsHelper = app.getTargetPointsHelper();
|
||||
TargetPoint finish = targetsHelper.getPointToNavigate();
|
||||
TargetPoint start = targetsHelper.getPointToStart();
|
||||
switchStartAndFinish(app, start, finish, false);
|
||||
List<TargetPoint> points = targetsHelper.getIntermediatePoints();
|
||||
Collections.reverse(points);
|
||||
targetsHelper.reorderIntermediatePoints(points, true);
|
||||
updateControls(ctx, helper);
|
||||
}
|
||||
|
||||
public static void updateControls(Activity ctx, WaypointDialogHelper helper) {
|
||||
if (helper != null && helper.helperCallbacks != null) {
|
||||
for (WaypointDialogHelperCallback callback : helper.helperCallbacks) {
|
||||
|
@ -492,15 +494,7 @@ public class WaypointDialogHelper {
|
|||
MapActivity mapActivity = getMapActivity();
|
||||
if (mapActivity != null) {
|
||||
OsmandApplication app = mapActivity.getMyApplication();
|
||||
TargetPointsHelper targetsHelper = app.getTargetPointsHelper();
|
||||
WaypointDialogHelper.switchStartAndFinish(
|
||||
targetsHelper,
|
||||
targetsHelper.getPointToNavigate(),
|
||||
mapActivity,
|
||||
targetsHelper.getPointToStart(),
|
||||
app,
|
||||
mapActivity.getDashboard().getWaypointDialogHelper()
|
||||
);
|
||||
switchStartAndFinish(app, mapActivity, mapActivity.getDashboard().getWaypointDialogHelper(), true);
|
||||
}
|
||||
dismiss();
|
||||
}
|
||||
|
@ -508,27 +502,26 @@ public class WaypointDialogHelper {
|
|||
.create();
|
||||
items.add(reorderStartAndFinishItem);
|
||||
|
||||
BaseBottomSheetItem reorderAllItems = new SimpleBottomSheetItem.Builder()
|
||||
.setIcon(getContentIcon(R.drawable.ic_action_sort_reverse_order))
|
||||
.setTitle(getString(R.string.reverse_all_points))
|
||||
.setLayoutId(R.layout.bottom_sheet_item_simple)
|
||||
.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
MapActivity mapActivity = getMapActivity();
|
||||
if (mapActivity != null) {
|
||||
WaypointDialogHelper.reverseAllPoints(
|
||||
app,
|
||||
mapActivity,
|
||||
mapActivity.getDashboard().getWaypointDialogHelper()
|
||||
);
|
||||
if (!Algorithms.isEmpty(targetsHelper.getIntermediatePoints())) {
|
||||
BaseBottomSheetItem reorderAllItems = new SimpleBottomSheetItem.Builder()
|
||||
.setIcon(getContentIcon(R.drawable.ic_action_sort_reverse_order))
|
||||
.setTitle(getString(R.string.reverse_all_points))
|
||||
.setLayoutId(R.layout.bottom_sheet_item_simple)
|
||||
.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
MapActivity mapActivity = getMapActivity();
|
||||
if (mapActivity != null) {
|
||||
WaypointDialogHelper.reverseAllPoints(
|
||||
app,
|
||||
mapActivity,
|
||||
mapActivity.getDashboard().getWaypointDialogHelper()
|
||||
);
|
||||
}
|
||||
dismiss();
|
||||
}
|
||||
dismiss();
|
||||
}
|
||||
})
|
||||
.create();
|
||||
int intermediateSize = targetsHelper.getIntermediatePoints().size();
|
||||
if (intermediateSize > 2) {
|
||||
})
|
||||
.create();
|
||||
items.add(reorderAllItems);
|
||||
}
|
||||
|
||||
|
|
|
@ -53,7 +53,7 @@ import net.osmand.plus.mapcontextmenu.builders.cards.ImageCard.GetImageCardsTask
|
|||
import net.osmand.plus.mapcontextmenu.builders.cards.NoImagesCard;
|
||||
import net.osmand.plus.mapcontextmenu.controllers.TransportStopController;
|
||||
import net.osmand.plus.openplacereviews.AddPhotosBottomSheetDialogFragment;
|
||||
import net.osmand.plus.openplacereviews.OPRWebviewActivity;
|
||||
import net.osmand.plus.openplacereviews.OPRConstants;
|
||||
import net.osmand.plus.openplacereviews.OprStartFragment;
|
||||
import net.osmand.plus.osmedit.opr.OpenDBAPI;
|
||||
import net.osmand.plus.poi.PoiUIFilter;
|
||||
|
@ -382,10 +382,10 @@ public class MenuBuilder {
|
|||
AddPhotosBottomSheetDialogFragment.showInstance(mapActivity.getSupportFragmentManager());
|
||||
} else {
|
||||
registerResultListener(view);
|
||||
final String baseUrl = OPRWebviewActivity.getBaseUrl(app);
|
||||
final String name = OPRWebviewActivity.getUsernameFromCookie(app);
|
||||
final String privateKey = OPRWebviewActivity.getPrivateKeyFromCookie(app);
|
||||
if (privateKey == null || privateKey.isEmpty()) {
|
||||
final String baseUrl = OPRConstants.getBaseUrl(app);
|
||||
final String name = app.getSettings().OPR_USERNAME.get();
|
||||
final String privateKey = app.getSettings().OPR_ACCESS_TOKEN.get();
|
||||
if (Algorithms.isBlank(privateKey) || Algorithms.isBlank(name)) {
|
||||
OprStartFragment.showInstance(mapActivity.getSupportFragmentManager());
|
||||
return;
|
||||
}
|
||||
|
@ -464,18 +464,20 @@ public class MenuBuilder {
|
|||
|
||||
private void uploadImageToPlace(InputStream image) {
|
||||
InputStream serverData = new ByteArrayInputStream(compressImage(image));
|
||||
final String baseUrl = OPRWebviewActivity.getBaseUrl(app);
|
||||
final String baseUrl = OPRConstants.getBaseUrl(app);
|
||||
String url = baseUrl + "api/ipfs/image";
|
||||
String response = NetworkUtils.sendPostDataRequest(url, serverData);
|
||||
if (response != null) {
|
||||
int res = 0;
|
||||
try {
|
||||
StringBuilder error = new StringBuilder();
|
||||
String privateKey = app.getSettings().OPR_ACCESS_TOKEN.get();
|
||||
String username = app.getSettings().OPR_USERNAME.get();
|
||||
res = openDBAPI.uploadImage(
|
||||
placeId,
|
||||
baseUrl,
|
||||
OPRWebviewActivity.getPrivateKeyFromCookie(app),
|
||||
OPRWebviewActivity.getUsernameFromCookie(app),
|
||||
privateKey,
|
||||
username,
|
||||
response, error);
|
||||
if (res != 200) {
|
||||
showToastMessage(error.toString());
|
||||
|
@ -511,9 +513,9 @@ public class MenuBuilder {
|
|||
|
||||
//This method runs on non main thread
|
||||
private void checkTokenAndShowScreen() {
|
||||
final String baseUrl = OPRWebviewActivity.getBaseUrl(app);
|
||||
final String name = OPRWebviewActivity.getUsernameFromCookie(app);
|
||||
final String privateKey = OPRWebviewActivity.getPrivateKeyFromCookie(app);
|
||||
final String baseUrl = OPRConstants.getBaseUrl(app);
|
||||
final String name = app.getSettings().OPR_USERNAME.get();
|
||||
final String privateKey = app.getSettings().OPR_ACCESS_TOKEN.get();
|
||||
if (openDBAPI.checkPrivateKeyValid(baseUrl, name, privateKey)) {
|
||||
String str = app.getString(R.string.cannot_upload_image);
|
||||
showToastMessage(str);
|
||||
|
|
|
@ -28,7 +28,7 @@ import net.osmand.plus.activities.MapActivity;
|
|||
import net.osmand.plus.mapcontextmenu.MenuBuilder;
|
||||
import net.osmand.plus.mapillary.MapillaryContributeCard;
|
||||
import net.osmand.plus.mapillary.MapillaryImageCard;
|
||||
import net.osmand.plus.openplacereviews.OPRWebviewActivity;
|
||||
import net.osmand.plus.openplacereviews.OPRConstants;
|
||||
import net.osmand.plus.wikimedia.WikiImageHelper;
|
||||
import net.osmand.util.Algorithms;
|
||||
|
||||
|
@ -467,7 +467,7 @@ public abstract class ImageCard extends AbstractCard {
|
|||
if (o instanceof Amenity) {
|
||||
Amenity am = (Amenity) o;
|
||||
long amenityId = am.getId() >> 1;
|
||||
String baseUrl = OPRWebviewActivity.getBaseUrl(app);
|
||||
String baseUrl = OPRConstants.getBaseUrl(app);
|
||||
String url = baseUrl + "api/objects-by-index?type=opr.place&index=osmid&key=" + amenityId;
|
||||
String response = AndroidNetworkUtils.sendRequest(app, url, Collections.<String, String>emptyMap(),
|
||||
"Requesting location images...", false, false);
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
package net.osmand.plus.openplacereviews;
|
||||
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.osmedit.opr.OpenDBAPI;
|
||||
|
||||
public class OPRConstants {
|
||||
public static final String OPR_OAUTH_PREFIX = "opr-oauth";
|
||||
private static final String PURPOSE = OpenDBAPI.PURPOSE;
|
||||
private static final String CALLBACK_URL = OPR_OAUTH_PREFIX + "://osmand_opr_auth";
|
||||
|
||||
public static String getBaseUrl(Context ctx) {
|
||||
return ctx.getString(R.string.opr_base_url);
|
||||
}
|
||||
|
||||
|
||||
public static String getLoginUrl(Context ctx) {
|
||||
return getBaseUrl(ctx) + "login" + getQueryString(ctx);
|
||||
}
|
||||
|
||||
public static String getRegisterUrl(Context ctx) {
|
||||
return getBaseUrl(ctx) + "signup" + getQueryString(ctx);
|
||||
}
|
||||
|
||||
public static String getQueryString(Context ctx) {
|
||||
return "?" + getPurposeParam(ctx) + "&" + getCallbackParam(ctx);
|
||||
}
|
||||
|
||||
public static String getPurposeParam(Context ctx) {
|
||||
return "purpose=" + PURPOSE;
|
||||
}
|
||||
|
||||
public static String getCallbackParam(Context ctx) {
|
||||
return "callback=" + CALLBACK_URL;
|
||||
}
|
||||
}
|
|
@ -1,143 +0,0 @@
|
|||
package net.osmand.plus.openplacereviews;
|
||||
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.webkit.CookieManager;
|
||||
import android.webkit.WebView;
|
||||
import android.webkit.WebViewClient;
|
||||
import android.widget.TextView;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import net.osmand.AndroidUtils;
|
||||
import net.osmand.plus.OsmandApplication;
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.activities.OsmandActionBarActivity;
|
||||
import net.osmand.plus.settings.backend.OsmandSettings;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class OPRWebviewActivity extends OsmandActionBarActivity {
|
||||
public static final String KEY_LOGIN = "LOGIN_KEY";
|
||||
public static final String KEY_TITLE = "TITLE_KEY";
|
||||
private static final String USER_AGENT = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko)";
|
||||
private WebView webView;
|
||||
private boolean isLogin = false;
|
||||
|
||||
public static String getBaseUrl(Context ctx) {
|
||||
return ctx.getString(R.string.opr_base_url);
|
||||
}
|
||||
|
||||
public static String getCookieUrl(Context ctx) {
|
||||
return getBaseUrl(ctx) + "profile";
|
||||
}
|
||||
|
||||
public static String getLoginUrl(Context ctx) {
|
||||
return getBaseUrl(ctx) + "login";
|
||||
}
|
||||
|
||||
public static String getRegisterUrl(Context ctx) {
|
||||
return getBaseUrl(ctx) + "signup";
|
||||
}
|
||||
|
||||
public static List<String> getFinishUrls(Context ctx) {
|
||||
String googleOAuthFinishUrl = getBaseUrl(ctx) + "auth?code=4";
|
||||
String profileUrl = getCookieUrl(ctx);
|
||||
List<String> urls = new ArrayList<>();
|
||||
urls.add(googleOAuthFinishUrl);
|
||||
urls.add(profileUrl);
|
||||
return urls;
|
||||
}
|
||||
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
OsmandApplication app = getMyApplication();
|
||||
OsmandSettings settings = app.getSettings();
|
||||
boolean nightMode = !settings.isLightContent();
|
||||
int themeId = nightMode ? R.style.OsmandDarkTheme_NoActionbar : R.style.OsmandLightTheme_NoActionbar_LightStatusBar;
|
||||
setTheme(themeId);
|
||||
getWindow().setStatusBarColor(ContextCompat.getColor(this, nightMode
|
||||
? R.color.list_background_color_dark : R.color.list_background_color_light));
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_opr_webview);
|
||||
Bundle bundle = getIntent().getExtras();
|
||||
Toolbar toolbar = findViewById(R.id.toolbar);
|
||||
if (bundle != null) {
|
||||
TextView titleView = findViewById(R.id.toolbar_text);
|
||||
String title = bundle.getString(KEY_TITLE, "");
|
||||
titleView.setText(title);
|
||||
}
|
||||
toolbar.setBackgroundDrawable(new ColorDrawable(AndroidUtils.getColorFromAttr(this, R.attr.bg_color)));
|
||||
final Drawable upArrow = app.getUIUtilities().getIcon(AndroidUtils.getNavigationIconResId(this));
|
||||
upArrow.setColorFilter(ContextCompat.getColor(this, R.color.color_favorite_gray), PorterDuff.Mode.SRC_ATOP);
|
||||
toolbar.setNavigationIcon(upArrow);
|
||||
toolbar.setNavigationContentDescription(R.string.access_shared_string_navigate_up);
|
||||
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
onBackPressed();
|
||||
}
|
||||
});
|
||||
webView = findViewById(R.id.printDialogWebview);
|
||||
webView.getSettings().setUserAgentString(USER_AGENT);
|
||||
webView.setWebViewClient(new CloseOnSuccessWebViewClient());
|
||||
webView.getSettings().setJavaScriptEnabled(true);
|
||||
WebView.setWebContentsDebuggingEnabled(true);
|
||||
if (bundle != null) {
|
||||
isLogin = bundle.getBoolean(KEY_LOGIN);
|
||||
if (isLogin) {
|
||||
webView.loadUrl(getLoginUrl(this));
|
||||
} else {
|
||||
webView.loadUrl(getRegisterUrl(this));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onSupportNavigateUp() {
|
||||
onBackPressed();
|
||||
return true;
|
||||
}
|
||||
|
||||
public static String getPrivateKeyFromCookie(Context ctx) {
|
||||
return returnCookieByKey(ctx, "opr-token");
|
||||
}
|
||||
|
||||
public static String getUsernameFromCookie(Context ctx) {
|
||||
return returnCookieByKey(ctx, "opr-nickname");
|
||||
}
|
||||
|
||||
private static String returnCookieByKey(Context ctx, String key) {
|
||||
String CookieValue = null;
|
||||
CookieManager cookieManager = CookieManager.getInstance();
|
||||
String cookies = cookieManager.getCookie(getCookieUrl(ctx));
|
||||
if (cookies == null || cookies.isEmpty()) {
|
||||
return "";
|
||||
}
|
||||
String[] temp = cookies.split(";");
|
||||
for (String ar1 : temp) {
|
||||
if (ar1.contains(key)) {
|
||||
String[] temp1 = ar1.split("=");
|
||||
CookieValue = temp1[1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
return CookieValue;
|
||||
}
|
||||
|
||||
public class CloseOnSuccessWebViewClient extends WebViewClient {
|
||||
@Override
|
||||
public void onPageFinished(WebView view, String url) {
|
||||
for (String furl : getFinishUrls(OPRWebviewActivity.this)) {
|
||||
if (url.contains(furl) && isLogin) {
|
||||
finish();
|
||||
}
|
||||
}
|
||||
super.onPageFinished(view, url);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
package net.osmand.plus.openplacereviews;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.graphics.Typeface;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.text.SpannableString;
|
||||
|
@ -13,15 +13,18 @@ import android.view.LayoutInflater;
|
|||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.browser.customtabs.CustomTabsIntent;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
|
||||
import net.osmand.PlatformUtil;
|
||||
import net.osmand.plus.BuildConfig;
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.UiUtilities;
|
||||
import net.osmand.plus.base.BaseOsmAndFragment;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
|
||||
public class OprStartFragment extends BaseOsmAndFragment {
|
||||
|
@ -50,10 +53,7 @@ public class OprStartFragment extends BaseOsmAndFragment {
|
|||
createAccount.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
Intent i = new Intent(requireContext(), OPRWebviewActivity.class);
|
||||
i.putExtra(OPRWebviewActivity.KEY_TITLE, getString(R.string.register_opr_create_new_account));
|
||||
i.putExtra(OPRWebviewActivity.KEY_LOGIN, false);
|
||||
startActivity(i);
|
||||
handleCreateAccount();
|
||||
}
|
||||
});
|
||||
View haveAccount = v.findViewById(R.id.register_opr_have_account);
|
||||
|
@ -62,16 +62,27 @@ public class OprStartFragment extends BaseOsmAndFragment {
|
|||
haveAccount.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
Intent i = new Intent(requireContext(), OPRWebviewActivity.class);
|
||||
i.putExtra(OPRWebviewActivity.KEY_TITLE, getString(R.string.user_login));
|
||||
i.putExtra(OPRWebviewActivity.KEY_LOGIN, true);
|
||||
startActivity(i);
|
||||
handleHaveAccount();
|
||||
}
|
||||
});
|
||||
setURLSpan(v);
|
||||
return v;
|
||||
}
|
||||
|
||||
private void handleHaveAccount() {
|
||||
String url = OPRConstants.getLoginUrl(requireContext());
|
||||
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
|
||||
CustomTabsIntent customTabsIntent = builder.build();
|
||||
customTabsIntent.launchUrl(requireContext(), Uri.parse(url));
|
||||
}
|
||||
|
||||
private void handleCreateAccount() {
|
||||
String url = OPRConstants.getRegisterUrl(requireContext());
|
||||
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
|
||||
CustomTabsIntent customTabsIntent = builder.build();
|
||||
customTabsIntent.launchUrl(requireContext(), Uri.parse(url));
|
||||
}
|
||||
|
||||
private void setURLSpan(View v) {
|
||||
String desc = requireContext().getString(R.string.register_on_openplacereviews_desc);
|
||||
SpannableString ss = new SpannableString(desc);
|
||||
|
|
|
@ -72,20 +72,13 @@ public class SendPoiBottomSheetFragment extends MenuBottomSheetDialogFragment {
|
|||
String userNameOpenID = settings.USER_NAME.get();
|
||||
String userName = isLoginOAuth(settings) ? userNameOAuth : userNameOpenID;
|
||||
accountName.setText(userName);
|
||||
closeChangeSet.setBackgroundResource(isNightMode ? R.drawable.layout_bg_dark : R.drawable.layout_bg);
|
||||
final int paddingSmall = app.getResources().getDimensionPixelSize(R.dimen.content_padding_small);
|
||||
closeChangeSet.setPadding(paddingSmall, 0, paddingSmall, 0);
|
||||
closeChangeSet.setChecked(true);
|
||||
setCloseChangeSet(isNightMode, paddingSmall);
|
||||
closeChangeSet.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||
if (isNightMode) {
|
||||
closeChangeSet.setBackgroundResource(
|
||||
isChecked ? R.drawable.layout_bg_dark_solid : R.drawable.layout_bg_dark);
|
||||
} else {
|
||||
closeChangeSet.setBackgroundResource(
|
||||
isChecked ? R.drawable.layout_bg_solid : R.drawable.layout_bg);
|
||||
}
|
||||
closeChangeSet.setPadding(paddingSmall, 0, paddingSmall, 0);
|
||||
setCloseChangeSet(isNightMode, paddingSmall);
|
||||
}
|
||||
});
|
||||
LinearLayout account = sendOsmPoiView.findViewById(R.id.account_container);
|
||||
|
@ -254,5 +247,16 @@ public class SendPoiBottomSheetFragment extends MenuBottomSheetDialogFragment {
|
|||
}
|
||||
return comment;
|
||||
}
|
||||
|
||||
private void setCloseChangeSet(boolean isNightMode, int paddingSmall) {
|
||||
if (isNightMode) {
|
||||
closeChangeSet.setBackgroundResource(
|
||||
closeChangeSet.isChecked() ? R.drawable.layout_bg_dark_solid : R.drawable.layout_bg_dark);
|
||||
} else {
|
||||
closeChangeSet.setBackgroundResource(
|
||||
closeChangeSet.isChecked() ? R.drawable.layout_bg_solid : R.drawable.layout_bg);
|
||||
}
|
||||
closeChangeSet.setPadding(paddingSmall, 0, paddingSmall, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -37,6 +37,7 @@ import static org.openplacereviews.opendb.SecUtils.signMessageWithKeyBase64;
|
|||
|
||||
|
||||
public class OpenDBAPI {
|
||||
public static final String PURPOSE = "osmand-android";
|
||||
private static final Log log = PlatformUtil.getLog(SecUtils.class);
|
||||
private static final String checkLoginEndpoint = "api/auth/user-check-loginkey?";
|
||||
private static final String LOGIN_SUCCESS_MESSAGE = "{\"result\":\"OK\"}";
|
||||
|
@ -45,7 +46,7 @@ public class OpenDBAPI {
|
|||
/*
|
||||
* method for check if user is loggined in blockchain
|
||||
* params
|
||||
* - username: blockchain username in format "openplacereviews:test_1"
|
||||
* - username: blockchain username in format "openplacereviews"
|
||||
* - privatekey: "base64:PKCS#8:actualKey"
|
||||
* Need to encode key
|
||||
* Do not call on mainThread
|
||||
|
@ -53,7 +54,8 @@ public class OpenDBAPI {
|
|||
public boolean checkPrivateKeyValid(String baseUrl, String username, String privateKey) {
|
||||
String url = null;
|
||||
try {
|
||||
url = baseUrl + checkLoginEndpoint +
|
||||
String purposeParam = "purpose=" + PURPOSE;
|
||||
url = baseUrl + checkLoginEndpoint + purposeParam + "&" +
|
||||
"name=" +
|
||||
username +
|
||||
"&" +
|
||||
|
@ -74,7 +76,7 @@ public class OpenDBAPI {
|
|||
Security.addProvider(new BouncyCastleProvider());
|
||||
}
|
||||
KeyPair kp = SecUtils.getKeyPair(ALGO_EC, privateKey, null);
|
||||
String signed = username + ":opr-web";
|
||||
String signed = username + ":" + PURPOSE;
|
||||
|
||||
JsonFormatter formatter = new JsonFormatter();
|
||||
OPRImage oprImage = new GsonBuilder().create().fromJson(image, OPRImage.class);
|
||||
|
|
|
@ -27,8 +27,6 @@ import net.osmand.data.FavouritePoint;
|
|||
import net.osmand.data.LatLon;
|
||||
import net.osmand.data.PointDescription;
|
||||
import net.osmand.plus.FavouritesDbHelper;
|
||||
import net.osmand.plus.mapmarkers.MapMarkersHelper;
|
||||
import net.osmand.plus.mapmarkers.MapMarker;
|
||||
import net.osmand.plus.OsmAndLocationProvider;
|
||||
import net.osmand.plus.OsmandApplication;
|
||||
import net.osmand.plus.R;
|
||||
|
@ -46,6 +44,8 @@ import net.osmand.plus.helpers.FontCache;
|
|||
import net.osmand.plus.helpers.MapMarkerDialogHelper;
|
||||
import net.osmand.plus.helpers.WaypointDialogHelper;
|
||||
import net.osmand.plus.mapcontextmenu.other.FavouritesBottomSheetMenuFragment;
|
||||
import net.osmand.plus.mapmarkers.MapMarker;
|
||||
import net.osmand.plus.mapmarkers.MapMarkersHelper;
|
||||
import net.osmand.plus.routepreparationmenu.MapRouteInfoMenu.PointType;
|
||||
import net.osmand.plus.search.QuickSearchDialogFragment;
|
||||
import net.osmand.plus.widgets.style.CustomTypefaceSpan;
|
||||
|
@ -348,9 +348,8 @@ public class AddPointBottomSheetDialog extends MenuBottomSheetDialogFragment {
|
|||
mapActivity.getMyApplication().showShortToastMessage(R.string.route_add_start_point);
|
||||
return;
|
||||
}
|
||||
WaypointDialogHelper.switchStartAndFinish(targetsHelper, targetsHelper.getPointToNavigate(),
|
||||
mapActivity, targetsHelper.getPointToStart(), mapActivity.getMyApplication(),
|
||||
mapActivity.getDashboard().getWaypointDialogHelper());
|
||||
WaypointDialogHelper.switchStartAndFinish(mapActivity.getMyApplication(), mapActivity,
|
||||
mapActivity.getDashboard().getWaypointDialogHelper(), true);
|
||||
}
|
||||
dismiss();
|
||||
}
|
||||
|
|
|
@ -65,6 +65,7 @@ import net.osmand.plus.base.ContextMenuFragment.MenuState;
|
|||
import net.osmand.plus.helpers.AndroidUiHelper;
|
||||
import net.osmand.plus.helpers.AvoidSpecificRoads.AvoidRoadInfo;
|
||||
import net.osmand.plus.helpers.GpxUiHelper;
|
||||
import net.osmand.plus.helpers.WaypointDialogHelper;
|
||||
import net.osmand.plus.helpers.WaypointHelper;
|
||||
import net.osmand.plus.mapcontextmenu.other.TrackDetailsMenuFragment;
|
||||
import net.osmand.plus.mapmarkers.MapMarker;
|
||||
|
@ -1853,9 +1854,13 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener
|
|||
new PointDescription(PointDescription.POINT_TYPE_MY_LOCATION, mapActivity.getString(R.string.shared_string_my_location)));
|
||||
}
|
||||
if (startPoint != null) {
|
||||
targetPointsHelper.navigateToPoint(startPoint.point, false, -1, startPoint.getPointDescription(mapActivity));
|
||||
targetPointsHelper.setStartPoint(endPoint.point, false, endPoint.getPointDescription(mapActivity));
|
||||
targetPointsHelper.updateRouteAndRefresh(true);
|
||||
int intermediateSize = targetPointsHelper.getIntermediatePoints().size();
|
||||
if (intermediateSize > 1) {
|
||||
WaypointDialogHelper.reverseAllPoints(app, mapActivity, mapActivity.getDashboard().getWaypointDialogHelper());
|
||||
} else {
|
||||
WaypointDialogHelper.switchStartAndFinish(mapActivity.getMyApplication(),
|
||||
mapActivity, mapActivity.getDashboard().getWaypointDialogHelper(), true);
|
||||
}
|
||||
} else {
|
||||
app.showShortToastMessage(R.string.route_add_start_point);
|
||||
}
|
||||
|
|
|
@ -43,7 +43,7 @@ public class CurrentStreetName {
|
|||
String rf = n.directionInfo.getRef();
|
||||
String dn = n.directionInfo.getDestinationName();
|
||||
isSet = !(Algorithms.isEmpty(nm) && Algorithms.isEmpty(rf) && Algorithms.isEmpty(dn));
|
||||
streetName.text = RoutingHelperUtils.formatStreetName(nm, null, dn, "»");
|
||||
streetName.text = RoutingHelperUtils.formatStreetName(nm, rf, dn, "»");
|
||||
streetName.turnType = n.directionInfo.getTurnType();
|
||||
streetName.shieldObject = n.directionInfo.getRouteDataObject();
|
||||
if (streetName.turnType == null) {
|
||||
|
@ -62,7 +62,8 @@ public class CurrentStreetName {
|
|||
if (rs != null) {
|
||||
streetName.text = getRouteSegmentStreetName(routingHelper, rs, false);
|
||||
if (Algorithms.isEmpty(streetName.text)) {
|
||||
isSet = !Algorithms.isEmpty(getRouteSegmentStreetName(routingHelper, rs, true));
|
||||
streetName.text = getRouteSegmentStreetName(routingHelper, rs, true);
|
||||
isSet = !Algorithms.isEmpty(streetName.text);
|
||||
} else {
|
||||
isSet = true;
|
||||
}
|
||||
|
|
|
@ -1163,6 +1163,12 @@ public class OsmandSettings {
|
|||
public final OsmandPreference<String> USER_ACCESS_TOKEN_SECRET =
|
||||
new StringPreference(this, "user_access_token_secret", "").makeGlobal();
|
||||
|
||||
public final OsmandPreference<String> OPR_ACCESS_TOKEN =
|
||||
new StringPreference(this, "opr_user_access_token_secret", "").makeGlobal();
|
||||
|
||||
public final OsmandPreference<String> OPR_USERNAME =
|
||||
new StringPreference(this, "opr_username_secret", "").makeGlobal();
|
||||
|
||||
// this value boolean is synchronized with settings_pref.xml preference offline POI/Bugs edition
|
||||
public final OsmandPreference<Boolean> OFFLINE_EDITION = new BooleanPreference(this, "offline_osm_editing", true).makeGlobal().makeShared();
|
||||
public final OsmandPreference<Boolean> USE_DEV_URL = new BooleanPreference(this, "use_dev_url", false).makeGlobal().makeShared();
|
||||
|
|
|
@ -301,7 +301,7 @@ public class WikiArticleHelper {
|
|||
return null;
|
||||
}
|
||||
String firstParagraphHtml = content.substring(firstParagraphStart, firstParagraphEnd + P_CLOSED.length());
|
||||
while (firstParagraphHtml.length() == (P_OPENED.length() + P_CLOSED.length())
|
||||
while (firstParagraphHtml.substring(P_OPENED.length(), firstParagraphHtml.length() - P_CLOSED.length()).trim().isEmpty()
|
||||
&& (firstParagraphEnd + P_CLOSED.length()) < content.length()) {
|
||||
firstParagraphStart = content.indexOf(P_OPENED, firstParagraphEnd);
|
||||
firstParagraphEnd = firstParagraphStart == -1 ? -1 : content.indexOf(P_CLOSED, firstParagraphStart);
|
||||
|
|
|
@ -45,6 +45,7 @@ public class TravelArticle {
|
|||
String lang;
|
||||
String contentsJson;
|
||||
String aggregatedPartOf;
|
||||
String fullContent;
|
||||
|
||||
@NonNull
|
||||
public TravelArticleIdentifier generateIdentifier() {
|
||||
|
|
|
@ -48,6 +48,7 @@ public class TravelDbHelper implements TravelHelper {
|
|||
|
||||
private static final Log LOG = PlatformUtil.getLog(TravelDbHelper.class);
|
||||
|
||||
private static final String WORLD_WIKIVOYAGE_FILE_NAME = "World_wikivoyage.sqlite";
|
||||
private static final String ARTICLES_TABLE_NAME = "travel_articles";
|
||||
private static final String POPULAR_TABLE_NAME = "popular_articles";
|
||||
private static final String ARTICLES_POP_INDEX = "popularity_index";
|
||||
|
@ -187,6 +188,11 @@ public class TravelDbHelper implements TravelHelper {
|
|||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getWikivoyageFileName() {
|
||||
return WORLD_WIKIVOYAGE_FILE_NAME;
|
||||
}
|
||||
|
||||
public List<File> getExistingTravelBooks() {
|
||||
return existingTravelBooks;
|
||||
}
|
||||
|
|
|
@ -59,4 +59,6 @@ public interface TravelHelper {
|
|||
// For TravelOBFHelper it could always return "" and should be no problem
|
||||
// Bookmarks should be refactored properly to support multiple files
|
||||
String getSelectedTravelBookName();
|
||||
|
||||
String getWikivoyageFileName();
|
||||
}
|
||||
|
|
|
@ -9,7 +9,6 @@ import net.osmand.plus.api.SQLiteAPI.SQLiteConnection;
|
|||
import net.osmand.plus.api.SQLiteAPI.SQLiteCursor;
|
||||
import net.osmand.plus.wikipedia.WikiArticleHelper;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
|
@ -119,6 +118,8 @@ public class TravelLocalDataHelper {
|
|||
saved.lat = article.lat;
|
||||
saved.lon = article.lon;
|
||||
saved.routeId = article.routeId;
|
||||
saved.fullContent = article.getContent();
|
||||
saved.contentsJson = article.contentsJson;
|
||||
savedArticles.add(saved);
|
||||
dbHelper.addSavedArticle(saved);
|
||||
notifySavedUpdated();
|
||||
|
@ -162,6 +163,18 @@ public class TravelLocalDataHelper {
|
|||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public TravelArticle getSavedArticle(String routeId, String lang) {
|
||||
for (TravelArticle article : savedArticles) {
|
||||
if (article.routeId != null && article.routeId.equals(routeId)
|
||||
&& article.lang != null && article.lang.equals(lang)) {
|
||||
article.content = article.fullContent;
|
||||
return article;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public interface Listener {
|
||||
|
||||
void savedArticlesUpdated();
|
||||
|
@ -169,7 +182,7 @@ public class TravelLocalDataHelper {
|
|||
|
||||
private static class WikivoyageLocalDataDbHelper {
|
||||
|
||||
private static final int DB_VERSION = 5;
|
||||
private static final int DB_VERSION = 6;
|
||||
private static final String DB_NAME = "wikivoyage_local_data";
|
||||
|
||||
private static final String HISTORY_TABLE_NAME = "wikivoyage_search_history";
|
||||
|
@ -204,6 +217,8 @@ public class TravelLocalDataHelper {
|
|||
private static final String BOOKMARKS_COL_LAT = "lat";
|
||||
private static final String BOOKMARKS_COL_LON = "lon";
|
||||
private static final String BOOKMARKS_COL_ROUTE_ID = "route_id";
|
||||
private static final String BOOKMARKS_COL_CONTENT_JSON = "content_json";
|
||||
private static final String BOOKMARKS_COL_CONTENT = "content";
|
||||
|
||||
private static final String BOOKMARKS_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS " +
|
||||
BOOKMARKS_TABLE_NAME + " (" +
|
||||
|
@ -215,7 +230,9 @@ public class TravelLocalDataHelper {
|
|||
BOOKMARKS_COL_TRAVEL_BOOK + " TEXT, " +
|
||||
BOOKMARKS_COL_LAT + " double, " +
|
||||
BOOKMARKS_COL_LON + " double, " +
|
||||
BOOKMARKS_COL_ROUTE_ID + " TEXT" + ");";
|
||||
BOOKMARKS_COL_ROUTE_ID + " TEXT, " +
|
||||
BOOKMARKS_COL_CONTENT_JSON + " TEXT, " +
|
||||
BOOKMARKS_COL_CONTENT + " TEXT" + ");";
|
||||
|
||||
private static final String BOOKMARKS_TABLE_SELECT = "SELECT " +
|
||||
BOOKMARKS_COL_ARTICLE_TITLE + ", " +
|
||||
|
@ -225,7 +242,9 @@ public class TravelLocalDataHelper {
|
|||
BOOKMARKS_COL_PARTIAL_CONTENT + ", " +
|
||||
BOOKMARKS_COL_LAT + ", " +
|
||||
BOOKMARKS_COL_LON + ", " +
|
||||
BOOKMARKS_COL_ROUTE_ID +
|
||||
BOOKMARKS_COL_ROUTE_ID + ", " +
|
||||
BOOKMARKS_COL_CONTENT_JSON + ", " +
|
||||
BOOKMARKS_COL_CONTENT +
|
||||
" FROM " + BOOKMARKS_TABLE_NAME;
|
||||
|
||||
private final OsmandApplication context;
|
||||
|
@ -278,6 +297,10 @@ public class TravelLocalDataHelper {
|
|||
if (oldVersion < 5) {
|
||||
conn.execSQL("ALTER TABLE " + BOOKMARKS_TABLE_NAME + " ADD " + BOOKMARKS_COL_ROUTE_ID + " TEXT");
|
||||
}
|
||||
if (oldVersion < 6) {
|
||||
conn.execSQL("ALTER TABLE " + BOOKMARKS_TABLE_NAME + " ADD " + BOOKMARKS_COL_CONTENT_JSON + " TEXT");
|
||||
conn.execSQL("ALTER TABLE " + BOOKMARKS_TABLE_NAME + " ADD " + BOOKMARKS_COL_CONTENT + " TEXT");
|
||||
}
|
||||
}
|
||||
|
||||
@NonNull
|
||||
|
@ -428,11 +451,14 @@ public class TravelLocalDataHelper {
|
|||
BOOKMARKS_COL_TRAVEL_BOOK + ", " +
|
||||
BOOKMARKS_COL_LAT + ", " +
|
||||
BOOKMARKS_COL_LON + ", " +
|
||||
BOOKMARKS_COL_ROUTE_ID +
|
||||
") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
||||
BOOKMARKS_COL_ROUTE_ID + ", " +
|
||||
BOOKMARKS_COL_CONTENT_JSON + ", " +
|
||||
BOOKMARKS_COL_CONTENT +
|
||||
") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
||||
conn.execSQL(query, new Object[]{article.title, article.lang,
|
||||
article.aggregatedPartOf, article.imageTitle, article.content,
|
||||
travelBook, article.lat, article.lon, article.routeId});
|
||||
travelBook, article.lat, article.lon, article.routeId, article.contentsJson,
|
||||
article.fullContent});
|
||||
} finally {
|
||||
conn.close();
|
||||
}
|
||||
|
@ -484,6 +510,8 @@ public class TravelLocalDataHelper {
|
|||
res.lat = cursor.getDouble(cursor.getColumnIndex(BOOKMARKS_COL_LAT));
|
||||
res.lon = cursor.getDouble(cursor.getColumnIndex(BOOKMARKS_COL_LON));
|
||||
res.routeId = cursor.getString(cursor.getColumnIndex(BOOKMARKS_COL_ROUTE_ID));
|
||||
res.contentsJson = cursor.getString(cursor.getColumnIndex(BOOKMARKS_COL_CONTENT_JSON));
|
||||
res.fullContent = cursor.getString(cursor.getColumnIndex(BOOKMARKS_COL_CONTENT));
|
||||
|
||||
return res;
|
||||
}
|
||||
|
|
|
@ -46,6 +46,7 @@ import java.util.concurrent.ConcurrentHashMap;
|
|||
public class TravelObfHelper implements TravelHelper {
|
||||
|
||||
private static final Log LOG = PlatformUtil.getLog(TravelObfHelper.class);
|
||||
private static final String WORLD_WIKIVOYAGE_FILE_NAME = "World_wikivoyage.travel.obf";
|
||||
public static final String ROUTE_ARTICLE = "route_article";
|
||||
public static final int POPULAR_ARTICLES_SEARCH_RADIUS = 100000;
|
||||
public static final int ARTICLE_SEARCH_RADIUS = 50000;
|
||||
|
@ -548,4 +549,9 @@ public class TravelObfHelper implements TravelHelper {
|
|||
public String getSelectedTravelBookName() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getWikivoyageFileName() {
|
||||
return WORLD_WIKIVOYAGE_FILE_NAME;
|
||||
}
|
||||
}
|
|
@ -142,7 +142,9 @@ public class ExploreRvAdapter extends RecyclerView.Adapter<RecyclerView.ViewHold
|
|||
|
||||
public void addNeededMapsCard(TravelNeededMapsCard card) {
|
||||
this.neededMapsCard = card;
|
||||
if (addItem(getNeededMapsCardPosition(), card)) {
|
||||
if (neededMapsCardExists(getNeededMapsCardPosition())) {
|
||||
updateNeededMapsCard(false);
|
||||
} else if (addItem(getNeededMapsCardPosition(), card)) {
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
}
|
||||
|
@ -183,7 +185,9 @@ public class ExploreRvAdapter extends RecyclerView.Adapter<RecyclerView.ViewHold
|
|||
|
||||
public void addDownloadUpdateCard(TravelDownloadUpdateCard card) {
|
||||
this.downloadCard = card;
|
||||
if (addItem(getDownloadUpdateCardPosition(), card)) {
|
||||
if (downloadUpdateCardExists(getDownloadUpdateCardPosition())) {
|
||||
updateDownloadUpdateCard(false);
|
||||
} else if (addItem(getDownloadUpdateCardPosition(), card)) {
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -45,8 +45,6 @@ import java.util.List;
|
|||
|
||||
public class ExploreTabFragment extends BaseOsmAndFragment implements DownloadEvents, TravelLocalDataHelper.Listener {
|
||||
|
||||
private static final String WORLD_WIKIVOYAGE_FILE_NAME = "World_wikivoyage.sqlite";
|
||||
|
||||
private static boolean SHOW_TRAVEL_UPDATE_CARD = true;
|
||||
private static boolean SHOW_TRAVEL_NEEDED_MAPS_CARD = true;
|
||||
|
||||
|
@ -342,14 +340,6 @@ public class ExploreTabFragment extends BaseOsmAndFragment implements DownloadEv
|
|||
return res.toArray(new IndexItem[0]);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
private String getWikivoyageFileName() {
|
||||
// OsmandApplication app = getMyApplication();
|
||||
// File selectedTravelBook = app != null ? app.getTravelDbHelper().getSelectedTravelBook() : null;
|
||||
// return selectedTravelBook == null ? WORLD_WIKIVOYAGE_FILE_NAME : selectedTravelBook.getName();
|
||||
return WORLD_WIKIVOYAGE_FILE_NAME;
|
||||
}
|
||||
|
||||
private void removeDownloadUpdateCard() {
|
||||
if (adapter != null) {
|
||||
adapter.removeDownloadUpdateCard();
|
||||
|
@ -379,7 +369,7 @@ public class ExploreTabFragment extends BaseOsmAndFragment implements DownloadEv
|
|||
ProcessIndexItemsTask(ExploreTabFragment fragment) {
|
||||
app = fragment.getMyApplication();
|
||||
weakFragment = new WeakReference<>(fragment);
|
||||
fileName = fragment.getWikivoyageFileName();
|
||||
fileName = app.getTravelHelper().getWikivoyageFileName();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -161,7 +161,8 @@ public class SavedArticlesTabFragment extends BaseOsmAndFragment implements Trav
|
|||
}
|
||||
TravelArticle oldArticle = (TravelArticle) oldItem;
|
||||
TravelArticle newArticle = (TravelArticle) newItem;
|
||||
return oldArticle.getRouteId().equals(newArticle.getRouteId())
|
||||
return oldArticle.getRouteId() != null && oldArticle.getLang() != null &&
|
||||
oldArticle.getRouteId().equals(newArticle.getRouteId())
|
||||
&& oldArticle.getLang().equals(newArticle.getLang());
|
||||
}
|
||||
return false;
|
||||
|
|
Loading…
Reference in a new issue