Merge branch 'master' into imp_exp_voice
# Conflicts: # OsmAnd/src/net/osmand/plus/settings/backend/ExportSettingsType.java # OsmAnd/src/net/osmand/plus/settings/backend/backup/SettingsHelper.java # OsmAnd/src/net/osmand/plus/settings/fragments/ExportImportSettingsAdapter.java # OsmAnd/src/net/osmand/plus/settings/fragments/ImportDuplicatesFragment.java
This commit is contained in:
commit
aa1ab94612
79 changed files with 1620 additions and 249 deletions
|
@ -14,6 +14,10 @@
|
|||
|
||||
package com.jwetherell.openmap.common;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class MGRSPoint extends ZonedUTMPoint {
|
||||
|
||||
/**
|
||||
|
@ -104,6 +108,15 @@ public class MGRSPoint extends ZonedUTMPoint {
|
|||
* an UPPERCASE coordinate string is expected.
|
||||
*/
|
||||
protected void decode(String mgrsString) throws NumberFormatException {
|
||||
if (mgrsString.contains(" ")) {
|
||||
String[] parts = mgrsString.split(" ");
|
||||
StringBuilder s = new StringBuilder();
|
||||
for (String i : parts) {
|
||||
s.append(i);
|
||||
}
|
||||
mgrsString = s.toString();
|
||||
}
|
||||
|
||||
if (mgrsString == null || mgrsString.length() == 0) {
|
||||
throw new NumberFormatException("MGRSPoint coverting from nothing");
|
||||
}
|
||||
|
@ -633,6 +646,97 @@ public class MGRSPoint extends ZonedUTMPoint {
|
|||
return twoLetter;
|
||||
}
|
||||
|
||||
public String toFlavoredString() {
|
||||
try {
|
||||
List<String> all = new ArrayList<>();
|
||||
for (int i = 0; i <= mgrs.length(); i++) {
|
||||
if (Character.isAlphabetic(mgrs.charAt(i))){
|
||||
all.add(mgrs.substring(0,i+1));
|
||||
all.add(mgrs.substring(i+1,i+3));
|
||||
String remains = mgrs.substring(i+3);
|
||||
all.add(remains.substring(0,remains.length()/2));
|
||||
all.add(remains.substring(remains.length()/2));
|
||||
break;
|
||||
}
|
||||
}
|
||||
StringBuilder os = new StringBuilder();
|
||||
for(String part: all){
|
||||
if (os.length() > 0) os.append(" ");
|
||||
os.append(part);
|
||||
}
|
||||
return os.toString();
|
||||
}catch (Exception e){
|
||||
return mgrs;
|
||||
}
|
||||
}
|
||||
|
||||
public String toFlavoredString(int accuracy) {
|
||||
try {
|
||||
List<String> all = new ArrayList<>();
|
||||
for (int i = 0; i <= mgrs.length(); i++) {
|
||||
if (Character.isAlphabetic(mgrs.charAt(i))){
|
||||
all.add(mgrs.substring(0,i+1));
|
||||
all.add(mgrs.substring(i+1,i+3));
|
||||
String remains = mgrs.substring(i+3);
|
||||
int easting = Integer.parseInt(remains.substring(0,remains.length()/2));
|
||||
int northing = Integer.parseInt(remains.substring(remains.length()/2));
|
||||
double resolution = Math.pow(10, getAccuracy() - accuracy);
|
||||
long roundedEasting = Math.round(easting/resolution);
|
||||
long roundedNorthing = Math.round(northing/resolution);
|
||||
int eastShift = 0;
|
||||
int northShift = 0;
|
||||
if (roundedEasting == resolution*10){
|
||||
roundedEasting = 0L;
|
||||
eastShift = 1;
|
||||
}
|
||||
if (roundedNorthing == resolution*10){
|
||||
roundedNorthing = 0L;
|
||||
northShift = 1;
|
||||
}
|
||||
if (eastShift != 0 || northShift != 0){
|
||||
all.set(1, shiftChar(all.get(1), eastShift, northShift));
|
||||
String zero = "";
|
||||
}
|
||||
|
||||
|
||||
all.add(String.format("%0" + accuracy + "d", roundedEasting));
|
||||
all.add(String.format("%0" + accuracy + "d", roundedNorthing));
|
||||
break;
|
||||
}
|
||||
}
|
||||
StringBuilder os = new StringBuilder();
|
||||
for(String part: all){
|
||||
if (os.length() > 0) os.append(" ");
|
||||
os.append(part);
|
||||
}
|
||||
return os.toString();
|
||||
}catch (Exception e){
|
||||
return toFlavoredString();
|
||||
}
|
||||
}
|
||||
|
||||
private static String shiftChar(String chars, int east, int north){
|
||||
ArrayList<Character> keys = new ArrayList<Character>(
|
||||
Arrays.asList('A','B','C','D','E','F','G','H','J','K','L','M','N','P','Q','R','S','T','U','V','W','X','Y','Z'));
|
||||
StringBuilder s = new StringBuilder();
|
||||
if (east != 0){
|
||||
int idx = keys.indexOf(chars.charAt(0));
|
||||
idx += east;
|
||||
if (idx >= keys.size()) idx -= keys.size();
|
||||
if (idx < 0) idx += keys.size();
|
||||
s.append(keys.get(idx));
|
||||
}else s.append(chars.charAt(0));
|
||||
if (north != 0){
|
||||
int idx = keys.indexOf(chars.charAt(1));
|
||||
idx += north;
|
||||
if (idx >= keys.size()) idx -= keys.size();
|
||||
if (idx < 0) idx += keys.size();
|
||||
s.append(keys.get(idx));
|
||||
}else s.append(chars.charAt(1));
|
||||
return s.toString();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
|
|
|
@ -15,6 +15,7 @@ public class LocationConvert {
|
|||
public static final int FORMAT_SECONDS = 2;
|
||||
public static final int UTM_FORMAT = 3;
|
||||
public static final int OLC_FORMAT = 4;
|
||||
public static final int MGRS_FORMAT = 5;
|
||||
private static final char DELIM = ':';
|
||||
private static final char DELIMITER_DEGREES = '°';
|
||||
private static final char DELIMITER_MINUTES = '′';
|
||||
|
|
|
@ -3,6 +3,7 @@ package net.osmand.util;
|
|||
import com.google.openlocationcode.OpenLocationCode;
|
||||
import com.google.openlocationcode.OpenLocationCode.CodeArea;
|
||||
import com.jwetherell.openmap.common.LatLonPoint;
|
||||
import com.jwetherell.openmap.common.MGRSPoint;
|
||||
import com.jwetherell.openmap.common.UTMPoint;
|
||||
|
||||
import net.osmand.data.LatLon;
|
||||
|
@ -111,7 +112,7 @@ public class LocationParser {
|
|||
return null;
|
||||
}
|
||||
// detect UTM
|
||||
if (all.size() == 4 && d.size() == 3 && all.get(1) instanceof String) {
|
||||
if (all.size() == 4 && d.size() == 3 && all.get(1) instanceof String && ((String) all.get(1)).length() == 1) {
|
||||
char ch = all.get(1).toString().charAt(0);
|
||||
if (Character.isLetter(ch)) {
|
||||
UTMPoint upoint = new UTMPoint(d.get(2), d.get(1), d.get(0).intValue(), ch);
|
||||
|
@ -120,7 +121,7 @@ public class LocationParser {
|
|||
}
|
||||
}
|
||||
|
||||
if (all.size() == 3 && d.size() == 2 && all.get(1) instanceof String) {
|
||||
if (all.size() == 3 && d.size() == 2 && all.get(1) instanceof String && ((String) all.get(1)).length() == 1) {
|
||||
char ch = all.get(1).toString().charAt(0);
|
||||
String combined = strings.get(2);
|
||||
if (Character.isLetter(ch)) {
|
||||
|
@ -135,6 +136,17 @@ public class LocationParser {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
//detect MGRS
|
||||
if (all.size() >= 3 && (d.size() == 2 || d.size() == 3) && all.get(1) instanceof String) {
|
||||
try {
|
||||
MGRSPoint mgrsPoint = new MGRSPoint(locPhrase);
|
||||
LatLonPoint ll = mgrsPoint.toLatLonPoint();
|
||||
return validateAndCreateLatLon(ll.getLatitude(), ll.getLongitude());
|
||||
} catch (NumberFormatException e) {
|
||||
//do nothing
|
||||
}
|
||||
}
|
||||
// try to find split lat/lon position
|
||||
int jointNumbers = 0;
|
||||
int lastJoin = 0;
|
||||
|
|
|
@ -268,4 +268,8 @@
|
|||
<string name="last_response_duration">Última respuesta: hace %1$s</string>
|
||||
<string name="duration_ago">hace %1$s</string>
|
||||
<string name="shared_string_error_short">ERR</string>
|
||||
<string name="shared_string_export">Exportar</string>
|
||||
<string name="logcat_buffer">Búfer de Logcat</string>
|
||||
<string name="logcat_buffer_descr">Selecciona y comparte logs detallados de la app</string>
|
||||
<string name="send_report">Enviar informe</string>
|
||||
</resources>
|
211
OsmAnd-telegram/res/values-is/strings.xml
Normal file
211
OsmAnd-telegram/res/values-is/strings.xml
Normal file
|
@ -0,0 +1,211 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="units_and_formats">Einingar og snið þeirra</string>
|
||||
<string name="install_osmand">Setja upp OsmAnd</string>
|
||||
<string name="proxy_password">Lykilorð</string>
|
||||
<string name="average_altitude">Meðalhæð</string>
|
||||
<string name="shared_string_hide">Fela</string>
|
||||
<string name="gps_points_in_buffer">sendi (%1$d í biðminni)</string>
|
||||
<string name="re_send_location">Endursenda staðsetningu</string>
|
||||
<string name="searching_for_gps">Staðsetning…</string>
|
||||
<string name="average_speed">Meðalhraði</string>
|
||||
<string name="logcat_buffer_descr">Athugaðu og deildu nákvæmum atvikaskrám úr forritinu</string>
|
||||
<string name="si_mi_meters">Mílur/metrar</string>
|
||||
<string name="password_descr">Lykilorð í Telegram</string>
|
||||
<string name="share_location_as">Deila staðsetningu sem</string>
|
||||
<string name="share_location">Deila staðsetningu</string>
|
||||
<string name="min_logging_distance_descr">Sía: Stilltu lágmarksfjarlægð frá síðustu staðsetningu þar sem punktur er tekinn í skráningu</string>
|
||||
<string name="shared_string_back">Til baka</string>
|
||||
<string name="shared_string_off">Slökkt</string>
|
||||
<string name="no_internet_connection">Engin internettenging</string>
|
||||
<string name="set_time">Stilla tíma</string>
|
||||
<string name="shared_string_accept">Samþykkja</string>
|
||||
<string name="shared_string_second_short">sek</string>
|
||||
<string name="minutes_format">%1$d mín</string>
|
||||
<string name="si_mi_feet">Mílur/fet</string>
|
||||
<string name="shared_string_bot">Vélmenni</string>
|
||||
<string name="osmand_privacy_policy">Meðferð persónuupplýsinga í OsmAnd</string>
|
||||
<string name="sending_location_messages">Sendi staðsetningu</string>
|
||||
<string name="proxy_type">Tegund milliþjóns (proxy)</string>
|
||||
<string name="unit_of_length_descr">Breyta einingum sem notaðar eru við lengdarmælingar.</string>
|
||||
<string name="location_history">Staðsetningaferill</string>
|
||||
<string name="osmand_logo">Merki OsmAnd</string>
|
||||
<string name="error_adding_new_device">Gat ekki bætt við nýju tæki</string>
|
||||
<string name="gps_and_location">Staða</string>
|
||||
<string name="proxy_settings">Stillingar milliþjóns (proxy)</string>
|
||||
<string name="proxy_port">Gátt</string>
|
||||
<string name="by_name">Eftir nafni</string>
|
||||
<string name="time_zone">Tímabelti</string>
|
||||
<string name="min_km">mín/km</string>
|
||||
<string name="m">m</string>
|
||||
<string name="location_recording_enabled">Skráning staðsetningar virk</string>
|
||||
<string name="shared_string_connection">Tenging</string>
|
||||
<string name="si_km_m">Kílómetrar/metrar</string>
|
||||
<string name="last_update_from_telegram_duration">Síðasta uppfærsla frá Telegram: Fyrir %1$s síðan</string>
|
||||
<string name="monitoring_is_disabled">Vöktun er óvirk</string>
|
||||
<string name="status_widget_title">Staða OsmAnd-rekjara</string>
|
||||
<string name="app_name_short">OsmAnd rekjari</string>
|
||||
<string name="shared_string_group">Hópur</string>
|
||||
<string name="min_mile">mín/ml</string>
|
||||
<string name="proxy_server">Netþjónn</string>
|
||||
<string name="turn_off_all">Slökkva á öllu</string>
|
||||
<string name="back_to_osmand">Til baka í OsmAnd</string>
|
||||
<string name="device_name_is_too_long">Heiti tækis er of langt</string>
|
||||
<string name="closing">Loka</string>
|
||||
<string name="hours_and_minutes_format">%1$d klst %2$d mín</string>
|
||||
<string name="si_min_m">Mínútur á mílu</string>
|
||||
<string name="shared_string_minute_short">mín</string>
|
||||
<string name="shared_string_start">Byrja</string>
|
||||
<string name="shared_string_save">Vista</string>
|
||||
<string name="map_and_text">Landakort og texti</string>
|
||||
<string name="shared_string_password">Lykilorð</string>
|
||||
<string name="device_added_successfully">%1$s bætt við.</string>
|
||||
<string name="open_in_osmand">Birta í OsmAnd</string>
|
||||
<string name="last_available_location">Síðasta tiltæka staðsetning</string>
|
||||
<string name="shared_string_sent">Sent</string>
|
||||
<string name="authentication_code">Auðkenningarkóði</string>
|
||||
<string name="search_contacts">Leita í tengiliðum</string>
|
||||
<string name="open_osmand">Opna OsmAnd</string>
|
||||
<string name="shared_string_end">Endar</string>
|
||||
<string name="enter_authentication_code">Settu inn auðkenningarkóða</string>
|
||||
<string name="my_location">Staðsetning mín</string>
|
||||
<string name="shared_string_logout">Skrá út</string>
|
||||
<string name="show_on_map">Birta á korti</string>
|
||||
<string name="sharing_status">Staða deilingar</string>
|
||||
<string name="shared_string_cancel">Hætta við</string>
|
||||
<string name="waiting_for_response_from_telegram">Bíð eftir svari frá Telegram</string>
|
||||
<string name="successfully_sent_and_updated">Tókst að senda og uppfæra</string>
|
||||
<string name="shared_string_select">Velja</string>
|
||||
<string name="si_m_s">Metrar á sekúndu</string>
|
||||
<string name="device_name">Heiti tækis</string>
|
||||
<string name="shared_string_welcome">Velkomin</string>
|
||||
<string name="how_it_works">Hvernig það virkar</string>
|
||||
<string name="direction">Stefna</string>
|
||||
<string name="proxy">Milliþjónn</string>
|
||||
<string name="no_gps_connection">Engin GPS-tenging</string>
|
||||
<string name="send_location_as">Senda staðsetningu sem</string>
|
||||
<string name="points_size">%1$d punktar</string>
|
||||
<string name="yard">yd</string>
|
||||
<string name="shared_string_disable">Gera óvirkt</string>
|
||||
<string name="time_on_the_move">Tími á ferðinni</string>
|
||||
<string name="si_nm_h">Sjómílur á klukkustund (hnútar)</string>
|
||||
<string name="hours_format">%1$d klst</string>
|
||||
<string name="proxy_key">Lykill</string>
|
||||
<string name="background_work">Bakgrunnsvinna</string>
|
||||
<string name="shared_string_install">Setja upp</string>
|
||||
<string name="shared_string_add">Bæta við</string>
|
||||
<string name="shared_string_sort_by">Raða eftir</string>
|
||||
<string name="last_response_date">Síðasta svar: %1$s</string>
|
||||
<string name="shared_string_all">Allt</string>
|
||||
<string name="altitude">Hæð</string>
|
||||
<string name="show_gps_points">Birta GPS-punkta</string>
|
||||
<string name="device_name_cannot_be_empty">Heiti tækis getur ekki verið tómt</string>
|
||||
<string name="shared_string_search">Leita</string>
|
||||
<string name="by_distance">Eftir vegalengd</string>
|
||||
<string name="si_nm">Sjómílur</string>
|
||||
<string name="m_s">m/sek</string>
|
||||
<string name="not_logged_in">Þú ert ekki skráð/ur inn</string>
|
||||
<string name="initializing">Ræsing</string>
|
||||
<string name="min_logging_accuracy">Lágmarksnákvæmni skráningar</string>
|
||||
<string name="shared_string_close">Loka</string>
|
||||
<string name="min_logging_speed">Lágmarkshraði skráninga</string>
|
||||
<string name="process_service">OsmAnd rakningarþjónusta</string>
|
||||
<string name="shared_string_telegram">Telegram</string>
|
||||
<string name="gps_network_not_enabled">Kveikja á \"Staðsetning\"\?</string>
|
||||
<string name="connected_account">Tengdur aðgangur</string>
|
||||
<string name="mile">mi</string>
|
||||
<string name="proxy_username">Notandanafn</string>
|
||||
<string name="shared_string_authorization">Heimild</string>
|
||||
<string name="unit_of_length">Lengdareiningar</string>
|
||||
<string name="gpx_settings">GPX-stillingar</string>
|
||||
<string name="get_telegram_title">Nýskráning í Telegram</string>
|
||||
<string name="shared_string_distance">Vegalengd</string>
|
||||
<string name="shared_string_hour_short">klst</string>
|
||||
<string name="km_h">km/klst</string>
|
||||
<string name="shared_string_login">Skrá inn</string>
|
||||
<string name="last_response">Síðasta svar</string>
|
||||
<string name="start_location_sharing">Deila staðsetningu</string>
|
||||
<string name="foot">ft</string>
|
||||
<string name="shared_string_name">Nafn</string>
|
||||
<string name="duration_ago">%1$s síðan</string>
|
||||
<string name="location_sharing_description">Veldu notendur eða hópa til að deila með staðsetningu þinni.</string>
|
||||
<string name="do_not_have_telegram">Ég er ekki með Telegram-aðgang</string>
|
||||
<string name="monitoring_is_enabled">Vöktun er virk</string>
|
||||
<string name="expire_at">Rennur út</string>
|
||||
<string name="privacy">Gagnaleynd</string>
|
||||
<string name="shared_string_account">Notandaaðgangur</string>
|
||||
<string name="shared_string_enabled">Virkt</string>
|
||||
<string name="precision">Nákvæmni</string>
|
||||
<string name="shared_string_error_short">VILL</string>
|
||||
<string name="stale_location">Ekki á ferð</string>
|
||||
<string name="shared_string_continue">Halda áfram</string>
|
||||
<string name="shared_string_status">Staða</string>
|
||||
<string name="start_end_date">Upphafs — Endadagsetning</string>
|
||||
<string name="proxy_disconnected">Aftengt</string>
|
||||
<string name="nm">sml</string>
|
||||
<string name="shared_string_update">Uppfæra</string>
|
||||
<string name="enter_password">Settu inn lykilorð</string>
|
||||
<string name="shared_string_share">Deila</string>
|
||||
<string name="logcat_buffer">Logcat biðminni</string>
|
||||
<string name="enter_phone_number">Settu inn símanúmer</string>
|
||||
<string name="si_min_km">Mínútur á kílómetra</string>
|
||||
<string name="shared_string_exit">Hætta</string>
|
||||
<string name="shared_string_appearance">Útlit</string>
|
||||
<string name="shared_string_date">Dagsetning</string>
|
||||
<string name="shared_string_later">Síðar</string>
|
||||
<string name="bearing">Stefna</string>
|
||||
<string name="unit_of_speed_system">Hraðaeining</string>
|
||||
<string name="shared_string_map">Landakort</string>
|
||||
<string name="min_logging_speed_descr">Sía: Engin skráning punkta fyrir neðan þennan hraða</string>
|
||||
<string name="in_time">í %1$s</string>
|
||||
<string name="my_location_search_hint">Leit: Hópur eða tengiliður</string>
|
||||
<string name="nm_h">hnútar</string>
|
||||
<string name="km">km</string>
|
||||
<string name="timeline">Tímalína</string>
|
||||
<string name="saved_messages">Vistuð skilaboð</string>
|
||||
<string name="gps_points">GPS-punktar</string>
|
||||
<string name="shared_string_apply">Virkja</string>
|
||||
<string name="min_logging_distance">Lágmarksfjarlægð skráninga</string>
|
||||
<string name="last_update_from_telegram">Síðasta uppfærsla frá Telegram</string>
|
||||
<string name="shared_string_collected">Safnað</string>
|
||||
<string name="logging_out">Skrái út</string>
|
||||
<string name="si_mi_yard">Mílur/yardar</string>
|
||||
<string name="set_time_timeline_descr">Veldu tíma sem á að birta</string>
|
||||
<string name="proxy_credentials">Auðkenni</string>
|
||||
<string name="si_kmh">Kílómetrar á klukkustund</string>
|
||||
<string name="last_response_duration">Síðasta svar: Fyrir %1$s síðan</string>
|
||||
<string name="connecting_to_the_internet">Tengist internetinu</string>
|
||||
<string name="send_report">Senda skýrslu</string>
|
||||
<string name="shared_string_export">Flytja út</string>
|
||||
<string name="si_mph">Mílur á klukkustund</string>
|
||||
<string name="shared_string_ok">Í lagi</string>
|
||||
<string name="shared_string_enable">Virkja</string>
|
||||
<string name="telegram_privacy_policy">Persónuverndarstefna Telegram</string>
|
||||
<string name="active_chats">Virkt spjall</string>
|
||||
<string name="send_my_location">Senda staðsetningu mína</string>
|
||||
<string name="shared_string_suggested">Stungið upp á</string>
|
||||
<string name="go_to_settings">Fara í stillingar</string>
|
||||
<string name="mile_per_hour">mi/klst</string>
|
||||
<string name="sharing_in_background">Deiling í bakgrunni</string>
|
||||
<string name="location_sharing_status">Deiling: %1$s</string>
|
||||
<string name="last_update_from_telegram_date">Síðasta uppfærsla frá Telegram: %1$s</string>
|
||||
<string name="initialization">Byrja</string>
|
||||
<string name="shared_string_sort">Raða</string>
|
||||
<string name="timeline_no_data">Engin gögn</string>
|
||||
<string name="by_group">Eftir hópi</string>
|
||||
<string name="add_device">Bæta við tæki</string>
|
||||
<string name="shared_string_text">Texti</string>
|
||||
<string name="shared_string_settings">Stillingar</string>
|
||||
<string name="show_users_on_map">Birta notendur á kortinu</string>
|
||||
<string name="proxy_connected">Tengt</string>
|
||||
<string name="phone_number_title">Símanúmer</string>
|
||||
<string name="start_date">Upphafsdagsetning</string>
|
||||
<string name="unit_of_speed_system_descr">Skilgreindu einingu fyrir hraða.</string>
|
||||
<string name="time_ago">síðan</string>
|
||||
<string name="enter_code">Settu inn kóða</string>
|
||||
<string name="disable_monitoring">Gera vöktun óvirka</string>
|
||||
<string name="no_location_permission">Forritið hefur ekki heimildir til að nota staðsetningargögn.</string>
|
||||
<string name="end_date">Lokadagsetning</string>
|
||||
<string name="osmand_service">Bakgrunnshamur</string>
|
||||
<string name="osmand_service_descr">OsmAnd-rakning keyrir í bakgrunni á meðan slökkt er á skjá.</string>
|
||||
</resources>
|
|
@ -265,4 +265,5 @@
|
|||
<string name="last_response_date">Ultima risposta: %1$s</string>
|
||||
<string name="last_update_from_telegram_date">Ultimo aggiornamento da Telegram: %1$s</string>
|
||||
<string name="shared_string_error_short">ERR</string>
|
||||
<string name="logcat_buffer_descr">Controlla e condividi i log dettagliati dell\'applicazione</string>
|
||||
</resources>
|
|
@ -257,4 +257,8 @@
|
|||
<string name="unit_of_length">Afstand eenheden</string>
|
||||
<string name="unit_of_speed_system_descr">Definieer de eenheid voor snelheid.</string>
|
||||
<string name="unit_of_speed_system">Eenheid van snelheid</string>
|
||||
<string name="send_report">Stuur rapport</string>
|
||||
<string name="shared_string_export">Exporteer naar OSM</string>
|
||||
<string name="logcat_buffer">Logcat buffer</string>
|
||||
<string name="logcat_buffer_descr">Controleer en deel gedetailleerde logs van de app</string>
|
||||
</resources>
|
2
OsmAnd-telegram/res/values-tzm/strings.xml
Normal file
2
OsmAnd-telegram/res/values-tzm/strings.xml
Normal file
|
@ -0,0 +1,2 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
12
OsmAnd/res/drawable/ic_action_logout.xml
Normal file
12
OsmAnd/res/drawable/ic_action_logout.xml
Normal file
|
@ -0,0 +1,12 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M4,6C4,4.8954 4.8954,4 6,4H18C19.1046,4 20,4.8954 20,6H6V18H20C20,19.1046 19.1046,20 18,20H6C4.8954,20 4,19.1046 4,18V6Z"
|
||||
android:fillColor="#ffffff"/>
|
||||
<path
|
||||
android:pathData="M10,13H16.5858L14.2929,15.2928L15.7071,16.7071L20.4142,12.0001L15.7071,7.2929L14.2929,8.707L16.5858,11H10V13Z"
|
||||
android:fillColor="#ffffff"/>
|
||||
</vector>
|
14
OsmAnd/res/drawable/ic_action_openstreetmap_logo_colored.xml
Normal file
14
OsmAnd/res/drawable/ic_action_openstreetmap_logo_colored.xml
Normal file
|
@ -0,0 +1,14 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M16.2979,22.0153L11.5335,21.0624L6.769,22.0153L2.0046,21.0624L2.9575,16.2979L2.0046,11.5335L2.9575,6.769L2.0046,2.0046L6.769,2.9575L11.5335,2.0046L16.2979,2.9575L21.0624,2.0046L22.0153,6.769L21.0624,11.5335L22.0153,16.2979L21.0624,21.0624L16.2979,22.0153Z"
|
||||
android:fillColor="#9DD184"
|
||||
android:fillType="evenOdd"/>
|
||||
<path
|
||||
android:pathData="M18.9999,10.5C18.9999,13.5376 16.5375,16 13.4999,16C12.3424,16 11.2684,15.6424 10.3824,15.0317L6.707,18.7071C6.3165,19.0976 5.6833,19.0976 5.2928,18.7071C4.9022,18.3166 4.9022,17.6834 5.2928,17.2929L8.9682,13.6175C8.3574,12.7315 7.9999,11.6575 7.9999,10.5C7.9999,7.4624 10.4623,5 13.4999,5C16.5375,5 18.9999,7.4624 18.9999,10.5ZM16.9999,10.5C16.9999,12.433 15.4329,14 13.4999,14C11.5669,14 9.9999,12.433 9.9999,10.5C9.9999,8.567 11.5669,7 13.4999,7C15.4329,7 16.9999,8.567 16.9999,10.5Z"
|
||||
android:fillColor="#3A6425"
|
||||
android:fillType="evenOdd"/>
|
||||
</vector>
|
17
OsmAnd/res/drawable/ic_action_user_account.xml
Normal file
17
OsmAnd/res/drawable/ic_action_user_account.xml
Normal file
|
@ -0,0 +1,17 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M23,12C23,18.0751 18.0751,23 12,23C5.9249,23 1,18.0751 1,12C1,5.9249 5.9249,1 12,1C18.0751,1 23,5.9249 23,12Z"
|
||||
android:strokeAlpha="0.2"
|
||||
android:fillColor="#ffffff"
|
||||
android:fillAlpha="0.2"/>
|
||||
<path
|
||||
android:pathData="M6.1848,17.4939C6.5378,16.3774 7.3745,15.4502 8.5,15C10.735,14.0421 13.265,14.0421 15.5,15C16.6256,15.4502 17.4622,16.3775 17.8153,17.494C16.3569,19.0371 14.2909,20 12.0001,20C9.7092,20 7.6432,19.0371 6.1848,17.4939Z"
|
||||
android:fillColor="#ffffff"/>
|
||||
<path
|
||||
android:pathData="M15,9C15,10.6569 13.6569,12 12,12C10.3432,12 9,10.6569 9,9C9,7.3432 10.3432,6 12,6C13.6569,6 15,7.3432 15,9Z"
|
||||
android:fillColor="#ffffff"/>
|
||||
</vector>
|
|
@ -55,6 +55,17 @@
|
|||
android:textSize="@dimen/default_list_text_size"
|
||||
osmand:typeface="@string/font_roboto_medium" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/sort_button"
|
||||
android:layout_width="@dimen/wikipedia_options_button_width"
|
||||
android:layout_height="@dimen/dialog_button_height"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginEnd="@dimen/content_padding"
|
||||
android:layout_marginRight="@dimen/content_padding"
|
||||
android:background="?attr/bg_dash_line"
|
||||
android:tint="?attr/color_dialog_buttons"
|
||||
osmand:srcCompat="@drawable/ic_sort_waypoint_dark" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</FrameLayout>
|
||||
|
|
|
@ -324,6 +324,52 @@
|
|||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/mgrsLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:paddingTop="16dp"
|
||||
android:visibility="gone">
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="54dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:layout_marginStart="54dp"
|
||||
android:layout_marginEnd="16dp">
|
||||
|
||||
<EditText
|
||||
android:id="@+id/mgrsEditText"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/navigate_point_mgrs"
|
||||
android:imeOptions="actionDone"
|
||||
android:inputType="textCapCharacters|textNoSuggestions"
|
||||
tools:text="22.12345"/>
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/mgrsClearButton"
|
||||
style="@style/Widget.AppCompat.ActionButton"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_gravity="end"
|
||||
android:layout_marginRight="4dp"
|
||||
android:contentDescription="@string/shared_string_clear"
|
||||
app:srcCompat="@drawable/ic_action_remove_dark"
|
||||
android:layout_marginEnd="4dp" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/olcLayout"
|
||||
android:layout_width="match_parent"
|
||||
|
|
|
@ -139,6 +139,26 @@
|
|||
android:layout_marginEnd="5dp"></EditText>
|
||||
</TableRow>
|
||||
|
||||
<TableRow android:layout_width="fill_parent" android:id="@+id/mgrs_row">
|
||||
|
||||
<TextView
|
||||
android:textSize="@dimen/default_list_text_size"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="5dp"
|
||||
android:text="@string/navigate_point_mgrs"
|
||||
android:layout_marginStart="5dp"></TextView>
|
||||
|
||||
<EditText
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/MGRSEdit"
|
||||
android:layout_marginLeft="5dp"
|
||||
android:layout_marginRight="5dp"
|
||||
android:layout_marginStart="5dp"
|
||||
android:layout_marginEnd="5dp"></EditText>
|
||||
</TableRow>
|
||||
|
||||
<TableRow android:layout_width="fill_parent" >
|
||||
|
||||
<TextView
|
||||
|
|
|
@ -3922,4 +3922,13 @@
|
|||
<string name="shared_string_graph">رسم بياني</string>
|
||||
<string name="ltr_or_rtl_combine_via_dash">%2$s — %1$s</string>
|
||||
<string name="app_mode_gap">فجوة</string>
|
||||
<string name="shared_string_local_maps">الخرائط المحلية</string>
|
||||
<string name="icon_group_amenity">راحة</string>
|
||||
<string name="icon_group_special">خاص</string>
|
||||
<string name="icon_group_transport">نقل</string>
|
||||
<string name="icon_group_service">خدمة</string>
|
||||
<string name="icon_group_symbols">الرموز</string>
|
||||
<string name="icon_group_sport">رياضة</string>
|
||||
<string name="icon_group_emergency">الطوارئ</string>
|
||||
<string name="icon_group_travel">سفر</string>
|
||||
</resources>
|
|
@ -2170,4 +2170,21 @@
|
|||
<string name="restore_all_profile_settings">Възстановяване на всички настройки на профила\?</string>
|
||||
<string name="clear_recorded_data_warning">Наистина ли искате да изчистите записаните данни\?</string>
|
||||
<string name="recalculate_route_in_deviation">Преизчисляване на маршрута в случай на отклонение</string>
|
||||
<string name="osm_edit_logout_success">Успешно излязохте</string>
|
||||
<string name="file_already_imported">Файлът вече е импортиран в OsmAnd</string>
|
||||
<string name="use_two_phase_routing">Използване на 2-стъпков A* рутиращ алгоритъм</string>
|
||||
<string name="message_graph_will_be_available_after_recalculation">Изчакайте преизчисляването на маршрута.
|
||||
\nГрафиката ще бъде достъпна след преизчисляване.</string>
|
||||
<string name="shared_string_local_maps">Местни карти</string>
|
||||
<string name="ltr_or_rtl_combine_via_dash">%1$s — %2$s</string>
|
||||
<string name="app_mode_gap">Пропуск</string>
|
||||
<string name="icon_group_amenity">Удобства</string>
|
||||
<string name="icon_group_special">Специални</string>
|
||||
<string name="icon_group_transport">Транспорт</string>
|
||||
<string name="icon_group_service">Услуги</string>
|
||||
<string name="icon_group_symbols">Символи</string>
|
||||
<string name="icon_group_sport">Спорт</string>
|
||||
<string name="icon_group_emergency">Аварийни служби</string>
|
||||
<string name="icon_group_travel">Пътуване</string>
|
||||
<string name="clear_osm_token">Изчистете маркера OAuth на OpenStreetMap</string>
|
||||
</resources>
|
|
@ -3224,8 +3224,10 @@
|
|||
<string name="get_discount_first_few_part">%1$s für die ersten %2$s</string>
|
||||
<string name="configure_profile_info">Einstellungen für Profil:</string>
|
||||
<string name="utm_format_descr">OsmAnd verwendet den UTM-Standard, der ähnlich, aber nicht identisch zum UTM-NATO-Format ist.</string>
|
||||
<string name="mgrs_format_descr">OsmAnd verwendet MGRS, das identisch zum UTM-NATO-Format ist.</string>
|
||||
<string name="shared_string_example">Beispiel</string>
|
||||
<string name="navigate_point_format_utm">UTM-Standard</string>
|
||||
<string name="navigate_point_format_mgrs">MGRS</string>
|
||||
<string name="coordinates_format_info">Das gewählte Format wird in der gesamten App angewandt.</string>
|
||||
<string name="pref_selected_by_default_for_profiles">Für Profile wird als Vorgabe diese Einstellung gewählt: %s</string>
|
||||
<string name="change_default_settings">Einstellung ändern</string>
|
||||
|
@ -3933,4 +3935,6 @@
|
|||
<string name="snowmobile_render_descr">Für das Schneemobilfahren mit speziellen Straßen und Tracks.</string>
|
||||
<string name="perform_oauth_authorization_description">Durchführen eines OAuth-Logins zur Nutzung der osmedit-Funktionen</string>
|
||||
<string name="use_two_phase_routing">2-Phasen-A*-Routing-Algorithmus verwenden</string>
|
||||
<string name="message_need_calculate_route_before_show_graph">%1$s Daten sind nur auf den Straßen verfügbar, Sie müssen eine Route mit \"Route zwischen Punkten\" berechnen, um sie zu erhalten.</string>
|
||||
<string name="ltr_or_rtl_combine_via_dash">%1$s — %2$s</string>
|
||||
</resources>
|
|
@ -3932,4 +3932,15 @@
|
|||
<string name="message_need_calculate_route_before_show_graph">Datumoj de %1$s estas disponeblaj nur por vojoj, vi devas kalkuli la kurson uzante “kalkuli kurson inter punktoj” por akiri ĝin.</string>
|
||||
<string name="message_graph_will_be_available_after_recalculation">Atendado ĝis la kurso estos rekalkulita.
|
||||
\nDiagramo estos videbla post rekalkulado.</string>
|
||||
<string name="ltr_or_rtl_combine_via_dash">%1$s — %2$s</string>
|
||||
<string name="app_mode_gap">Manko</string>
|
||||
<string name="shared_string_local_maps">Lokaj mapoj</string>
|
||||
<string name="icon_group_amenity">Oportunaĵo</string>
|
||||
<string name="icon_group_special">Specialaj</string>
|
||||
<string name="icon_group_transport">Transporto</string>
|
||||
<string name="icon_group_service">Servo</string>
|
||||
<string name="icon_group_symbols">Simboloj</string>
|
||||
<string name="icon_group_sport">Sporto</string>
|
||||
<string name="icon_group_emergency">Vivsavo</string>
|
||||
<string name="icon_group_travel">Vojaĝo</string>
|
||||
</resources>
|
|
@ -3811,7 +3811,7 @@
|
|||
<string name="poi_tactile_paving_contrasted">Contrastado</string>
|
||||
<string name="poi_tactile_paving_primitive">Primitivo</string>
|
||||
<string name="poi_tactile_paving_incorrect">Incorrecto</string>
|
||||
<string name="poi_internet_access_fee_customers">Señal para encontrar el poste</string>
|
||||
<string name="poi_internet_access_fee_customers">Conexión a Internet: clientes</string>
|
||||
<string name="poi_seamark_water_level_part_submerged">Nivel del agua: parcialmente sumergido</string>
|
||||
<string name="poi_seamark_water_level_submerged">Nivel del agua: sumergido</string>
|
||||
<string name="poi_seamark_water_level_dry">Nivel de agua: seco</string>
|
||||
|
@ -3852,4 +3852,8 @@
|
|||
<string name="poi_beehive">Panal de abejas</string>
|
||||
<string name="poi_nuts">Frutos secos</string>
|
||||
<string name="poi_fuel_lng">Gas natural licuado</string>
|
||||
<string name="poi_parking_layby">Apartadero</string>
|
||||
<string name="poi_parking_sheds">Cobertizos</string>
|
||||
<string name="poi_parking_rooftop">Azotea</string>
|
||||
<string name="poi_gpx_point">Punto GPX</string>
|
||||
</resources>
|
|
@ -3551,14 +3551,14 @@
|
|||
<string name="saving_new_profile">Guardando el nuevo perfil</string>
|
||||
<string name="profile_backup_failed">No se pudo respaldar el perfil.</string>
|
||||
<string name="clear_recorded_data_warning">¿Borrar los datos registrados\?</string>
|
||||
<string name="importing_from">Importación de datos de %1$s</string>
|
||||
<string name="shared_string_importing">Importación</string>
|
||||
<string name="importing_from">Importando de datos de «%1$s»</string>
|
||||
<string name="shared_string_importing">Importando</string>
|
||||
<string name="checking_for_duplicate_description">OsmAnd comprueba %1$s para ver si hay duplicados con los elementos existentes en la aplicación.
|
||||
\n
|
||||
\nPuede llevar algún tiempo.</string>
|
||||
<string name="items_added">Elementos añadidos</string>
|
||||
<string name="shared_string_import_complete">Importación completa</string>
|
||||
<string name="import_complete_description">Todos los datos de %1$s son importados, puedes usar los botones de abajo para abrir la parte necesaria de la aplicación para manejarla.</string>
|
||||
<string name="import_complete_description">Todos los datos de «%1$s» fueron importados. Puedes usar los botones de abajo para gestionar la sección necesaria de la aplicación.</string>
|
||||
<string name="shared_string_min">Min</string>
|
||||
<string name="n_items_of_z">%1$s de %2$s</string>
|
||||
<string name="shared_string_terrain">Terreno</string>
|
||||
|
@ -3829,7 +3829,7 @@
|
|||
<string name="reverse_route">Ruta inversa</string>
|
||||
<string name="route_between_points_next_segment_button_desc">Recalcular sólo el siguiente segmento usando el perfil elegido.</string>
|
||||
<string name="route_between_points_whole_track_button_desc">Recalcular toda la traza usando el perfil elegido.</string>
|
||||
<string name="route_between_points_desc">Marca cómo conectar los puntos, con una línea recta o calcular una ruta entre ellos como se detalla a continuación.</string>
|
||||
<string name="route_between_points_desc">Elige cómo conectar los puntos, con una línea recta o calcular una ruta entre ellos como se detalla a continuación.</string>
|
||||
<string name="whole_track">Traza completa</string>
|
||||
<string name="next_segment">Siguiente segmento</string>
|
||||
<string name="route_between_points_warning_desc">A continuación, ajusta la traza al camino permitido más cercano con un perfil de navegación.</string>
|
||||
|
@ -3937,4 +3937,13 @@
|
|||
<string name="message_graph_will_be_available_after_recalculation">Espera el recálculo de la ruta.
|
||||
\nEl gráfico estará disponible después del recálculo.</string>
|
||||
<string name="ltr_or_rtl_combine_via_dash">%1$s — %2$s</string>
|
||||
<string name="shared_string_local_maps">Mapas locales</string>
|
||||
<string name="icon_group_amenity">Comodidad</string>
|
||||
<string name="icon_group_special">Especial</string>
|
||||
<string name="icon_group_transport">Transporte</string>
|
||||
<string name="icon_group_service">Servicio</string>
|
||||
<string name="icon_group_symbols">Símbolos</string>
|
||||
<string name="icon_group_sport">Deporte</string>
|
||||
<string name="icon_group_emergency">Emergencia</string>
|
||||
<string name="icon_group_travel">Viaje</string>
|
||||
</resources>
|
|
@ -3786,4 +3786,13 @@
|
|||
<string name="use_live_public_transport">OsmAnd andmed reaalajas</string>
|
||||
<string name="snowmobile_render_descr">Mootorsaanide sõitmine eraldi määratud teedel ja radadel.</string>
|
||||
<string name="ltr_or_rtl_combine_via_dash">%1$s — %2$s</string>
|
||||
<string name="icon_group_special">Eriteenused</string>
|
||||
<string name="icon_group_amenity">Mugavus</string>
|
||||
<string name="shared_string_local_maps">Kohalikud kaardid</string>
|
||||
<string name="icon_group_travel">Reisimine</string>
|
||||
<string name="icon_group_emergency">Hädaabi</string>
|
||||
<string name="icon_group_sport">Sport</string>
|
||||
<string name="icon_group_symbols">Sümbolid</string>
|
||||
<string name="icon_group_service">Teenused</string>
|
||||
<string name="icon_group_transport">Transport</string>
|
||||
</resources>
|
|
@ -3801,7 +3801,7 @@
|
|||
<string name="plan_route_select_track_file_for_open">Sélectionnez un fichier de trace à ouvrir.</string>
|
||||
<string name="shared_string_done">Terminé</string>
|
||||
<string name="overwrite_track">Remplacer la trace</string>
|
||||
<string name="route_between_points_desc">Sélectionnez comment relier les points : par une ligne droite ou en calculant un itinéraire reliant les points comme indiqué ci-dessous.</string>
|
||||
<string name="route_between_points_desc">Définissez comment relier les points : par une ligne droite ou en calculant un itinéraire avec le profil ci-dessous.</string>
|
||||
<string name="route_between_points_whole_track_button_desc">Toute la trace sera recalculée en utilisant le profil sélectionné.</string>
|
||||
<string name="route_between_points_next_segment_button_desc">Seul le prochain segment sera recalculé en utilisant le profil sélectionné.</string>
|
||||
<string name="route_between_points_warning_desc">Ensuite, sélectionnez le profil de navigation pour détecter les routes autorisées et le seuil de distance afin de déplacer votre trace.</string>
|
||||
|
@ -3914,4 +3914,13 @@
|
|||
<string name="shared_string_graph">Graphique</string>
|
||||
<string name="app_mode_gap">Écart</string>
|
||||
<string name="ltr_or_rtl_combine_via_dash">%1$s - %2$s</string>
|
||||
<string name="shared_string_local_maps">Cartes locales</string>
|
||||
<string name="icon_group_amenity">Loisir</string>
|
||||
<string name="icon_group_special">Spécial</string>
|
||||
<string name="icon_group_transport">Transport</string>
|
||||
<string name="icon_group_service">Service</string>
|
||||
<string name="icon_group_symbols">Symboles</string>
|
||||
<string name="icon_group_sport">Sport</string>
|
||||
<string name="icon_group_emergency">Urgence</string>
|
||||
<string name="icon_group_travel">Voyage</string>
|
||||
</resources>
|
|
@ -3834,7 +3834,7 @@
|
|||
<string name="simplified_track">Egyszerűsített nyomvonal</string>
|
||||
<string name="shared_string_done">Kész</string>
|
||||
<string name="shared_string_is_saved">elmentve</string>
|
||||
<string name="route_between_points_desc">Jelölje ki, hogyan legyenek összekötve a pontok: egyenes vonallal vagy az alábbiak szerint kiszámított útvonallal.</string>
|
||||
<string name="route_between_points_desc">Válassza ki, hogyan legyenek összekötve a pontok: egyenes vonallal vagy az alábbiak szerint kiszámított útvonallal.</string>
|
||||
<string name="whole_track">Teljes nyomvonal</string>
|
||||
<string name="monitoring_min_accuracy_descr_remark">Megjegyzés: Ha a GPS közvetlenül a felvétel előtt ki volt kapcsolva, akkor rosszabb lehet az első mért pont pontossága. A kódban ezért szeretnénk majd talán várni egy-két másodpercet egy pont rögzítése előtt (vagy a 3 egymást követő pont közül a legjobbat rögzíteni vagy valami hasonló), de ezt még nem programoztuk le.</string>
|
||||
<string name="delete_address">Cím törlése</string>
|
||||
|
@ -3926,4 +3926,13 @@
|
|||
<string name="message_need_calculate_route_before_show_graph">%1$s adatok csak az utakról állnak rendelkezésre. Használja az „Útvonal tervezése pontok között” funkciót.</string>
|
||||
<string name="message_graph_will_be_available_after_recalculation">Várja meg az útvonal újraszámítását.
|
||||
\nAz ábra az újraszámítás után lesz látható.</string>
|
||||
<string name="shared_string_local_maps">Helyi térképek</string>
|
||||
<string name="icon_group_amenity">Hasznos és fontos létesítmény</string>
|
||||
<string name="icon_group_special">Különleges</string>
|
||||
<string name="icon_group_transport">Közlekedés</string>
|
||||
<string name="icon_group_service">Szolgáltatás</string>
|
||||
<string name="icon_group_symbols">Jelképek</string>
|
||||
<string name="icon_group_sport">Sport</string>
|
||||
<string name="icon_group_emergency">Vészhelyzet</string>
|
||||
<string name="icon_group_travel">Utazás</string>
|
||||
</resources>
|
|
@ -3802,7 +3802,7 @@
|
|||
<string name="poi_seamark_water_level_submerged">Vatnsyfirborð: í kafi</string>
|
||||
<string name="poi_seamark_water_level_part_submerged">Vatnsyfirborð: að hluta í kafi</string>
|
||||
<string name="poi_tactile_paving_primitive">Gróft</string>
|
||||
<string name="poi_internet_access_fee_customers">Merki til að finna staurinn</string>
|
||||
<string name="poi_internet_access_fee_customers">Internetaðgangur: viðskiptavinir</string>
|
||||
<string name="poi_pump_status_missing_beam">Staða dælu: vantar bita</string>
|
||||
<string name="poi_osmand_fire_hydrant_pressure_suction">Sog</string>
|
||||
<string name="poi_osmand_fire_hydrant_pressure_pressurized">Undir þrýstingi</string>
|
||||
|
@ -3830,4 +3830,8 @@
|
|||
<string name="poi_fuel_lng">LNG</string>
|
||||
<string name="poi_departures_board_no">Brottfaratafla: nei</string>
|
||||
<string name="poi_departures_board">Brottfaratafla</string>
|
||||
<string name="poi_parking_layby">Meðfram götu</string>
|
||||
<string name="poi_parking_sheds">Skýli</string>
|
||||
<string name="poi_parking_rooftop">Á þaki</string>
|
||||
<string name="poi_gpx_point">GPX-punktur</string>
|
||||
</resources>
|
|
@ -106,15 +106,15 @@
|
|||
<string name="favorite_category_select">Veldu flokk</string>
|
||||
<string name="default_speed_system">Hraðaeining</string>
|
||||
<string name="nm">sml</string>
|
||||
<string name="si_nm">sjómílur</string>
|
||||
<string name="si_kmh">kílómetrar á klukkustund</string>
|
||||
<string name="si_mph">mílur á klukkustund</string>
|
||||
<string name="si_m_s">metrar á sekúndu</string>
|
||||
<string name="si_min_km">mínútur á kílómetra</string>
|
||||
<string name="si_min_m">mínútur á mílu</string>
|
||||
<string name="si_nm">Sjómílur</string>
|
||||
<string name="si_kmh">Kílómetrar á klukkustund</string>
|
||||
<string name="si_mph">Mílur á klukkustund</string>
|
||||
<string name="si_m_s">Metrar á sekúndu</string>
|
||||
<string name="si_min_km">Mínútur á kílómetra</string>
|
||||
<string name="si_min_m">Mínútur á mílu</string>
|
||||
<string name="si_nm_h">Sjómílur á klukkustund (hnútar)</string>
|
||||
<string name="nm_h">hnútar</string>
|
||||
<string name="min_mile">mín/m</string>
|
||||
<string name="min_mile">mín/ml</string>
|
||||
<string name="min_km">mín/km</string>
|
||||
<string name="m_s">m/sek</string>
|
||||
<string name="shared_string_navigation">Leiðsögn</string>
|
||||
|
@ -238,7 +238,7 @@
|
|||
<string name="shared_string_show_all">Sýna allt</string>
|
||||
<string name="shared_string_collapse">Fella saman</string>
|
||||
<string name="shared_string_show_on_map">Birta á korti</string>
|
||||
<string name="shared_string_map">Kort</string>
|
||||
<string name="shared_string_map">Landakort</string>
|
||||
<string name="shared_string_favorite">Eftirlæti</string>
|
||||
<string name="shared_string_favorites">Eftirlæti</string>
|
||||
<string name="shared_string_address">Heimilisfang</string>
|
||||
|
@ -2109,7 +2109,7 @@
|
|||
<string name="save_poi_too_many_uppercase">Nafnið inniheldur of marga hástafi. Viltu halda áfram?</string>
|
||||
<string name="quick_action_duplicate">Tvítekið nafn á flýtiaðgerð</string>
|
||||
<string name="quick_action_category_descr">Flokkur til að vista eftirlætisstað í:</string>
|
||||
<string name="shared_string_install">Setja inn</string>
|
||||
<string name="shared_string_install">Setja upp</string>
|
||||
<string name="online_photos">Ljósmyndir á netinu</string>
|
||||
<string name="no_photos_descr">Engar myndir hér.</string>
|
||||
<string name="nothing_found_descr">Breyttu leitarorðum eða stækkaðu radíus leitarinnar.</string>
|
||||
|
@ -3777,7 +3777,7 @@
|
|||
\n
|
||||
\nVeldu %2$s: öllum gögnum sem tengjast hraðamyndavélum; t.d. aðvaranir, tilkynningar, staðsetningar o.fl. verður eytt þar til OsmAnd er sett inn aftur frá grunni.</string>
|
||||
<string name="route_between_points_add_track_desc">Veldu ferilskrá þar sem nýjum bút verður bætt inn.</string>
|
||||
<string name="route_between_points_desc">Veldu hvernig eigi að tengja punkta; með beinni línu eða reikna leið milli þeirra eins og tiltekið er hér að neðan.</string>
|
||||
<string name="route_between_points_desc">Veldu hvernig eigi að tengja punktana; með beinni línu eða reikna leið milli þeirra eins og tiltekið er hér að neðan.</string>
|
||||
<string name="route_between_points_whole_track_button_desc">Allur ferillinn verður endurreiknaður með völdu sniði.</string>
|
||||
<string name="osm_edit_closed_note">Lokaður OSM-minnispunktur</string>
|
||||
<string name="whole_track">Allur ferillinn</string>
|
||||
|
@ -3914,4 +3914,44 @@
|
|||
<string name="save_global_track_interval_descr">Veldu millibil skráninga í almenna leiðarskráningu (virkjað með viðmótshlutanum fyrir GPX-skráningu á kortinu).</string>
|
||||
<string name="gpx_monitoring_stop">Setja skráningu í bið</string>
|
||||
<string name="gpx_monitoring_start">Halda áfram með skráningu</string>
|
||||
<string name="release_3_8">• Uppfærðar aðgerðir í skipulagningu leiða: mismunandi leiðsögn á hverjum bút auk slóða
|
||||
\n
|
||||
\n • Ný útlitsvalmynd fyrir slóðir: val á lit, þykkt, birting stefnuörva, táknmynda við upphaf/endi
|
||||
\n
|
||||
\n • Bættur sýnileiki hjólreiðahnúta.
|
||||
\n
|
||||
\n • Hægt að ýta á slóðir, hafa samhengisvalmynd með grunnupplýsingum.
|
||||
\n
|
||||
\n • Bætt reiknirit leitar
|
||||
\n
|
||||
\n • Bættir valkostir fyrir \'Fylgja slóð\' í leiðsögn
|
||||
\n
|
||||
\n • Lagfærð vandamál við inn/útflutning á stillingum sniða
|
||||
\n
|
||||
\n</string>
|
||||
<string name="message_graph_will_be_available_after_recalculation">Bíddu eftir endurútreikningi leiðar.
|
||||
\nGrafið verður tiltækt eftir endurútreikning.</string>
|
||||
<string name="snowmobile_render_descr">Fyrir akstur vélsleða á sérstökum vegum og slóðum.</string>
|
||||
<string name="message_need_calculate_route_before_show_graph">%1$s gögn aðeins tiltæk á vegunum, þú þarft að reikna leið með “Leið milli punkta” til að fá hana.</string>
|
||||
<string name="file_already_imported">Skrá hefur þegar verið flutt inn í OsmAnd</string>
|
||||
<string name="app_mode_gap">Bil</string>
|
||||
<string name="contour_lines_thanks">Takk fyrir að kaupa \'Hæðarlínur\'</string>
|
||||
<string name="osm_live_payment_desc_hw">Áskriftargjaldið verður rukkað miðað við valið tímabil. Þú getur sagt áskriftinni upp hvenær sem er á AppGallery.</string>
|
||||
<string name="use_two_phase_routing">Nota 2-umferða A* leiðararútreikning</string>
|
||||
<string name="osm_live_payment_subscription_management_hw">Greiðsla verður gjaldfærð á AppGallery reikninginn þinn við staðfestingu á kaupunum.
|
||||
\n
|
||||
\n Áskrift endurnýjast sjálfkrafa nema hún sé felld niður fyrir endurnýjunardag. Reikningur þinn verður einungis gjaldfærður fyrir endurnýjunartímabil (mánuður / þrír mánuðir / ár) á endurnýjunardegi.
|
||||
\n
|
||||
\n Þú getur stýrt og aflýst áskriftunum þínum með því að fara í AppGallery stillingarnar þínar.</string>
|
||||
<string name="shared_string_graph">Graf</string>
|
||||
<string name="ltr_or_rtl_combine_via_dash">%1$s — %2$s</string>
|
||||
<string name="shared_string_local_maps">Staðkort</string>
|
||||
<string name="icon_group_amenity">Aðstaða</string>
|
||||
<string name="icon_group_special">Sértákn</string>
|
||||
<string name="icon_group_transport">Samgöngur</string>
|
||||
<string name="icon_group_service">Þjónusta</string>
|
||||
<string name="icon_group_symbols">Tákn</string>
|
||||
<string name="icon_group_sport">Íþróttir</string>
|
||||
<string name="icon_group_emergency">Neyðartilfelli</string>
|
||||
<string name="icon_group_travel">Ferðalög</string>
|
||||
</resources>
|
|
@ -3718,7 +3718,7 @@
|
|||
<string name="hidden_items_descr">Questi elementi sono nascosti dal menu, ma le opzioni rappresentate o i plugins continueranno a funzionare.</string>
|
||||
<string name="reset_items_descr">Nascondere le opzioni le reimposta al loro valore originale.</string>
|
||||
<string name="main_actions">Azioni principali</string>
|
||||
<string name="additional_actions_descr">Puoi accedere a queste azioni toccando il pulsante \"Azioni aggiuntive\".</string>
|
||||
<string name="additional_actions_descr">Puoi accedere a queste azioni toccando il pulsante “%1$s”.</string>
|
||||
<string name="move_inside_category">Puoi spostare gli elementi solo all\'interno di questa categoria.</string>
|
||||
<string name="select_wikipedia_article_langs">Seleziona i linguaggi in cui gli articoli di Wikipedia appariranno sulla mappa. Puoi cambiare fra tutte le lingue disponibili mentre leggi questo articolo.</string>
|
||||
<string name="some_articles_may_not_available_in_lang">Alcuni articoli di Wikipedia potrebbero non essere disponibili nella tua lingua.</string>
|
||||
|
|
|
@ -3837,7 +3837,7 @@
|
|||
<string name="route_between_points_add_track_desc">נא לבחור קובץ מסלול שבו יתווסף המקטע החדש.</string>
|
||||
<string name="route_between_points_whole_track_button_desc">כל המסלול יחושב מחדש באמצעות הפרופיל הנבחר.</string>
|
||||
<string name="route_between_points_next_segment_button_desc">רק המקטע הבא יחושב מחודש באמצעות הפרופיל הנבחר.</string>
|
||||
<string name="route_between_points_desc">נא לבחור כיצד לחבר נקודות, בקו ישר, או לחבר מסלול ביניהן כפי שצוין להלן.</string>
|
||||
<string name="route_between_points_desc">נא לבחור כיצד לחבר את הנקודות, בקו ישר, או לחבר מסלול ביניהן כפי שצוין להלן.</string>
|
||||
<string name="route_between_points_warning_desc">בשלב הבא עליך להצמיד את הדרך המורשית הקרובה ביותר לאחד מפרופילי הניווט שלך כדי להשתמש באפשרות הזו.</string>
|
||||
<string name="street_level_imagery">תמונות ברמת רחוב</string>
|
||||
<string name="plan_route_exit_dialog_descr">להתעלם מהשינויים במסלול המתוכנן על ידי סגירתו\?</string>
|
||||
|
@ -3939,4 +3939,13 @@
|
|||
<string name="message_graph_will_be_available_after_recalculation">נא להמתין לחישוב המסלול מחדש.
|
||||
\nהתרשים יהיה זמין לאחר החישוב מחדש.</string>
|
||||
<string name="ltr_or_rtl_combine_via_dash">%1$s — %2$s</string>
|
||||
<string name="shared_string_local_maps">מפות מקומיות</string>
|
||||
<string name="icon_group_amenity">שירות לציבור</string>
|
||||
<string name="icon_group_special">מיוחד</string>
|
||||
<string name="icon_group_transport">תחבורה</string>
|
||||
<string name="icon_group_service">שירות</string>
|
||||
<string name="icon_group_symbols">סמלים</string>
|
||||
<string name="icon_group_sport">ספורט</string>
|
||||
<string name="icon_group_emergency">חירום</string>
|
||||
<string name="icon_group_travel">טיול</string>
|
||||
</resources>
|
|
@ -990,7 +990,7 @@
|
|||
<string name="poi_wiki_lang_vi">ベトナム語 wiki</string>
|
||||
<string name="poi_wiki_lang_vo">ボラピュク語 wiki</string>
|
||||
<string name="poi_wiki_lang_zh">中国語 wiki</string>
|
||||
<string name="poi_bollard">係船柱</string>
|
||||
<string name="poi_bollard">杭</string>
|
||||
<string name="poi_cycle_barrier">自転車用車止め</string>
|
||||
<string name="poi_motorcycle_barrier">オートバイ用車止め</string>
|
||||
<string name="poi_block">ブロック</string>
|
||||
|
@ -1260,8 +1260,8 @@
|
|||
<string name="poi_amenity_vacuum_cleaner">掃除機</string>
|
||||
<string name="poi_fuel_adblue">ディーゼル排気用液(AdBlue・尿素水)</string>
|
||||
<string name="poi_drive_through">ドライブスルー</string>
|
||||
<string name="poi_drive_through_yes">有り</string>
|
||||
<string name="poi_drive_through_no">無し</string>
|
||||
<string name="poi_drive_through_yes">可</string>
|
||||
<string name="poi_drive_through_no">ドライブスルー: 不可</string>
|
||||
<string name="poi_fuel_91ul">91UL 無鉛航空燃料</string>
|
||||
<string name="poi_fuel_100ll">100LL 有鉛航空燃料</string>
|
||||
<string name="poi_fuel_jeta1">JET A-1ジェット燃料</string>
|
||||
|
@ -1479,7 +1479,7 @@
|
|||
<string name="poi_takeaway_no">持ち帰り不可</string>
|
||||
<string name="poi_takeaway_only">テイクアウト・持ち帰りのみ</string>
|
||||
<string name="poi_archaeological_site_type">遺跡の種類</string>
|
||||
<string name="poi_health_specialty">医療機関</string>
|
||||
<string name="poi_health_specialty">専門分野</string>
|
||||
<string name="poi_health_specialty_general_yes">総合診療医</string>
|
||||
<string name="poi_health_specialty_ophthalmology_yes">眼科</string>
|
||||
<string name="poi_health_specialty_gynaecology_yes">婦人科</string>
|
||||
|
@ -1487,7 +1487,7 @@
|
|||
<string name="poi_health_specialty_orthopaedics_yes">整形外科</string>
|
||||
<string name="poi_health_specialty_otolaryngology_yes">耳鼻咽喉科</string>
|
||||
<string name="poi_health_specialty_paediatrics_yes">小児科</string>
|
||||
<string name="poi_health_specialty_paediatrics_no">医療機関:小児科:無し</string>
|
||||
<string name="poi_health_specialty_paediatrics_no">専門分野:小児科:無し</string>
|
||||
<string name="poi_health_specialty_dermatology_yes">皮膚科</string>
|
||||
<string name="poi_health_specialty_urology_yes">泌尿器科</string>
|
||||
<string name="poi_health_specialty_surgery_yes">一般外科</string>
|
||||
|
@ -1577,7 +1577,7 @@
|
|||
<string name="poi_free_flying_characteristic">スカイスポーツの対応要素</string>
|
||||
<string name="poi_seasonal">季節営業</string>
|
||||
<string name="poi_drive_in">ドライブイン</string>
|
||||
<string name="poi_drive_in_no">無し</string>
|
||||
<string name="poi_drive_in_no">ドライブイン: 不可</string>
|
||||
<string name="poi_power_supply_yes">有り</string>
|
||||
<string name="poi_scout_camp">ボーイスカウト用キャンプ</string>
|
||||
<string name="poi_scout_yes">肯定</string>
|
||||
|
@ -1710,7 +1710,7 @@
|
|||
<string name="poi_medical_system_sidda_yes">南インドのタミル伝統医学</string>
|
||||
<string name="poi_medical_system_unani_yes">ユナニ医学・南アジアの伝統医学</string>
|
||||
<string name="poi_health_facility_type_office">医療事務</string>
|
||||
<string name="poi_drive_in_yes">有り</string>
|
||||
<string name="poi_drive_in_yes">可</string>
|
||||
<string name="poi_healthcare_alternative_types">代替医療の専門種</string>
|
||||
<string name="poi_home_visit">往診</string>
|
||||
<string name="poi_home_visit_no">無し</string>
|
||||
|
@ -3835,4 +3835,8 @@
|
|||
<string name="poi_give_box">ギブボックス(提供品置場)</string>
|
||||
<string name="poi_fire_hydrant_type_pipe">簡易給水栓</string>
|
||||
<string name="poi_fuel_lng">液化天然ガス</string>
|
||||
<string name="poi_gpx_point">GPXポイント</string>
|
||||
<string name="poi_parking_layby">待避所</string>
|
||||
<string name="poi_parking_sheds">車庫</string>
|
||||
<string name="poi_parking_rooftop">屋上</string>
|
||||
</resources>
|
|
@ -827,7 +827,7 @@ POIの更新は利用できません</string>
|
|||
<string name="shared_string_help">ヘルプ</string>
|
||||
<string name="accessibility_mode">アクセシビリティモード</string>
|
||||
<string name="accessibility_mode_descr">アクセシビリティ(ユーザー補助)機能を設定します</string>
|
||||
<string name="shared_string_on">ON</string>
|
||||
<string name="shared_string_on">On</string>
|
||||
<string name="shared_string_off">OFF</string>
|
||||
<string name="accessibility_default">デバイス側のユーザー補助設定に従う</string>
|
||||
<string name="backToMenu">メニューに戻る</string>
|
||||
|
@ -1547,7 +1547,7 @@ POIの更新は利用できません</string>
|
|||
<string name="storage_directory">マップストレージ</string>
|
||||
<string name="shared_string_copy">コピー</string>
|
||||
<string name="osm_edit_context_menu_delete">OSMの編集を削除</string>
|
||||
<string name="rendering_value_disabled_name">無効化</string>
|
||||
<string name="rendering_value_disabled_name">無効</string>
|
||||
<string name="shared_string_logoff">ログオフ</string>
|
||||
<string name="routing_attr_avoid_borders_description">国境を越えて別の国に入るようなルート設定を避けます。</string>
|
||||
<string name="routing_attr_height_name">高さ制限</string>
|
||||
|
@ -2754,7 +2754,7 @@ POIの更新は利用できません</string>
|
|||
<string name="osm_edits_export_desc">OSMメモ、POI、またはその両方用にエクスポートします。</string>
|
||||
<string name="all_data">全てのデータ</string>
|
||||
<string name="osm_notes">OSMメモ</string>
|
||||
<string name="will_open_tomorrow_at">明日開く</string>
|
||||
<string name="will_open_tomorrow_at">明日以降の次の時間に営業</string>
|
||||
<string name="shared_string_without_name">名無し</string>
|
||||
<string name="release_3_2_pre">• 一部の機種で起動時にクラッシュしていた問題を修正
|
||||
\n
|
||||
|
@ -2775,11 +2775,11 @@ POIの更新は利用できません</string>
|
|||
<string name="pick_up_till">駐車上限時刻</string>
|
||||
<string name="without_time_limit">時間制限なし</string>
|
||||
<string name="context_menu_read_full_article">記事の全文を読む</string>
|
||||
<string name="open_from">以下の場所から開く</string>
|
||||
<string name="open_till">以下の所まで開く</string>
|
||||
<string name="will_close_at">閉店時間</string>
|
||||
<string name="will_open_at">開店予定時間</string>
|
||||
<string name="will_open_on">営業予定時刻</string>
|
||||
<string name="open_from">次の時間から営業</string>
|
||||
<string name="open_till">次の時間まで営業</string>
|
||||
<string name="will_close_at">営業終了時間</string>
|
||||
<string name="will_open_at">営業開始時間</string>
|
||||
<string name="will_open_on">営業開始時間</string>
|
||||
<string name="empty_state_markers_active">マップマーカーを作成しよう!</string>
|
||||
<string name="empty_state_markers_history_desc">通過した地点のマーカーと通過予定地点のマーカーがこの画面に表示されます。</string>
|
||||
<string name="shared_string_right">右</string>
|
||||
|
@ -2853,7 +2853,7 @@ POIの更新は利用できません</string>
|
|||
<string name="by_transport_type">%1$s を利用</string>
|
||||
<string name="routeInfo_road_types_name">道路種別</string>
|
||||
<string name="shared_string_swap">入れ替え</string>
|
||||
<string name="show_more">詳細を見る</string>
|
||||
<string name="show_more">さらに表示</string>
|
||||
<string name="tracks_on_map">マップ上の経路</string>
|
||||
<string name="quick_action_show_hide_gpx_tracks">GPX経路の表示/非表示</string>
|
||||
<string name="quick_action_show_hide_gpx_tracks_descr">マップ上にある選択したGPX経路の表示/非表示を切り替えるボタンです。</string>
|
||||
|
@ -2898,7 +2898,7 @@ POIの更新は利用できません</string>
|
|||
<string name="default_price_currency_format">%1$.2f %2$s</string>
|
||||
<string name="osm_live_payment_header">支払い方法の選択:</string>
|
||||
<string name="osm_live_payment_contribute_descr">寄付金はOSMの地図製作に役立てられます。</string>
|
||||
<string name="mapillary_menu_title_pano">360°イメージのみ表示</string>
|
||||
<string name="mapillary_menu_title_pano">360°画像のみを表示</string>
|
||||
<string name="osm_recipient_stat">編集 %1$s, 合計 %2$s mBTC</string>
|
||||
<string name="shared_string_launch">起動</string>
|
||||
<string name="lang_gn_py">グアラニー語</string>
|
||||
|
@ -3048,9 +3048,9 @@ POIの更新は利用できません</string>
|
|||
<string name="rendering_attr_showLez_description">マップ上に低排出ゾーン(CO2排出量の多い車両に課税するエリア)を表示します。ルーティングには影響しません。</string>
|
||||
<string name="rendering_attr_showLez_name">低排出ゾーンの表示</string>
|
||||
<string name="shared_string_default">デフォルト</string>
|
||||
<string name="exit_at">出口:</string>
|
||||
<string name="exit_at">降車</string>
|
||||
<string name="transfers_size">%1$d回の乗り換え</string>
|
||||
<string name="shared_string_walk">歩行</string>
|
||||
<string name="shared_string_walk">徒歩</string>
|
||||
<string name="send_log">ログの送信</string>
|
||||
<string name="files_moved">%1$d個のファイルを移動しました。(%2$s)</string>
|
||||
<string name="files_copied">%1$d個のファイルをコピーしました。(%2$s)</string>
|
||||
|
@ -3106,12 +3106,12 @@ POIの更新は利用できません</string>
|
|||
<string name="select_base_profile_dialog_title">開始時に表示するプロファイルの選択</string>
|
||||
<string name="select_base_profile_dialog_message">カスタムプロファイルは標準のアプリケーションプロファイルを元に作成します。ウィジェットなどの表示設定や速度と距離の単位などの標準設定をプロファイルごとに定義可能です。これらは標準のアプリプロファイルを基本としており、今後それらと共に拡張される可能性があります:</string>
|
||||
<string name="select_nav_profile_dialog_title">ナビゲーションタイプの選択</string>
|
||||
<string name="base_profile_descr_car">乗用車,トラック,オートバイ</string>
|
||||
<string name="base_profile_descr_bicycle">マウンテンバイク、モペッド(ペダル付き原動機付自転車)、馬</string>
|
||||
<string name="base_profile_descr_pedestrian">徒歩,ハイキング,ランニング</string>
|
||||
<string name="base_profile_descr_car">乗用車、トラック、オートバイ</string>
|
||||
<string name="base_profile_descr_bicycle">マウンテンバイク、モペッド、馬</string>
|
||||
<string name="base_profile_descr_pedestrian">徒歩、ハイキング、ランニング</string>
|
||||
<string name="base_profile_descr_public_transport">公共交通機関の種類</string>
|
||||
<string name="base_profile_descr_boat">エンジン付き船舶,漕ぎボート,帆船</string>
|
||||
<string name="base_profile_descr_aircraft">航空機,グライダー</string>
|
||||
<string name="base_profile_descr_boat">船舶、漕ぎボート、帆船</string>
|
||||
<string name="base_profile_descr_aircraft">航空機、グライダー</string>
|
||||
<string name="routing_profile_geocoding">ジオコーディング</string>
|
||||
<string name="routing_profile_straightline">直線</string>
|
||||
<string name="routing_profile_broutrer">BRouter(オフライン)</string>
|
||||
|
|
|
@ -628,7 +628,7 @@
|
|||
<string name="index_item_world_basemap">Oversiktskart (verden)</string>
|
||||
<string name="index_item_world_ski">Skikart (verden)</string>
|
||||
<string name="lang_hr">Kroatisk</string>
|
||||
<string name="calculate_osmand_route_without_internet">Nettfrakoblet beregning av OsmAnd-rutesegment</string>
|
||||
<string name="calculate_osmand_route_without_internet">Frakoblet beregning av OsmAnd-rutesegment</string>
|
||||
<string name="gpx_option_calculate_first_last_segment">Beregn OsmAnd-rute for første og siste rutesegment</string>
|
||||
<string name="map_widget_top">Statuslinje</string>
|
||||
<string name="map_preferred_locale_descr">Foretrukket språk for påskrifter på kartet (hvis utilgjengelig brukes engelsk eller lokale navn).</string>
|
||||
|
@ -3694,7 +3694,7 @@
|
|||
<string name="shared_string_custom">Egendefinert</string>
|
||||
<string name="gpx_direction_arrows">Retningspiler</string>
|
||||
<string name="shared_string_tones">tonn</string>
|
||||
<string name="route_between_points">Rute mellom punkter</string>
|
||||
<string name="route_between_points">Rut mellom punkter</string>
|
||||
<string name="app_mode_enduro_motorcycle">Enduro-motorsykkel</string>
|
||||
<string name="screen_control">Skjermkontroll</string>
|
||||
<string name="system_screen_timeout">Bruk systemets skjermtidsavbrudd</string>
|
||||
|
@ -3706,7 +3706,7 @@
|
|||
<string name="reverse_route">Snu rute</string>
|
||||
<string name="overwrite_track">Overskriv spor</string>
|
||||
<string name="route_between_points_whole_track_button_desc">Hele sporet blir beregnet på nytt med den valgte profilen.</string>
|
||||
<string name="route_between_points_desc">Velg hvordan punkter skal forbindes; med en rett linje, eller beregn en rute mellom dem som spesifisert nedenfor.</string>
|
||||
<string name="route_between_points_desc">Velg hvordan punktene skal forbindes; med en rett linje, eller beregn en rute mellom dem som spesifisert nedenfor.</string>
|
||||
<string name="route_between_points_next_segment_button_desc">Kun det neste segmentet blir beregnet på nytt med den valgte profilen.</string>
|
||||
<string name="whole_track">Hele sporet</string>
|
||||
<string name="next_segment">Neste segment</string>
|
||||
|
@ -3872,4 +3872,6 @@
|
|||
\nGraf vil være tilgjengelig etter omberegning.</string>
|
||||
<string name="ltr_or_rtl_combine_via_dash">%1$s — %2$s</string>
|
||||
<string name="shared_string_graph">Graf</string>
|
||||
<string name="message_need_calculate_route_before_show_graph">%1$s-data er tilgjengelig kun på veiene, du må beregne en rute med “Rut mellom punkter”.</string>
|
||||
<string name="shared_string_gpx_route">Spor rute</string>
|
||||
</resources>
|
|
@ -12,7 +12,7 @@
|
|||
<string name="map_widget_view_direction">Kijkrichting</string>
|
||||
<string name="map_widget_transparent">Transparante widgets</string>
|
||||
<string name="int_continuosly">continu</string>
|
||||
<string name="vector_maps_may_display_faster_on_some_devices">Vectorkaarten worden vaak sneller weergegeven. Werkt niet op sommige apparaten.</string>
|
||||
<string name="vector_maps_may_display_faster_on_some_devices">Vectorkaarten worden vaak sneller weergegeven. Werkt niet op alle toestellen.</string>
|
||||
<string name="play_commands_of_currently_selected_voice">Kies een stem en test door aankondigingen af te spelen:</string>
|
||||
<string name="debugging_and_development">OsmAnd fout-opsporing en ontwikkeling</string>
|
||||
<string name="native_rendering">Interne kaartgeneratie</string>
|
||||
|
@ -218,7 +218,7 @@
|
|||
<string name="tts_language_not_supported_title">Taal niet ondersteund</string>
|
||||
<string name="tts_language_not_supported">De gekozen taal wordt niet ondersteund door de geïnstalleerde Android TTS (tekst-naar-spraak) stemgenerator. De standaard TTS taal zal worden gebruikt. Zoek een andere TTS stemgenerator op de markt\?</string>
|
||||
<string name="tts_missing_language_data_title">Ontbrekende gegevens</string>
|
||||
<string name="tts_missing_language_data">Geen gegevens voor de geselecteerde taal geïnstalleerd. Wil je naar de Play-store gaan om deze te installeren?</string>
|
||||
<string name="tts_missing_language_data">Geen gegevens voor de geselecteerde taal geïnstalleerd. Ga naar \"Play Store\" om deze te installeren\?</string>
|
||||
<string name="gpx_option_reverse_route">Keer richting van GPX-track om</string>
|
||||
<string name="gpx_option_destination_point">Huidige bestemming gebruiken</string>
|
||||
<string name="gpx_option_from_start_point">Volg de gehele track</string>
|
||||
|
@ -251,7 +251,7 @@
|
|||
<string name="error_doing_search">Fout bij offline zoeken.</string>
|
||||
<string name="search_osm_offline">Zoek adres in de offline kaarten</string>
|
||||
<string name="system_locale">Systeem</string>
|
||||
<string name="preferred_locale_descr">App toon talen (OsmAnd dient opnieuw gestart).</string>
|
||||
<string name="preferred_locale_descr">App \"Toon talen\" (OsmAnd dient opnieuw gestart).</string>
|
||||
<string name="preferred_locale">Toon talen</string>
|
||||
<string name="unit_of_length_descr">Wijzig de eenheid van afstand voor metingen.</string>
|
||||
<string name="unit_of_length">Afstand eenheden</string>
|
||||
|
@ -433,7 +433,7 @@
|
|||
<string name="search_poi_location">Naar signaal zoeken…</string>
|
||||
<string name="search_near_map">Zoek bij het midden van de kaart</string>
|
||||
<string name="search_nearby">Zoek dichtbij</string>
|
||||
<string name="map_orientation_default">Zelfde als apparaat-instelling</string>
|
||||
<string name="map_orientation_default">Zelfde als apparaatinstelling</string>
|
||||
<string name="map_orientation_portrait">Portret</string>
|
||||
<string name="map_orientation_landscape">Landschap</string>
|
||||
<string name="map_screen_orientation">Kaartscherm-oriëntatie</string>
|
||||
|
@ -636,13 +636,13 @@
|
|||
<string name="map_online_data_descr">Gebruik online kaarten (download en bewaar deze op SD-kaart).</string>
|
||||
<string name="shared_string_online_maps">Online kaarten</string>
|
||||
<string name="online_map_settings_descr">Configureer online of bewaarde kaarttegels.</string>
|
||||
<string name="osmand_rastermaps_plugin_description">Geeft toegang tot vele soorten online (zogenaamde tile of raster) kaarten, van vooraf gedefinieerde OSM tiles (zoals Mapnik) tot satellietbeelden en lagen voor speciale doeleinden zoals weerkaarten, klimaatkaarten, geologische kaarten, reliëfschaduwlagen, enz.
|
||||
<string name="osmand_rastermaps_plugin_description">Geeft toegang tot vele soorten online (zogenaamde tile of raster) kaarten, van vooraf gedefinieerde OSM tiles (zoals Mapnik) tot satellietbeelden en lagen voor speciale doeleinden zoals weerkaarten, klimaatkaarten, geologische kaarten, reliëf schaduwlagen, enz.
|
||||
\n
|
||||
\nAl deze kaarten kunnen worden gebruikt als de hoofd(basis)kaart, of als een extra laag of een achtergrondlaag bij een andere basiskaart (zoals de normale offline kaarten van OsmAnd). Om een achtergrondlaag beter te kunnen zien, kunt u elementen van de OsmAnd vectorkaarten eenvoudig verbergen via het menu \'Kaart instellen\'.
|
||||
\n
|
||||
\nRasterkaarten zijn direct via online bronnen verkrijgbaar of kunnen voor offline gebruik gereedgemaakt worden (en handmatig gekopieerd naar de OsmAnd gegevensmap) als SQLite database door diverse hulpprogramma\'s van derden.</string>
|
||||
<string name="osmand_background_plugin_description">Instellingen om tracking en navigatie te kunnen gebruiken met het scherm uit (schakelt de GPS periodiek in).</string>
|
||||
<string name="osmand_accessibility_description">"Maakt de toegankelijkheidsopties van het toestel rechtstreeks beschikbaar in OsmAnd. Hiermee kan o.a. de spreeksnelheid van tekst-naar-spraak-stemmen aangepast worden, D-pad schermnavigatie geconfigureerd worden, een trackball gebruikt worden voor de zoomregeling, of het gebruiken van meldingen via tekst-naar-spraak, bijvoorbeeld het automatisch melden van de positie."</string>
|
||||
<string name="osmand_accessibility_description">Maakt de toegankelijkheidsopties van het toestel rechtstreeks beschikbaar in OsmAnd. Hiermee kan o.a. de spreeksnelheid van tekst-naar-spraak stemmen aangepast worden, D-pad schermnavigatie geconfigureerd worden, een trackball gebruikt worden voor de zoomregeling, of het gebruiken van meldingen via tekst-naar-spraak, bijvoorbeeld het automatisch melden van de positie.</string>
|
||||
<string name="osmand_development_plugin_description">Deze plug-in toont de instellingen voor ontwikkel- en debug-opties, zoals routetest en -simulatie, schermweergave-prestaties, en spraaksturing. Deze instellingen zijn bedoeld voor programmeurs die OsmAnd willen verbeteren en zijn niet nodig voor normaal gebruik.</string>
|
||||
<string name="plugins_screen">Plugins beheren</string>
|
||||
<string name="prefs_plugins_descr">Schakel plugins in voor speciale functies en extra instellingen.</string>
|
||||
|
@ -750,7 +750,7 @@
|
|||
<string name="osmand_plus_short_description_80_chars">OsmAnd is een open-source navigatiesysteem met online en offline kaarten</string>
|
||||
<string name="osmand_long_description_1000_chars">OsmAnd (OSM Automated Navigation Directions)
|
||||
\n
|
||||
\n OsmAnd is een open-source navigatie-app die toegang geeft tot een grote variëteit aan wereldwijde OSM-gegevens. Alle kaartgegevens (vector- of rasterkaarten) kunnen in het telefoongeheugen worden opgeslagen voor offline gebruik. OsmAnd biedt ook zowel offline als online routeaanwijzingen, met stembegeleiding.
|
||||
\nOsmAnd is een open-source navigatie-app die toegang geeft tot een grote variëteit aan wereldwijde OSM-gegevens. Alle kaartgegevens (vector- of rasterkaarten) kunnen in het telefoongeheugen worden opgeslagen voor offline gebruik. OsmAnd biedt ook zowel offline als online routeaanwijzingen, met stembegeleiding.
|
||||
\n
|
||||
\n Enkele van de belangrijkste mogelijkheden:
|
||||
\n - Volledig offline gebruik (gedownloade vector- of rasterkaarten worden opgeslagen op het apparaat)
|
||||
|
@ -767,11 +767,9 @@
|
|||
\n
|
||||
\n Beperkingen van deze gratis versie van OsmAnd:
|
||||
\n - Beperkt aantal kaartdownloads
|
||||
\n - Geen toegang tot offline Wikipedia POI\'s.
|
||||
\n - Geen toegang tot offline Wikipedia POI\'s
|
||||
\n
|
||||
\n OsmAnd wordt actief ontwikkeld en ons project en de verdere vooruitgang ervan is afhankelijk van
|
||||
\nfinanciële bijdragen om de ontwikkeling en testen van nieuwe functionaliteit te kunnen bekostigen.
|
||||
\nWij verzoeken je om OsmAnd+ te kopen, of om een donatie over te maken via https://osmand.net.</string>
|
||||
\n OsmAnd wordt actief ontwikkeld en ons project en de verdere vooruitgang ervan is afhankelijk van financiële bijdragen om de ontwikkeling en testen van nieuwe functionaliteit te kunnen bekostigen. Wij verzoeken je om OsmAnd+ te kopen, of om een donatie over te maken via https://osmand.net.</string>
|
||||
<string name="osmand_plus_long_description_1000_chars">OsmAnd+ (OSM Automated Navigation Directions)
|
||||
\n
|
||||
\nOsmAnd+ is een open-source app voor navigatie die gebruikmaakt van de wereldwijde verzameling van OSM-gegevens. Alle kaartmateriaal (vector- en rasterkaarten) kunnen worden opgeslagen in het telefoongeheugen voor offline gebruik. De app biedt ook offline- en online-navigatie, met stembegeleiding.
|
||||
|
@ -1283,7 +1281,7 @@
|
|||
<string name="map_widget_left">Widgets Linker Kolom</string>
|
||||
<string name="configure_map">Kaart instellen</string>
|
||||
<string name="search_radius_proximity">Binnen</string>
|
||||
<string name="anonymous_user_hint">Anonieme gebruikesr kunnen geen
|
||||
<string name="anonymous_user_hint">Anonieme gebruikers kunnen geen:
|
||||
\n- groepen aanmaken;
|
||||
\n- groepen en apparaten synchroniseren met de server;
|
||||
\n- groepen en apparaten beheren in een eigen omgeving op de website.</string>
|
||||
|
@ -1437,7 +1435,7 @@
|
|||
<string name="shared_string_control_start">Start</string>
|
||||
<string name="shared_string_control_stop">Stop</string>
|
||||
<string name="shared_string_import">Importeren</string>
|
||||
<string name="shared_string_export">Export naar OSM</string>
|
||||
<string name="shared_string_export">Exporteer naar OSM</string>
|
||||
<string name="shared_string_more">Meer…</string>
|
||||
<string name="shared_string_more_actions">Meer acties</string>
|
||||
<string name="shared_string_do_not_show_again">Toon niet meer</string>
|
||||
|
@ -1532,7 +1530,7 @@
|
|||
<string name="routing_attr_height_name">Hoogte van het voertuig</string>
|
||||
<string name="routing_attr_height_description">Geef de hoogte die minimaal toegestaan moet zijn op de route.</string>
|
||||
<string name="use_fast_recalculation">Slim opnieuw berekenen van routes</string>
|
||||
<string name="use_fast_recalculation_desc">Herbereken alleen het begin van de route voor lange trajecten.</string>
|
||||
<string name="use_fast_recalculation_desc">Herbereken alleen het begin van de route. Kan gebruikt worden voor lange trajecten.</string>
|
||||
<string name="osm_edit_context_menu_delete">Verwijder OSM-wijziging</string>
|
||||
<string name="rendering_value_disabled_name">Uitgeschakeld</string>
|
||||
<string name="rendering_value_walkingRoutesScopeOSMC_name">Kleuren naar Wandelroute-netwerk</string>
|
||||
|
@ -2285,10 +2283,10 @@
|
|||
\n • Toon POIs (Points Of Interest) in uw omgeving
|
||||
\n • Draai de kaart in uw bewegingsrichting (of kompasrichting)
|
||||
\n • Toon uw positie en waar u naar kijkt
|
||||
\n • Deel uw lokatie met vrienden
|
||||
\n • Deel uw locatie met vrienden
|
||||
\n • Bewaar belangrijke plaatsen in ‘Favorieten’
|
||||
\n • Toon namen in het Engels, de lokale taal, of fonetisch
|
||||
\n • Toon extra online tiles, zoals een satellietfoto (van Bing), verschillende extra lagen zoals GPX-tracks voor navigatie e.d. met instelbare transparantie
|
||||
\n • Toon extra online tegels, zoals een satellietfoto (van Bing), verschillende extra lagen zoals GPX-tracks voor navigatie e.d. met instelbare transparantie
|
||||
\n</string>
|
||||
<string name="osmand_extended_description_part4">Skiën
|
||||
\nMet de OsmAnd Ski plug-in ziet u pistes met hun moeilijkheidsgraad, en extra informatie zoals liften en andere faciliteiten.</string>
|
||||
|
@ -2302,7 +2300,7 @@
|
|||
\n • De kaart toont voetpaden en wandelpaden
|
||||
\n • Wikipedia kan je veel vertellen tijdens een stadswandeling, in je eigen taal
|
||||
\n • OV-haltes (tram, bus, trein, metro), inclusief lijnnummers, helpen je bij het reizen in een onbekende stad
|
||||
\n • GPS-navigatie in voetgangermodus gebruikt voor het berekenen van de route voet- en wandelpaden
|
||||
\n • GPS-navigatie in voetgangersmodus gebruikt voor het berekenen van de route voet- en wandelpaden
|
||||
\n • Upload en volg een GPX-route of neem er zelf één op en deel deze.
|
||||
\n</string>
|
||||
<string name="osmand_extended_description_part7">Draag bij aan OpenStreetMap (OSM)
|
||||
|
@ -2384,7 +2382,7 @@
|
|||
\n • Kaart draaien in kompas- of bewegingsrichting
|
||||
\n • Bewaar belangrijke plaatsen in ‘Favorieten’.
|
||||
\n • Toon POI’s (points of interest) in de buurt
|
||||
\n • Toon specifieke online tiles, satellietbeelden (van Bing), en extra lagen zoals GPX-tracks met rit-/routeinformatie e.d., met instelbare transparantie
|
||||
\n • Toon specifieke online tegels, satellietbeelden (van Bing), en extra lagen zoals GPX-tracks met rit-/routeinformatie e.d., met instelbare transparantie
|
||||
\n • Toon plaatsnamen in het Engels, de lokale taal of fonetisch weergegeven
|
||||
\n</string>
|
||||
<string name="osmand_plus_extended_description_part4">Gebruik OSM- en Wikipedia-gegevens
|
||||
|
@ -3235,7 +3233,7 @@
|
|||
<string name="routing_attr_freeride_policy_description">\'Freeride\' en \'Off-piste\' zijn officieuze routes en passages. Meestal onverzorgd en niet onderhouden, en niet \'s avonds gecontroleerd. Betreden op eigen risico.</string>
|
||||
<string name="collected_data">Verzamelde data</string>
|
||||
<string name="last_launch_crashed">Laatste OsmAnd uitvoering gecrasht. Help ons alstublieft OsmAnd te verbeteren door de foutmelding te delen.</string>
|
||||
<string name="app_mode_personal_transporter">Personal transporter</string>
|
||||
<string name="app_mode_personal_transporter">Persoonlijk transport</string>
|
||||
<string name="app_mode_offroad">Offroad</string>
|
||||
<string name="sett_wunderlinq_ext_input">WunderLINQ</string>
|
||||
<string name="routeInfo_roadClass_name">Wegtype</string>
|
||||
|
@ -3298,7 +3296,7 @@
|
|||
<string name="shared_string_turn_off">Uitschakelen</string>
|
||||
<string name="new_plugin_added">Nieuwe plug-in toegevoegd</string>
|
||||
<string name="join_segments">Segmenten samenvoegen</string>
|
||||
<string name="release_3_4">• App profiles: Create a custom profile for your own needs, with a custom icon and color
|
||||
<string name="release_3_4">• App-profielen: maak een eigen profiel, met een aangepast pictogram en kleur
|
||||
\n
|
||||
\n • Nu aan te passen standaard en min / max snelheden voor elk profiel
|
||||
\n
|
||||
|
@ -3306,9 +3304,9 @@
|
|||
\n
|
||||
\n • Opties toegevoegd om het kompas en een straalliniaal op de kaart te tonen
|
||||
\n
|
||||
\n • Fix background track logging
|
||||
\n • Trackregistratie op de achtergrond herstellen
|
||||
\n
|
||||
\n • Improved background map downloads
|
||||
\n • Verbeterde downloads van achtergrondkaarten
|
||||
\n
|
||||
\n • \'Zet scherm aan\' optie is terug
|
||||
\n
|
||||
|
@ -3336,7 +3334,7 @@
|
|||
<string name="edit_profiles_descr">U kunt geen standaard OsmAnd profielen verwijderen, maar u kunt ze deactiveren (in het vorige scherm), of naar onderen verplaatsen.</string>
|
||||
<string name="edit_profiles">Wijzig profielen</string>
|
||||
<string name="select_nav_profile_dialog_message">\'Navigatietype\' bepaalt hoe routes berekend worden.</string>
|
||||
<string name="profile_appearance">Profiel aanzicht</string>
|
||||
<string name="profile_appearance">Profiel weergave</string>
|
||||
<string name="choose_icon_color_name">Icoon, kleur en naam</string>
|
||||
<string name="reorder_profiles">Wijzig lijst met profielen</string>
|
||||
<string name="selected_profile">Geselecteerd profiel</string>
|
||||
|
@ -3567,7 +3565,7 @@
|
|||
<string name="replace_point_descr">Vervang een ander punt door dit punt.</string>
|
||||
<string name="app_mode_ski_touring">Toerskiën</string>
|
||||
<string name="app_mode_ski_snowmobile">Sneeuwscooter</string>
|
||||
<string name="custom_osmand_plugin">Aangepaste OsmAnd-plug-in</string>
|
||||
<string name="custom_osmand_plugin">Aangepaste OsmAnd plug-in</string>
|
||||
<string name="shared_string_items">Elementen</string>
|
||||
<string name="changes_applied_to_profile">Wijzigingen toegepast op het \'%1$s\'-profiel.</string>
|
||||
<string name="settings_item_read_error">Kon niet lezen van \'%1$s\'.</string>
|
||||
|
@ -3579,7 +3577,7 @@
|
|||
<string name="shared_string_all_languages">Alle talen</string>
|
||||
<string name="wiki_menu_download_descr">Om Wikipedia-POI’s op de kaart te tonen zijn extra kaarten nodig.</string>
|
||||
<string name="select_wikipedia_article_langs">Selecteer de talen voor Wikipedia-artikelen op de kaart. Tijdens het lezen van het artikel kan omgeschakeld worden naar een andere beschikbare taal.</string>
|
||||
<string name="some_articles_may_not_available_in_lang">Sommige Wikipedia-artikelen zijn mogelijk niet beschikbaar in de eigen taal.</string>
|
||||
<string name="some_articles_may_not_available_in_lang">Sommige Wikipedia-artikelen zijn mogelijk niet beschikbaar in je eigen taal.</string>
|
||||
<string name="lang_zhyue">Kantonees</string>
|
||||
<string name="lang_zhminnan">Minnanyu</string>
|
||||
<string name="lang_yo">Yoruba</string>
|
||||
|
@ -3624,8 +3622,8 @@
|
|||
<string name="change_application_profile">App-profiel wijzigingen</string>
|
||||
<string name="index_item_world_basemap_detailed">Wereldoverzichtskaart (gedetailleerd)</string>
|
||||
<string name="unsupported_type_error">Niet ondersteund type</string>
|
||||
<string name="width_limit_description">Geef de voertuigbreedte op, er zijn mogelijk routebeperkingen voor brede voertuigen.</string>
|
||||
<string name="height_limit_description">Geef de voertuighoogte op, er zijn mogelijk routebeperkingen voor hoge voertuigen.</string>
|
||||
<string name="width_limit_description">Geef de voertuigbreedte op, er zijn mogelijk routebeperkingen voor te brede voertuigen.</string>
|
||||
<string name="height_limit_description">Geef de voertuighoogte op, er zijn mogelijk routebeperkingen voor te hoge voertuigen.</string>
|
||||
<string name="weight_limit_description">Geef het voertuiggewicht op, er zijn mogelijk routebeperkingen voor zwaar verkeer.</string>
|
||||
<string name="gpx_parse_error">OsmAnd GPX is corrupt, neem contact op met het support team voor verder onderzoek.</string>
|
||||
<string name="shared_string_always">Altijd</string>
|
||||
|
@ -3636,7 +3634,7 @@
|
|||
<string name="turn_screen_on_navigation_instructions_descr">Scherm aanzetten bij elke routeaanwijzing.</string>
|
||||
<string name="turn_screen_on_navigation_instructions">Routeaanwijzingen</string>
|
||||
<string name="turn_screen_on_power_button_disabled">Uitgeschakeld. De instelling ‘Timeout na wakker worden’ moet ingesteld zijn op ‘Scherm aanlaten’.</string>
|
||||
<string name="turn_screen_on_power_button_descr">Door op de aan/uit-knop te drukken gaat het scherm aan met OsmAnd op de voorgrond van het vergrendelscherm.</string>
|
||||
<string name="turn_screen_on_power_button_descr">Door op de aan/uit knop te drukken gaat het scherm aan met OsmAnd op de voorgrond van het vergrendelde scherm.</string>
|
||||
<string name="turn_screen_on_power_button">Aan/uit-knop</string>
|
||||
<string name="turn_screen_on_proximity_sensor">Nabijheidssensor</string>
|
||||
<string name="turn_screen_on_wake_time_descr">Selecteer de schermtimeout na wakker worden. (Kies “%1$s” om geen timeout te gebruiken.)</string>
|
||||
|
@ -3682,7 +3680,7 @@
|
|||
<string name="tiles_storage_descr">Kies hoe gedownloade rasterkaartsegmenten worden opgeslagen.</string>
|
||||
<string name="profiles_for_action_not_found">Geen overeenkomende profielen gevonden.</string>
|
||||
<string name="screen_timeout">Time-out van het scherm</string>
|
||||
<string name="use_volume_buttons_as_zoom_descr">Inschakelen om het zoomniveau van de kaart in te stellen met de volumeknoppen.</string>
|
||||
<string name="use_volume_buttons_as_zoom_descr">Regel het zoomniveau, van de kaart, met de volumeknop op het apparaat.</string>
|
||||
<string name="use_volume_buttons_as_zoom">Gebruik volumeknoppen om in en uit te zoomen</string>
|
||||
<string name="plugin_wikipedia_description">Verkrijg informatie over POIs uit Wikipedia. Het is je offline reisgidsje - schakel de Wikipedia-plug-in in en geniet van artikelen over de bezienswaardigheden in je omgeving.</string>
|
||||
<string name="lenght_limit_description">Geef de voertuiglengte op, er zijn mogelijk routebeperkingen voor lange voertuigen.</string>
|
||||
|
@ -3707,7 +3705,7 @@
|
|||
<string name="add_hidden_group_info">Het toegevoegde punt zal niet zichtbaar zijn op de kaart, aangezien de geselecteerde groep verborgen is, je kan het vinden in \"%s\".</string>
|
||||
<string name="system_default_theme">Standaard</string>
|
||||
<string name="route_between_points">Route tussen punten</string>
|
||||
<string name="route_between_points_warning_desc">"Vervolgens, zet uw track vast op de dichtstbijzijnde toegestane weg met een van uw navigatieprofielen om deze optie te gebruiken."</string>
|
||||
<string name="route_between_points_warning_desc">Vervolgens, zet uw track vast op de dichtstbijzijnde toegestane weg met een van uw navigatieprofielen om deze optie te gebruiken.</string>
|
||||
<string name="message_need_calculate_route_before_show_graph">%1$s gegevens alleen beschikbaar op de wegen, u moet een route berekenen met behulp van \"Route tussen punten\" om deze te krijgen.</string>
|
||||
<string name="route_between_points_desc">Selecteer hoe de punten verbonden worden, via een rechte lijn, of een route berekenen tussen de punten zoals hieronder aangegeven.</string>
|
||||
<string name="route_between_points_next_segment_button_desc">Alleen het volgende segment wordt opnieuw berekend met het geselecteerde profiel.</string>
|
||||
|
@ -3744,7 +3742,7 @@
|
|||
<string name="simplified_track_description">Alleen de routelijn wordt opgeslagen, de waypoints worden verwijderd.</string>
|
||||
<string name="shared_string_done">Bewaar</string>
|
||||
<string name="reverse_route">Route omkeren</string>
|
||||
<string name="route_between_points_add_track_desc">"Selecteer een track waaraan je een nieuw segment wil toevoegen."</string>
|
||||
<string name="route_between_points_add_track_desc">Selecteer een track waaraan je een nieuw segment wil toevoegen.</string>
|
||||
<string name="plan_route_select_track_file_for_open">Selecteer een trackbestand om te openen.</string>
|
||||
<string name="plan_route_exit_dialog_descr">Weet u zeker dat u alle wijzigingen in de geplande route wilt annuleren door deze te sluiten\?</string>
|
||||
<string name="plan_route_trim_before">Opsmukken voor</string>
|
||||
|
@ -3771,4 +3769,129 @@
|
|||
<string name="plan_route_create_new_route">Maak een nieuwe route</string>
|
||||
<string name="plan_route_open_existing_track">Open een bestaande track</string>
|
||||
<string name="plan_a_route">Plan een route</string>
|
||||
<string name="use_two_phase_routing">Gebruik 2-fasen A* routeringsalgoritme</string>
|
||||
<string name="shared_string_graph">Grafiek</string>
|
||||
<string name="message_graph_will_be_available_after_recalculation">Wacht op de herberekening van de route.
|
||||
\nDe grafiek is beschikbaar na herberekening.</string>
|
||||
<string name="ltr_or_rtl_combine_via_dash">%1$s — %2$s</string>
|
||||
<string name="import_track_descr">Kies een trackbestand om te volgen of importeer het, vanaf uw apparaat.</string>
|
||||
<string name="app_mode_gap">Kloof</string>
|
||||
<string name="shared_string_custom">Op maat</string>
|
||||
<string name="perform_oauth_authorization_description">Voer een OAuth-login uit om osm edit functies te gebruiken</string>
|
||||
<string name="release_3_5">"• Bijgewerkte app- en profielinstellingen: instellingen zijn nu gerangschikt op type. Elk profiel kan afzonderlijk worden aangepast.
|
||||
\n
|
||||
\n • Nieuw dialoogvenster voor het downloaden van kaarten waarin wordt voorgesteld een kaart te downloaden tijdens het browsen
|
||||
\n
|
||||
\n • Donkere thema-fixes
|
||||
\n
|
||||
\n • Verschillende routeringsproblemen over de hele wereld opgelost
|
||||
\n
|
||||
\n • Bijgewerkte basiskaart met meer gedetailleerd wegennet
|
||||
\n
|
||||
\n • Vaste overstroomde gebieden over de hele wereld
|
||||
\n
|
||||
\n • Skirouting: hoogteprofiel en routecomplexiteit toegevoegd aan de routedetails
|
||||
\n
|
||||
\n • Andere bugs opgelost
|
||||
\n
|
||||
\n"</string>
|
||||
<string name="release_3_6">"• Profielen: nu kunt u de volgorde wijzigen, het pictogram voor de kaart instellen, alle instellingen voor basisprofielen wijzigen en ze terugzetten naar de standaardinstellingen
|
||||
\n
|
||||
\n • Exitnummer toegevoegd in de navigatie
|
||||
\n
|
||||
\n • Herwerkte plug-in instellingen
|
||||
\n
|
||||
\n • Herwerkt instellingenscherm voor snelle toegang tot alle profielen
|
||||
\n
|
||||
\n • Optie toegevoegd om instellingen van een ander profiel te kopiëren
|
||||
\n
|
||||
\n • Mogelijkheid toegevoegd om een volgorde te wijzigen of POI-categorieën in Zoeken te verbergen
|
||||
\n
|
||||
\n • Correct uitgelijnde POI-pictogrammen op de kaart
|
||||
\n
|
||||
\n • Zonsondergang / zonsopganggegevens toegevoegd om de kaart te configureren
|
||||
\n
|
||||
\n • Thuis/werk-pictogrammen toegevoegd op de kaart
|
||||
\n
|
||||
\n • Ondersteuning toegevoegd voor meerdere regels beschrijving bij Instellingen
|
||||
\n
|
||||
\n • Correcte transliteratie toegevoegd aan de kaart van Japan
|
||||
\n
|
||||
\n • Antarctica-kaart toegevoegd
|
||||
\n
|
||||
\n"</string>
|
||||
<string name="what_is_new">Wat is er nieuw</string>
|
||||
<string name="snowmobile_render_descr">Voor sneeuwscooter, rijden met speciale wegen en tracks.</string>
|
||||
<string name="set_working_days_to_continue">Stel aantal werkdagen in om door te gaan</string>
|
||||
<string name="gpx_split_interval_descr">Selecteer het interval waarmee markeringen met afstand of tijd op de track worden weergegeven.</string>
|
||||
<string name="gpx_split_interval_none_descr">Selecteer de gewenste splitsingsoptie: op tijd of op afstand.</string>
|
||||
<string name="track_coloring_solid">Vaste</string>
|
||||
<string name="overwrite_track">Overschrijf track</string>
|
||||
<string name="threshold_distance">Drempelafstand</string>
|
||||
<string name="navigation_profile">Navigatieprofiel</string>
|
||||
<string name="in_case_of_reverse_direction">In geval van een omgekeerde richting</string>
|
||||
<string name="shared_string_gpx_files">Routes</string>
|
||||
<string name="layer_gpx_layer">Routes</string>
|
||||
<string name="show_gpx">Routes</string>
|
||||
<string name="save_track_to_gpx_globally">Log track naar GPX-bestand</string>
|
||||
<string name="shared_string_gpx_route">Volg route</string>
|
||||
<string name="empty_state_my_tracks">Voeg trackbestanden toe</string>
|
||||
<string name="context_menu_item_add_waypoint">Voeg een trackwaypoint toe</string>
|
||||
<string name="follow_track">Volg de track</string>
|
||||
<string name="follow_track_descr">Kies een trackbestand om te volgen</string>
|
||||
<string name="select_another_track">Selecteer een andere track</string>
|
||||
<string name="navigate_to_track_descr">Navigeer vanaf mijn positie naar de track</string>
|
||||
<string name="start_of_the_track">Track starten</string>
|
||||
<string name="nearest_point">Dichtstbijzijnde punt</string>
|
||||
<string name="attach_to_the_roads">Aan wegen koppelen</string>
|
||||
<string name="delete_address">Adres verwijderen</string>
|
||||
<string name="add_address">Adres ingeven</string>
|
||||
<string name="access_hint_enter_address">Adres ingeven</string>
|
||||
<string name="shared_string_file_name">Bestandsnaam</string>
|
||||
<string name="number_of_gpx_files_selected_pattern">%s trackbestanden geselecteerd</string>
|
||||
<string name="disable_recording_once_app_killed_descrp">Zal trackregistratie onderbreken wanneer de app wordt uitgeschakeld (via recente apps). (OsmAnd-achtergrondindicatie verdwijnt uit de Android-berichtenbalk.)</string>
|
||||
<string name="previous_segment">Vorig segment</string>
|
||||
<string name="all_previous_segments">Alle voorgaande segmenten</string>
|
||||
<string name="only_selected_segment_recalc">Alleen het geselecteerde segment wordt opnieuw berekend met het geselecteerde profiel.</string>
|
||||
<string name="all_previous_segments_will_be_recalc">Alle voorgaande segmenten worden opnieuw berekend met het geselecteerde profiel.</string>
|
||||
<string name="open_saved_track">Open opgeslagen track</string>
|
||||
<string name="shared_string_is_saved">wordt opgeslagen</string>
|
||||
<string name="one_point_error">Voeg ten minste twee punten toe.</string>
|
||||
<string name="shared_string_redo">Opnieuw doen</string>
|
||||
<string name="sort_last_modified">Laatst gewijzigd</string>
|
||||
<string name="sort_name_descending">Naam: A – Z</string>
|
||||
<string name="sort_name_ascending">Naam: A – Z</string>
|
||||
<string name="start_finish_icons">Start/stop iconen</string>
|
||||
<string name="contour_lines_thanks">Bedankt voor het kopen van \'Contourlijnen\'</string>
|
||||
<string name="osm_live_payment_desc_hw">Abonnement berekend per geselecteerde periode. Annuleer het op elk moment op AppGallery.</string>
|
||||
<string name="osm_live_payment_subscription_management_hw">De betaling wordt bij de bevestiging van de aankoop in rekening gebracht op uw AppGallery-account.
|
||||
\n
|
||||
\nHet abonnement wordt automatisch verlengd, tenzij het vóór de verlengingsdatum wordt opgezegd. Uw account wordt alleen op de verlengingsdatum in rekening gebracht voor de verlengingsperiode (maand / drie maanden / jaar).
|
||||
\n
|
||||
\nU kunt uw abonnementen beheren en annuleren door naar uw AppGallery-instellingen te gaan.</string>
|
||||
<string name="routing_attr_avoid_footways_description">Vermijd voetpaden</string>
|
||||
<string name="routing_attr_avoid_footways_name">Vermijd voetpaden</string>
|
||||
<string name="development">Ontwikkeling</string>
|
||||
<string name="use_live_public_transport">OsmAnd Live gegevens</string>
|
||||
<string name="use_live_routing">OsmAnd Live gegevens</string>
|
||||
<string name="complex_routing_descr">Twee stappen routeberekening voor autonavigatie.</string>
|
||||
<string name="use_native_pt">Eigen ontwikkeling van het openbaar vervoer</string>
|
||||
<string name="use_native_pt_desc">Schakel over naar Java (veilige) routeberekening voor het openbaar vervoer</string>
|
||||
<string name="perform_oauth_authorization">Inloggen via OAuth</string>
|
||||
<string name="clear_osm_token">Wis OpenStreetMap OAuth-token</string>
|
||||
<string name="osm_edit_logout_success">Uitloggen gelukt</string>
|
||||
<string name="file_already_imported">Het bestand is al geïmporteerd in OsmAnd</string>
|
||||
<string name="shared_string_local_maps">Lokale kaarten</string>
|
||||
<string name="icon_group_amenity">Aangenaam</string>
|
||||
<string name="icon_group_special">Speciaal</string>
|
||||
<string name="icon_group_transport">Transport</string>
|
||||
<string name="icon_group_service">Onderhoud</string>
|
||||
<string name="icon_group_symbols">Symbolen</string>
|
||||
<string name="icon_group_sport">Sport</string>
|
||||
<string name="icon_group_emergency">Noodtoestand</string>
|
||||
<string name="icon_group_travel">Reizen</string>
|
||||
<string name="empty_state_my_tracks_desc">Trackbestanden importeren of opnemen</string>
|
||||
<string name="quick_action_add_gpx">Track waypoint toevoegen</string>
|
||||
<string name="marker_save_as_track">Opslaan als trackbestand</string>
|
||||
<string name="monitoring_control_start">Rec</string>
|
||||
</resources>
|
|
@ -3819,7 +3819,7 @@
|
|||
<string name="reverse_route">Rota reversa</string>
|
||||
<string name="route_between_points_whole_track_button_desc">A trilha inteira será recalculada usando o perfil selecionado.</string>
|
||||
<string name="route_between_points_next_segment_button_desc">Apenas o próximo segmento será recalculado usando o perfil selecionado.</string>
|
||||
<string name="route_between_points_desc">Selecione como conectar pontos, por uma linha reta, ou calcular uma rota entre eles conforme especificado abaixo.</string>
|
||||
<string name="route_between_points_desc">Escolha como conectar os pontos, por uma linha reta, ou calcular uma rota entre eles conforme especificado abaixo.</string>
|
||||
<string name="whole_track">Trilha inteira</string>
|
||||
<string name="next_segment">Próximo segmento</string>
|
||||
<string name="route_between_points_warning_desc">Para usar esta opção, OsmAnd precisa ajustar sua trilha para as estradas do mapa.
|
||||
|
@ -3929,4 +3929,13 @@
|
|||
<string name="message_graph_will_be_available_after_recalculation">Aguarde o recálculo da rota.
|
||||
\nO gráfico estará disponível após o recálculo.</string>
|
||||
<string name="ltr_or_rtl_combine_via_dash">%1$s — %2$s</string>
|
||||
<string name="shared_string_local_maps">Mapas locais</string>
|
||||
<string name="icon_group_amenity">Amenidade</string>
|
||||
<string name="icon_group_special">Especial</string>
|
||||
<string name="icon_group_transport">Transporte</string>
|
||||
<string name="icon_group_service">Serviço</string>
|
||||
<string name="icon_group_symbols">Símbolos</string>
|
||||
<string name="icon_group_sport">Esporte</string>
|
||||
<string name="icon_group_emergency">Emergência</string>
|
||||
<string name="icon_group_travel">Viagem</string>
|
||||
</resources>
|
|
@ -3762,7 +3762,7 @@
|
|||
<string name="poi_monastery_type_monastics">Тип монастыря: монашество</string>
|
||||
<string name="poi_shop_security">Магазин защиты и безопасности</string>
|
||||
<string name="poi_mountain_rescue">Горноспасательная станция</string>
|
||||
<string name="poi_internet_access_fee_customers">Сигнал для поиска полюса</string>
|
||||
<string name="poi_internet_access_fee_customers">Доступ в Интернет: клиенты</string>
|
||||
<string name="poi_climbing_multipitch_no">Многоуровневые маршруты: нет</string>
|
||||
<string name="poi_climbing_multipitch_yes">Многоуровневые маршруты: есть</string>
|
||||
<string name="poi_nuclear_explosion_salvo_second_or_later_detonation">Взрывной залп: вторая или более поздняя детонация залпового теста</string>
|
||||
|
@ -3833,4 +3833,6 @@
|
|||
<string name="poi_nuts">Магазин орехов</string>
|
||||
<string name="poi_beehive">Улей</string>
|
||||
<string name="poi_fuel_lng">СПГ</string>
|
||||
<string name="poi_parking_sheds">Навесы</string>
|
||||
<string name="poi_gpx_point">Точка GPX</string>
|
||||
</resources>
|
|
@ -3924,4 +3924,17 @@
|
|||
<string name="file_already_imported">Файл уже импортирован</string>
|
||||
<string name="message_graph_will_be_available_after_recalculation">Дождитесь пересчёта маршрута.
|
||||
\nГрафик будет доступен после пересчёта.</string>
|
||||
<string name="app_mode_gap">Разрыв</string>
|
||||
<string name="icon_group_service">Сервис</string>
|
||||
<string name="icon_group_special">Специальные</string>
|
||||
<string name="snowmobile_render_descr">Для езды на снегоходах по выделенным дорогам и трассам.</string>
|
||||
<string name="development">Разработка</string>
|
||||
<string name="shared_string_local_maps">Местная карта</string>
|
||||
<string name="ltr_or_rtl_combine_via_dash">%1$s — %2$s</string>
|
||||
<string name="icon_group_amenity">Удобства</string>
|
||||
<string name="icon_group_transport">Транспорт</string>
|
||||
<string name="icon_group_symbols">Символы</string>
|
||||
<string name="icon_group_sport">Спорт</string>
|
||||
<string name="icon_group_emergency">Экстренные службы</string>
|
||||
<string name="icon_group_travel">Путешествие</string>
|
||||
</resources>
|
|
@ -3932,4 +3932,11 @@
|
|||
<string name="message_graph_will_be_available_after_recalculation">Iseta su càrculu nou de s\'àndala.
|
||||
\nSu gràficu at a èssere a disponimentu a pustis de su càrculu.</string>
|
||||
<string name="ltr_or_rtl_combine_via_dash">%1$s — %2$s</string>
|
||||
<string name="icon_group_emergency">Apretu/Emergèntzia</string>
|
||||
<string name="icon_group_special">Ispetziales</string>
|
||||
<string name="icon_group_transport">Trasportu</string>
|
||||
<string name="icon_group_service">Servìtziu</string>
|
||||
<string name="icon_group_symbols">Sìmbulos</string>
|
||||
<string name="icon_group_sport">Isport</string>
|
||||
<string name="icon_group_travel">Biàgiu</string>
|
||||
</resources>
|
|
@ -3935,4 +3935,13 @@
|
|||
\nGraf bude dostupný po prepočte.</string>
|
||||
<string name="ltr_or_rtl_combine_via_dash">%1$s — %2$s</string>
|
||||
<string name="app_mode_gap">Medzera</string>
|
||||
<string name="shared_string_local_maps">Lokálne mapy</string>
|
||||
<string name="icon_group_amenity">Občianska vybavenosť</string>
|
||||
<string name="icon_group_special">Špeciálne</string>
|
||||
<string name="icon_group_transport">Doprava</string>
|
||||
<string name="icon_group_service">Služby</string>
|
||||
<string name="icon_group_symbols">Symboly</string>
|
||||
<string name="icon_group_sport">Šport</string>
|
||||
<string name="icon_group_emergency">Núdzová situácia/Záchrana</string>
|
||||
<string name="icon_group_travel">Cestovanie</string>
|
||||
</resources>
|
2
OsmAnd/res/values-tzm/phrases.xml
Normal file
2
OsmAnd/res/values-tzm/phrases.xml
Normal file
|
@ -0,0 +1,2 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
|
@ -3931,4 +3931,13 @@
|
|||
\nГрафік буде доступний після переобчислення.</string>
|
||||
<string name="app_mode_gap">Розрив</string>
|
||||
<string name="ltr_or_rtl_combine_via_dash">%1$s — %2$s</string>
|
||||
<string name="shared_string_local_maps">Місцеві мапи</string>
|
||||
<string name="icon_group_amenity">Зручності</string>
|
||||
<string name="icon_group_special">Спеціальні</string>
|
||||
<string name="icon_group_transport">Транспорт</string>
|
||||
<string name="icon_group_service">Послуги</string>
|
||||
<string name="icon_group_symbols">Знаки</string>
|
||||
<string name="icon_group_sport">Спорт</string>
|
||||
<string name="icon_group_emergency">Аварійні служби</string>
|
||||
<string name="icon_group_travel">Мандрівка</string>
|
||||
</resources>
|
|
@ -3821,7 +3821,7 @@
|
|||
<string name="reverse_route">反向路線</string>
|
||||
<string name="route_between_points_whole_track_button_desc">整個軌跡都會使用選定的設定檔重新計算。</string>
|
||||
<string name="route_between_points_next_segment_button_desc">僅下一個片段會使用選定的設定檔重新計算。</string>
|
||||
<string name="route_between_points_desc">選取如何連接點,透過直線或以下面選定的方法計算其間的路徑。</string>
|
||||
<string name="route_between_points_desc">選擇如何連接點,透過直線或以下面選定的方法計算其間的路徑。</string>
|
||||
<string name="whole_track">整個軌道</string>
|
||||
<string name="next_segment">下一段</string>
|
||||
<string name="route_between_points_warning_desc">接下來,使用您其中一個導航設定檔來將路線貼齊到最近可用的道路上以使用此選項。</string>
|
||||
|
@ -3930,4 +3930,13 @@
|
|||
\n重新計算後即可使用圖表。</string>
|
||||
<string name="ltr_or_rtl_combine_via_dash">%1$s — %2$s</string>
|
||||
<string name="app_mode_gap">分隔</string>
|
||||
<string name="shared_string_local_maps">本機地圖</string>
|
||||
<string name="icon_group_amenity">便利設施</string>
|
||||
<string name="icon_group_special">特殊</string>
|
||||
<string name="icon_group_transport">運輸</string>
|
||||
<string name="icon_group_service">服務</string>
|
||||
<string name="icon_group_symbols">符號</string>
|
||||
<string name="icon_group_sport">運動</string>
|
||||
<string name="icon_group_emergency">警急</string>
|
||||
<string name="icon_group_travel">旅行</string>
|
||||
</resources>
|
|
@ -628,8 +628,10 @@
|
|||
<string name="configure_profile">Configure profile</string>
|
||||
<string name="configure_profile_info">Settings for profile:</string>
|
||||
<string name="utm_format_descr">OsmAnd uses the UTM Standard, which is similar but not identical to the UTM NATO format.</string>
|
||||
<string name="mgrs_format_descr">OsmAnd uses MGRS, which is similar to the UTM NATO format.</string>
|
||||
<string name="shared_string_example">Example</string>
|
||||
<string name="navigate_point_format_utm">UTM Standard</string>
|
||||
<string name="navigate_point_format_mgrs">MGRS</string>
|
||||
<string name="navigate_point_format_olc">Open Location Code</string>
|
||||
<string name="coordinates_format_info">The selected format will be applied throughout the app.</string>
|
||||
<string name="pref_selected_by_default_for_profiles">This setting is selected by default for profiles: %s</string>
|
||||
|
@ -2209,6 +2211,7 @@
|
|||
<string name="map_locale">Map language</string>
|
||||
<string name="rendering_attr_transportStops_name">Transport stops</string>
|
||||
<string name="navigate_point_zone">Zone</string>
|
||||
<string name="navigate_point_mgrs">MGRS</string>
|
||||
<!-- (OLC) is a geocode system -->
|
||||
<string name="navigate_point_olc">Open Location Code</string>
|
||||
<string name="navigate_point_olc_info_invalid">Invalid OLC\n</string>
|
||||
|
|
|
@ -27,6 +27,12 @@
|
|||
android:persistent="false"
|
||||
android:title="@string/navigate_point_format_utm" />
|
||||
|
||||
<CheckBoxPreference
|
||||
android:key="mgrs_format"
|
||||
android:layout="@layout/preference_radio_button"
|
||||
android:persistent="false"
|
||||
android:title="@string/navigate_point_format_mgrs" />
|
||||
|
||||
<CheckBoxPreference
|
||||
android:key="olc_format"
|
||||
android:layout="@layout/preference_radio_button"
|
||||
|
|
|
@ -171,6 +171,7 @@ public class PointDescription {
|
|||
|
||||
String utm = OsmAndFormatter.getFormattedCoordinates(lat, lon, OsmAndFormatter.UTM_FORMAT);
|
||||
String olc = OsmAndFormatter.getFormattedCoordinates(lat, lon, OsmAndFormatter.OLC_FORMAT);
|
||||
String mgrs = OsmAndFormatter.getFormattedCoordinates(lat, lon, OsmAndFormatter.MGRS_FORMAT);
|
||||
|
||||
try {
|
||||
latLonString = OsmAndFormatter.getFormattedCoordinates(lat, lon, OsmAndFormatter.FORMAT_DEGREES_SHORT);
|
||||
|
@ -190,6 +191,7 @@ public class PointDescription {
|
|||
results.put(OsmAndFormatter.FORMAT_SECONDS, latLonSec);
|
||||
results.put(OsmAndFormatter.UTM_FORMAT, utm);
|
||||
results.put(OsmAndFormatter.OLC_FORMAT, olc);
|
||||
results.put(OsmAndFormatter.MGRS_FORMAT, mgrs);
|
||||
|
||||
int zoom = 17;
|
||||
if (ctx.getMapView() != null) {
|
||||
|
@ -204,6 +206,8 @@ public class PointDescription {
|
|||
results.put(LOCATION_LIST_HEADER, utm);
|
||||
} else if (f == PointDescription.OLC_FORMAT) {
|
||||
results.put(LOCATION_LIST_HEADER, olc);
|
||||
} else if (f == PointDescription.MGRS_FORMAT) {
|
||||
results.put(LOCATION_LIST_HEADER, mgrs);
|
||||
} else if (f == PointDescription.FORMAT_DEGREES) {
|
||||
results.put(LOCATION_LIST_HEADER, latLonDeg);
|
||||
} else if (f == PointDescription.FORMAT_MINUTES) {
|
||||
|
@ -396,6 +400,7 @@ public class PointDescription {
|
|||
public static final int FORMAT_SECONDS = LocationConvert.FORMAT_SECONDS;
|
||||
public static final int UTM_FORMAT = LocationConvert.UTM_FORMAT;
|
||||
public static final int OLC_FORMAT = LocationConvert.OLC_FORMAT;
|
||||
public static final int MGRS_FORMAT = LocationConvert.MGRS_FORMAT;
|
||||
|
||||
public static String formatToHumanString(Context ctx, int format) {
|
||||
switch (format) {
|
||||
|
@ -409,6 +414,8 @@ public class PointDescription {
|
|||
return "UTM";
|
||||
case LocationConvert.OLC_FORMAT:
|
||||
return "OLC";
|
||||
case LocationConvert.MGRS_FORMAT:
|
||||
return "MGRS";
|
||||
default:
|
||||
return "Unknown format";
|
||||
}
|
||||
|
|
|
@ -76,6 +76,22 @@ public class FavouritesDbHelper {
|
|||
private int color;
|
||||
private List<FavouritePoint> points = new ArrayList<>();
|
||||
|
||||
public FavoriteGroup() {
|
||||
}
|
||||
|
||||
public FavoriteGroup(String name, boolean visible, int color) {
|
||||
this.name = name;
|
||||
this.visible = visible;
|
||||
this.color = color;
|
||||
}
|
||||
|
||||
public FavoriteGroup(String name, List<FavouritePoint> points, int color, boolean visible) {
|
||||
this.name = name;
|
||||
this.color = color;
|
||||
this.points = points;
|
||||
this.visible = visible;
|
||||
}
|
||||
|
||||
public boolean isPersonal() {
|
||||
return isPersonal(name);
|
||||
}
|
||||
|
@ -640,7 +656,7 @@ public class FavouritesDbHelper {
|
|||
return asGpxFile(cachedFavoritePoints);
|
||||
}
|
||||
|
||||
private GPXFile asGpxFile(List<FavouritePoint> favoritePoints) {
|
||||
public GPXFile asGpxFile(List<FavouritePoint> favoritePoints) {
|
||||
GPXFile gpx = new GPXFile(Version.getFullVersion(context));
|
||||
for (FavouritePoint p : favoritePoints) {
|
||||
context.getSelectedGpxHelper().addPoint(p.toWpt(context), gpx);
|
||||
|
|
|
@ -4,6 +4,7 @@ import android.content.Context;
|
|||
import android.text.format.DateUtils;
|
||||
|
||||
import com.jwetherell.openmap.common.LatLonPoint;
|
||||
import com.jwetherell.openmap.common.MGRSPoint;
|
||||
import com.jwetherell.openmap.common.UTMPoint;
|
||||
|
||||
import net.osmand.LocationConvert;
|
||||
|
@ -53,6 +54,7 @@ public class OsmAndFormatter {
|
|||
public static final int FORMAT_SECONDS = LocationConvert.FORMAT_SECONDS;
|
||||
public static final int UTM_FORMAT = LocationConvert.UTM_FORMAT;
|
||||
public static final int OLC_FORMAT = LocationConvert.OLC_FORMAT;
|
||||
public static final int MGRS_FORMAT = LocationConvert.MGRS_FORMAT;
|
||||
private static final char DELIMITER_DEGREES = '°';
|
||||
private static final char DELIMITER_MINUTES = '′';
|
||||
private static final char DELIMITER_SECONDS = '″';
|
||||
|
@ -518,6 +520,9 @@ public class OsmAndFormatter {
|
|||
r = "0, 0";
|
||||
}
|
||||
result.append(r);
|
||||
} else if (outputFormat == MGRS_FORMAT) {
|
||||
MGRSPoint pnt = new MGRSPoint(new LatLonPoint(lat, lon));
|
||||
result.append(pnt.toFlavoredString(5));
|
||||
}
|
||||
return result.toString();
|
||||
}
|
||||
|
|
|
@ -509,26 +509,27 @@ public class SQLiteTileSource implements ITileSource {
|
|||
if(db == null || coordinatesZoom > 25 ){
|
||||
return null;
|
||||
}
|
||||
SQLiteCursor q ;
|
||||
SQLiteCursor cursor ;
|
||||
if (inversiveZoom) {
|
||||
int minZoom = (17 - minZ) + 1;
|
||||
// 17 - z = zoom, x << (25 - zoom) = 25th x tile = 8 + z,
|
||||
q = db.rawQuery("SELECT max(x << (8+z)), min(x << (8+z)), max(y << (8+z)), min(y << (8+z))" +
|
||||
cursor = db.rawQuery("SELECT max(x << (8+z)), min(x << (8+z)), max(y << (8+z)), min(y << (8+z))" +
|
||||
" from tiles where z < "
|
||||
+ minZoom, new String[0]);
|
||||
} else {
|
||||
q = db.rawQuery("SELECT max(x << (25-z)), min(x << (25-z)), max(y << (25-z)), min(y << (25-z))"
|
||||
cursor = db.rawQuery("SELECT max(x << (25-z)), min(x << (25-z)), max(y << (25-z)), min(y << (25-z))"
|
||||
+ " from tiles where z > " + minZ,
|
||||
new String[0]);
|
||||
}
|
||||
q.moveToFirst();
|
||||
int right = (int) (q.getInt(0) >> (25 - coordinatesZoom));
|
||||
int left = (int) (q.getInt(1) >> (25 - coordinatesZoom));
|
||||
int top = (int) (q.getInt(3) >> (25 - coordinatesZoom));
|
||||
int bottom = (int) (q.getInt(2) >> (25 - coordinatesZoom));
|
||||
cursor.moveToFirst();
|
||||
int right = (int) (cursor.getInt(0) >> (25 - coordinatesZoom));
|
||||
int left = (int) (cursor.getInt(1) >> (25 - coordinatesZoom));
|
||||
int top = (int) (cursor.getInt(3) >> (25 - coordinatesZoom));
|
||||
int bottom = (int) (cursor.getInt(2) >> (25 - coordinatesZoom));
|
||||
|
||||
cursor.close();
|
||||
|
||||
return new QuadRect(left, top, right, bottom);
|
||||
|
||||
|
||||
}
|
||||
|
||||
public void deleteImage(int x, int y, int zoom) {
|
||||
|
|
|
@ -21,6 +21,7 @@ import android.widget.TextView;
|
|||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.jwetherell.openmap.common.LatLonPoint;
|
||||
import com.jwetherell.openmap.common.MGRSPoint;
|
||||
import com.jwetherell.openmap.common.UTMPoint;
|
||||
|
||||
import net.osmand.LocationConvert;
|
||||
|
@ -71,7 +72,7 @@ public class NavigatePointFragment extends Fragment implements SearchActivityChi
|
|||
currentFormat = app.getSettings().COORDINATES_FORMAT.get();
|
||||
initUI(location.getLatitude(), location.getLongitude());
|
||||
if(savedInstanceState != null && savedInstanceState.containsKey(SEARCH_LAT) && savedInstanceState.containsKey(SEARCH_LON) &&
|
||||
currentFormat != PointDescription.UTM_FORMAT) {
|
||||
currentFormat != PointDescription.UTM_FORMAT && currentFormat != PointDescription.MGRS_FORMAT) {
|
||||
String lat = savedInstanceState.getString(SEARCH_LAT);
|
||||
String lon = savedInstanceState.getString(SEARCH_LON);
|
||||
if(lat != null && lon != null && lat.length() > 0 && lon.length() > 0) {
|
||||
|
@ -152,24 +153,53 @@ public class NavigatePointFragment extends Fragment implements SearchActivityChi
|
|||
protected void showCurrentFormat(LatLon l) {
|
||||
final EditText latEdit = ((EditText)view.findViewById(R.id.LatitudeEdit));
|
||||
final EditText lonEdit = ((EditText)view.findViewById(R.id.LongitudeEdit));
|
||||
boolean utm = currentFormat == PointDescription.UTM_FORMAT;
|
||||
view.findViewById(R.id.easting_row).setVisibility(utm ? View.VISIBLE : View.GONE);
|
||||
view.findViewById(R.id.northing_row).setVisibility(utm ? View.VISIBLE : View.GONE);
|
||||
view.findViewById(R.id.zone_row).setVisibility(utm ? View.VISIBLE : View.GONE);
|
||||
view.findViewById(R.id.lat_row).setVisibility(!utm ? View.VISIBLE : View.GONE);
|
||||
view.findViewById(R.id.lon_row).setVisibility(!utm ? View.VISIBLE : View.GONE);
|
||||
if(currentFormat == PointDescription.UTM_FORMAT) {
|
||||
final EditText northingEdit = ((EditText)view.findViewById(R.id.NorthingEdit));
|
||||
final EditText eastingEdit = ((EditText)view.findViewById(R.id.EastingEdit));
|
||||
final EditText zoneEdit = ((EditText)view.findViewById(R.id.ZoneEdit));
|
||||
switch (currentFormat){
|
||||
case PointDescription.UTM_FORMAT: {
|
||||
view.findViewById(R.id.easting_row).setVisibility(View.VISIBLE);
|
||||
view.findViewById(R.id.northing_row).setVisibility(View.VISIBLE);
|
||||
view.findViewById(R.id.zone_row).setVisibility(View.VISIBLE);
|
||||
view.findViewById(R.id.lat_row).setVisibility(View.GONE);
|
||||
view.findViewById(R.id.lon_row).setVisibility(View.GONE);
|
||||
view.findViewById(R.id.mgrs_row).setVisibility(View.GONE);
|
||||
|
||||
final EditText northingEdit = ((EditText) view.findViewById(R.id.NorthingEdit));
|
||||
final EditText eastingEdit = ((EditText) view.findViewById(R.id.EastingEdit));
|
||||
final EditText zoneEdit = ((EditText) view.findViewById(R.id.ZoneEdit));
|
||||
UTMPoint pnt = new UTMPoint(new LatLonPoint(l.getLatitude(), l.getLongitude()));
|
||||
zoneEdit.setText(pnt.zone_number + ""+pnt.zone_letter);
|
||||
northingEdit.setText(((long)pnt.northing)+"");
|
||||
eastingEdit.setText(((long)pnt.easting)+"");
|
||||
} else {
|
||||
zoneEdit.setText(pnt.zone_number + "" + pnt.zone_letter);
|
||||
northingEdit.setText(((long) pnt.northing) + "");
|
||||
eastingEdit.setText(((long) pnt.easting) + "");
|
||||
break;
|
||||
}
|
||||
|
||||
case PointDescription.MGRS_FORMAT: {
|
||||
view.findViewById(R.id.easting_row).setVisibility(View.GONE);
|
||||
view.findViewById(R.id.northing_row).setVisibility(View.GONE);
|
||||
view.findViewById(R.id.zone_row).setVisibility(View.GONE);
|
||||
view.findViewById(R.id.lat_row).setVisibility(View.GONE);
|
||||
view.findViewById(R.id.lon_row).setVisibility(View.GONE);
|
||||
view.findViewById(R.id.mgrs_row).setVisibility(View.VISIBLE);
|
||||
|
||||
final EditText mgrsEdit = ((EditText) view.findViewById(R.id.MGRSEdit));
|
||||
MGRSPoint pnt = new MGRSPoint(new LatLonPoint(l.getLatitude(), l.getLongitude()));
|
||||
mgrsEdit.setText(pnt.toFlavoredString(5));
|
||||
break;
|
||||
}
|
||||
|
||||
default: {
|
||||
view.findViewById(R.id.easting_row).setVisibility(View.GONE);
|
||||
view.findViewById(R.id.northing_row).setVisibility(View.GONE);
|
||||
view.findViewById(R.id.zone_row).setVisibility(View.GONE);
|
||||
view.findViewById(R.id.lat_row).setVisibility(View.VISIBLE);
|
||||
view.findViewById(R.id.lon_row).setVisibility(View.VISIBLE);
|
||||
view.findViewById(R.id.mgrs_row).setVisibility(View.GONE);
|
||||
|
||||
|
||||
latEdit.setText(LocationConvert.convert(MapUtils.checkLatitude(l.getLatitude()), currentFormat));
|
||||
lonEdit.setText(LocationConvert.convert(MapUtils.checkLongitude(l.getLongitude()), currentFormat));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
protected LatLon parseLocation() {
|
||||
|
@ -199,6 +229,7 @@ public class NavigatePointFragment extends Fragment implements SearchActivityChi
|
|||
PointDescription.formatToHumanString(this.getContext(), PointDescription.FORMAT_MINUTES),
|
||||
PointDescription.formatToHumanString(this.getContext(), PointDescription.FORMAT_SECONDS),
|
||||
PointDescription.formatToHumanString(this.getContext(), PointDescription.UTM_FORMAT),
|
||||
PointDescription.formatToHumanString(this.getContext(), PointDescription.MGRS_FORMAT),
|
||||
});
|
||||
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
format.setAdapter(adapter);
|
||||
|
@ -217,6 +248,8 @@ public class NavigatePointFragment extends Fragment implements SearchActivityChi
|
|||
newFormat = PointDescription.FORMAT_SECONDS;
|
||||
} else if (PointDescription.formatToHumanString(NavigatePointFragment.this.getContext(), PointDescription.UTM_FORMAT).equals(itm)) {
|
||||
newFormat = PointDescription.UTM_FORMAT;
|
||||
} else if (PointDescription.formatToHumanString(NavigatePointFragment.this.getContext(), PointDescription.MGRS_FORMAT).equals(itm)) {
|
||||
newFormat = PointDescription.MGRS_FORMAT;
|
||||
}
|
||||
try {
|
||||
LatLon loc = parseLocation();
|
||||
|
|
|
@ -44,6 +44,7 @@ import net.osmand.IProgress;
|
|||
import net.osmand.IndexConstants;
|
||||
import net.osmand.Location;
|
||||
import net.osmand.PlatformUtil;
|
||||
import net.osmand.StateChangedListener;
|
||||
import net.osmand.data.DataTileManager;
|
||||
import net.osmand.data.LatLon;
|
||||
import net.osmand.data.PointDescription;
|
||||
|
@ -158,7 +159,7 @@ public class AudioVideoNotesPlugin extends OsmandPlugin {
|
|||
public static final int AV_CAMERA_FOCUS_CONTINUOUS = 5;
|
||||
// photo shot:
|
||||
private static int shotId = 0;
|
||||
private SoundPool sp = null;
|
||||
private SoundPool soundPool = null;
|
||||
public static final int FULL_SCEEN_RESULT_DELAY_MS = 3000;
|
||||
|
||||
public final CommonPreference<Integer> AV_CAMERA_PICTURE_SIZE;
|
||||
|
@ -596,6 +597,17 @@ public class AudioVideoNotesPlugin extends OsmandPlugin {
|
|||
|
||||
@Override
|
||||
public boolean init(@NonNull final OsmandApplication app, Activity activity) {
|
||||
if (AV_PHOTO_PLAY_SOUND.get()) {
|
||||
loadCameraSound();
|
||||
}
|
||||
AV_PHOTO_PLAY_SOUND.addListener(new StateChangedListener<Boolean>() {
|
||||
@Override
|
||||
public void stateChanged(Boolean change) {
|
||||
if (AV_PHOTO_PLAY_SOUND.get() && soundPool == null) {
|
||||
loadCameraSound();
|
||||
}
|
||||
}
|
||||
});
|
||||
// initializeRemoteControlRegistrationMethods();
|
||||
// AudioManager am = (AudioManager) app.getSystemService(Context.AUDIO_SERVICE);
|
||||
// if (am != null) {
|
||||
|
@ -604,6 +616,21 @@ public class AudioVideoNotesPlugin extends OsmandPlugin {
|
|||
return true;
|
||||
}
|
||||
|
||||
private void loadCameraSound() {
|
||||
if (soundPool == null) {
|
||||
soundPool = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
|
||||
}
|
||||
if (shotId == 0) {
|
||||
try {
|
||||
AssetFileDescriptor assetFileDescriptor = app.getAssets().openFd("sounds/camera_click.ogg");
|
||||
shotId = soundPool.load(assetFileDescriptor, 1);
|
||||
assetFileDescriptor.close();
|
||||
} catch (Exception e) {
|
||||
log.error("cannot get shotId for sounds/camera_click.ogg");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerLayers(MapActivity activity) {
|
||||
this.mapActivity = activity;
|
||||
|
@ -1338,21 +1365,6 @@ public class AudioVideoNotesPlugin extends OsmandPlugin {
|
|||
@Override
|
||||
public void surfaceCreated(SurfaceHolder holder) {
|
||||
try {
|
||||
// load sound befor shot
|
||||
if (AV_PHOTO_PLAY_SOUND.get()) {
|
||||
if (sp == null)
|
||||
sp = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
|
||||
if (shotId == 0) {
|
||||
try {
|
||||
AssetFileDescriptor assetFileDescriptor = app.getAssets().openFd("sounds/camera_click.ogg");
|
||||
shotId = sp.load(assetFileDescriptor, 1);
|
||||
assetFileDescriptor.close();
|
||||
} catch (Exception e) {
|
||||
log.error("cannot get shotId for sounds/camera_click.ogg");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Parameters parameters = cam.getParameters();
|
||||
parameters.setPictureSize(selectedCamPicSize.width, selectedCamPicSize.height);
|
||||
log.debug("takePhotoWithCamera() set Picture size: width=" + selectedCamPicSize.width
|
||||
|
@ -1734,6 +1746,11 @@ public class AudioVideoNotesPlugin extends OsmandPlugin {
|
|||
|
||||
@Override
|
||||
public void disable(OsmandApplication app) {
|
||||
if (soundPool != null) {
|
||||
soundPool.release();
|
||||
soundPool = null;
|
||||
shotId = 0;
|
||||
}
|
||||
// AudioManager am = (AudioManager) app.getSystemService(Context.AUDIO_SERVICE);
|
||||
// if (am != null) {
|
||||
// unregisterMediaListener(am);
|
||||
|
@ -2043,8 +2060,8 @@ public class AudioVideoNotesPlugin extends OsmandPlugin {
|
|||
photoJpegData = data;
|
||||
|
||||
if (AV_PHOTO_PLAY_SOUND.get()) {
|
||||
if (sp != null && shotId != 0) {
|
||||
sp.play(shotId, 0.7f, 0.7f, 0, 0, 1);
|
||||
if (soundPool != null && shotId != 0) {
|
||||
soundPool.play(shotId, 0.7f, 0.7f, 0, 0, 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -650,8 +650,8 @@ public class ImportHelper {
|
|||
}
|
||||
}
|
||||
|
||||
protected static List<FavouritePoint> asFavourites(OsmandApplication app, List<WptPt> wptPts, String fileName, boolean forceImportFavourites) {
|
||||
final List<FavouritePoint> favourites = new ArrayList<>();
|
||||
public static List<FavouritePoint> asFavourites(OsmandApplication app, List<WptPt> wptPts, String fileName, boolean forceImportFavourites) {
|
||||
List<FavouritePoint> favourites = new ArrayList<>();
|
||||
for (WptPt p : wptPts) {
|
||||
if (p.name != null) {
|
||||
final String fpCat;
|
||||
|
@ -664,18 +664,18 @@ public class ImportHelper {
|
|||
} else {
|
||||
fpCat = p.category;
|
||||
}
|
||||
final FavouritePoint fp = new FavouritePoint(p.lat, p.lon, p.name, fpCat);
|
||||
FavouritePoint point = new FavouritePoint(p.lat, p.lon, p.name, fpCat);
|
||||
if (p.desc != null) {
|
||||
fp.setDescription(p.desc);
|
||||
point.setDescription(p.desc);
|
||||
}
|
||||
fp.setAddress(p.getExtensionsToRead().get("address"));
|
||||
fp.setColor(p.getColor(0));
|
||||
point.setAddress(p.getExtensionsToRead().get("address"));
|
||||
point.setColor(p.getColor(0));
|
||||
String iconName = p.getIconName();
|
||||
if (iconName != null) {
|
||||
fp.setIconIdFromName(app, iconName);
|
||||
point.setIconIdFromName(app, iconName);
|
||||
}
|
||||
fp.setBackgroundType(BackgroundType.getByTypeName(p.getBackgroundType(), DEFAULT_BACKGROUND_TYPE));
|
||||
favourites.add(fp);
|
||||
point.setBackgroundType(BackgroundType.getByTypeName(p.getBackgroundType(), DEFAULT_BACKGROUND_TYPE));
|
||||
favourites.add(point);
|
||||
}
|
||||
}
|
||||
return favourites;
|
||||
|
|
|
@ -676,9 +676,15 @@ public class MenuBuilder {
|
|||
LinearLayout llv = buildCollapsableContentView(mapActivity, true, true);
|
||||
for (final Map.Entry<Integer, String> line : locationData.entrySet()) {
|
||||
final TextViewEx button = buildButtonInCollapsableView(mapActivity, false, false);
|
||||
if (line.getKey() == OsmAndFormatter.UTM_FORMAT || line.getKey() == OsmAndFormatter.OLC_FORMAT) {
|
||||
if (line.getKey() == OsmAndFormatter.UTM_FORMAT || line.getKey() == OsmAndFormatter.OLC_FORMAT || line.getKey() == OsmAndFormatter.MGRS_FORMAT) {
|
||||
SpannableStringBuilder ssb = new SpannableStringBuilder();
|
||||
ssb.append(line.getKey() == OsmAndFormatter.UTM_FORMAT ? "UTM: " : "OLC: ");
|
||||
if (line.getKey() == OsmAndFormatter.UTM_FORMAT) {
|
||||
ssb.append("UTM: ");
|
||||
} else if (line.getKey() == OsmAndFormatter.MGRS_FORMAT) {
|
||||
ssb.append("MGRS: ");
|
||||
} else if (line.getKey() == OsmAndFormatter.OLC_FORMAT){
|
||||
ssb.append("OLC: ");
|
||||
}
|
||||
ssb.setSpan(new ForegroundColorSpan(app.getResources().getColor(R.color.text_color_secondary_light)), 0, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
ssb.append(line.getValue());
|
||||
button.setText(ssb);
|
||||
|
|
|
@ -323,9 +323,9 @@ public class OsmEditingPlugin extends OsmandPlugin {
|
|||
|
||||
@Override
|
||||
public void addMyPlacesTab(FavoritesActivity favoritesActivity, List<TabActivity.TabItem> mTabs, Intent intent) {
|
||||
mTabs.add(favoritesActivity.getTabIndicator(R.string.osm_edits, OsmEditsFragment.class));
|
||||
mTabs.add(favoritesActivity.getTabIndicator(OSM_EDIT_TAB, OsmEditsFragment.class));
|
||||
if (intent != null && "OSM".equals(intent.getStringExtra("TAB"))) {
|
||||
app.getSettings().FAVORITES_TAB.set(R.string.osm_edits);
|
||||
app.getSettings().FAVORITES_TAB.set(OSM_EDIT_TAB);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,11 +1,8 @@
|
|||
package net.osmand.plus.routepreparationmenu;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.app.Activity;
|
||||
import android.content.ActivityNotFoundException;
|
||||
import android.content.Intent;
|
||||
import android.graphics.drawable.AnimationDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
|
@ -19,7 +16,6 @@ import android.view.ViewGroup.MarginLayoutParams;
|
|||
import android.view.ViewTreeObserver.OnScrollChangedListener;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
@ -37,6 +33,7 @@ import net.osmand.data.RotatedTileBox;
|
|||
import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile;
|
||||
import net.osmand.plus.OsmandApplication;
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.SimplePopUpMenuItemAdapter.SimplePopUpMenuItem;
|
||||
import net.osmand.plus.UiUtilities;
|
||||
import net.osmand.plus.UiUtilities.DialogButtonType;
|
||||
import net.osmand.plus.activities.MapActivity;
|
||||
|
@ -44,6 +41,7 @@ import net.osmand.plus.base.ContextMenuScrollFragment;
|
|||
import net.osmand.plus.helpers.AndroidUiHelper;
|
||||
import net.osmand.plus.helpers.GpxUiHelper;
|
||||
import net.osmand.plus.helpers.GpxUiHelper.GPXInfo;
|
||||
import net.osmand.plus.helpers.enums.TracksSortByMode;
|
||||
import net.osmand.plus.importfiles.ImportHelper;
|
||||
import net.osmand.plus.importfiles.ImportHelper.OnGpxImportCompleteListener;
|
||||
import net.osmand.plus.measurementtool.GpxData;
|
||||
|
@ -71,6 +69,7 @@ import net.osmand.util.Algorithms;
|
|||
import org.apache.commons.logging.Log;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
|
@ -89,6 +88,10 @@ public class FollowTrackFragment extends ContextMenuScrollFragment implements Ca
|
|||
private GPXFile gpxFile;
|
||||
|
||||
private View buttonsShadow;
|
||||
private ImageButton sortButton;
|
||||
|
||||
private TracksToFollowCard tracksCard;
|
||||
private TracksSortByMode sortByMode = TracksSortByMode.BY_DATE;
|
||||
|
||||
private boolean editingTrack;
|
||||
private boolean selectingTrack;
|
||||
|
@ -166,6 +169,7 @@ public class FollowTrackFragment extends ContextMenuScrollFragment implements Ca
|
|||
}
|
||||
setupCards();
|
||||
setupButtons(view);
|
||||
setupSortButton(view);
|
||||
setupScrollShadow();
|
||||
if (!isPortrait()) {
|
||||
int widthNoShadow = getLandscapeNoShadowWidth();
|
||||
|
@ -202,10 +206,6 @@ public class FollowTrackFragment extends ContextMenuScrollFragment implements Ca
|
|||
cardsContainer.removeAllViews();
|
||||
|
||||
if (gpxFile == null || selectingTrack) {
|
||||
ImportTrackCard importTrackCard = new ImportTrackCard(mapActivity);
|
||||
importTrackCard.setListener(this);
|
||||
cardsContainer.addView(importTrackCard.build(mapActivity));
|
||||
|
||||
setupTracksCard();
|
||||
} else {
|
||||
String fileName = null;
|
||||
|
@ -265,7 +265,7 @@ public class FollowTrackFragment extends ContextMenuScrollFragment implements Ca
|
|||
List<GPXInfo> list = GpxUiHelper.getSortedGPXFilesInfo(dir, selectedTrackNames, false);
|
||||
if (list.size() > 0) {
|
||||
String defaultCategory = app.getString(R.string.shared_string_all);
|
||||
TracksToFollowCard tracksCard = new TracksToFollowCard(mapActivity, list, defaultCategory);
|
||||
tracksCard = new TracksToFollowCard(mapActivity, list, defaultCategory);
|
||||
tracksCard.setListener(FollowTrackFragment.this);
|
||||
getCardsContainer().addView(tracksCard.build(mapActivity));
|
||||
}
|
||||
|
@ -601,6 +601,36 @@ public class FollowTrackFragment extends ContextMenuScrollFragment implements Ca
|
|||
}
|
||||
}
|
||||
|
||||
private void setupSortButton(View view) {
|
||||
final ImageButton sortButton = view.findViewById(R.id.sort_button);
|
||||
int colorId = isNightMode() ? R.color.inactive_buttons_and_links_bg_dark : R.color.inactive_buttons_and_links_bg_light;
|
||||
Drawable background = app.getUIUtilities().getIcon(R.drawable.bg_dash_line_dark, colorId);
|
||||
sortButton.setImageResource(sortByMode.getIconId());
|
||||
AndroidUtils.setBackground(sortButton, background);
|
||||
sortButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
List<SimplePopUpMenuItem> items = new ArrayList<>();
|
||||
for (final TracksSortByMode mode : TracksSortByMode.values()) {
|
||||
items.add(new SimplePopUpMenuItem(getString(mode.getNameId()),
|
||||
app.getUIUtilities().getThemedIcon(mode.getIconId()),
|
||||
new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
sortByMode = mode;
|
||||
sortButton.setImageResource(mode.getIconId());
|
||||
if (tracksCard != null) {
|
||||
tracksCard.setSortByMode(mode);
|
||||
}
|
||||
}
|
||||
}, sortByMode == mode
|
||||
));
|
||||
}
|
||||
UiUtilities.showPopUpMenu(v, items);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void setupButtons(View view) {
|
||||
View buttonsContainer = view.findViewById(R.id.buttons_container);
|
||||
buttonsContainer.setBackgroundColor(AndroidUtils.getColorFromAttr(view.getContext(), R.attr.bg_color));
|
||||
|
|
|
@ -3,30 +3,36 @@ package net.osmand.plus.routepreparationmenu.cards;
|
|||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import net.osmand.Collator;
|
||||
import net.osmand.IndexConstants;
|
||||
import net.osmand.OsmAndCollator;
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.activities.MapActivity;
|
||||
import net.osmand.plus.helpers.GpxTrackAdapter;
|
||||
import net.osmand.plus.helpers.GpxUiHelper.GPXInfo;
|
||||
import net.osmand.plus.helpers.enums.TracksSortByMode;
|
||||
import net.osmand.plus.mapcontextmenu.other.HorizontalSelectionAdapter;
|
||||
import net.osmand.util.Algorithms;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class TracksToFollowCard extends BaseCard {
|
||||
|
||||
private List<GPXInfo> gpxInfoList;
|
||||
private Map<String, List<GPXInfo>> gpxInfoCategories;
|
||||
|
||||
private List<GPXInfo> gpxInfoList;
|
||||
private String selectedCategory;
|
||||
private GpxTrackAdapter tracksAdapter;
|
||||
private TracksSortByMode sortByMode = TracksSortByMode.BY_DATE;
|
||||
|
||||
private String defaultCategory;
|
||||
private String visibleCategory;
|
||||
|
||||
private GpxTrackAdapter tracksAdapter;
|
||||
private String selectedCategory;
|
||||
|
||||
public TracksToFollowCard(MapActivity mapActivity, List<GPXInfo> gpxInfoList, String selectedCategory) {
|
||||
super(mapActivity);
|
||||
|
@ -37,9 +43,10 @@ public class TracksToFollowCard extends BaseCard {
|
|||
gpxInfoCategories = getGpxInfoCategories();
|
||||
}
|
||||
|
||||
public void setGpxInfoList(List<GPXInfo> gpxInfoList) {
|
||||
this.gpxInfoList = gpxInfoList;
|
||||
public void setSortByMode(TracksSortByMode sortByMode) {
|
||||
this.sortByMode = sortByMode;
|
||||
gpxInfoCategories = getGpxInfoCategories();
|
||||
updateTracksAdapter();
|
||||
}
|
||||
|
||||
public List<GPXInfo> getGpxInfoList() {
|
||||
|
@ -91,11 +98,8 @@ public class TracksToFollowCard extends BaseCard {
|
|||
@Override
|
||||
public void onItemSelected(HorizontalSelectionAdapter.HorizontalSelectionItem item) {
|
||||
selectedCategory = item.getTitle();
|
||||
List<GPXInfo> items = gpxInfoCategories.get(selectedCategory);
|
||||
tracksAdapter.setShowFolderName(showFoldersName());
|
||||
tracksAdapter.setGpxInfoList(items != null ? items : new ArrayList<GPXInfo>());
|
||||
tracksAdapter.notifyDataSetChanged();
|
||||
|
||||
updateTracksAdapter();
|
||||
selectionAdapter.notifyDataSetChanged();
|
||||
}
|
||||
});
|
||||
|
@ -106,6 +110,12 @@ public class TracksToFollowCard extends BaseCard {
|
|||
selectionAdapter.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
private void updateTracksAdapter() {
|
||||
List<GPXInfo> items = gpxInfoCategories.get(selectedCategory);
|
||||
tracksAdapter.setGpxInfoList(items != null ? items : new ArrayList<GPXInfo>());
|
||||
tracksAdapter.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
private boolean showFoldersName() {
|
||||
return defaultCategory.equals(selectedCategory) || visibleCategory.equals(selectedCategory);
|
||||
}
|
||||
|
@ -116,6 +126,7 @@ public class TracksToFollowCard extends BaseCard {
|
|||
gpxInfoCategories.put(visibleCategory, new ArrayList<GPXInfo>());
|
||||
gpxInfoCategories.put(defaultCategory, new ArrayList<GPXInfo>());
|
||||
|
||||
sortGPXInfoItems(gpxInfoList);
|
||||
for (GPXInfo info : gpxInfoList) {
|
||||
if (info.isSelected()) {
|
||||
addGpxInfoCategory(gpxInfoCategories, info, visibleCategory);
|
||||
|
@ -141,4 +152,25 @@ public class TracksToFollowCard extends BaseCard {
|
|||
}
|
||||
items.add(info);
|
||||
}
|
||||
|
||||
public void sortGPXInfoItems(List<GPXInfo> gpxInfoList) {
|
||||
final Collator collator = OsmAndCollator.primaryCollator();
|
||||
Collections.sort(gpxInfoList, new Comparator<GPXInfo>() {
|
||||
@Override
|
||||
public int compare(GPXInfo i1, GPXInfo i2) {
|
||||
if (sortByMode == TracksSortByMode.BY_NAME_ASCENDING) {
|
||||
return collator.compare(i1.getFileName(), i2.getFileName());
|
||||
} else if (sortByMode == TracksSortByMode.BY_NAME_DESCENDING) {
|
||||
return -collator.compare(i1.getFileName(), i2.getFileName());
|
||||
} else {
|
||||
long time1 = i1.getLastModified();
|
||||
long time2 = i2.getLastModified();
|
||||
if (time1 == time2) {
|
||||
return collator.compare(i1.getFileName(), i2.getFileName());
|
||||
}
|
||||
return -((time1 < time2) ? -1 : ((time1 == time2) ? 0 : 1));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
|
@ -1,20 +1,22 @@
|
|||
package net.osmand.plus.routing;
|
||||
|
||||
|
||||
import android.content.res.AssetFileDescriptor;
|
||||
import android.media.AudioManager;
|
||||
import android.media.SoundPool;
|
||||
|
||||
import net.osmand.Location;
|
||||
import net.osmand.StateChangedListener;
|
||||
import net.osmand.binary.RouteDataObject;
|
||||
import net.osmand.data.PointDescription;
|
||||
import net.osmand.plus.settings.backend.ApplicationMode;
|
||||
import net.osmand.plus.settings.backend.OsmAndAppCustomization.OsmAndAppCustomizationListener;
|
||||
import net.osmand.plus.OsmandApplication;
|
||||
import net.osmand.plus.settings.backend.OsmandSettings;
|
||||
import net.osmand.plus.helpers.WaypointHelper.LocationPointWrapper;
|
||||
import net.osmand.plus.routing.AlarmInfo.AlarmInfoType;
|
||||
import net.osmand.plus.routing.RouteCalculationResult.NextDirectionInfo;
|
||||
import net.osmand.plus.routing.data.StreetName;
|
||||
import net.osmand.plus.settings.backend.ApplicationMode;
|
||||
import net.osmand.plus.settings.backend.OsmAndAppCustomization.OsmAndAppCustomizationListener;
|
||||
import net.osmand.plus.settings.backend.OsmandSettings;
|
||||
import net.osmand.plus.voice.AbstractPrologCommandPlayer;
|
||||
import net.osmand.plus.voice.CommandBuilder;
|
||||
import net.osmand.plus.voice.CommandPlayer;
|
||||
|
@ -81,6 +83,9 @@ public class VoiceRouter {
|
|||
private int TURN_IN_DISTANCE_END;
|
||||
private int TURN_NOW_DISTANCE;
|
||||
|
||||
private SoundPool soundPool;
|
||||
private int soundClick = -1;
|
||||
|
||||
private VoiceCommandPending pendingCommand = null;
|
||||
private RouteDirectionInfo nextRouteDirection;
|
||||
|
||||
|
@ -103,6 +108,34 @@ public class VoiceRouter {
|
|||
}
|
||||
};
|
||||
app.getAppCustomization().addListener(customizationListener);
|
||||
|
||||
if (!isMute()) {
|
||||
loadCameraSound();
|
||||
}
|
||||
settings.VOICE_MUTE.addListener(new StateChangedListener<Boolean>() {
|
||||
@Override
|
||||
public void stateChanged(Boolean change) {
|
||||
if (!isMute() && soundPool == null) {
|
||||
loadCameraSound();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void loadCameraSound() {
|
||||
if (soundPool == null) {
|
||||
soundPool = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
|
||||
}
|
||||
if (soundClick == -1) {
|
||||
try {
|
||||
// Taken unaltered from https://freesound.org/people/Corsica_S/sounds/91926/ under license http://creativecommons.org/licenses/by/3.0/ :
|
||||
AssetFileDescriptor assetFileDescriptor = app.getAssets().openFd("sounds/ding.ogg");
|
||||
soundClick = soundPool.load(assetFileDescriptor, 1);
|
||||
assetFileDescriptor.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void setPlayer(CommandPlayer player) {
|
||||
|
@ -1015,18 +1048,8 @@ public class VoiceRouter {
|
|||
if (isMute()) {
|
||||
return;
|
||||
}
|
||||
SoundPool sp = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
|
||||
int soundClick = -1;
|
||||
boolean success = true;
|
||||
try {
|
||||
// Taken unaltered from https://freesound.org/people/Corsica_S/sounds/91926/ under license http://creativecommons.org/licenses/by/3.0/ :
|
||||
soundClick = sp.load(settings.getContext().getAssets().openFd("sounds/ding.ogg"), 1);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
success = false;
|
||||
}
|
||||
if (success) {
|
||||
sp.play(soundClick, 1 ,1, 0, 0, 1);
|
||||
if (soundPool != null && soundClick != -1) {
|
||||
soundPool.play(soundClick, 1, 1, 0, 0, 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@ import androidx.fragment.app.DialogFragment;
|
|||
|
||||
import com.google.openlocationcode.OpenLocationCode;
|
||||
import com.jwetherell.openmap.common.LatLonPoint;
|
||||
import com.jwetherell.openmap.common.MGRSPoint;
|
||||
import com.jwetherell.openmap.common.UTMPoint;
|
||||
|
||||
import net.osmand.AndroidUtils;
|
||||
|
@ -73,6 +74,7 @@ public class QuickSearchCoordinatesFragment extends DialogFragment implements Os
|
|||
private static final String QUICK_SEARCH_COORDS_NORTH_KEY = "quick_search_coords_north_key";
|
||||
private static final String QUICK_SEARCH_COORDS_EAST_KEY = "quick_search_coords_east_key";
|
||||
private static final String QUICK_SEARCH_COORDS_ZONE_KEY = "quick_search_coords_zone_key";
|
||||
private static final String QUICK_SEARCH_COORDS_MGRS_KEY = "quick_search_coords_mgrs_key";
|
||||
private static final String QUICK_SEARCH_COORDS_OLC_KEY = "quick_search_coords_olc_key";
|
||||
private static final String QUICK_SEARCH_COORDS_OLC_INFO_KEY = "quick_search_coords_olc_info_key";
|
||||
private static final String QUICK_SEARCH_COORDS_FORMAT_KEY = "quick_search_coords_format_key";
|
||||
|
@ -89,6 +91,7 @@ public class QuickSearchCoordinatesFragment extends DialogFragment implements Os
|
|||
private EditText northingEdit;
|
||||
private EditText eastingEdit;
|
||||
private EditText zoneEdit;
|
||||
private EditText mgrsEdit;
|
||||
private EditText olcEdit;
|
||||
private TextView olcInfo;
|
||||
private EditText formatEdit;
|
||||
|
@ -153,6 +156,7 @@ public class QuickSearchCoordinatesFragment extends DialogFragment implements Os
|
|||
northingEdit = ((EditText) view.findViewById(R.id.northingEditText));
|
||||
eastingEdit = ((EditText) view.findViewById(R.id.eastingEditText));
|
||||
zoneEdit = ((EditText) view.findViewById(R.id.zoneEditText));
|
||||
mgrsEdit = ((EditText) view.findViewById(R.id.mgrsEditText));
|
||||
olcEdit = ((EditText) view.findViewById(R.id.olcEditText));
|
||||
olcInfo = ((TextView) view.findViewById(R.id.olcInfoTextView));
|
||||
formatEdit = ((EditText) view.findViewById(R.id.formatEditText));
|
||||
|
@ -160,6 +164,7 @@ public class QuickSearchCoordinatesFragment extends DialogFragment implements Os
|
|||
|
||||
String defaultLat = "";
|
||||
String defaultZone = "";
|
||||
String defaultMgrs = "";
|
||||
String defaultOlc = "";
|
||||
boolean coordinatesApplied = false;
|
||||
if (getArguments() != null) {
|
||||
|
@ -167,6 +172,8 @@ public class QuickSearchCoordinatesFragment extends DialogFragment implements Os
|
|||
if (!Algorithms.isEmpty(text)) {
|
||||
if (currentFormat == PointDescription.UTM_FORMAT) {
|
||||
defaultZone = text.trim();
|
||||
} else if (currentFormat == PointDescription.MGRS_FORMAT) {
|
||||
defaultMgrs = text.trim();
|
||||
} else if (currentFormat == PointDescription.OLC_FORMAT) {
|
||||
defaultOlc = text.trim();
|
||||
} else {
|
||||
|
@ -188,6 +195,7 @@ public class QuickSearchCoordinatesFragment extends DialogFragment implements Os
|
|||
String northingStr = getStringValue(savedInstanceState, QUICK_SEARCH_COORDS_NORTH_KEY, "");
|
||||
String eastingStr = getStringValue(savedInstanceState, QUICK_SEARCH_COORDS_EAST_KEY, "");
|
||||
String zoneStr = getStringValue(savedInstanceState, QUICK_SEARCH_COORDS_ZONE_KEY, defaultZone);
|
||||
String mgrsStr = getStringValue(savedInstanceState, QUICK_SEARCH_COORDS_MGRS_KEY, defaultMgrs);
|
||||
String olcStr = getStringValue(savedInstanceState, QUICK_SEARCH_COORDS_OLC_KEY, defaultOlc);
|
||||
String olcInfoStr = getStringValue(savedInstanceState, QUICK_SEARCH_COORDS_OLC_INFO_KEY, defaultOlc);
|
||||
|
||||
|
@ -209,6 +217,8 @@ public class QuickSearchCoordinatesFragment extends DialogFragment implements Os
|
|||
eastingEdit.setSelection(eastingStr.length());
|
||||
zoneEdit.setText(zoneStr);
|
||||
zoneEdit.setSelection(zoneStr.length());
|
||||
mgrsEdit.setText(mgrsStr);
|
||||
mgrsEdit.setSelection(mgrsStr.length());
|
||||
olcEdit.setText(olcStr);
|
||||
olcEdit.setSelection(olcStr.length());
|
||||
olcInfo.setText(olcInfoStr);
|
||||
|
@ -242,6 +252,7 @@ public class QuickSearchCoordinatesFragment extends DialogFragment implements Os
|
|||
northingEdit.addTextChangedListener(textWatcher);
|
||||
eastingEdit.addTextChangedListener(textWatcher);
|
||||
zoneEdit.addTextChangedListener(textWatcher);
|
||||
mgrsEdit.addTextChangedListener(textWatcher);
|
||||
olcEdit.addTextChangedListener(textWatcher);
|
||||
|
||||
OnEditorActionListener doneListener = new OnEditorActionListener() {
|
||||
|
@ -258,6 +269,7 @@ public class QuickSearchCoordinatesFragment extends DialogFragment implements Os
|
|||
|
||||
lonEdit.setOnEditorActionListener(doneListener);
|
||||
zoneEdit.setOnEditorActionListener(doneListener);
|
||||
mgrsEdit.setOnEditorActionListener(doneListener);
|
||||
olcEdit.setOnEditorActionListener(doneListener);
|
||||
|
||||
UiUtilities ic = app.getUIUtilities();
|
||||
|
@ -318,6 +330,15 @@ public class QuickSearchCoordinatesFragment extends DialogFragment implements Os
|
|||
olcEdit.setText("");
|
||||
}
|
||||
});
|
||||
ImageButton mgrsClearButton = (ImageButton) view.findViewById(R.id.mgrsClearButton);
|
||||
mgrsClearButton.setImageDrawable(ic.getThemedIcon(R.drawable.ic_action_remove_dark));
|
||||
mgrsClearButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
mgrsEdit.setText("");
|
||||
}
|
||||
});
|
||||
|
||||
ImageButton formatSelectButton = (ImageButton) view.findViewById(R.id.formatSelectButton);
|
||||
formatSelectButton.setImageDrawable(ic.getThemedIcon(R.drawable.ic_action_arrow_drop_down));
|
||||
formatSelectButton.setOnClickListener(new View.OnClickListener() {
|
||||
|
@ -364,6 +385,7 @@ public class QuickSearchCoordinatesFragment extends DialogFragment implements Os
|
|||
final TextView northEdit = ((TextView) view.findViewById(R.id.northingEditText));
|
||||
final TextView eastEdit = ((TextView) view.findViewById(R.id.eastingEditText));
|
||||
final TextView zoneEdit = ((TextView) view.findViewById(R.id.zoneEditText));
|
||||
final TextView mgrsEdit = ((TextView) view.findViewById(R.id.mgrsEditText));
|
||||
final TextView olcEdit = ((TextView) view.findViewById(R.id.olcEditText));
|
||||
final TextView olcInfo = ((TextView) view.findViewById(R.id.olcInfoTextView));
|
||||
outState.putString(QUICK_SEARCH_COORDS_LAT_KEY, latEdit.getText().toString());
|
||||
|
@ -371,6 +393,7 @@ public class QuickSearchCoordinatesFragment extends DialogFragment implements Os
|
|||
outState.putString(QUICK_SEARCH_COORDS_NORTH_KEY, northEdit.getText().toString());
|
||||
outState.putString(QUICK_SEARCH_COORDS_EAST_KEY, eastEdit.getText().toString());
|
||||
outState.putString(QUICK_SEARCH_COORDS_ZONE_KEY, zoneEdit.getText().toString());
|
||||
outState.putString(QUICK_SEARCH_COORDS_MGRS_KEY, mgrsEdit.getText().toString());
|
||||
outState.putString(QUICK_SEARCH_COORDS_OLC_KEY, olcEdit.getText().toString());
|
||||
outState.putString(QUICK_SEARCH_COORDS_OLC_INFO_KEY, olcInfo.getText().toString());
|
||||
}
|
||||
|
@ -470,7 +493,9 @@ public class QuickSearchCoordinatesFragment extends DialogFragment implements Os
|
|||
}
|
||||
|
||||
private void updateControlsVisibility() {
|
||||
if (currentFormat == PointDescription.OLC_FORMAT) {
|
||||
switch (currentFormat){
|
||||
|
||||
case PointDescription.OLC_FORMAT: {
|
||||
view.findViewById(R.id.eastingLayout).setVisibility(View.GONE);
|
||||
view.findViewById(R.id.northingLayout).setVisibility(View.GONE);
|
||||
view.findViewById(R.id.zoneLayout).setVisibility(View.GONE);
|
||||
|
@ -478,15 +503,42 @@ public class QuickSearchCoordinatesFragment extends DialogFragment implements Os
|
|||
view.findViewById(R.id.olcInfoLayout).setVisibility(View.VISIBLE);
|
||||
view.findViewById(R.id.latitudeLayout).setVisibility(View.GONE);
|
||||
view.findViewById(R.id.longitudeLayout).setVisibility(View.GONE);
|
||||
} else {
|
||||
boolean utm = currentFormat == PointDescription.UTM_FORMAT;
|
||||
view.findViewById(R.id.eastingLayout).setVisibility(utm ? View.VISIBLE : View.GONE);
|
||||
view.findViewById(R.id.northingLayout).setVisibility(utm ? View.VISIBLE : View.GONE);
|
||||
view.findViewById(R.id.zoneLayout).setVisibility(utm ? View.VISIBLE : View.GONE);
|
||||
view.findViewById(R.id.mgrsLayout).setVisibility(View.GONE);
|
||||
break;
|
||||
}
|
||||
case PointDescription.UTM_FORMAT: {
|
||||
view.findViewById(R.id.eastingLayout).setVisibility(View.VISIBLE);
|
||||
view.findViewById(R.id.northingLayout).setVisibility(View.VISIBLE);
|
||||
view.findViewById(R.id.zoneLayout).setVisibility(View.VISIBLE);
|
||||
view.findViewById(R.id.olcLayout).setVisibility(View.GONE);
|
||||
view.findViewById(R.id.olcInfoLayout).setVisibility(View.GONE);
|
||||
view.findViewById(R.id.latitudeLayout).setVisibility(!utm ? View.VISIBLE : View.GONE);
|
||||
view.findViewById(R.id.longitudeLayout).setVisibility(!utm ? View.VISIBLE : View.GONE);
|
||||
view.findViewById(R.id.latitudeLayout).setVisibility(View.GONE);
|
||||
view.findViewById(R.id.longitudeLayout).setVisibility(View.GONE);
|
||||
view.findViewById(R.id.mgrsLayout).setVisibility(View.GONE);
|
||||
break;
|
||||
}
|
||||
case PointDescription.MGRS_FORMAT: {
|
||||
view.findViewById(R.id.eastingLayout).setVisibility(View.GONE);
|
||||
view.findViewById(R.id.northingLayout).setVisibility(View.GONE);
|
||||
view.findViewById(R.id.zoneLayout).setVisibility(View.GONE);
|
||||
view.findViewById(R.id.olcLayout).setVisibility(View.GONE);
|
||||
view.findViewById(R.id.olcInfoLayout).setVisibility(View.GONE);
|
||||
view.findViewById(R.id.latitudeLayout).setVisibility(View.GONE);
|
||||
view.findViewById(R.id.longitudeLayout).setVisibility(View.GONE);
|
||||
view.findViewById(R.id.mgrsLayout).setVisibility(View.VISIBLE);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
view.findViewById(R.id.eastingLayout).setVisibility(View.GONE);
|
||||
view.findViewById(R.id.northingLayout).setVisibility(View.GONE);
|
||||
view.findViewById(R.id.zoneLayout).setVisibility(View.GONE);
|
||||
view.findViewById(R.id.olcLayout).setVisibility(View.GONE);
|
||||
view.findViewById(R.id.olcInfoLayout).setVisibility(View.GONE);
|
||||
view.findViewById(R.id.latitudeLayout).setVisibility(View.VISIBLE);
|
||||
view.findViewById(R.id.longitudeLayout).setVisibility(View.VISIBLE);
|
||||
view.findViewById(R.id.mgrsLayout).setVisibility(View.GONE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -544,11 +596,28 @@ public class QuickSearchCoordinatesFragment extends DialogFragment implements Os
|
|||
zoneEdit.setText(olcEdit.getText());
|
||||
northingEdit.setText("");
|
||||
eastingEdit.setText("");
|
||||
} else if (prevFormat == PointDescription.MGRS_FORMAT) {
|
||||
zoneEdit.setText(mgrsEdit.getText());
|
||||
northingEdit.setText("");
|
||||
eastingEdit.setText("");
|
||||
} else {
|
||||
zoneEdit.setText(latEdit.getText());
|
||||
northingEdit.setText("");
|
||||
eastingEdit.setText("");
|
||||
}
|
||||
} else if (currentFormat == PointDescription.MGRS_FORMAT) {
|
||||
final EditText mgrsEdit = ((EditText) view.findViewById(R.id.mgrsEditText));
|
||||
if (latLon != null) {
|
||||
MGRSPoint pnt = new MGRSPoint(new LatLonPoint(latLon.getLatitude(), latLon.getLongitude()));
|
||||
mgrsEdit.setText(pnt.toFlavoredString(5));
|
||||
} else if (prevFormat == PointDescription.UTM_FORMAT) {
|
||||
mgrsEdit.setText(zoneEdit.getText());
|
||||
} else if (prevFormat == PointDescription.OLC_FORMAT) {
|
||||
mgrsEdit.setText(olcEdit.getText());
|
||||
} else {
|
||||
mgrsEdit.setText(latEdit.getText());
|
||||
|
||||
}
|
||||
} else if (currentFormat == PointDescription.OLC_FORMAT) {
|
||||
if (latLon != null) {
|
||||
String olc = OpenLocationCode.encode(latLon.getLatitude(), latLon.getLongitude());
|
||||
|
@ -557,6 +626,9 @@ public class QuickSearchCoordinatesFragment extends DialogFragment implements Os
|
|||
} else if (prevFormat == PointDescription.UTM_FORMAT) {
|
||||
olcEdit.setText(zoneEdit.getText());
|
||||
olcInfo.setText(provideOlcInfo(olcEdit.getText().toString()));
|
||||
} else if (prevFormat == PointDescription.MGRS_FORMAT) {
|
||||
olcEdit.setText(mgrsEdit.getText());
|
||||
olcInfo.setText(provideOlcInfo(olcEdit.getText().toString()));
|
||||
} else {
|
||||
olcEdit.setText(latEdit.getText());
|
||||
olcInfo.setText(provideOlcInfo(olcEdit.getText().toString()));
|
||||
|
@ -568,6 +640,9 @@ public class QuickSearchCoordinatesFragment extends DialogFragment implements Os
|
|||
} else if (prevFormat == PointDescription.UTM_FORMAT) {
|
||||
latEdit.setText(zoneEdit.getText());
|
||||
lonEdit.setText("");
|
||||
} else if (prevFormat == PointDescription.MGRS_FORMAT) {
|
||||
latEdit.setText(mgrsEdit.getText());
|
||||
lonEdit.setText("");
|
||||
} else if (prevFormat == PointDescription.OLC_FORMAT) {
|
||||
latEdit.setText(olcEdit.getText());
|
||||
lonEdit.setText("");
|
||||
|
@ -591,6 +666,11 @@ public class QuickSearchCoordinatesFragment extends DialogFragment implements Os
|
|||
UTMPoint upoint = new UTMPoint(northing, easting, z, c);
|
||||
LatLonPoint ll = upoint.toLatLonPoint();
|
||||
loc = new LatLon(ll.getLatitude(), ll.getLongitude());
|
||||
} else if (currentFormat == LocationConvert.MGRS_FORMAT) {
|
||||
String mgrs = (mgrsEdit.getText().toString());
|
||||
MGRSPoint upoint = new MGRSPoint(mgrs);
|
||||
LatLonPoint ll = upoint.toLatLonPoint();
|
||||
loc = new LatLon(ll.getLatitude(), ll.getLongitude());
|
||||
} else if (currentFormat == LocationConvert.OLC_FORMAT) {
|
||||
String olcText = olcEdit.getText().toString();
|
||||
olcInfo.setText(provideOlcInfo(olcText));
|
||||
|
@ -851,12 +931,13 @@ public class QuickSearchCoordinatesFragment extends DialogFragment implements Os
|
|||
@Override
|
||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||
final QuickSearchCoordinatesFragment parent = (QuickSearchCoordinatesFragment) getParentFragment();
|
||||
String[] entries = new String[5];
|
||||
String[] entries = new String[6];
|
||||
entries[0] = PointDescription.formatToHumanString(getContext(), PointDescription.FORMAT_DEGREES);
|
||||
entries[1] = PointDescription.formatToHumanString(getContext(), PointDescription.FORMAT_MINUTES);
|
||||
entries[2] = PointDescription.formatToHumanString(getContext(), PointDescription.FORMAT_SECONDS);
|
||||
entries[3] = PointDescription.formatToHumanString(getContext(), PointDescription.UTM_FORMAT);
|
||||
entries[4] = PointDescription.formatToHumanString(getContext(), PointDescription.OLC_FORMAT);
|
||||
entries[5] = PointDescription.formatToHumanString(getContext(), PointDescription.MGRS_FORMAT);
|
||||
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
|
||||
builder.setTitle(R.string.coords_format)
|
||||
|
|
|
@ -14,6 +14,7 @@ public enum ExportSettingsType {
|
|||
OSM_NOTES,
|
||||
OSM_EDITS,
|
||||
OFFLINE_MAPS,
|
||||
FAVORITES,
|
||||
TTS_VOICE,
|
||||
VOICE
|
||||
}
|
||||
|
|
|
@ -174,6 +174,6 @@ public class AvoidRoadsSettingsItem extends CollectionSettingsItem<AvoidSpecific
|
|||
@Nullable
|
||||
@Override
|
||||
SettingsItemWriter<? extends SettingsItem> getWriter() {
|
||||
return null;
|
||||
return getJsonWriter();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -97,6 +97,6 @@ public class DownloadsItem extends SettingsItem {
|
|||
@Nullable
|
||||
@Override
|
||||
SettingsItemWriter<? extends SettingsItem> getWriter() {
|
||||
return null;
|
||||
return getJsonWriter();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,197 @@
|
|||
package net.osmand.plus.settings.backend.backup;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import net.osmand.GPXUtilities;
|
||||
import net.osmand.GPXUtilities.GPXFile;
|
||||
import net.osmand.data.FavouritePoint;
|
||||
import net.osmand.plus.FavouritesDbHelper;
|
||||
import net.osmand.plus.FavouritesDbHelper.FavoriteGroup;
|
||||
import net.osmand.plus.OsmandApplication;
|
||||
import net.osmand.plus.R;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static net.osmand.IndexConstants.GPX_FILE_EXT;
|
||||
import static net.osmand.plus.importfiles.ImportHelper.asFavourites;
|
||||
|
||||
public class FavoritesSettingsItem extends CollectionSettingsItem<FavoriteGroup> {
|
||||
|
||||
private FavouritesDbHelper favoritesHelper;
|
||||
|
||||
public FavoritesSettingsItem(@NonNull OsmandApplication app, @NonNull List<FavoriteGroup> items) {
|
||||
super(app, null, items);
|
||||
}
|
||||
|
||||
public FavoritesSettingsItem(@NonNull OsmandApplication app, @Nullable FavoritesSettingsItem baseItem, @NonNull List<FavoriteGroup> items) {
|
||||
super(app, baseItem, items);
|
||||
}
|
||||
|
||||
FavoritesSettingsItem(@NonNull OsmandApplication app, @NonNull JSONObject json) throws JSONException {
|
||||
super(app, json);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void init() {
|
||||
super.init();
|
||||
favoritesHelper = app.getFavorites();
|
||||
existingItems = new ArrayList<>(favoritesHelper.getFavoriteGroups());
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public SettingsItemType getType() {
|
||||
return SettingsItemType.FAVOURITES;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public String getName() {
|
||||
return "favourites";
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public String getPublicName(@NonNull Context ctx) {
|
||||
return ctx.getString(R.string.shared_string_favorites);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public String getDefaultFileName() {
|
||||
return getName() + getDefaultFileExtension();
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public String getDefaultFileExtension() {
|
||||
return GPX_FILE_EXT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void apply() {
|
||||
List<FavoriteGroup> newItems = getNewItems();
|
||||
if (!newItems.isEmpty() || !duplicateItems.isEmpty()) {
|
||||
appliedItems = new ArrayList<>(newItems);
|
||||
|
||||
for (FavoriteGroup duplicate : duplicateItems) {
|
||||
if (shouldReplace) {
|
||||
FavoriteGroup existingGroup = favoritesHelper.getGroup(duplicate.getName());
|
||||
if (existingGroup != null) {
|
||||
List<FavouritePoint> favouritePoints = new ArrayList<>(existingGroup.getPoints());
|
||||
for (FavouritePoint favouritePoint : favouritePoints) {
|
||||
favoritesHelper.deleteFavourite(favouritePoint, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
appliedItems.add(shouldReplace ? duplicate : renameItem(duplicate));
|
||||
}
|
||||
List<FavouritePoint> favourites = getPointsFromGroups(appliedItems);
|
||||
for (FavouritePoint favourite : favourites) {
|
||||
favoritesHelper.addFavourite(favourite, false);
|
||||
}
|
||||
favoritesHelper.sortAll();
|
||||
favoritesHelper.saveCurrentPointsIntoFile();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDuplicate(@NonNull FavoriteGroup favoriteGroup) {
|
||||
String name = favoriteGroup.getName();
|
||||
for (FavoriteGroup group : existingItems) {
|
||||
if (group.getName().equals(name)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldReadOnCollecting() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public FavoriteGroup renameItem(@NonNull FavoriteGroup item) {
|
||||
int number = 0;
|
||||
while (true) {
|
||||
number++;
|
||||
String name = item.getName() + " (" + number + ")";
|
||||
FavoriteGroup renamedItem = new FavoriteGroup(name, item.getPoints(), item.getColor(), item.isVisible());
|
||||
if (!isDuplicate(renamedItem)) {
|
||||
for (FavouritePoint point : renamedItem.getPoints()) {
|
||||
point.setCategory(renamedItem.getName());
|
||||
}
|
||||
return renamedItem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
SettingsItemReader<FavoritesSettingsItem> getReader() {
|
||||
return new SettingsItemReader<FavoritesSettingsItem>(this) {
|
||||
|
||||
@Override
|
||||
public void readFromStream(@NonNull InputStream inputStream) throws IllegalArgumentException {
|
||||
GPXFile gpxFile = GPXUtilities.loadGPXFile(inputStream);
|
||||
if (gpxFile.error != null) {
|
||||
warnings.add(app.getString(R.string.settings_item_read_error, String.valueOf(getType())));
|
||||
SettingsHelper.LOG.error("Failed read gpx file", gpxFile.error);
|
||||
} else {
|
||||
Map<String, FavoriteGroup> flatGroups = new LinkedHashMap<>();
|
||||
List<FavouritePoint> favourites = asFavourites(app, gpxFile.getPoints(), fileName, false);
|
||||
for (FavouritePoint point : favourites) {
|
||||
FavoriteGroup group = flatGroups.get(point.getCategory());
|
||||
if (group == null) {
|
||||
group = new FavoriteGroup(point.getCategory(), point.isVisible(), point.getColor());
|
||||
flatGroups.put(group.getName(), group);
|
||||
items.add(group);
|
||||
}
|
||||
group.getPoints().add(point);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private List<FavouritePoint> getPointsFromGroups(List<FavoriteGroup> groups) {
|
||||
List<FavouritePoint> favouritePoints = new ArrayList<>();
|
||||
for (FavoriteGroup group : groups) {
|
||||
favouritePoints.addAll(group.getPoints());
|
||||
}
|
||||
return favouritePoints;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
SettingsItemWriter<FavoritesSettingsItem> getWriter() {
|
||||
return new SettingsItemWriter<FavoritesSettingsItem>(this) {
|
||||
|
||||
@Override
|
||||
public boolean writeToStream(@NonNull OutputStream outputStream) throws IOException {
|
||||
List<FavouritePoint> favourites = getPointsFromGroups(items);
|
||||
GPXFile gpxFile = favoritesHelper.asGpxFile(favourites);
|
||||
Exception error = GPXUtilities.writeGpx(new OutputStreamWriter(outputStream, "UTF-8"), gpxFile);
|
||||
if (error != null) {
|
||||
warnings.add(app.getString(R.string.settings_item_write_error, String.valueOf(getType())));
|
||||
SettingsHelper.LOG.error("Failed write to gpx file", error);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
|
@ -19,6 +19,10 @@ public class GlobalSettingsItem extends OsmandSettingsItem {
|
|||
super(settings);
|
||||
}
|
||||
|
||||
public GlobalSettingsItem(@NonNull OsmandSettings settings, @NonNull JSONObject json) throws JSONException {
|
||||
super(SettingsItemType.GLOBAL, settings, json);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public SettingsItemType getType() {
|
||||
|
|
|
@ -236,6 +236,6 @@ public class MapSourcesSettingsItem extends CollectionSettingsItem<ITileSource>
|
|||
@Nullable
|
||||
@Override
|
||||
SettingsItemWriter<? extends SettingsItem> getWriter() {
|
||||
return null;
|
||||
return getJsonWriter();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -194,6 +194,6 @@ public class OsmEditsSettingsItem extends CollectionSettingsItem<OpenstreetmapPo
|
|||
@Nullable
|
||||
@Override
|
||||
SettingsItemWriter<? extends SettingsItem> getWriter() {
|
||||
return null;
|
||||
return getJsonWriter();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -167,6 +167,6 @@ public class OsmNotesSettingsItem extends CollectionSettingsItem<OsmNotesPoint>
|
|||
@Nullable
|
||||
@Override
|
||||
SettingsItemWriter<? extends SettingsItem> getWriter() {
|
||||
return null;
|
||||
return getJsonWriter();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -173,6 +173,6 @@ public class PoiUiFiltersSettingsItem extends CollectionSettingsItem<PoiUIFilter
|
|||
@Nullable
|
||||
@Override
|
||||
SettingsItemWriter<? extends SettingsItem> getWriter() {
|
||||
return null;
|
||||
return getJsonWriter();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -178,6 +178,6 @@ public class QuickActionsSettingsItem extends CollectionSettingsItem<QuickAction
|
|||
@Nullable
|
||||
@Override
|
||||
SettingsItemWriter<? extends SettingsItem> getWriter() {
|
||||
return null;
|
||||
return getJsonWriter();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ import net.osmand.data.LatLon;
|
|||
import net.osmand.map.ITileSource;
|
||||
import net.osmand.map.TileSourceManager;
|
||||
import net.osmand.map.TileSourceManager.TileSourceTemplate;
|
||||
import net.osmand.plus.FavouritesDbHelper.FavoriteGroup;
|
||||
import net.osmand.plus.OsmandApplication;
|
||||
import net.osmand.plus.OsmandPlugin;
|
||||
import net.osmand.plus.SQLiteTileSource;
|
||||
|
@ -47,8 +48,8 @@ import java.util.Map;
|
|||
import java.util.Set;
|
||||
|
||||
import static net.osmand.IndexConstants.OSMAND_SETTINGS_FILE_EXT;
|
||||
import static net.osmand.plus.activities.LocalIndexHelper.*;
|
||||
import static net.osmand.plus.settings.backend.backup.FileSettingsItem.*;
|
||||
import static net.osmand.plus.activities.LocalIndexHelper.LocalIndexType;
|
||||
|
||||
/*
|
||||
Usage:
|
||||
|
@ -536,6 +537,10 @@ public class SettingsHelper {
|
|||
if (!files.isEmpty()) {
|
||||
dataList.put(ExportSettingsType.OFFLINE_MAPS, files);
|
||||
}
|
||||
List<FavoriteGroup> favoriteGroups = app.getFavorites().getFavoriteGroups();
|
||||
if (!favoriteGroups.isEmpty()) {
|
||||
dataList.put(ExportSettingsType.FAVORITES, favoriteGroups);
|
||||
}
|
||||
List<LocalIndexInfo> localVoiceFileList = getVoiceIndexInfo();
|
||||
files = getFilesByType(localVoiceFileList, LocalIndexType.TTS_VOICE_DATA);
|
||||
if (!files.isEmpty()) {
|
||||
|
@ -596,6 +601,7 @@ public class SettingsHelper {
|
|||
List<ITileSource> tileSourceTemplates = new ArrayList<>();
|
||||
List<AvoidRoadInfo> avoidRoads = new ArrayList<>();
|
||||
List<ApplicationModeBean> appModeBeans = new ArrayList<>();
|
||||
List<FavoriteGroup> favoriteGroups = new ArrayList<>();
|
||||
List<OsmNotesPoint> osmNotesPointList = new ArrayList<>();
|
||||
List<OpenstreetmapPoint> osmEditsPointList = new ArrayList<>();
|
||||
|
||||
|
@ -608,8 +614,7 @@ public class SettingsHelper {
|
|||
tileSourceTemplates.add((ITileSource) object);
|
||||
} else if (object instanceof File) {
|
||||
try {
|
||||
FileSettingsItem fileItem = new FileSettingsItem(app, (File) object);
|
||||
settingsItems.add(fileItem);
|
||||
settingsItems.add(new FileSettingsItem(app, (File) object));
|
||||
} catch (IllegalArgumentException e) {
|
||||
LOG.warn("Trying to export unsuported file type", e);
|
||||
}
|
||||
|
@ -621,6 +626,8 @@ public class SettingsHelper {
|
|||
osmNotesPointList.add((OsmNotesPoint) object);
|
||||
} else if (object instanceof OpenstreetmapPoint) {
|
||||
osmEditsPointList.add((OpenstreetmapPoint) object);
|
||||
} else if (object instanceof FavoriteGroup) {
|
||||
favoriteGroups.add((FavoriteGroup) object);
|
||||
}
|
||||
}
|
||||
if (!quickActions.isEmpty()) {
|
||||
|
@ -649,6 +656,9 @@ public class SettingsHelper {
|
|||
if (!osmEditsPointList.isEmpty()) {
|
||||
settingsItems.add(new OsmEditsSettingsItem(app, osmEditsPointList));
|
||||
}
|
||||
if (!favoriteGroups.isEmpty()) {
|
||||
settingsItems.add(new FavoritesSettingsItem(app, favoriteGroups));
|
||||
}
|
||||
return settingsItems;
|
||||
}
|
||||
|
||||
|
@ -669,6 +679,8 @@ public class SettingsHelper {
|
|||
List<GlobalSettingsItem> globalSettingsItems = new ArrayList<>();
|
||||
List<OsmNotesPoint> notesPointList = new ArrayList<>();
|
||||
List<OpenstreetmapPoint> editsPointList = new ArrayList<>();
|
||||
List<FavoriteGroup> favoriteGroups = new ArrayList<>();
|
||||
|
||||
for (SettingsItem item : settingsItems) {
|
||||
switch (item.getType()) {
|
||||
case PROFILE:
|
||||
|
@ -743,6 +755,10 @@ public class SettingsHelper {
|
|||
editsPointList.addAll(osmEditsSettingsItem.getItems());
|
||||
}
|
||||
break;
|
||||
case FAVOURITES:
|
||||
FavoritesSettingsItem favoritesSettingsItem = (FavoritesSettingsItem) item;
|
||||
favoriteGroups.addAll(favoritesSettingsItem.getItems());
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -787,6 +803,9 @@ public class SettingsHelper {
|
|||
if (!mapFilesList.isEmpty()) {
|
||||
settingsToOperate.put(ExportSettingsType.OFFLINE_MAPS, mapFilesList);
|
||||
}
|
||||
if (!favoriteGroups.isEmpty()) {
|
||||
settingsToOperate.put(ExportSettingsType.FAVORITES, favoriteGroups);
|
||||
}
|
||||
if (!ttsVoiceFilesList.isEmpty()) {
|
||||
settingsToOperate.put(ExportSettingsType.TTS_VOICE, ttsVoiceFilesList);
|
||||
}
|
||||
|
|
|
@ -143,7 +143,6 @@ public abstract class SettingsItem {
|
|||
}
|
||||
json.put("file", fileName);
|
||||
}
|
||||
writeItemsToJson(json);
|
||||
}
|
||||
|
||||
String toJson() throws JSONException {
|
||||
|
|
|
@ -15,4 +15,5 @@ public enum SettingsItemType {
|
|||
DOWNLOADS,
|
||||
OSM_NOTES,
|
||||
OSM_EDITS,
|
||||
FAVOURITES
|
||||
}
|
|
@ -90,7 +90,7 @@ class SettingsItemsFactory {
|
|||
OsmandSettings settings = app.getSettings();
|
||||
switch (type) {
|
||||
case GLOBAL:
|
||||
item = new GlobalSettingsItem(settings);
|
||||
item = new GlobalSettingsItem(settings, json);
|
||||
break;
|
||||
case PROFILE:
|
||||
item = new ProfileSettingsItem(app, json);
|
||||
|
@ -131,6 +131,9 @@ class SettingsItemsFactory {
|
|||
case OSM_EDITS:
|
||||
item = new OsmEditsSettingsItem(app, json);
|
||||
break;
|
||||
case FAVOURITES:
|
||||
item = new FavoritesSettingsItem(app, json);
|
||||
break;
|
||||
}
|
||||
return item;
|
||||
}
|
||||
|
|
|
@ -123,6 +123,6 @@ public class SuggestedDownloadsItem extends SettingsItem {
|
|||
@Nullable
|
||||
@Override
|
||||
SettingsItemWriter<? extends SettingsItem> getWriter() {
|
||||
return null;
|
||||
return getJsonWriter();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,11 +31,13 @@ public class CoordinatesFormatFragment extends BaseSettingsFragment {
|
|||
public static final String TAG = CoordinatesFormatFragment.class.getSimpleName();
|
||||
|
||||
private static final String UTM_FORMAT_WIKI_LINK = "https://en.wikipedia.org/wiki/Universal_Transverse_Mercator_coordinate_system";
|
||||
private static final String MGRS_FORMAT_WIKI_LINK = "https://en.wikipedia.org/wiki/Military_Grid_Reference_System";
|
||||
|
||||
private static final String FORMAT_DEGREES = "format_degrees";
|
||||
private static final String FORMAT_MINUTES = "format_minutes";
|
||||
private static final String FORMAT_SECONDS = "format_seconds";
|
||||
private static final String UTM_FORMAT = "utm_format";
|
||||
private static final String MGRS_FORMAT = "mgrs_format";
|
||||
private static final String OLC_FORMAT = "olc_format";
|
||||
|
||||
@Override
|
||||
|
@ -44,6 +46,7 @@ public class CoordinatesFormatFragment extends BaseSettingsFragment {
|
|||
CheckBoxPreference minutesPref = (CheckBoxPreference) findPreference(FORMAT_MINUTES);
|
||||
CheckBoxPreference secondsPref = (CheckBoxPreference) findPreference(FORMAT_SECONDS);
|
||||
CheckBoxPreference utmPref = (CheckBoxPreference) findPreference(UTM_FORMAT);
|
||||
CheckBoxPreference mgrsPref = (CheckBoxPreference) findPreference(MGRS_FORMAT);
|
||||
CheckBoxPreference olcPref = (CheckBoxPreference) findPreference(OLC_FORMAT);
|
||||
|
||||
Location loc = app.getLocationProvider().getLastKnownLocation();
|
||||
|
@ -52,6 +55,7 @@ public class CoordinatesFormatFragment extends BaseSettingsFragment {
|
|||
minutesPref.setSummary(getCoordinatesFormatSummary(loc, PointDescription.FORMAT_MINUTES));
|
||||
secondsPref.setSummary(getCoordinatesFormatSummary(loc, PointDescription.FORMAT_SECONDS));
|
||||
utmPref.setSummary(getCoordinatesFormatSummary(loc, PointDescription.UTM_FORMAT));
|
||||
mgrsPref.setSummary(getCoordinatesFormatSummary(loc, PointDescription.MGRS_FORMAT));
|
||||
olcPref.setSummary(getCoordinatesFormatSummary(loc, PointDescription.OLC_FORMAT));
|
||||
|
||||
int currentFormat = settings.COORDINATES_FORMAT.getModeValue(getSelectedAppMode());
|
||||
|
@ -69,6 +73,12 @@ public class CoordinatesFormatFragment extends BaseSettingsFragment {
|
|||
summaryView.setOnTouchListener(new ClickableSpanTouchListener());
|
||||
}
|
||||
}
|
||||
if (MGRS_FORMAT.equals(preference.getKey())) {
|
||||
TextView summaryView = (TextView) holder.findViewById(android.R.id.summary);
|
||||
if (summaryView != null) {
|
||||
summaryView.setOnTouchListener(new ClickableSpanTouchListener());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private CharSequence getCoordinatesFormatSummary(Location loc, int format) {
|
||||
|
@ -106,6 +116,36 @@ public class CoordinatesFormatFragment extends BaseSettingsFragment {
|
|||
|
||||
return spannableBuilder;
|
||||
}
|
||||
if (format == PointDescription.MGRS_FORMAT) {
|
||||
SpannableStringBuilder spannableBuilder = new SpannableStringBuilder();
|
||||
String combined = getString(R.string.ltr_or_rtl_combine_via_colon, getString(R.string.shared_string_example), formattedCoordinates);
|
||||
spannableBuilder.append(combined);
|
||||
spannableBuilder.append("\n");
|
||||
spannableBuilder.append(getString(R.string.mgrs_format_descr));
|
||||
|
||||
int start = spannableBuilder.length();
|
||||
spannableBuilder.append(" ");
|
||||
spannableBuilder.append(getString(R.string.shared_string_read_more));
|
||||
|
||||
ClickableSpan clickableSpan = new ClickableSpan() {
|
||||
@Override
|
||||
public void onClick(@NonNull View widget) {
|
||||
Context ctx = getContext();
|
||||
if (ctx != null) {
|
||||
WikipediaDialogFragment.showFullArticle(ctx, Uri.parse(MGRS_FORMAT_WIKI_LINK), isNightMode());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateDrawState(@NonNull TextPaint ds) {
|
||||
super.updateDrawState(ds);
|
||||
ds.setUnderlineText(false);
|
||||
}
|
||||
};
|
||||
spannableBuilder.setSpan(clickableSpan, start, spannableBuilder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
|
||||
return spannableBuilder;
|
||||
}
|
||||
return getString(R.string.ltr_or_rtl_combine_via_colon, getString(R.string.shared_string_example), formattedCoordinates);
|
||||
}
|
||||
|
||||
|
@ -159,6 +199,8 @@ public class CoordinatesFormatFragment extends BaseSettingsFragment {
|
|||
return PointDescription.FORMAT_SECONDS;
|
||||
case UTM_FORMAT:
|
||||
return PointDescription.UTM_FORMAT;
|
||||
case MGRS_FORMAT:
|
||||
return PointDescription.MGRS_FORMAT;
|
||||
case OLC_FORMAT:
|
||||
return PointDescription.OLC_FORMAT;
|
||||
default:
|
||||
|
@ -176,6 +218,8 @@ public class CoordinatesFormatFragment extends BaseSettingsFragment {
|
|||
return FORMAT_SECONDS;
|
||||
case PointDescription.UTM_FORMAT:
|
||||
return UTM_FORMAT;
|
||||
case PointDescription.MGRS_FORMAT:
|
||||
return MGRS_FORMAT;
|
||||
case PointDescription.OLC_FORMAT:
|
||||
return OLC_FORMAT;
|
||||
default:
|
||||
|
|
|
@ -13,6 +13,7 @@ import net.osmand.AndroidUtils;
|
|||
import net.osmand.IndexConstants;
|
||||
import net.osmand.PlatformUtil;
|
||||
import net.osmand.map.ITileSource;
|
||||
import net.osmand.plus.FavouritesDbHelper.FavoriteGroup;
|
||||
import net.osmand.plus.audionotes.AudioVideoNotesPlugin;
|
||||
import net.osmand.plus.helpers.GpxUiHelper;
|
||||
import net.osmand.plus.settings.backend.ApplicationMode;
|
||||
|
@ -148,6 +149,10 @@ public class DuplicatesSettingsAdapter extends RecyclerView.Adapter<RecyclerView
|
|||
itemHolder.title.setText(((AvoidRoadInfo) currentItem).name);
|
||||
itemHolder.icon.setImageDrawable(app.getUIUtilities().getIcon(R.drawable.ic_action_alert, activeColorRes));
|
||||
itemHolder.subTitle.setVisibility(View.GONE);
|
||||
} else if (currentItem instanceof FavoriteGroup) {
|
||||
itemHolder.title.setText(((FavoriteGroup) currentItem).getDisplayName(app));
|
||||
itemHolder.icon.setImageDrawable(app.getUIUtilities().getIcon(R.drawable.ic_action_favorite, activeColorRes));
|
||||
itemHolder.subTitle.setVisibility(View.GONE);
|
||||
}
|
||||
itemHolder.divider.setVisibility(shouldShowDivider(position) ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ import net.osmand.AndroidUtils;
|
|||
import net.osmand.IndexConstants;
|
||||
import net.osmand.PlatformUtil;
|
||||
import net.osmand.map.ITileSource;
|
||||
import net.osmand.plus.FavouritesDbHelper.FavoriteGroup;
|
||||
import net.osmand.plus.OsmandApplication;
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.UiUtilities;
|
||||
|
@ -35,8 +36,8 @@ import net.osmand.plus.render.RenderingIcons;
|
|||
import net.osmand.plus.settings.backend.ApplicationMode;
|
||||
import net.osmand.plus.settings.backend.ApplicationMode.ApplicationModeBean;
|
||||
import net.osmand.plus.settings.backend.ExportSettingsType;
|
||||
import net.osmand.plus.settings.backend.backup.GlobalSettingsItem;
|
||||
import net.osmand.plus.settings.backend.backup.FileSettingsItem;
|
||||
import net.osmand.plus.settings.backend.backup.GlobalSettingsItem;
|
||||
import net.osmand.util.Algorithms;
|
||||
import net.osmand.view.ThreeStateCheckbox;
|
||||
|
||||
|
@ -49,8 +50,8 @@ import java.util.HashMap;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static net.osmand.plus.settings.backend.ExportSettingsType.*;
|
||||
import static net.osmand.plus.settings.backend.backup.FileSettingsItem.*;
|
||||
import static net.osmand.plus.settings.backend.ExportSettingsType.OFFLINE_MAPS;
|
||||
import static net.osmand.plus.settings.backend.backup.FileSettingsItem.FileSubtype;
|
||||
import static net.osmand.view.ThreeStateCheckbox.State.CHECKED;
|
||||
import static net.osmand.view.ThreeStateCheckbox.State.MISC;
|
||||
import static net.osmand.view.ThreeStateCheckbox.State.UNCHECKED;
|
||||
|
@ -302,6 +303,11 @@ class ExportImportSettingsAdapter extends OsmandBaseExpandableListAdapter {
|
|||
subText.setText(AndroidUtils.formatSize(app, size));
|
||||
subText.setVisibility(View.VISIBLE);
|
||||
break;
|
||||
case FAVORITES:
|
||||
FavoriteGroup favoriteGroup = (FavoriteGroup) currentItem;
|
||||
title.setText(favoriteGroup.getDisplayName(app));
|
||||
setupIcon(icon, R.drawable.ic_action_favorite, itemSelected);
|
||||
break;
|
||||
case TTS_VOICE:
|
||||
case VOICE:
|
||||
file = (File) currentItem;
|
||||
|
@ -400,6 +406,8 @@ class ExportImportSettingsAdapter extends OsmandBaseExpandableListAdapter {
|
|||
return R.string.osm_edit_modified_poi;
|
||||
case OFFLINE_MAPS:
|
||||
return R.string.shared_string_local_maps;
|
||||
case FAVORITES:
|
||||
return R.string.shared_string_favorites;
|
||||
case TTS_VOICE:
|
||||
return R.string.local_indexes_cat_tts;
|
||||
case VOICE:
|
||||
|
|
|
@ -28,6 +28,8 @@ import net.osmand.plus.activities.MapActivity;
|
|||
import net.osmand.plus.base.BaseOsmAndFragment;
|
||||
import net.osmand.plus.dashboard.DashboardOnMap;
|
||||
import net.osmand.plus.dialogs.SelectMapStyleBottomSheetDialogFragment;
|
||||
import net.osmand.plus.myplaces.FavoritesActivity;
|
||||
import net.osmand.plus.osmedit.OsmEditingPlugin;
|
||||
import net.osmand.plus.quickaction.QuickActionListFragment;
|
||||
import net.osmand.plus.routepreparationmenu.AvoidRoadsBottomSheetDialogFragment;
|
||||
import net.osmand.plus.search.QuickSearchDialogFragment;
|
||||
|
@ -194,9 +196,15 @@ public class ImportCompleteFragment extends BaseOsmAndFragment {
|
|||
OsmAndAppCustomization appCustomization = app.getAppCustomization();
|
||||
final Intent favorites = new Intent(activity, appCustomization.getFavoritesActivity());
|
||||
favorites.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
|
||||
app.getSettings().FAVORITES_TAB.set(R.string.osm_edits);
|
||||
app.getSettings().FAVORITES_TAB.set(OsmEditingPlugin.OSM_EDIT_TAB);
|
||||
startActivity(favorites);
|
||||
break;
|
||||
case FAVORITES:
|
||||
Intent favoritesActivity = new Intent(activity, app.getAppCustomization().getFavoritesActivity());
|
||||
favoritesActivity.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
|
||||
app.getSettings().FAVORITES_TAB.set(FavoritesActivity.FAV_TAB);
|
||||
startActivity(favoritesActivity);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -26,6 +26,7 @@ import com.google.android.material.appbar.CollapsingToolbarLayout;
|
|||
|
||||
import net.osmand.AndroidUtils;
|
||||
import net.osmand.map.ITileSource;
|
||||
import net.osmand.plus.FavouritesDbHelper.FavoriteGroup;
|
||||
import net.osmand.plus.OsmandApplication;
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.UiUtilities;
|
||||
|
@ -194,6 +195,7 @@ public class ImportDuplicatesFragment extends BaseOsmAndFragment {
|
|||
List<File> multimediaFilesList = new ArrayList<>();
|
||||
List<File> trackFilesList = new ArrayList<>();
|
||||
List<AvoidRoadInfo> avoidRoads = new ArrayList<>();
|
||||
List<FavoriteGroup> favoriteGroups = new ArrayList<>();
|
||||
|
||||
for (Object object : duplicatesList) {
|
||||
if (object instanceof ApplicationMode.ApplicationModeBean) {
|
||||
|
@ -217,6 +219,8 @@ public class ImportDuplicatesFragment extends BaseOsmAndFragment {
|
|||
}
|
||||
} else if (object instanceof AvoidRoadInfo) {
|
||||
avoidRoads.add((AvoidRoadInfo) object);
|
||||
} else if (object instanceof FavoriteGroup) {
|
||||
favoriteGroups.add((FavoriteGroup) object);
|
||||
}
|
||||
}
|
||||
if (!profiles.isEmpty()) {
|
||||
|
@ -255,6 +259,10 @@ public class ImportDuplicatesFragment extends BaseOsmAndFragment {
|
|||
duplicates.add(getString(R.string.avoid_road));
|
||||
duplicates.addAll(avoidRoads);
|
||||
}
|
||||
if (!favoriteGroups.isEmpty()) {
|
||||
duplicates.add(getString(R.string.shared_string_favorites));
|
||||
duplicates.addAll(favoriteGroups);
|
||||
}
|
||||
return duplicates;
|
||||
}
|
||||
|
||||
|
|
|
@ -33,6 +33,7 @@ import net.osmand.PlatformUtil;
|
|||
import net.osmand.map.ITileSource;
|
||||
import net.osmand.map.TileSourceManager.TileSourceTemplate;
|
||||
import net.osmand.plus.AppInitializer;
|
||||
import net.osmand.plus.FavouritesDbHelper.FavoriteGroup;
|
||||
import net.osmand.plus.OsmandApplication;
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.SQLiteTileSource;
|
||||
|
@ -46,6 +47,8 @@ import net.osmand.plus.poi.PoiUIFilter;
|
|||
import net.osmand.plus.quickaction.QuickAction;
|
||||
import net.osmand.plus.settings.backend.ApplicationMode.ApplicationModeBean;
|
||||
import net.osmand.plus.settings.backend.ExportSettingsType;
|
||||
import net.osmand.plus.settings.backend.backup.FavoritesSettingsItem;
|
||||
import net.osmand.plus.settings.backend.backup.GlobalSettingsItem;
|
||||
import net.osmand.plus.settings.backend.backup.OsmEditsSettingsItem;
|
||||
import net.osmand.plus.settings.backend.backup.OsmNotesSettingsItem;
|
||||
import net.osmand.plus.settings.backend.backup.SettingsHelper;
|
||||
|
@ -432,6 +435,7 @@ public class ImportSettingsFragment extends BaseOsmAndFragment {
|
|||
List<AvoidRoadInfo> avoidRoads = new ArrayList<>();
|
||||
List<OsmNotesPoint> osmNotesPointList = new ArrayList<>();
|
||||
List<OpenstreetmapPoint> osmEditsPointList = new ArrayList<>();
|
||||
List<FavoriteGroup> favoriteGroups = new ArrayList<>();
|
||||
for (Object object : data) {
|
||||
if (object instanceof ApplicationModeBean) {
|
||||
appModeBeans.add((ApplicationModeBean) object);
|
||||
|
@ -451,6 +455,10 @@ public class ImportSettingsFragment extends BaseOsmAndFragment {
|
|||
osmNotesPointList.add((OsmNotesPoint) object);
|
||||
} else if (object instanceof OpenstreetmapPoint) {
|
||||
osmEditsPointList.add((OpenstreetmapPoint) object);
|
||||
} else if (object instanceof FavoriteGroup) {
|
||||
favoriteGroups.add((FavoriteGroup) object);
|
||||
} else if (object instanceof GlobalSettingsItem) {
|
||||
settingsItems.add((GlobalSettingsItem) object);
|
||||
}
|
||||
}
|
||||
if (!appModeBeans.isEmpty()) {
|
||||
|
@ -478,6 +486,10 @@ public class ImportSettingsFragment extends BaseOsmAndFragment {
|
|||
OsmEditsSettingsItem baseItem = getBaseItem(SettingsItemType.OSM_EDITS, OsmEditsSettingsItem.class);
|
||||
settingsItems.add(new OsmEditsSettingsItem(app, baseItem, osmEditsPointList));
|
||||
}
|
||||
if (!favoriteGroups.isEmpty()) {
|
||||
FavoritesSettingsItem baseItem = getBaseItem(SettingsItemType.FAVOURITES, FavoritesSettingsItem.class);
|
||||
settingsItems.add(new FavoritesSettingsItem(app, baseItem, favoriteGroups));
|
||||
}
|
||||
return settingsItems;
|
||||
}
|
||||
|
||||
|
|
|
@ -122,6 +122,18 @@ public class ImportedSettingsItemsAdapter extends
|
|||
holder.icon.setImageDrawable(uiUtils.getIcon(R.drawable.ic_action_info_dark, activeColorRes));
|
||||
holder.title.setText(R.string.osm_edit_modified_poi);
|
||||
break;
|
||||
case FAVORITES:
|
||||
holder.icon.setImageDrawable(uiUtils.getIcon(R.drawable.ic_action_favorite, activeColorRes));
|
||||
holder.title.setText(R.string.shared_string_favorites);
|
||||
break;
|
||||
case OFFLINE_MAPS:
|
||||
holder.icon.setImageDrawable(uiUtils.getIcon(R.drawable.ic_map, activeColorRes));
|
||||
holder.title.setText(R.string.shared_string_local_maps);
|
||||
break;
|
||||
case GLOBAL:
|
||||
holder.icon.setImageDrawable(uiUtils.getIcon(R.drawable.ic_action_settings, activeColorRes));
|
||||
holder.title.setText(R.string.general_settings_2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -68,7 +68,6 @@ public class TerrainLayer extends MapTileLayer {
|
|||
} else {
|
||||
// ignore
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void indexTerrainFiles(final OsmandApplication app) {
|
||||
|
@ -77,7 +76,6 @@ public class TerrainLayer extends MapTileLayer {
|
|||
private String type = mode.name().toLowerCase();
|
||||
@Override
|
||||
protected Void doInBackground(Void... params) {
|
||||
|
||||
File tilesDir = app.getAppPath(IndexConstants.TILES_INDEX_DIR);
|
||||
File cacheDir = app.getCacheDir();
|
||||
// fix http://stackoverflow.com/questions/26937152/workaround-for-nexus-9-sqlite-file-write-operations-on-external-dirs
|
||||
|
@ -91,6 +89,7 @@ public class TerrainLayer extends MapTileLayer {
|
|||
sqliteDb = null;
|
||||
}
|
||||
if (sqliteDb != null) {
|
||||
try {
|
||||
if (sqliteDb.getVersion() == 0) {
|
||||
sqliteDb.setVersion(1);
|
||||
}
|
||||
|
@ -102,6 +101,9 @@ public class TerrainLayer extends MapTileLayer {
|
|||
indexNonCachedResources(fileModified, rs);
|
||||
sqliteDb.close();
|
||||
resources = rs;
|
||||
} catch (RuntimeException e) {
|
||||
log.error(e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
@ -150,7 +152,6 @@ public class TerrainLayer extends MapTileLayer {
|
|||
indexedResources.insert(filename, new QuadRect(left, top, right, bottom));
|
||||
fileModified.remove(filename);
|
||||
}
|
||||
|
||||
} while(cursor.moveToNext());
|
||||
}
|
||||
cursor.close();
|
||||
|
@ -172,7 +173,6 @@ public class TerrainLayer extends MapTileLayer {
|
|||
}
|
||||
return rs;
|
||||
}
|
||||
|
||||
};
|
||||
executeTaskInBackground(task);
|
||||
}
|
||||
|
|
|
@ -33,6 +33,7 @@ import androidx.core.graphics.drawable.DrawableCompat;
|
|||
|
||||
import com.google.android.material.snackbar.Snackbar;
|
||||
import com.jwetherell.openmap.common.LatLonPoint;
|
||||
import com.jwetherell.openmap.common.MGRSPoint;
|
||||
import com.jwetherell.openmap.common.UTMPoint;
|
||||
|
||||
import net.osmand.AndroidUtils;
|
||||
|
@ -1251,6 +1252,13 @@ public class MapInfoWidgetsFactory {
|
|||
UTMPoint pnt = new UTMPoint(new LatLonPoint(lat, lon));
|
||||
String utmLocation = pnt.zone_number + "" + pnt.zone_letter + " " + ((long) pnt.easting) + " " + ((long) pnt.northing);
|
||||
latitudeText.setText(utmLocation);
|
||||
} else if (f == PointDescription.MGRS_FORMAT) {
|
||||
AndroidUiHelper.updateVisibility(lonCoordinatesContainer, false);
|
||||
AndroidUiHelper.updateVisibility(coordinatesDivider, false);
|
||||
AndroidUiHelper.updateVisibility(latitudeIcon, true);
|
||||
latitudeIcon.setImageDrawable(iconsCache.getIcon(nightMode ? R.drawable.widget_coordinates_utm_night : R.drawable.widget_coordinates_utm_day));
|
||||
MGRSPoint pnt = new MGRSPoint(new LatLonPoint(lat, lon));
|
||||
latitudeText.setText(pnt.toFlavoredString(5));
|
||||
} else if (f == PointDescription.OLC_FORMAT) {
|
||||
AndroidUiHelper.updateVisibility(lonCoordinatesContainer, false);
|
||||
AndroidUiHelper.updateVisibility(coordinatesDivider, false);
|
||||
|
|
Loading…
Reference in a new issue