mirror of
https://codeberg.org/comaps/comaps
synced 2025-12-21 05:43:37 +00:00
Compare commits
26 Commits
matheusgom
...
x7z4w-map
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2f9ce76c28 | ||
|
|
ffe07d3337 | ||
|
|
546383d755 | ||
|
|
bf30165b5f | ||
|
|
0288b97b13 | ||
|
|
7e561d09d3 | ||
|
|
298518ae72 | ||
|
|
3bad6d25f0 | ||
|
|
d36361d669 | ||
|
|
688e20b1a6 | ||
|
|
85462161b2 | ||
|
|
b929823f6b | ||
|
|
22dd799585 | ||
|
|
6864d101e2 | ||
|
|
4bfb62b373 | ||
|
|
f1cf844986 | ||
|
|
f20c3bf50c | ||
|
|
e7cc602904 | ||
|
|
d473361e54 | ||
|
|
76d58e4a05 | ||
|
|
7b5878b010 | ||
|
|
3fabbae3f7 | ||
|
|
0add23fcf2 | ||
|
|
08bcb574fa | ||
|
|
db888f33c5 | ||
|
|
4a96d219f0 |
@@ -2,3 +2,5 @@
|
|||||||
480fa6c2fcf53be296504ac6ba8e6b3d70f92b42
|
480fa6c2fcf53be296504ac6ba8e6b3d70f92b42
|
||||||
a6ede2b1466f0c9d8a443600ef337ba6b5832e58
|
a6ede2b1466f0c9d8a443600ef337ba6b5832e58
|
||||||
1377b81bf1cac72bb6da192da7fed6696d5d5281
|
1377b81bf1cac72bb6da192da7fed6696d5d5281
|
||||||
|
0288b97b1367bb971eded1018f560598ea274e6c
|
||||||
|
bf30165b5f5de0907c3c64524a3bf8121624b0b7
|
||||||
|
|||||||
83
3party/ankerl/stl.h
Normal file
83
3party/ankerl/stl.h
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
///////////////////////// ankerl::unordered_dense::{map, set} /////////////////////////
|
||||||
|
|
||||||
|
// A fast & densely stored hashmap and hashset based on robin-hood backward shift deletion.
|
||||||
|
// Version 4.8.1
|
||||||
|
// https://github.com/martinus/unordered_dense
|
||||||
|
//
|
||||||
|
// Licensed under the MIT License <http://opensource.org/licenses/MIT>.
|
||||||
|
// SPDX-License-Identifier: MIT
|
||||||
|
// Copyright (c) 2022 Martin Leitner-Ankerl <martin.ankerl@gmail.com>
|
||||||
|
//
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
// in the Software without restriction, including without limitation the rights
|
||||||
|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
// copies of the Software, and to permit persons to whom the Software is
|
||||||
|
// furnished to do so, subject to the following conditions:
|
||||||
|
//
|
||||||
|
// The above copyright notice and this permission notice shall be included in all
|
||||||
|
// copies or substantial portions of the Software.
|
||||||
|
//
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
// SOFTWARE.
|
||||||
|
|
||||||
|
#ifndef ANKERL_STL_H
|
||||||
|
#define ANKERL_STL_H
|
||||||
|
|
||||||
|
#include <array> // for array
|
||||||
|
#include <cstdint> // for uint64_t, uint32_t, std::uint8_t, UINT64_C
|
||||||
|
#include <cstring> // for size_t, memcpy, memset
|
||||||
|
#include <functional> // for equal_to, hash
|
||||||
|
#include <initializer_list> // for initializer_list
|
||||||
|
#include <iterator> // for pair, distance
|
||||||
|
#include <limits> // for numeric_limits
|
||||||
|
#include <memory> // for allocator, allocator_traits, shared_ptr
|
||||||
|
#include <optional> // for optional
|
||||||
|
#include <stdexcept> // for out_of_range
|
||||||
|
#include <string> // for basic_string
|
||||||
|
#include <string_view> // for basic_string_view, hash
|
||||||
|
#include <tuple> // for forward_as_tuple
|
||||||
|
#include <type_traits> // for enable_if_t, declval, conditional_t, ena...
|
||||||
|
#include <utility> // for forward, exchange, pair, as_const, piece...
|
||||||
|
#include <vector> // for vector
|
||||||
|
|
||||||
|
// <memory_resource> includes <mutex>, which fails to compile if
|
||||||
|
// targeting GCC >= 13 with the (rewritten) win32 thread model, and
|
||||||
|
// targeting Windows earlier than Vista (0x600). GCC predefines
|
||||||
|
// _REENTRANT when using the 'posix' model, and doesn't when using the
|
||||||
|
// 'win32' model.
|
||||||
|
#if defined __MINGW64__ && defined __GNUC__ && __GNUC__ >= 13 && !defined _REENTRANT
|
||||||
|
// _WIN32_WINNT is guaranteed to be defined here because of the
|
||||||
|
// <cstdint> inclusion above.
|
||||||
|
# ifndef _WIN32_WINNT
|
||||||
|
# error "_WIN32_WINNT not defined"
|
||||||
|
# endif
|
||||||
|
# if _WIN32_WINNT < 0x600
|
||||||
|
# define ANKERL_MEMORY_RESOURCE_IS_BAD() 1 // NOLINT(cppcoreguidelines-macro-usage)
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
#ifndef ANKERL_MEMORY_RESOURCE_IS_BAD
|
||||||
|
# define ANKERL_MEMORY_RESOURCE_IS_BAD() 0 // NOLINT(cppcoreguidelines-macro-usage)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__has_include) && !defined(ANKERL_UNORDERED_DENSE_DISABLE_PMR)
|
||||||
|
# if __has_include(<memory_resource>) && !ANKERL_MEMORY_RESOURCE_IS_BAD()
|
||||||
|
# define ANKERL_UNORDERED_DENSE_PMR std::pmr // NOLINT(cppcoreguidelines-macro-usage)
|
||||||
|
# include <memory_resource> // for polymorphic_allocator
|
||||||
|
# elif __has_include(<experimental/memory_resource>)
|
||||||
|
# define ANKERL_UNORDERED_DENSE_PMR std::experimental::pmr // NOLINT(cppcoreguidelines-macro-usage)
|
||||||
|
# include <experimental/memory_resource> // for polymorphic_allocator
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(_MSC_VER) && defined(_M_X64)
|
||||||
|
# include <intrin.h>
|
||||||
|
# pragma intrinsic(_umul128)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
2239
3party/ankerl/unordered_dense.h
Normal file
2239
3party/ankerl/unordered_dense.h
Normal file
File diff suppressed because it is too large
Load Diff
32
android/app/src/fdroid/play/listings/ca/full-description.txt
Normal file
32
android/app/src/fdroid/play/listings/ca/full-description.txt
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
Una aplicació de mapes gratuïta i de codi obert dirigida per la comunitat basada en dades d'OpenStreetMap i reforçada amb el compromís amb la transparència, la privadesa i la no ànim de lucre. CoMaps és una derivació/fork d'Organic Maps, que al seu torn és una derivació de Maps.ME.
|
||||||
|
|
||||||
|
Llegiu sobre els motius del projecte i la seva direcció a <b><i>codeberg.org/comaps</i></b>.
|
||||||
|
Uneix-te a la comunitat i ajuda a crear la millor aplicació de mapes
|
||||||
|
• Utilitza l'aplicació i difon-la
|
||||||
|
• Dona comentaris i informa de problemes
|
||||||
|
• Actualitza les dades del mapa a l'aplicació o al lloc web d'OpenStreetMap
|
||||||
|
|
||||||
|
‣ <b>Enfocat fora de línia</b>: Planifica i navega pel teu viatge a l'estranger sense necessitat de servei mòbil, cerca punts de referència mentre fas una excursió llunyana, etc. Totes les funcions de l'aplicació estan dissenyades per funcionar fora de línia.
|
||||||
|
‣ <b>Respecte a la privadesa</b>: L'aplicació està dissenyada tenint en compte la privadesa: no identifica persones, no fa seguiment i no recopila informació personal. Sense anuncis.
|
||||||
|
‣ <b>Senzill i polit</b>: funcions essencials fàcils d'utilitzar que simplement funcionen.
|
||||||
|
‣ <b>Estalvia bateria i espai</b>: No consumeix bateria com altres aplicacions de navegació. Els mapes compactes estalvien espai preciós al telèfon.
|
||||||
|
‣ <b>Gratuït i creat per la comunitat</b>: Gent com tu ha ajudat a crear l'aplicació afegint llocs a OpenStreetMap, provant i donant comentaris sobre les funcions i aportant les seves habilitats de desenvolupament i diners.
|
||||||
|
‣ <b>Presa de decisions i finances obertes i transparents, sense ànim de lucre i de codi obert.</b>
|
||||||
|
|
||||||
|
<b>Característiques principals</b>:
|
||||||
|
• Mapes detallats descarregables amb llocs que no estan disponibles amb Google Maps
|
||||||
|
• Mode exterior amb rutes de senderisme destacades, càmpings, fonts d'aigua, pics, corbes de nivell, etc.
|
||||||
|
• Senders per caminar i carrils bici
|
||||||
|
• Punts d'interès com restaurants, gasolineres, hotels, botigues, llocs d'interès i molts més
|
||||||
|
• Cerca per nom, adreça o categoria de punt d'interès
|
||||||
|
• Navegació amb anuncis de veu per caminar, anar amb bicicleta o conduir
|
||||||
|
• Marca els teus llocs preferits amb un sol toc
|
||||||
|
• Articles de la Viquipèdia fora de línia
|
||||||
|
• Capa i indicacions de trànsit de metro
|
||||||
|
• Enregistrament de rutes
|
||||||
|
• Exporta i importa marcadors i rutes en formats KML, KMZ i GPX
|
||||||
|
• Un mode fosc per utilitzar durant la nit
|
||||||
|
• Millora les dades del mapa per a tothom mitjançant un editor bàsic integrat
|
||||||
|
|
||||||
|
<b>La llibertat és aquí</b>
|
||||||
|
Descobreix el teu viatge, navega pel món amb la privadesa i la comunitat al capdavant!
|
||||||
10
android/app/src/fdroid/play/listings/de-DE/release-notes.txt
Normal file
10
android/app/src/fdroid/play/listings/de-DE/release-notes.txt
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
• OpenStreetMap-Daten vom 9. Dezember
|
||||||
|
• Material 3 Design
|
||||||
|
• Im OSM-Editor können nun Ladestationen hinzugefügt werden
|
||||||
|
• Schuko und Typ E Ladestationen hinzugefügt
|
||||||
|
• Verbesserte Suchvorschläge
|
||||||
|
• Litauische und lettische Sprachankündigungen
|
||||||
|
• Die Fahranweisungen wurden vergrößert
|
||||||
|
• Der Zoomlevel passt sich an die Distanz zur nächsten Abbiegung an
|
||||||
|
• Neue Anordnung der Einstellungen
|
||||||
|
Weitere Einzelheiten auf codeberg.org/comaps/comaps/releases
|
||||||
@@ -1,13 +1,10 @@
|
|||||||
• Fixed voice directions pronouncing weird symbols in the beginning
|
• OpenStreetMap data as of December 9
|
||||||
• OpenStreetMap data as of November 23
|
• Use Material 3 themes
|
||||||
|
• Support charging sockets in OSM Editor
|
||||||
Changes in the previous release:
|
• Added schuko/type-E charge sockets
|
||||||
• Added trees
|
• Improved search results ranking
|
||||||
• Made bus stop icons smaller and show up earlier
|
• Enabled Lithuanian and Latvian in voice announcements
|
||||||
• Reduce visibility of entrances
|
• Improved size of driving indications
|
||||||
• Added several other POI types
|
• Base zoom level on distance to next turn
|
||||||
• Show sand areas on the map
|
• Reordered settings
|
||||||
• Add business is vacant option to the OSM editor
|
More details on codeberg.org/comaps/comaps/releases
|
||||||
• Improved road shields in Europe
|
|
||||||
• Avoid paved roads routing option
|
|
||||||
• Added icons to the settings page
|
|
||||||
|
|||||||
11
android/app/src/fdroid/play/listings/es-ES/release-notes.txt
Normal file
11
android/app/src/fdroid/play/listings/es-ES/release-notes.txt
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
• Datos de OpenStreetMap a fecha 9/12.
|
||||||
|
• Uso de temas Material 3.
|
||||||
|
• Compatibilidad con enchufes de recarga en Editor.
|
||||||
|
• Se añaden enchufes de recarga schuko/tipo E.
|
||||||
|
• Se mejora la búsqueda.
|
||||||
|
• Se habilitan el lituano y el letón en las indicaciones de voz.
|
||||||
|
• Se aumenta el tamaño de las indicaciones de conducción.
|
||||||
|
• Nivel de zoom base según la distancia al siguiente giro.
|
||||||
|
• Se han reordenado los ajustes.
|
||||||
|
|
||||||
|
Más detalles en codeberg.org/comaps/comaps/releases
|
||||||
10
android/app/src/fdroid/play/listings/fr-FR/release-notes.txt
Normal file
10
android/app/src/fdroid/play/listings/fr-FR/release-notes.txt
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
• Données OpenStreetMap du 9 Décembre
|
||||||
|
• Utilisation de Material 3
|
||||||
|
• Support de l'édition des bornes de recharge dans l'éditeur OSM
|
||||||
|
• Ajout du type de prise schuko/type-E
|
||||||
|
• Amélioration de l'ordre des résultats de recherche
|
||||||
|
• Ajout du lituanien et du letton dans le guidage vocal
|
||||||
|
• Amélioration de la taille des instructions dans la navigation
|
||||||
|
• Niveau de zoom basé sur la distance jusqu’au prochain virage
|
||||||
|
• Réorganisation des paramètres
|
||||||
|
Plus de détails sur codeberg.org/comaps/comaps/releases
|
||||||
10
android/app/src/fdroid/play/listings/hr/release-notes.txt
Normal file
10
android/app/src/fdroid/play/listings/hr/release-notes.txt
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
• Podaci OpenStreetMap karte od 9. prosinca
|
||||||
|
• Korištenje Material 3 tema
|
||||||
|
• Podrška za utičnice za punjenje u OSM Editoru
|
||||||
|
• Dodane šuko/tip-E utičnice
|
||||||
|
• Poboljšano rangiranje rezultata pretraživanja
|
||||||
|
• Omogućeni litvanski i latvijski jezici u glasovnim najavama
|
||||||
|
• Povećana veličina indikatora vožnje
|
||||||
|
• Razina zumiranja se mijenja ovisno o udaljenosti do sljedećeg skretanja
|
||||||
|
• Promijenjen redoslijed postavki
|
||||||
|
Više detalja na codeberg.org/comaps/comaps/releases
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Paprasta ir patogi navigacija – Turiningos kelionės – Vystoma bendruomenės
|
||||||
1
android/app/src/fdroid/play/listings/lt/title.txt
Normal file
1
android/app/src/fdroid/play/listings/lt/title.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
CoMaps – keliaukite atsijungę ir privačiai
|
||||||
10
android/app/src/fdroid/play/listings/pl-PL/release-notes.txt
Normal file
10
android/app/src/fdroid/play/listings/pl-PL/release-notes.txt
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
• Dane OpenStreetMap z 9 grudnia
|
||||||
|
• Użycie motywów Material 3
|
||||||
|
• Obsługa gniazd ładowania w Edytorze OSM
|
||||||
|
• Dodane gniazda ładowania schuko/type-E
|
||||||
|
• Poprawiony ranking wyników wyszukiwania
|
||||||
|
• Dodane litewskie i łotewskie komunikaty głosowe
|
||||||
|
• Poprawiony rozmiar znaków drogowych
|
||||||
|
• Poziom powiększenia oparty na odległości do następnego manewru
|
||||||
|
• Zmieniona kolejność ustawień
|
||||||
|
Więcej szczegółów na codeberg.org/comaps/comaps/releases
|
||||||
10
android/app/src/fdroid/play/listings/pt-BR/release-notes.txt
Normal file
10
android/app/src/fdroid/play/listings/pt-BR/release-notes.txt
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
• Dados OpenStreetMap atualizados em 9 de dezembro
|
||||||
|
• Uso do estilo Material 3
|
||||||
|
• Suporte para tomadas de carregamento no Editor OSM
|
||||||
|
• Adição de tomadas de carregamento Schuko/Tipo E
|
||||||
|
• Melhoria na classificação dos resultados de busca
|
||||||
|
• Adição dos idiomas letão e lituano nas orientações por voz
|
||||||
|
• Melhoria no tamanho das indicações de direção
|
||||||
|
• Nível de zoom baseado em distância até a próxima curva
|
||||||
|
• Configurações reordenadas
|
||||||
|
Mais detalhes em codeberg.org/comaps/comaps/releases
|
||||||
@@ -68,4 +68,4 @@ Por favor, informa de errores, sugiere ideas y únete a nuestra comunidad en el
|
|||||||
|
|
||||||
<b>La Libertad Está Aquí</b>
|
<b>La Libertad Está Aquí</b>
|
||||||
|
|
||||||
Descubre tu camino, navega el mundo con privacidad y con la comunidad como prioridad.
|
¡Descubre tu camino, navega el mundo con privacidad y con la comunidad como prioridad!
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
Paprasta ir patogi navigacija – Turiningos kelionės – Vystoma bendruomenės
|
||||||
1
android/app/src/google/play/listings/lt/title.txt
Normal file
1
android/app/src/google/play/listings/lt/title.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
CoMaps – naviguokite privačiai
|
||||||
@@ -28,7 +28,6 @@ import com.github.mikephil.charting.formatter.IAxisValueFormatter;
|
|||||||
import com.github.mikephil.charting.highlight.Highlight;
|
import com.github.mikephil.charting.highlight.Highlight;
|
||||||
import com.github.mikephil.charting.listener.OnChartValueSelectedListener;
|
import com.github.mikephil.charting.listener.OnChartValueSelectedListener;
|
||||||
import com.google.android.material.textview.MaterialTextView;
|
import com.google.android.material.textview.MaterialTextView;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
|||||||
@@ -253,7 +253,7 @@ public class DownloadResourcesLegacyActivity extends BaseMwmFragmentActivity
|
|||||||
|
|
||||||
mProgress.setMax(bytes);
|
mProgress.setMax(bytes);
|
||||||
// Start progress at 1% according to M3 guidelines
|
// Start progress at 1% according to M3 guidelines
|
||||||
mProgress.setProgressCompat(bytes/100, true);
|
mProgress.setProgressCompat(bytes / 100, true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
finishFilesDownload(bytes);
|
finishFilesDownload(bytes);
|
||||||
@@ -372,7 +372,7 @@ public class DownloadResourcesLegacyActivity extends BaseMwmFragmentActivity
|
|||||||
mTvMessage.setText(getString(R.string.downloading_country_can_proceed, item.name, fileSizeString));
|
mTvMessage.setText(getString(R.string.downloading_country_can_proceed, item.name, fileSizeString));
|
||||||
mProgress.setMax((int) item.totalSize);
|
mProgress.setMax((int) item.totalSize);
|
||||||
// Start progress at 1% according to M3 guidelines
|
// Start progress at 1% according to M3 guidelines
|
||||||
mProgress.setProgressCompat((int) (item.totalSize/100), true);
|
mProgress.setProgressCompat((int) (item.totalSize / 100), true);
|
||||||
|
|
||||||
mCountryDownloadListenerSlot = MapManager.nativeSubscribe(mCountryDownloadListener);
|
mCountryDownloadListenerSlot = MapManager.nativeSubscribe(mCountryDownloadListener);
|
||||||
MapManagerHelper.startDownload(mCurrentCountry);
|
MapManagerHelper.startDownload(mCurrentCountry);
|
||||||
|
|||||||
@@ -1818,9 +1818,17 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
|||||||
if (Config.isTtsMessageDelivered())
|
if (Config.isTtsMessageDelivered())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
String languageDisplayName = TtsPlayer.INSTANCE.getLanguageDisplayName();
|
||||||
|
|
||||||
|
if (languageDisplayName != null)
|
||||||
|
{
|
||||||
String navigationStartMessage = getResources().getString(R.string.navigation_start_tts_message);
|
String navigationStartMessage = getResources().getString(R.string.navigation_start_tts_message);
|
||||||
navigationStartMessage += TtsPlayer.INSTANCE.getLanguageDisplayName();
|
navigationStartMessage += languageDisplayName;
|
||||||
Toast.makeText(this, navigationStartMessage, Toast.LENGTH_LONG).show();
|
Toast.makeText(this, navigationStartMessage, Toast.LENGTH_LONG).show();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Toast.makeText(this, getResources().getString(R.string.navigation_start_tts_disabled_message), Toast.LENGTH_LONG)
|
||||||
|
.show();
|
||||||
|
|
||||||
Config.setTtsMessageDelivered();
|
Config.setTtsMessageDelivered();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,7 +38,8 @@ public class OsmUploadWork extends Worker
|
|||||||
{
|
{
|
||||||
final Constraints c = new Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build();
|
final Constraints c = new Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build();
|
||||||
OneTimeWorkRequest.Builder builder = new OneTimeWorkRequest.Builder(OsmUploadWork.class).setConstraints(c);
|
OneTimeWorkRequest.Builder builder = new OneTimeWorkRequest.Builder(OsmUploadWork.class).setConstraints(c);
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S)
|
||||||
|
{
|
||||||
builder.setExpedited(OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST);
|
builder.setExpedited(OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST);
|
||||||
}
|
}
|
||||||
final OneTimeWorkRequest wr = builder.build();
|
final OneTimeWorkRequest wr = builder.build();
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ import androidx.annotation.NonNull;
|
|||||||
import androidx.documentfile.provider.DocumentFile;
|
import androidx.documentfile.provider.DocumentFile;
|
||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.sdk.util.log.Logger;
|
import app.organicmaps.sdk.util.log.Logger;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import androidx.fragment.app.DialogFragment;
|
|||||||
|
|
||||||
public class BaseMwmDialogFragment extends DialogFragment
|
public class BaseMwmDialogFragment extends DialogFragment
|
||||||
{
|
{
|
||||||
|
|
||||||
protected int getStyle()
|
protected int getStyle()
|
||||||
{
|
{
|
||||||
return STYLE_NORMAL;
|
return STYLE_NORMAL;
|
||||||
|
|||||||
@@ -282,11 +282,13 @@ public class BookmarksListFragment extends BaseMwmRecyclerFragment<ConcatAdapter
|
|||||||
{
|
{
|
||||||
if (isEmptySearchResults())
|
if (isEmptySearchResults())
|
||||||
{
|
{
|
||||||
requirePlaceholder().setContent(R.string.search_not_found, R.string.search_not_found_query, R.drawable.ic_search_fail);
|
requirePlaceholder().setContent(R.string.search_not_found, R.string.search_not_found_query,
|
||||||
|
R.drawable.ic_search_fail);
|
||||||
}
|
}
|
||||||
else if (isEmpty())
|
else if (isEmpty())
|
||||||
{
|
{
|
||||||
requirePlaceholder().setContent(R.string.bookmarks_empty_list_title, R.string.bookmarks_empty_list_message, R.drawable.ic_bookmarks);
|
requirePlaceholder().setContent(R.string.bookmarks_empty_list_title, R.string.bookmarks_empty_list_message,
|
||||||
|
R.drawable.ic_bookmarks);
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean isEmptyRecycler = isEmpty() || isEmptySearchResults();
|
boolean isEmptyRecycler = isEmpty() || isEmptySearchResults();
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ import app.organicmaps.util.UiUtils;
|
|||||||
import app.organicmaps.util.Utils;
|
import app.organicmaps.util.Utils;
|
||||||
import app.organicmaps.widget.recycler.RecyclerClickListener;
|
import app.organicmaps.widget.recycler.RecyclerClickListener;
|
||||||
import app.organicmaps.widget.recycler.RecyclerLongClickListener;
|
import app.organicmaps.widget.recycler.RecyclerLongClickListener;
|
||||||
|
|
||||||
import com.google.android.material.button.MaterialButton;
|
import com.google.android.material.button.MaterialButton;
|
||||||
import com.google.android.material.checkbox.MaterialCheckBox;
|
import com.google.android.material.checkbox.MaterialCheckBox;
|
||||||
import com.google.android.material.imageview.ShapeableImageView;
|
import com.google.android.material.imageview.ShapeableImageView;
|
||||||
@@ -458,10 +457,12 @@ public class Holders
|
|||||||
|
|
||||||
String formattedDesc = desc.replace("\n", "<br>");
|
String formattedDesc = desc.replace("\n", "<br>");
|
||||||
Spanned spannedDesc = Utils.fromHtml(formattedDesc);
|
Spanned spannedDesc = Utils.fromHtml(formattedDesc);
|
||||||
if (!TextUtils.isEmpty(spannedDesc)) {
|
if (!TextUtils.isEmpty(spannedDesc))
|
||||||
|
{
|
||||||
mDescText.setText(spannedDesc);
|
mDescText.setText(spannedDesc);
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
mDescText.setText(R.string.list_description_empty);
|
mDescText.setText(R.string.list_description_empty);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,8 +50,8 @@ public final class IntentUtils
|
|||||||
}
|
}
|
||||||
|
|
||||||
// https://developer.android.com/reference/androidx/car/app/CarContext#startCarApp(android.content.Intent)
|
// https://developer.android.com/reference/androidx/car/app/CarContext#startCarApp(android.content.Intent)
|
||||||
private static void processNavigationIntent(@NonNull CarContext carContext,
|
private static void processNavigationIntent(@NonNull CarContext carContext, @NonNull Renderer surfaceRenderer,
|
||||||
@NonNull Renderer surfaceRenderer, @NonNull Intent intent)
|
@NonNull Intent intent)
|
||||||
{
|
{
|
||||||
// TODO (AndrewShkrob): This logic will need to be revised when we introduce support for adding stops during
|
// TODO (AndrewShkrob): This logic will need to be revised when we introduce support for adding stops during
|
||||||
// navigation or route planning. Skip navigation intents during navigation
|
// navigation or route planning. Skip navigation intents during navigation
|
||||||
|
|||||||
@@ -85,7 +85,8 @@ public final class RoutingHelpers
|
|||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
private static IconCompat createManeuverIcon(@NonNull final CarContext context, @NonNull CarDirection carDirection, int roundaboutExitNum)
|
private static IconCompat createManeuverIcon(@NonNull final CarContext context, @NonNull CarDirection carDirection,
|
||||||
|
int roundaboutExitNum)
|
||||||
{
|
{
|
||||||
if (!CarDirection.isRoundAbout(carDirection) || roundaboutExitNum == 0)
|
if (!CarDirection.isRoundAbout(carDirection) || roundaboutExitNum == 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -39,8 +39,7 @@ public final class UiHelpers
|
|||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
public static ActionStrip createMapActionStrip(@NonNull CarContext context,
|
public static ActionStrip createMapActionStrip(@NonNull CarContext context, @NonNull Renderer surfaceRenderer)
|
||||||
@NonNull Renderer surfaceRenderer)
|
|
||||||
{
|
{
|
||||||
final CarIcon iconPlus = new CarIcon.Builder(IconCompat.createWithResource(context, R.drawable.ic_plus)).build();
|
final CarIcon iconPlus = new CarIcon.Builder(IconCompat.createWithResource(context, R.drawable.ic_plus)).build();
|
||||||
final CarIcon iconMinus = new CarIcon.Builder(IconCompat.createWithResource(context, R.drawable.ic_minus)).build();
|
final CarIcon iconMinus = new CarIcon.Builder(IconCompat.createWithResource(context, R.drawable.ic_minus)).build();
|
||||||
@@ -59,15 +58,13 @@ public final class UiHelpers
|
|||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
public static MapController createMapController(@NonNull CarContext context,
|
public static MapController createMapController(@NonNull CarContext context, @NonNull Renderer surfaceRenderer)
|
||||||
@NonNull Renderer surfaceRenderer)
|
|
||||||
{
|
{
|
||||||
return new MapController.Builder().setMapActionStrip(createMapActionStrip(context, surfaceRenderer)).build();
|
return new MapController.Builder().setMapActionStrip(createMapActionStrip(context, surfaceRenderer)).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
public static Action createSettingsAction(@NonNull BaseMapScreen mapScreen,
|
public static Action createSettingsAction(@NonNull BaseMapScreen mapScreen, @NonNull Renderer surfaceRenderer)
|
||||||
@NonNull Renderer surfaceRenderer)
|
|
||||||
{
|
{
|
||||||
return createSettingsAction(mapScreen, surfaceRenderer, null);
|
return createSettingsAction(mapScreen, surfaceRenderer, null);
|
||||||
}
|
}
|
||||||
@@ -81,8 +78,7 @@ public final class UiHelpers
|
|||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
private static Action createSettingsAction(@NonNull BaseMapScreen mapScreen,
|
private static Action createSettingsAction(@NonNull BaseMapScreen mapScreen, @NonNull Renderer surfaceRenderer,
|
||||||
@NonNull Renderer surfaceRenderer,
|
|
||||||
@Nullable OnScreenResultListener onScreenResultListener)
|
@Nullable OnScreenResultListener onScreenResultListener)
|
||||||
{
|
{
|
||||||
final CarContext context = mapScreen.getCarContext();
|
final CarContext context = mapScreen.getCarContext();
|
||||||
@@ -123,8 +119,7 @@ public final class UiHelpers
|
|||||||
return null;
|
return null;
|
||||||
|
|
||||||
final Row.Builder builder = new Row.Builder();
|
final Row.Builder builder = new Row.Builder();
|
||||||
builder.setImage(
|
builder.setImage(new CarIcon.Builder(IconCompat.createWithResource(context, R.drawable.ic_opening_hours)).build());
|
||||||
new CarIcon.Builder(IconCompat.createWithResource(context, R.drawable.ic_opening_hours)).build());
|
|
||||||
|
|
||||||
if (isEmptyTT)
|
if (isEmptyTT)
|
||||||
builder.setTitle(ohStr);
|
builder.setTitle(ohStr);
|
||||||
|
|||||||
@@ -125,7 +125,8 @@ public class EditTextDialogFragment extends BaseMwmDialogFragment
|
|||||||
|
|
||||||
positiveButton.setOnClickListener(view -> {
|
positiveButton.setOnClickListener(view -> {
|
||||||
final String result = mEtInput.getText().toString();
|
final String result = mEtInput.getText().toString();
|
||||||
if (validateInput(requireActivity(), result)) {
|
if (validateInput(requireActivity(), result))
|
||||||
|
{
|
||||||
processInput(result);
|
processInput(result);
|
||||||
editTextDialog.dismiss();
|
editTextDialog.dismiss();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import android.location.Location;
|
|||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.core.view.ViewCompat;
|
import androidx.core.view.ViewCompat;
|
||||||
import app.organicmaps.MwmActivity;
|
import app.organicmaps.MwmActivity;
|
||||||
@@ -49,7 +48,8 @@ public class OnmapDownloader implements MwmActivity.LeftAnimationTrackListener
|
|||||||
@Override
|
@Override
|
||||||
public void onStatusChanged(List<MapManager.StorageCallbackData> data)
|
public void onStatusChanged(List<MapManager.StorageCallbackData> data)
|
||||||
{
|
{
|
||||||
if (mCurrentCountry == null) {
|
if (mCurrentCountry == null)
|
||||||
|
{
|
||||||
updateOfflineExplanationVisibility();
|
updateOfflineExplanationVisibility();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -109,10 +109,13 @@ public class OnmapDownloader implements MwmActivity.LeftAnimationTrackListener
|
|||||||
return enqueued || progress || applying;
|
return enqueued || progress || applying;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateOfflineExplanationVisibility() {
|
private void updateOfflineExplanationVisibility()
|
||||||
if (mOfflineExplanation == null) return;
|
{
|
||||||
|
if (mOfflineExplanation == null)
|
||||||
|
return;
|
||||||
// hide once threshold reached; safe to call repeatedly.
|
// hide once threshold reached; safe to call repeatedly.
|
||||||
app.organicmaps.util.UiUtils.showIf(MapManager.nativeGetDownloadedCount() < (DEFAULT_MAP_BASELINE + HIDE_THRESHOLD), mOfflineExplanation);
|
app.organicmaps.util.UiUtils.showIf(MapManager.nativeGetDownloadedCount() < (DEFAULT_MAP_BASELINE + HIDE_THRESHOLD),
|
||||||
|
mOfflineExplanation);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateProgressState(boolean shouldAutoDownload)
|
private void updateProgressState(boolean shouldAutoDownload)
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ import android.view.View;
|
|||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.AutoCompleteTextView;
|
import android.widget.AutoCompleteTextView;
|
||||||
import android.widget.GridLayout;
|
import android.widget.GridLayout;
|
||||||
|
|
||||||
import androidx.annotation.CallSuper;
|
import androidx.annotation.CallSuper;
|
||||||
import androidx.annotation.DrawableRes;
|
import androidx.annotation.DrawableRes;
|
||||||
import androidx.annotation.IdRes;
|
import androidx.annotation.IdRes;
|
||||||
@@ -398,7 +397,7 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
|||||||
List<String> SOCKET_TYPES = Arrays.stream(getResources().getStringArray(R.array.charge_socket_types)).toList();
|
List<String> SOCKET_TYPES = Arrays.stream(getResources().getStringArray(R.array.charge_socket_types)).toList();
|
||||||
for (String socketType : SOCKET_TYPES)
|
for (String socketType : SOCKET_TYPES)
|
||||||
{
|
{
|
||||||
ChargeSocketDescriptor socket = new ChargeSocketDescriptor(socketType,0,0);
|
ChargeSocketDescriptor socket = new ChargeSocketDescriptor(socketType, 0, 0);
|
||||||
|
|
||||||
MaterialButton btn = (MaterialButton) inflater.inflate(R.layout.button_socket_type, typeBtns, false);
|
MaterialButton btn = (MaterialButton) inflater.inflate(R.layout.button_socket_type, typeBtns, false);
|
||||||
|
|
||||||
@@ -406,16 +405,16 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
|||||||
|
|
||||||
// load SVG icon converted into VectorDrawable in res/drawable
|
// load SVG icon converted into VectorDrawable in res/drawable
|
||||||
@SuppressLint("DiscouragedApi")
|
@SuppressLint("DiscouragedApi")
|
||||||
int resIconId =
|
int resIconId = getResources().getIdentifier("ic_charge_socket_" + socket.visualType(), "drawable",
|
||||||
getResources().getIdentifier("ic_charge_socket_" + socket.visualType(), "drawable", requireContext().getPackageName());
|
requireContext().getPackageName());
|
||||||
if (resIconId != 0)
|
if (resIconId != 0)
|
||||||
{
|
{
|
||||||
btn.setIcon(getResources().getDrawable(resIconId));
|
btn.setIcon(getResources().getDrawable(resIconId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("DiscouragedApi")
|
@SuppressLint("DiscouragedApi")
|
||||||
int resTypeId =
|
int resTypeId = getResources().getIdentifier("charge_socket_" + socket.visualType(), "string",
|
||||||
getResources().getIdentifier("charge_socket_" + socket.visualType(), "string", requireContext().getPackageName());
|
requireContext().getPackageName());
|
||||||
if (resTypeId != 0)
|
if (resTypeId != 0)
|
||||||
{
|
{
|
||||||
btn.setText(getResources().getString(resTypeId));
|
btn.setText(getResources().getString(resTypeId));
|
||||||
@@ -463,13 +462,16 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
|||||||
// Add a TextWatcher to validate on text change
|
// Add a TextWatcher to validate on text change
|
||||||
countView.addTextChangedListener(new TextWatcher() {
|
countView.addTextChangedListener(new TextWatcher() {
|
||||||
@Override
|
@Override
|
||||||
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
|
public void beforeTextChanged(CharSequence s, int start, int count, int after)
|
||||||
|
{}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onTextChanged(CharSequence s, int start, int before, int count) {}
|
public void onTextChanged(CharSequence s, int start, int before, int count)
|
||||||
|
{}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterTextChanged(Editable s) {
|
public void afterTextChanged(Editable s)
|
||||||
|
{
|
||||||
validatePositiveField(s.toString(), countInputLayout);
|
validatePositiveField(s.toString(), countInputLayout);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -484,13 +486,16 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
|||||||
// Add a TextWatcher to validate on text change
|
// Add a TextWatcher to validate on text change
|
||||||
powerView.addTextChangedListener(new TextWatcher() {
|
powerView.addTextChangedListener(new TextWatcher() {
|
||||||
@Override
|
@Override
|
||||||
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
|
public void beforeTextChanged(CharSequence s, int start, int count, int after)
|
||||||
|
{}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onTextChanged(CharSequence s, int start, int before, int count) {}
|
public void onTextChanged(CharSequence s, int start, int before, int count)
|
||||||
|
{}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterTextChanged(Editable s) {
|
public void afterTextChanged(Editable s)
|
||||||
|
{
|
||||||
validatePositiveField(s.toString(), powerInputLayout);
|
validatePositiveField(s.toString(), powerInputLayout);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -498,7 +503,8 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
|||||||
return new MaterialAlertDialogBuilder(requireActivity(), R.style.MwmTheme_AlertDialog)
|
return new MaterialAlertDialogBuilder(requireActivity(), R.style.MwmTheme_AlertDialog)
|
||||||
.setTitle(R.string.editor_socket)
|
.setTitle(R.string.editor_socket)
|
||||||
.setView(dialogView)
|
.setView(dialogView)
|
||||||
.setPositiveButton(R.string.save,
|
.setPositiveButton(
|
||||||
|
R.string.save,
|
||||||
(dialog, which) -> {
|
(dialog, which) -> {
|
||||||
String socketType = "";
|
String socketType = "";
|
||||||
for (MaterialButton b : buttonList)
|
for (MaterialButton b : buttonList)
|
||||||
@@ -542,8 +548,7 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
|||||||
Logger.w(CHARGE_SOCKETS_TAG, "Invalid power value for socket:" + powerView.getText().toString());
|
Logger.w(CHARGE_SOCKETS_TAG, "Invalid power value for socket:" + powerView.getText().toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
ChargeSocketDescriptor socket =
|
ChargeSocketDescriptor socket = new ChargeSocketDescriptor(socketType, countValue, powerValue);
|
||||||
new ChargeSocketDescriptor(socketType, countValue, powerValue);
|
|
||||||
|
|
||||||
updateChargeSockets(socketIndex, socket);
|
updateChargeSockets(socketIndex, socket);
|
||||||
})
|
})
|
||||||
@@ -551,21 +556,29 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Helper method for validation logic
|
// Helper method for validation logic
|
||||||
private boolean validatePositiveField(String text, TextInputLayout layout) {
|
private boolean validatePositiveField(String text, TextInputLayout layout)
|
||||||
if (text.isEmpty()) {
|
{
|
||||||
|
if (text.isEmpty())
|
||||||
|
{
|
||||||
layout.setError(null); // No error if empty (assuming 0 is the default)
|
layout.setError(null); // No error if empty (assuming 0 is the default)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
try {
|
try
|
||||||
|
{
|
||||||
double value = Double.parseDouble(text);
|
double value = Double.parseDouble(text);
|
||||||
if (value < 0) {
|
if (value < 0)
|
||||||
|
{
|
||||||
layout.setError(getString(R.string.error_value_must_be_positive));
|
layout.setError(getString(R.string.error_value_must_be_positive));
|
||||||
return false;
|
return false;
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
layout.setError(null);
|
layout.setError(null);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
} catch (NumberFormatException e) {
|
}
|
||||||
|
catch (NumberFormatException e)
|
||||||
|
{
|
||||||
layout.setError(getString(R.string.error_invalid_number));
|
layout.setError(getString(R.string.error_invalid_number));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -585,7 +598,8 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
|||||||
{
|
{
|
||||||
sockets[socketIndex] = socket;
|
sockets[socketIndex] = socket;
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
List<ChargeSocketDescriptor> list = new ArrayList<>(Arrays.asList(sockets));
|
List<ChargeSocketDescriptor> list = new ArrayList<>(Arrays.asList(sockets));
|
||||||
list.add(socket);
|
list.add(socket);
|
||||||
sockets = list.toArray(new ChargeSocketDescriptor[0]);
|
sockets = list.toArray(new ChargeSocketDescriptor[0]);
|
||||||
@@ -603,7 +617,8 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
|||||||
GridLayout socketsGrid = mChargeSockets.findViewById(R.id.socket_grid_editor);
|
GridLayout socketsGrid = mChargeSockets.findViewById(R.id.socket_grid_editor);
|
||||||
socketsGrid.removeAllViews();
|
socketsGrid.removeAllViews();
|
||||||
|
|
||||||
for (int i = 0; i < sockets.length; i++) {
|
for (int i = 0; i < sockets.length; i++)
|
||||||
|
{
|
||||||
final int currentIndex = i;
|
final int currentIndex = i;
|
||||||
ChargeSocketDescriptor socket = sockets[i];
|
ChargeSocketDescriptor socket = sockets[i];
|
||||||
|
|
||||||
@@ -614,27 +629,30 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
|||||||
MaterialTextView power = itemView.findViewById(R.id.socket_power);
|
MaterialTextView power = itemView.findViewById(R.id.socket_power);
|
||||||
MaterialTextView count = itemView.findViewById(R.id.socket_count);
|
MaterialTextView count = itemView.findViewById(R.id.socket_count);
|
||||||
|
|
||||||
|
|
||||||
// load SVG icon converted into VectorDrawable in res/drawable
|
// load SVG icon converted into VectorDrawable in res/drawable
|
||||||
@SuppressLint("DiscouragedApi")
|
@SuppressLint("DiscouragedApi")
|
||||||
int resIconId = getResources().getIdentifier("ic_charge_socket_" + socket.visualType(), "drawable",
|
int resIconId = getResources().getIdentifier("ic_charge_socket_" + socket.visualType(), "drawable",
|
||||||
requireContext().getPackageName());
|
requireContext().getPackageName());
|
||||||
if (resIconId != 0) {
|
if (resIconId != 0)
|
||||||
|
{
|
||||||
icon.setImageResource(resIconId);
|
icon.setImageResource(resIconId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("DiscouragedApi")
|
@SuppressLint("DiscouragedApi")
|
||||||
int resTypeId =
|
int resTypeId = getResources().getIdentifier("charge_socket_" + socket.visualType(), "string",
|
||||||
getResources().getIdentifier("charge_socket_" + socket.visualType(), "string", requireContext().getPackageName());
|
requireContext().getPackageName());
|
||||||
if (resTypeId != 0) {
|
if (resTypeId != 0)
|
||||||
|
{
|
||||||
type.setText(resTypeId);
|
type.setText(resTypeId);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (socket.power() != 0) {
|
if (socket.power() != 0)
|
||||||
|
{
|
||||||
DecimalFormat df = new DecimalFormat("#.##");
|
DecimalFormat df = new DecimalFormat("#.##");
|
||||||
power.setText(getString(R.string.kw_label, df.format(socket.power())));
|
power.setText(getString(R.string.kw_label, df.format(socket.power())));
|
||||||
}
|
}
|
||||||
else if (socket.ignorePower()) {
|
else if (socket.ignorePower())
|
||||||
|
{
|
||||||
power.setVisibility(INVISIBLE);
|
power.setVisibility(INVISIBLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -643,7 +661,8 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
|||||||
count.setText(getString(R.string.count_label, socket.count()));
|
count.setText(getString(R.string.count_label, socket.count()));
|
||||||
}
|
}
|
||||||
|
|
||||||
itemView.setOnClickListener(v -> buildChargeSocketDialog(currentIndex, socket.type(), socket.count(), socket.power()).show());
|
itemView.setOnClickListener(
|
||||||
|
v -> buildChargeSocketDialog(currentIndex, socket.type(), socket.count(), socket.power()).show());
|
||||||
socketsGrid.addView(itemView);
|
socketsGrid.addView(itemView);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -789,9 +808,8 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
|||||||
View lineContactBlock =
|
View lineContactBlock =
|
||||||
initBlock(view, Metadata.MetadataType.FMD_CONTACT_LINE, R.id.block_line, R.drawable.ic_line_white,
|
initBlock(view, Metadata.MetadataType.FMD_CONTACT_LINE, R.id.block_line, R.drawable.ic_line_white,
|
||||||
R.string.editor_line_social_network, InputType.TYPE_TEXT_VARIATION_URI);
|
R.string.editor_line_social_network, InputType.TYPE_TEXT_VARIATION_URI);
|
||||||
View blueskyContactBlock =
|
View blueskyContactBlock = initBlock(view, Metadata.MetadataType.FMD_CONTACT_BLUESKY, R.id.block_bluesky,
|
||||||
initBlock(view, Metadata.MetadataType.FMD_CONTACT_BLUESKY, R.id.block_bluesky, R.drawable.ic_bluesky,
|
R.drawable.ic_bluesky, R.string.bluesky, InputType.TYPE_TEXT_VARIATION_URI);
|
||||||
R.string.bluesky, InputType.TYPE_TEXT_VARIATION_URI);
|
|
||||||
View operatorBlock = initBlock(view, Metadata.MetadataType.FMD_OPERATOR, R.id.block_operator,
|
View operatorBlock = initBlock(view, Metadata.MetadataType.FMD_OPERATOR, R.id.block_operator,
|
||||||
R.drawable.ic_operator, R.string.editor_operator, 0);
|
R.drawable.ic_operator, R.string.editor_operator, 0);
|
||||||
|
|
||||||
@@ -1025,7 +1043,8 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
|||||||
new MaterialAlertDialogBuilder(requireActivity(), R.style.MwmTheme_AlertDialog)
|
new MaterialAlertDialogBuilder(requireActivity(), R.style.MwmTheme_AlertDialog)
|
||||||
.setTitle(R.string.editor_mark_business_vacant_title)
|
.setTitle(R.string.editor_mark_business_vacant_title)
|
||||||
.setMessage(R.string.editor_mark_business_vacant_description)
|
.setMessage(R.string.editor_mark_business_vacant_description)
|
||||||
.setPositiveButton(R.string.editor_submit, (dlg, which) -> {
|
.setPositiveButton(R.string.editor_submit,
|
||||||
|
(dlg, which) -> {
|
||||||
Editor.nativeMarkPlaceAsDisused();
|
Editor.nativeMarkPlaceAsDisused();
|
||||||
mParent.processEditedFeatures();
|
mParent.processEditedFeatures();
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import app.organicmaps.R;
|
|||||||
import app.organicmaps.sdk.editor.data.FeatureCategory;
|
import app.organicmaps.sdk.editor.data.FeatureCategory;
|
||||||
import app.organicmaps.sdk.util.StringUtils;
|
import app.organicmaps.sdk.util.StringUtils;
|
||||||
import app.organicmaps.util.UiUtils;
|
import app.organicmaps.util.UiUtils;
|
||||||
|
|
||||||
import com.google.android.material.button.MaterialButton;
|
import com.google.android.material.button.MaterialButton;
|
||||||
import com.google.android.material.textfield.TextInputEditText;
|
import com.google.android.material.textfield.TextInputEditText;
|
||||||
import com.google.android.material.textview.MaterialTextView;
|
import com.google.android.material.textview.MaterialTextView;
|
||||||
@@ -69,8 +68,7 @@ public class FeatureCategoryAdapter extends RecyclerView.Adapter<RecyclerView.Vi
|
|||||||
}
|
}
|
||||||
case TYPE_FOOTER ->
|
case TYPE_FOOTER ->
|
||||||
{
|
{
|
||||||
return new FooterViewHolder(inflater.inflate(R.layout.item_feature_category_footer, parent, false),
|
return new FooterViewHolder(inflater.inflate(R.layout.item_feature_category_footer, parent, false), mFragment);
|
||||||
mFragment);
|
|
||||||
}
|
}
|
||||||
default -> throw new IllegalArgumentException("Unsupported viewType: " + viewType);
|
default -> throw new IllegalArgumentException("Unsupported viewType: " + viewType);
|
||||||
}
|
}
|
||||||
@@ -134,26 +132,21 @@ public class FeatureCategoryAdapter extends RecyclerView.Adapter<RecyclerView.Vi
|
|||||||
mSendNoteButton = itemView.findViewById(R.id.send_note_button);
|
mSendNoteButton = itemView.findViewById(R.id.send_note_button);
|
||||||
mSendNoteButton.setOnClickListener(v -> listener.onSendNoteClicked());
|
mSendNoteButton.setOnClickListener(v -> listener.onSendNoteClicked());
|
||||||
final ColorStateList bgButtonColor = new ColorStateList(
|
final ColorStateList bgButtonColor = new ColorStateList(
|
||||||
new int[][]{
|
new int[][] {
|
||||||
new int[]{android.R.attr.state_enabled}, // enabled
|
new int[] {android.R.attr.state_enabled}, // enabled
|
||||||
new int[]{-android.R.attr.state_enabled} // disabled
|
new int[] {-android.R.attr.state_enabled} // disabled
|
||||||
},
|
},
|
||||||
new int[]{
|
new int[] {ContextCompat.getColor(mSendNoteButton.getContext(), R.color.base_accent),
|
||||||
ContextCompat.getColor(
|
ContextCompat.getColor(mSendNoteButton.getContext(), R.color.button_accent_disabled)});
|
||||||
mSendNoteButton.getContext(), R.color.base_accent),
|
|
||||||
ContextCompat.getColor(mSendNoteButton.getContext(), R.color.button_accent_disabled)
|
|
||||||
});
|
|
||||||
final ColorStateList textButtonColor = new ColorStateList(
|
final ColorStateList textButtonColor = new ColorStateList(
|
||||||
new int[][]{
|
new int[][] {
|
||||||
new int[]{android.R.attr.state_enabled}, // enabled
|
new int[] {android.R.attr.state_enabled}, // enabled
|
||||||
new int[]{-android.R.attr.state_enabled} // disabled
|
new int[] {-android.R.attr.state_enabled} // disabled
|
||||||
},
|
},
|
||||||
new int[]{
|
new int[] {ContextCompat.getColor(mSendNoteButton.getContext(),
|
||||||
ContextCompat.getColor(
|
UiUtils.getStyledResourceId(mSendNoteButton.getContext(),
|
||||||
mSendNoteButton.getContext(),
|
android.R.attr.textColorPrimaryInverse)),
|
||||||
UiUtils.getStyledResourceId(mSendNoteButton.getContext(), android.R.attr.textColorPrimaryInverse)),
|
ContextCompat.getColor(mSendNoteButton.getContext(), R.color.button_accent_text_disabled)});
|
||||||
ContextCompat.getColor(mSendNoteButton.getContext(), R.color.button_accent_text_disabled)
|
|
||||||
});
|
|
||||||
mSendNoteButton.setBackgroundTintList(bgButtonColor);
|
mSendNoteButton.setBackgroundTintList(bgButtonColor);
|
||||||
mSendNoteButton.setTextColor(textButtonColor);
|
mSendNoteButton.setTextColor(textButtonColor);
|
||||||
mNoteEditText.addTextChangedListener(new StringUtils.SimpleTextWatcher() {
|
mNoteEditText.addTextChangedListener(new StringUtils.SimpleTextWatcher() {
|
||||||
|
|||||||
@@ -2,19 +2,16 @@ package app.organicmaps.editor;
|
|||||||
|
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.fragment.app.FragmentActivity;
|
import androidx.fragment.app.FragmentActivity;
|
||||||
import androidx.fragment.app.FragmentManager;
|
import androidx.fragment.app.FragmentManager;
|
||||||
|
|
||||||
import com.google.android.material.timepicker.MaterialTimePicker;
|
|
||||||
import com.google.android.material.timepicker.TimeFormat;
|
|
||||||
|
|
||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.sdk.editor.data.HoursMinutes;
|
import app.organicmaps.sdk.editor.data.HoursMinutes;
|
||||||
import app.organicmaps.sdk.util.DateUtils;
|
import app.organicmaps.sdk.util.DateUtils;
|
||||||
|
import com.google.android.material.timepicker.MaterialTimePicker;
|
||||||
|
import com.google.android.material.timepicker.TimeFormat;
|
||||||
|
|
||||||
public class FromToTimePicker
|
public class FromToTimePicker
|
||||||
{
|
{
|
||||||
@@ -32,18 +29,11 @@ public class FromToTimePicker
|
|||||||
private boolean mIsFromTimePicked;
|
private boolean mIsFromTimePicked;
|
||||||
private int mInputMode;
|
private int mInputMode;
|
||||||
|
|
||||||
public static void pickTime(@NonNull Fragment fragment,
|
public static void pickTime(@NonNull Fragment fragment, @NonNull FromToTimePicker.OnPickListener listener,
|
||||||
@NonNull FromToTimePicker.OnPickListener listener,
|
@NonNull HoursMinutes fromTime, @NonNull HoursMinutes toTime, int id,
|
||||||
@NonNull HoursMinutes fromTime,
|
|
||||||
@NonNull HoursMinutes toTime,
|
|
||||||
int id,
|
|
||||||
boolean startWithToTime)
|
boolean startWithToTime)
|
||||||
{
|
{
|
||||||
FromToTimePicker timePicker = new FromToTimePicker(fragment,
|
FromToTimePicker timePicker = new FromToTimePicker(fragment, listener, fromTime, toTime, id);
|
||||||
listener,
|
|
||||||
fromTime,
|
|
||||||
toTime,
|
|
||||||
id);
|
|
||||||
|
|
||||||
if (startWithToTime)
|
if (startWithToTime)
|
||||||
timePicker.showToTimePicker();
|
timePicker.showToTimePicker();
|
||||||
@@ -51,11 +41,8 @@ public class FromToTimePicker
|
|||||||
timePicker.showFromTimePicker();
|
timePicker.showFromTimePicker();
|
||||||
}
|
}
|
||||||
|
|
||||||
private FromToTimePicker(@NonNull Fragment fragment,
|
private FromToTimePicker(@NonNull Fragment fragment, @NonNull FromToTimePicker.OnPickListener listener,
|
||||||
@NonNull FromToTimePicker.OnPickListener listener,
|
@NonNull HoursMinutes fromTime, @NonNull HoursMinutes toTime, int id)
|
||||||
@NonNull HoursMinutes fromTime,
|
|
||||||
@NonNull HoursMinutes toTime,
|
|
||||||
int id)
|
|
||||||
{
|
{
|
||||||
mActivity = fragment.requireActivity();
|
mActivity = fragment.requireActivity();
|
||||||
mFragmentManager = fragment.getChildFragmentManager();
|
mFragmentManager = fragment.getChildFragmentManager();
|
||||||
@@ -100,15 +87,12 @@ public class FromToTimePicker
|
|||||||
|
|
||||||
private MaterialTimePicker buildFromTimePicker()
|
private MaterialTimePicker buildFromTimePicker()
|
||||||
{
|
{
|
||||||
MaterialTimePicker timePicker = buildTimePicker(mFromTime,
|
MaterialTimePicker timePicker = buildTimePicker(mFromTime, mResources.getString(R.string.editor_time_from),
|
||||||
mResources.getString(R.string.editor_time_from),
|
mResources.getString(R.string.next_button), null);
|
||||||
mResources.getString(R.string.next_button),
|
|
||||||
null);
|
|
||||||
|
|
||||||
timePicker.addOnNegativeButtonClickListener(view -> finishTimePicking(false));
|
timePicker.addOnNegativeButtonClickListener(view -> finishTimePicking(false));
|
||||||
|
|
||||||
timePicker.addOnPositiveButtonClickListener(view ->
|
timePicker.addOnPositiveButtonClickListener(view -> {
|
||||||
{
|
|
||||||
mIsFromTimePicked = true;
|
mIsFromTimePicked = true;
|
||||||
saveState(timePicker, true);
|
saveState(timePicker, true);
|
||||||
mFromTimePicker = null;
|
mFromTimePicker = null;
|
||||||
@@ -122,13 +106,10 @@ public class FromToTimePicker
|
|||||||
|
|
||||||
private MaterialTimePicker buildToTimePicker()
|
private MaterialTimePicker buildToTimePicker()
|
||||||
{
|
{
|
||||||
MaterialTimePicker timePicker = buildTimePicker(mToTime,
|
MaterialTimePicker timePicker = buildTimePicker(mToTime, mResources.getString(R.string.editor_time_to), null,
|
||||||
mResources.getString(R.string.editor_time_to),
|
|
||||||
null,
|
|
||||||
mResources.getString(R.string.back));
|
mResources.getString(R.string.back));
|
||||||
|
|
||||||
timePicker.addOnNegativeButtonClickListener(view ->
|
timePicker.addOnNegativeButtonClickListener(view -> {
|
||||||
{
|
|
||||||
saveState(timePicker, false);
|
saveState(timePicker, false);
|
||||||
mToTimePicker = null;
|
mToTimePicker = null;
|
||||||
if (mIsFromTimePicked)
|
if (mIsFromTimePicked)
|
||||||
@@ -137,8 +118,7 @@ public class FromToTimePicker
|
|||||||
finishTimePicking(false);
|
finishTimePicking(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
timePicker.addOnPositiveButtonClickListener(view ->
|
timePicker.addOnPositiveButtonClickListener(view -> {
|
||||||
{
|
|
||||||
saveState(timePicker, false);
|
saveState(timePicker, false);
|
||||||
finishTimePicking(true);
|
finishTimePicking(true);
|
||||||
});
|
});
|
||||||
@@ -149,12 +129,12 @@ public class FromToTimePicker
|
|||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
private MaterialTimePicker buildTimePicker(@NonNull HoursMinutes time,
|
private MaterialTimePicker buildTimePicker(@NonNull HoursMinutes time, @NonNull String title,
|
||||||
@NonNull String title,
|
|
||||||
@Nullable String positiveButtonTextOverride,
|
@Nullable String positiveButtonTextOverride,
|
||||||
@Nullable String negativeButtonTextOverride)
|
@Nullable String negativeButtonTextOverride)
|
||||||
{
|
{
|
||||||
MaterialTimePicker.Builder builder = new MaterialTimePicker.Builder()
|
MaterialTimePicker.Builder builder =
|
||||||
|
new MaterialTimePicker.Builder()
|
||||||
.setTitleText(title)
|
.setTitleText(title)
|
||||||
.setTimeFormat(mIs24HourFormat ? TimeFormat.CLOCK_24H : TimeFormat.CLOCK_12H)
|
.setTimeFormat(mIs24HourFormat ? TimeFormat.CLOCK_24H : TimeFormat.CLOCK_12H)
|
||||||
.setInputMode(mInputMode)
|
.setInputMode(mInputMode)
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import android.view.View;
|
|||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.CompoundButton;
|
import android.widget.CompoundButton;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
|
|
||||||
import androidx.annotation.IdRes;
|
import androidx.annotation.IdRes;
|
||||||
import androidx.annotation.IntRange;
|
import androidx.annotation.IntRange;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
@@ -122,20 +121,14 @@ class SimpleTimetableAdapter extends RecyclerView.Adapter<SimpleTimetableAdapter
|
|||||||
notifyItemChanged(getItemCount() - 1);
|
notifyItemChanged(getItemCount() - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void pickTime(int position,
|
private void pickTime(int position, @IntRange(from = ID_OPENING_TIME, to = ID_CLOSED_SPAN) int id,
|
||||||
@IntRange(from = ID_OPENING_TIME, to = ID_CLOSED_SPAN) int id,
|
|
||||||
boolean startWithToTime)
|
boolean startWithToTime)
|
||||||
{
|
{
|
||||||
final Timetable data = mItems.get(position);
|
final Timetable data = mItems.get(position);
|
||||||
mPickingPosition = position;
|
mPickingPosition = position;
|
||||||
|
|
||||||
FromToTimePicker.pickTime(mFragment,
|
FromToTimePicker.pickTime(mFragment, this, data.workingTimespan.start, data.workingTimespan.end, id,
|
||||||
this,
|
|
||||||
data.workingTimespan.start,
|
|
||||||
data.workingTimespan.end,
|
|
||||||
id,
|
|
||||||
startWithToTime);
|
startWithToTime);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -384,26 +377,21 @@ class SimpleTimetableAdapter extends RecyclerView.Adapter<SimpleTimetableAdapter
|
|||||||
final String text = mFragment.getString(R.string.editor_time_add);
|
final String text = mFragment.getString(R.string.editor_time_add);
|
||||||
mAdd.setEnabled(enable);
|
mAdd.setEnabled(enable);
|
||||||
final ColorStateList bgButtonColor = new ColorStateList(
|
final ColorStateList bgButtonColor = new ColorStateList(
|
||||||
new int[][]{
|
new int[][] {
|
||||||
new int[]{android.R.attr.state_enabled}, // enabled
|
new int[] {android.R.attr.state_enabled}, // enabled
|
||||||
new int[]{-android.R.attr.state_enabled} // disabled
|
new int[] {-android.R.attr.state_enabled} // disabled
|
||||||
},
|
},
|
||||||
new int[]{
|
new int[] {ContextCompat.getColor(mAdd.getContext(), R.color.base_accent),
|
||||||
ContextCompat.getColor(
|
ContextCompat.getColor(mAdd.getContext(), R.color.button_accent_disabled)});
|
||||||
mAdd.getContext(), R.color.base_accent),
|
|
||||||
ContextCompat.getColor(mAdd.getContext(), R.color.button_accent_disabled)
|
|
||||||
});
|
|
||||||
final ColorStateList textButtonColor = new ColorStateList(
|
final ColorStateList textButtonColor = new ColorStateList(
|
||||||
new int[][]{
|
new int[][] {
|
||||||
new int[]{android.R.attr.state_enabled}, // enabled
|
new int[] {android.R.attr.state_enabled}, // enabled
|
||||||
new int[]{-android.R.attr.state_enabled} // disabled
|
new int[] {-android.R.attr.state_enabled} // disabled
|
||||||
},
|
},
|
||||||
new int[]{
|
new int[] {
|
||||||
ContextCompat.getColor(
|
ContextCompat.getColor(mAdd.getContext(), UiUtils.getStyledResourceId(
|
||||||
mAdd.getContext(),
|
mAdd.getContext(), android.R.attr.textColorPrimaryInverse)),
|
||||||
UiUtils.getStyledResourceId(mAdd.getContext(), android.R.attr.textColorPrimaryInverse)),
|
ContextCompat.getColor(mAdd.getContext(), R.color.button_accent_text_disabled)});
|
||||||
ContextCompat.getColor(mAdd.getContext(), R.color.button_accent_text_disabled)
|
|
||||||
});
|
|
||||||
mAdd.setBackgroundTintList(bgButtonColor);
|
mAdd.setBackgroundTintList(bgButtonColor);
|
||||||
mAdd.setTextColor(textButtonColor);
|
mAdd.setTextColor(textButtonColor);
|
||||||
mAdd.setText(enable ? text + " (" + TimeFormatUtils.formatWeekdays(mComplementItem) + ")" : text);
|
mAdd.setText(enable ? text + " (" + TimeFormatUtils.formatWeekdays(mComplementItem) + ")" : text);
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ import androidx.annotation.Nullable;
|
|||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.base.BaseMwmRecyclerFragment;
|
import app.organicmaps.base.BaseMwmRecyclerFragment;
|
||||||
|
|
||||||
public class SimpleTimetableFragment extends BaseMwmRecyclerFragment<SimpleTimetableAdapter>
|
public class SimpleTimetableFragment
|
||||||
implements TimetableProvider
|
extends BaseMwmRecyclerFragment<SimpleTimetableAdapter> implements TimetableProvider
|
||||||
{
|
{
|
||||||
private SimpleTimetableAdapter mAdapter;
|
private SimpleTimetableAdapter mAdapter;
|
||||||
@Nullable
|
@Nullable
|
||||||
|
|||||||
@@ -35,20 +35,25 @@ public class LayerBottomSheetItem
|
|||||||
@DrawableRes
|
@DrawableRes
|
||||||
int drawableResId = 0;
|
int drawableResId = 0;
|
||||||
@StringRes
|
@StringRes
|
||||||
int buttonTextResource = switch (mode) {
|
int buttonTextResource = switch (mode)
|
||||||
case OUTDOORS -> {
|
{
|
||||||
|
case OUTDOORS ->
|
||||||
|
{
|
||||||
drawableResId = R.drawable.ic_layers_outdoors;
|
drawableResId = R.drawable.ic_layers_outdoors;
|
||||||
yield R.string.button_layer_outdoor;
|
yield R.string.button_layer_outdoor;
|
||||||
}
|
}
|
||||||
case SUBWAY -> {
|
case SUBWAY ->
|
||||||
|
{
|
||||||
drawableResId = R.drawable.ic_layers_subway;
|
drawableResId = R.drawable.ic_layers_subway;
|
||||||
yield R.string.subway;
|
yield R.string.subway;
|
||||||
}
|
}
|
||||||
case ISOLINES -> {
|
case ISOLINES ->
|
||||||
|
{
|
||||||
drawableResId = R.drawable.ic_layers_isoline;
|
drawableResId = R.drawable.ic_layers_isoline;
|
||||||
yield R.string.button_layer_isolines;
|
yield R.string.button_layer_isolines;
|
||||||
}
|
}
|
||||||
case TRAFFIC -> {
|
case TRAFFIC ->
|
||||||
|
{
|
||||||
drawableResId = R.drawable.ic_layers_traffic;
|
drawableResId = R.drawable.ic_layers_traffic;
|
||||||
yield R.string.button_layer_traffic;
|
yield R.string.button_layer_traffic;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,11 +5,9 @@ import android.widget.ImageView;
|
|||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import com.google.android.material.textview.MaterialTextView;
|
|
||||||
|
|
||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.adapter.OnItemClickListener;
|
import app.organicmaps.adapter.OnItemClickListener;
|
||||||
|
import com.google.android.material.textview.MaterialTextView;
|
||||||
|
|
||||||
class LayerHolder extends RecyclerView.ViewHolder
|
class LayerHolder extends RecyclerView.ViewHolder
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -43,7 +43,6 @@ import app.organicmaps.util.UiUtils;
|
|||||||
import app.organicmaps.util.Utils;
|
import app.organicmaps.util.Utils;
|
||||||
import app.organicmaps.widget.recycler.DotDividerItemDecoration;
|
import app.organicmaps.widget.recycler.DotDividerItemDecoration;
|
||||||
import app.organicmaps.widget.recycler.MultilineLayoutManager;
|
import app.organicmaps.widget.recycler.MultilineLayoutManager;
|
||||||
|
|
||||||
import com.google.android.material.button.MaterialButton;
|
import com.google.android.material.button.MaterialButton;
|
||||||
import com.google.android.material.imageview.ShapeableImageView;
|
import com.google.android.material.imageview.ShapeableImageView;
|
||||||
import com.google.android.material.textview.MaterialTextView;
|
import com.google.android.material.textview.MaterialTextView;
|
||||||
@@ -123,9 +122,9 @@ final class RoutingBottomMenuController implements View.OnClickListener
|
|||||||
@NonNull View timeElevationLine, @NonNull View transitFrame,
|
@NonNull View timeElevationLine, @NonNull View transitFrame,
|
||||||
@NonNull MaterialTextView error, @NonNull MaterialButton start,
|
@NonNull MaterialTextView error, @NonNull MaterialButton start,
|
||||||
@NonNull ShapeableImageView altitudeChart, @NonNull MaterialTextView time,
|
@NonNull ShapeableImageView altitudeChart, @NonNull MaterialTextView time,
|
||||||
@NonNull MaterialTextView altitudeDifference, @NonNull MaterialTextView timeVehicle,
|
@NonNull MaterialTextView altitudeDifference,
|
||||||
@Nullable MaterialTextView arrival, @NonNull View actionFrame,
|
@NonNull MaterialTextView timeVehicle, @Nullable MaterialTextView arrival,
|
||||||
@Nullable RoutingBottomMenuListener listener)
|
@NonNull View actionFrame, @Nullable RoutingBottomMenuListener listener)
|
||||||
{
|
{
|
||||||
mContext = context;
|
mContext = context;
|
||||||
mAltitudeChartFrame = altitudeChartFrame;
|
mAltitudeChartFrame = altitudeChartFrame;
|
||||||
|
|||||||
@@ -12,9 +12,6 @@ import androidx.annotation.IdRes;
|
|||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.core.view.ViewCompat;
|
import androidx.core.view.ViewCompat;
|
||||||
import androidx.core.view.WindowInsetsCompat;
|
import androidx.core.view.WindowInsetsCompat;
|
||||||
|
|
||||||
import com.google.android.material.textview.MaterialTextView;
|
|
||||||
|
|
||||||
import app.organicmaps.MwmApplication;
|
import app.organicmaps.MwmApplication;
|
||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.sdk.Framework;
|
import app.organicmaps.sdk.Framework;
|
||||||
@@ -29,6 +26,7 @@ import app.organicmaps.util.WindowInsetUtils.PaddingInsetsListener;
|
|||||||
import app.organicmaps.widget.RoutingToolbarButton;
|
import app.organicmaps.widget.RoutingToolbarButton;
|
||||||
import app.organicmaps.widget.ToolbarController;
|
import app.organicmaps.widget.ToolbarController;
|
||||||
import app.organicmaps.widget.WheelProgressView;
|
import app.organicmaps.widget.WheelProgressView;
|
||||||
|
import com.google.android.material.textview.MaterialTextView;
|
||||||
|
|
||||||
public class RoutingPlanController extends ToolbarController
|
public class RoutingPlanController extends ToolbarController
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -14,12 +14,10 @@ import androidx.annotation.NonNull;
|
|||||||
import androidx.annotation.StringRes;
|
import androidx.annotation.StringRes;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import com.google.android.material.textview.MaterialTextView;
|
|
||||||
|
|
||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.sdk.search.DisplayedCategories;
|
import app.organicmaps.sdk.search.DisplayedCategories;
|
||||||
import app.organicmaps.sdk.util.Language;
|
import app.organicmaps.sdk.util.Language;
|
||||||
|
import com.google.android.material.textview.MaterialTextView;
|
||||||
import java.lang.annotation.Retention;
|
import java.lang.annotation.Retention;
|
||||||
import java.lang.annotation.RetentionPolicy;
|
import java.lang.annotation.RetentionPolicy;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|||||||
@@ -10,14 +10,12 @@ import androidx.annotation.NonNull;
|
|||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.core.content.ContextCompat;
|
import androidx.core.content.ContextCompat;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import com.google.android.material.textview.MaterialTextView;
|
|
||||||
|
|
||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.sdk.search.SearchResult;
|
import app.organicmaps.sdk.search.SearchResult;
|
||||||
import app.organicmaps.util.Graphics;
|
import app.organicmaps.util.Graphics;
|
||||||
import app.organicmaps.util.ThemeUtils;
|
import app.organicmaps.util.ThemeUtils;
|
||||||
import app.organicmaps.util.UiUtils;
|
import app.organicmaps.util.UiUtils;
|
||||||
|
import com.google.android.material.textview.MaterialTextView;
|
||||||
|
|
||||||
class SearchAdapter extends RecyclerView.Adapter<SearchAdapter.SearchDataViewHolder>
|
class SearchAdapter extends RecyclerView.Adapter<SearchAdapter.SearchDataViewHolder>
|
||||||
{
|
{
|
||||||
@@ -152,7 +150,8 @@ class SearchAdapter extends RecyclerView.Adapter<SearchAdapter.SearchDataViewHol
|
|||||||
{
|
{
|
||||||
final Resources resources = mSearchFragment.getResources();
|
final Resources resources = mSearchFragment.getResources();
|
||||||
|
|
||||||
if (result.description.openNow != SearchResult.OPEN_NOW_YES && result.description.openNow != SearchResult.OPEN_NOW_NO)
|
if (result.description.openNow != SearchResult.OPEN_NOW_YES
|
||||||
|
&& result.description.openNow != SearchResult.OPEN_NOW_NO)
|
||||||
{
|
{
|
||||||
// Hide if unknown opening hours state
|
// Hide if unknown opening hours state
|
||||||
UiUtils.hide(mOpen);
|
UiUtils.hide(mOpen);
|
||||||
@@ -169,15 +168,18 @@ class SearchAdapter extends RecyclerView.Adapter<SearchAdapter.SearchDataViewHol
|
|||||||
{
|
{
|
||||||
final String minsToChangeStr = resources.getQuantityString(
|
final String minsToChangeStr = resources.getQuantityString(
|
||||||
R.plurals.minutes_short, Math.max(minsToNextState, 1), Math.max(minsToNextState, 1));
|
R.plurals.minutes_short, Math.max(minsToNextState, 1), Math.max(minsToNextState, 1));
|
||||||
final String nextChangeFormatted = resources.getString(isOpen ? R.string.closes_in : R.string.opens_in, minsToChangeStr);
|
final String nextChangeFormatted =
|
||||||
|
resources.getString(isOpen ? R.string.closes_in : R.string.opens_in, minsToChangeStr);
|
||||||
|
|
||||||
UiUtils.setTextAndShow(mOpen, nextChangeFormatted);
|
UiUtils.setTextAndShow(mOpen, nextChangeFormatted);
|
||||||
mOpen.setTextColor(ContextCompat.getColor(mSearchFragment.getContext(), R.color.base_yellow));
|
mOpen.setTextColor(ContextCompat.getColor(mSearchFragment.getContext(), R.color.base_yellow));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UiUtils.setTextAndShow(mOpen, isOpen ? resources.getString(R.string.editor_time_open) : resources.getString(R.string.closed));
|
UiUtils.setTextAndShow(
|
||||||
mOpen.setTextColor(ContextCompat.getColor(mSearchFragment.getContext(), isOpen ? R.color.base_green : R.color.base_red));
|
mOpen, isOpen ? resources.getString(R.string.editor_time_open) : resources.getString(R.string.closed));
|
||||||
|
mOpen.setTextColor(
|
||||||
|
ContextCompat.getColor(mSearchFragment.getContext(), isOpen ? R.color.base_green : R.color.base_red));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -273,7 +273,8 @@ public class SearchFragment extends BaseMwmFragment implements SearchListener, C
|
|||||||
RecyclerView mResults = mResultsFrame.findViewById(R.id.recycler);
|
RecyclerView mResults = mResultsFrame.findViewById(R.id.recycler);
|
||||||
setRecyclerScrollListener(mResults);
|
setRecyclerScrollListener(mResults);
|
||||||
mResultsPlaceholder = mResultsFrame.findViewById(R.id.placeholder);
|
mResultsPlaceholder = mResultsFrame.findViewById(R.id.placeholder);
|
||||||
mResultsPlaceholder.setContent(R.string.search_not_found, R.string.search_not_found_query, R.drawable.ic_search_fail);
|
mResultsPlaceholder.setContent(R.string.search_not_found, R.string.search_not_found_query,
|
||||||
|
R.drawable.ic_search_fail);
|
||||||
mSearchAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver()
|
mSearchAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver()
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -5,15 +5,13 @@ import android.view.View;
|
|||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import com.google.android.material.textview.MaterialTextView;
|
|
||||||
|
|
||||||
import app.organicmaps.MwmApplication;
|
import app.organicmaps.MwmApplication;
|
||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.sdk.routing.RoutingController;
|
import app.organicmaps.sdk.routing.RoutingController;
|
||||||
import app.organicmaps.sdk.search.SearchRecents;
|
import app.organicmaps.sdk.search.SearchRecents;
|
||||||
import app.organicmaps.util.Graphics;
|
import app.organicmaps.util.Graphics;
|
||||||
import app.organicmaps.widget.SearchToolbarController;
|
import app.organicmaps.widget.SearchToolbarController;
|
||||||
|
import com.google.android.material.textview.MaterialTextView;
|
||||||
|
|
||||||
class SearchHistoryAdapter extends RecyclerView.Adapter<SearchHistoryAdapter.ViewHolder>
|
class SearchHistoryAdapter extends RecyclerView.Adapter<SearchHistoryAdapter.ViewHolder>
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -8,14 +8,12 @@ import android.view.ViewGroup;
|
|||||||
import android.widget.CompoundButton;
|
import android.widget.CompoundButton;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
import com.google.android.material.materialswitch.MaterialSwitch;
|
|
||||||
|
|
||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.base.BaseMwmToolbarFragment;
|
import app.organicmaps.base.BaseMwmToolbarFragment;
|
||||||
import app.organicmaps.sdk.routing.RoutingController;
|
import app.organicmaps.sdk.routing.RoutingController;
|
||||||
import app.organicmaps.sdk.routing.RoutingOptions;
|
import app.organicmaps.sdk.routing.RoutingOptions;
|
||||||
import app.organicmaps.sdk.settings.RoadType;
|
import app.organicmaps.sdk.settings.RoadType;
|
||||||
|
import com.google.android.material.materialswitch.MaterialSwitch;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
|||||||
@@ -90,7 +90,6 @@ public enum ThemeSwitcher
|
|||||||
{
|
{
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S)
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S)
|
||||||
uiModeManager.setApplicationNightMode(UiModeManager.MODE_NIGHT_YES);
|
uiModeManager.setApplicationNightMode(UiModeManager.MODE_NIGHT_YES);
|
||||||
else
|
|
||||||
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
|
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
|
||||||
|
|
||||||
if (RoutingController.get().isVehicleNavigation())
|
if (RoutingController.get().isVehicleNavigation())
|
||||||
@@ -104,7 +103,6 @@ public enum ThemeSwitcher
|
|||||||
{
|
{
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S)
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S)
|
||||||
uiModeManager.setApplicationNightMode(UiModeManager.MODE_NIGHT_NO);
|
uiModeManager.setApplicationNightMode(UiModeManager.MODE_NIGHT_NO);
|
||||||
else
|
|
||||||
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
|
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
|
||||||
|
|
||||||
if (RoutingController.get().isVehicleNavigation())
|
if (RoutingController.get().isVehicleNavigation())
|
||||||
|
|||||||
@@ -8,19 +8,20 @@ import android.graphics.Typeface;
|
|||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.view.MotionEvent;
|
import android.view.MotionEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
public abstract class BaseSignView extends View
|
public abstract class BaseSignView extends View
|
||||||
{
|
{
|
||||||
private float mBorderWidthRatio = 0.1f;
|
private float mBorderWidthRatio = 0.1f;
|
||||||
protected void setBorderWidthRatio(float ratio) {
|
protected void setBorderWidthRatio(float ratio)
|
||||||
|
{
|
||||||
mBorderWidthRatio = ratio;
|
mBorderWidthRatio = ratio;
|
||||||
}
|
}
|
||||||
|
|
||||||
private float mBorderInsetRatio = 0f;
|
private float mBorderInsetRatio = 0f;
|
||||||
protected void setBorderInsetRatio(float ratio) {
|
protected void setBorderInsetRatio(float ratio)
|
||||||
|
{
|
||||||
mBorderInsetRatio = ratio;
|
mBorderInsetRatio = ratio;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -54,11 +55,7 @@ public abstract class BaseSignView extends View
|
|||||||
mTextPaint.setTypeface(Typeface.create(Typeface.DEFAULT, Typeface.BOLD));
|
mTextPaint.setTypeface(Typeface.create(Typeface.DEFAULT, Typeface.BOLD));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void setColors(int backgroundColor,
|
protected void setColors(int backgroundColor, int borderColor, int alertColor, int textColor, int textAlertColor)
|
||||||
int borderColor,
|
|
||||||
int alertColor,
|
|
||||||
int textColor,
|
|
||||||
int textAlertColor)
|
|
||||||
{
|
{
|
||||||
mBackgroundColor = backgroundColor;
|
mBackgroundColor = backgroundColor;
|
||||||
mBorderColor = borderColor;
|
mBorderColor = borderColor;
|
||||||
@@ -72,7 +69,8 @@ public abstract class BaseSignView extends View
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onSizeChanged(int width, int height, int oldWidth, int oldHeight) {
|
protected void onSizeChanged(int width, int height, int oldWidth, int oldHeight)
|
||||||
|
{
|
||||||
super.onSizeChanged(width, height, oldWidth, oldHeight);
|
super.onSizeChanged(width, height, oldWidth, oldHeight);
|
||||||
final float paddingX = getPaddingLeft() + getPaddingRight();
|
final float paddingX = getPaddingLeft() + getPaddingRight();
|
||||||
final float paddingY = getPaddingTop() + getPaddingBottom();
|
final float paddingY = getPaddingTop() + getPaddingBottom();
|
||||||
@@ -91,7 +89,8 @@ public abstract class BaseSignView extends View
|
|||||||
{
|
{
|
||||||
super.onDraw(canvas);
|
super.onDraw(canvas);
|
||||||
final String str = getValueString();
|
final String str = getValueString();
|
||||||
if (str == null) return;
|
if (str == null)
|
||||||
|
return;
|
||||||
|
|
||||||
final float cx = mWidth / 2f;
|
final float cx = mWidth / 2f;
|
||||||
final float cy = mHeight / 2f;
|
final float cy = mHeight / 2f;
|
||||||
@@ -143,7 +142,8 @@ public abstract class BaseSignView extends View
|
|||||||
void configureTextSize()
|
void configureTextSize()
|
||||||
{
|
{
|
||||||
String text = getValueString();
|
String text = getValueString();
|
||||||
if (text == null) return;
|
if (text == null)
|
||||||
|
return;
|
||||||
final float textRadius = mBorderRadius - mBorderWidth;
|
final float textRadius = mBorderRadius - mBorderWidth;
|
||||||
final float maxTextSize = 2f * textRadius;
|
final float maxTextSize = 2f * textRadius;
|
||||||
final float maxTextSize2 = maxTextSize * maxTextSize;
|
final float maxTextSize2 = maxTextSize * maxTextSize;
|
||||||
@@ -154,7 +154,7 @@ public abstract class BaseSignView extends View
|
|||||||
sz = (lo + hi) / 2f;
|
sz = (lo + hi) / 2f;
|
||||||
mTextPaint.setTextSize(sz);
|
mTextPaint.setTextSize(sz);
|
||||||
mTextPaint.getTextBounds(text, 0, text.length(), b);
|
mTextPaint.getTextBounds(text, 0, text.length(), b);
|
||||||
float area = b.width()*b.width() + b.height()*b.height();
|
float area = b.width() * b.width() + b.height() * b.height();
|
||||||
if (area <= maxTextSize2)
|
if (area <= maxTextSize2)
|
||||||
lo = sz + 1f;
|
lo = sz + 1f;
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -4,9 +4,7 @@ import android.content.Context;
|
|||||||
import android.content.res.TypedArray;
|
import android.content.res.TypedArray;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.util.Pair;
|
import android.util.Pair;
|
||||||
|
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.sdk.util.StringUtils;
|
import app.organicmaps.sdk.util.StringUtils;
|
||||||
|
|
||||||
@@ -22,8 +20,8 @@ public class CurrentSpeedView extends BaseSignView
|
|||||||
setBorderWidthRatio(0.1f);
|
setBorderWidthRatio(0.1f);
|
||||||
setBorderInsetRatio(0.05f);
|
setBorderInsetRatio(0.05f);
|
||||||
|
|
||||||
try (TypedArray a = ctx.getTheme()
|
try (TypedArray a = ctx.getTheme().obtainStyledAttributes(
|
||||||
.obtainStyledAttributes(attrs, R.styleable.CurrentSpeedView /* reuse same attrs or define new */ , 0, 0))
|
attrs, R.styleable.CurrentSpeedView /* reuse same attrs or define new */, 0, 0))
|
||||||
{
|
{
|
||||||
int bg = a.getColor(R.styleable.CurrentSpeedView_currentSpeedBackgroundColor, DefaultValues.BACKGROUND_COLOR);
|
int bg = a.getColor(R.styleable.CurrentSpeedView_currentSpeedBackgroundColor, DefaultValues.BACKGROUND_COLOR);
|
||||||
int bd = a.getColor(R.styleable.CurrentSpeedView_currentSpeedBorderColor, DefaultValues.BORDER_COLOR);
|
int bd = a.getColor(R.styleable.CurrentSpeedView_currentSpeedBorderColor, DefaultValues.BORDER_COLOR);
|
||||||
@@ -33,7 +31,7 @@ public class CurrentSpeedView extends BaseSignView
|
|||||||
if (isInEditMode())
|
if (isInEditMode())
|
||||||
{
|
{
|
||||||
mSpeedMps = a.getInt(R.styleable.CurrentSpeedView_currentSpeedEditModeCurrentSpeed, 50);
|
mSpeedMps = a.getInt(R.styleable.CurrentSpeedView_currentSpeedEditModeCurrentSpeed, 50);
|
||||||
mSpeedStr = Integer.toString((int)mSpeedMps);
|
mSpeedStr = Integer.toString((int) mSpeedMps);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -47,7 +45,7 @@ public class CurrentSpeedView extends BaseSignView
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Pair<String,String> su = StringUtils.nativeFormatSpeedAndUnits(mps);
|
Pair<String, String> su = StringUtils.nativeFormatSpeedAndUnits(mps);
|
||||||
mSpeedStr = su.first;
|
mSpeedStr = su.first;
|
||||||
}
|
}
|
||||||
requestLayout();
|
requestLayout();
|
||||||
|
|||||||
@@ -12,12 +12,10 @@ import androidx.annotation.NonNull;
|
|||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.annotation.StringRes;
|
import androidx.annotation.StringRes;
|
||||||
import androidx.core.content.ContextCompat;
|
import androidx.core.content.ContextCompat;
|
||||||
|
|
||||||
import com.google.android.material.imageview.ShapeableImageView;
|
|
||||||
import com.google.android.material.textview.MaterialTextView;
|
|
||||||
|
|
||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.util.UiUtils;
|
import app.organicmaps.util.UiUtils;
|
||||||
|
import com.google.android.material.imageview.ShapeableImageView;
|
||||||
|
import com.google.android.material.textview.MaterialTextView;
|
||||||
|
|
||||||
public class PlaceholderView extends LinearLayout
|
public class PlaceholderView extends LinearLayout
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -5,9 +5,7 @@ import android.content.res.TypedArray;
|
|||||||
import android.graphics.Canvas;
|
import android.graphics.Canvas;
|
||||||
import android.graphics.Paint;
|
import android.graphics.Paint;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
|
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
|
|
||||||
public class SpeedLimitView extends BaseSignView
|
public class SpeedLimitView extends BaseSignView
|
||||||
@@ -27,15 +25,22 @@ public class SpeedLimitView extends BaseSignView
|
|||||||
|
|
||||||
try (TypedArray styleAttrs = ctx.getTheme().obtainStyledAttributes(attrs, R.styleable.SpeedLimitView, 0, 0))
|
try (TypedArray styleAttrs = ctx.getTheme().obtainStyledAttributes(attrs, R.styleable.SpeedLimitView, 0, 0))
|
||||||
{
|
{
|
||||||
final int bgColor = styleAttrs.getColor(R.styleable.SpeedLimitView_speedLimitBackgroundColor, DefaultValues.BACKGROUND_COLOR);
|
final int bgColor =
|
||||||
final int borderColor = styleAttrs.getColor(R.styleable.SpeedLimitView_speedLimitBorderColor, DefaultValues.BORDER_COLOR);
|
styleAttrs.getColor(R.styleable.SpeedLimitView_speedLimitBackgroundColor, DefaultValues.BACKGROUND_COLOR);
|
||||||
final int alertColor = styleAttrs.getColor(R.styleable.SpeedLimitView_speedLimitAlertColor, DefaultValues.ALERT_COLOR);
|
final int borderColor =
|
||||||
final int textColor = styleAttrs.getColor(R.styleable.SpeedLimitView_speedLimitTextColor, DefaultValues.TEXT_COLOR);
|
styleAttrs.getColor(R.styleable.SpeedLimitView_speedLimitBorderColor, DefaultValues.BORDER_COLOR);
|
||||||
final int txtAlertColor = styleAttrs.getColor(R.styleable.SpeedLimitView_speedLimitTextAlertColor, DefaultValues.TEXT_ALERT_COLOR);
|
final int alertColor =
|
||||||
|
styleAttrs.getColor(R.styleable.SpeedLimitView_speedLimitAlertColor, DefaultValues.ALERT_COLOR);
|
||||||
|
final int textColor =
|
||||||
|
styleAttrs.getColor(R.styleable.SpeedLimitView_speedLimitTextColor, DefaultValues.TEXT_COLOR);
|
||||||
|
final int txtAlertColor =
|
||||||
|
styleAttrs.getColor(R.styleable.SpeedLimitView_speedLimitTextAlertColor, DefaultValues.TEXT_ALERT_COLOR);
|
||||||
setColors(bgColor, borderColor, alertColor, textColor, txtAlertColor);
|
setColors(bgColor, borderColor, alertColor, textColor, txtAlertColor);
|
||||||
|
|
||||||
unlimitedBorderColor = styleAttrs.getColor(R.styleable.SpeedLimitView_speedLimitUnlimitedBorderColor, DefaultValues.UNLIMITED_BORDER_COLOR);
|
unlimitedBorderColor = styleAttrs.getColor(R.styleable.SpeedLimitView_speedLimitUnlimitedBorderColor,
|
||||||
unlimitedStripeColor = styleAttrs.getColor(R.styleable.SpeedLimitView_speedLimitUnlimitedStripeColor, DefaultValues.UNLIMITED_STRIPE_COLOR);
|
DefaultValues.UNLIMITED_BORDER_COLOR);
|
||||||
|
unlimitedStripeColor = styleAttrs.getColor(R.styleable.SpeedLimitView_speedLimitUnlimitedStripeColor,
|
||||||
|
DefaultValues.UNLIMITED_STRIPE_COLOR);
|
||||||
|
|
||||||
if (isInEditMode())
|
if (isInEditMode())
|
||||||
{
|
{
|
||||||
@@ -75,7 +80,7 @@ public class SpeedLimitView extends BaseSignView
|
|||||||
@Override
|
@Override
|
||||||
protected void onDraw(Canvas canvas)
|
protected void onDraw(Canvas canvas)
|
||||||
{
|
{
|
||||||
final float cx = mWidth/2f, cy = mHeight/2f;
|
final float cx = mWidth / 2f, cy = mHeight / 2f;
|
||||||
|
|
||||||
if (mSpeedLimit == 0) // 0 means unlimited speed (maxspeed=none)
|
if (mSpeedLimit == 0) // 0 means unlimited speed (maxspeed=none)
|
||||||
{
|
{
|
||||||
@@ -105,7 +110,7 @@ public class SpeedLimitView extends BaseSignView
|
|||||||
stripe.setStrokeWidth(mBorderWidth * 0.4f);
|
stripe.setStrokeWidth(mBorderWidth * 0.4f);
|
||||||
|
|
||||||
final float radius = mRadius * 0.8f; // Shorten to 80% of full radius
|
final float radius = mRadius * 0.8f; // Shorten to 80% of full radius
|
||||||
final float diag = (float) (1/Math.sqrt(2)); // 45 degrees
|
final float diag = (float) (1 / Math.sqrt(2)); // 45 degrees
|
||||||
final float dx = -diag, dy = +diag;
|
final float dx = -diag, dy = +diag;
|
||||||
final float px = -dy, py = +dx; // Perpendicular
|
final float px = -dy, py = +dx; // Perpendicular
|
||||||
final float step = radius * 0.15f; // Spacing
|
final float step = radius * 0.15f; // Spacing
|
||||||
@@ -122,7 +127,6 @@ public class SpeedLimitView extends BaseSignView
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private interface DefaultValues
|
private interface DefaultValues
|
||||||
{
|
{
|
||||||
int BACKGROUND_COLOR = 0xFFFFFFFF;
|
int BACKGROUND_COLOR = 0xFFFFFFFF;
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
package app.organicmaps.widget.placepage;
|
package app.organicmaps.widget.placepage;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
import app.organicmaps.sdk.util.StringUtils;
|
import app.organicmaps.sdk.util.StringUtils;
|
||||||
import com.github.mikephil.charting.charts.BarLineChartBase;
|
import com.github.mikephil.charting.charts.BarLineChartBase;
|
||||||
import androidx.annotation.Nullable;
|
|
||||||
import com.github.mikephil.charting.components.AxisBase;
|
import com.github.mikephil.charting.components.AxisBase;
|
||||||
import com.github.mikephil.charting.formatter.IAxisValueFormatter;
|
import com.github.mikephil.charting.formatter.IAxisValueFormatter;
|
||||||
|
|
||||||
|
|||||||
@@ -105,7 +105,8 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View.
|
|||||||
public EditBookmarkFragment() {}
|
public EditBookmarkFragment() {}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
public void onCreate(@Nullable Bundle savedInstanceState)
|
||||||
|
{
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setStyle(DialogFragment.STYLE_NORMAL, R.style.MwmTheme_FullScreenDialog);
|
setStyle(DialogFragment.STYLE_NORMAL, R.style.MwmTheme_FullScreenDialog);
|
||||||
}
|
}
|
||||||
@@ -184,10 +185,9 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View.
|
|||||||
{
|
{
|
||||||
super.onStart();
|
super.onStart();
|
||||||
Dialog dialog = getDialog();
|
Dialog dialog = getDialog();
|
||||||
if (dialog != null) {
|
if (dialog != null)
|
||||||
dialog.getWindow().setLayout(
|
{
|
||||||
ViewGroup.LayoutParams.MATCH_PARENT,
|
dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
|
||||||
ViewGroup.LayoutParams.MATCH_PARENT);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Focus name and show keyboard for "Unknown Place" bookmarks
|
// Focus name and show keyboard for "Unknown Place" bookmarks
|
||||||
|
|||||||
@@ -6,9 +6,6 @@ import android.widget.RelativeLayout;
|
|||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.core.widget.NestedScrollView;
|
import androidx.core.widget.NestedScrollView;
|
||||||
|
|
||||||
import com.google.android.material.textview.MaterialTextView;
|
|
||||||
|
|
||||||
import app.organicmaps.ChartController;
|
import app.organicmaps.ChartController;
|
||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.sdk.Framework;
|
import app.organicmaps.sdk.Framework;
|
||||||
@@ -17,6 +14,7 @@ import app.organicmaps.sdk.bookmarks.data.Track;
|
|||||||
import app.organicmaps.sdk.bookmarks.data.TrackStatistics;
|
import app.organicmaps.sdk.bookmarks.data.TrackStatistics;
|
||||||
import app.organicmaps.util.UiUtils;
|
import app.organicmaps.util.UiUtils;
|
||||||
import app.organicmaps.util.Utils;
|
import app.organicmaps.util.Utils;
|
||||||
|
import com.google.android.material.textview.MaterialTextView;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
public class ElevationProfileViewRenderer implements PlacePageStateListener
|
public class ElevationProfileViewRenderer implements PlacePageStateListener
|
||||||
|
|||||||
@@ -14,7 +14,8 @@ public class OpenStateTextFormatter
|
|||||||
return String.format(Locale.ROOT, "%02d:%02d", hour, minute);
|
return String.format(Locale.ROOT, "%02d:%02d", hour, minute);
|
||||||
|
|
||||||
int h = hour % 12;
|
int h = hour % 12;
|
||||||
if (h == 0) h = 12;
|
if (h == 0)
|
||||||
|
h = 12;
|
||||||
String ampm = (hour < 12) ? "AM" : "PM";
|
String ampm = (hour < 12) ? "AM" : "PM";
|
||||||
return String.format(Locale.ROOT, "%d:%02d %s", h, minute, ampm);
|
return String.format(Locale.ROOT, "%d:%02d %s", h, minute, ampm);
|
||||||
}
|
}
|
||||||
@@ -29,16 +30,8 @@ public class OpenStateTextFormatter
|
|||||||
return t.getDayOfWeek().getDisplayName(TextStyle.SHORT, locale);
|
return t.getDayOfWeek().getDisplayName(TextStyle.SHORT, locale);
|
||||||
}
|
}
|
||||||
|
|
||||||
static String buildAtLabel(
|
static String buildAtLabel(boolean opens, boolean isToday, String dayShort, String time, String opensAtLocalized,
|
||||||
boolean opens,
|
String closesAtLocalized, String opensDayAtLocalized, String closesDayAtLocalized)
|
||||||
boolean isToday,
|
|
||||||
String dayShort,
|
|
||||||
String time,
|
|
||||||
String opensAtLocalized,
|
|
||||||
String closesAtLocalized,
|
|
||||||
String opensDayAtLocalized,
|
|
||||||
String closesDayAtLocalized
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
if (isToday)
|
if (isToday)
|
||||||
return opens ? String.format(Locale.ROOT, opensAtLocalized, time) // Opens at %s
|
return opens ? String.format(Locale.ROOT, opensAtLocalized, time) // Opens at %s
|
||||||
|
|||||||
@@ -31,7 +31,6 @@ import androidx.fragment.app.FragmentFactory;
|
|||||||
import androidx.fragment.app.FragmentManager;
|
import androidx.fragment.app.FragmentManager;
|
||||||
import androidx.lifecycle.Observer;
|
import androidx.lifecycle.Observer;
|
||||||
import androidx.lifecycle.ViewModelProvider;
|
import androidx.lifecycle.ViewModelProvider;
|
||||||
|
|
||||||
import app.organicmaps.MwmActivity;
|
import app.organicmaps.MwmActivity;
|
||||||
import app.organicmaps.MwmApplication;
|
import app.organicmaps.MwmApplication;
|
||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
@@ -154,6 +153,7 @@ public class PlacePageView extends Fragment
|
|||||||
private MaterialTextView mTvLastChecked;
|
private MaterialTextView mTvLastChecked;
|
||||||
private View mEditPlace;
|
private View mEditPlace;
|
||||||
private View mAddPlace;
|
private View mAddPlace;
|
||||||
|
private View mMapTooOld;
|
||||||
private View mEditTopSpace;
|
private View mEditTopSpace;
|
||||||
private ShapeableImageView mColorIcon;
|
private ShapeableImageView mColorIcon;
|
||||||
private MaterialTextView mTvCategory;
|
private MaterialTextView mTvCategory;
|
||||||
@@ -318,6 +318,7 @@ public class PlacePageView extends Fragment
|
|||||||
mTvLastChecked = mFrame.findViewById(R.id.place_page_last_checked);
|
mTvLastChecked = mFrame.findViewById(R.id.place_page_last_checked);
|
||||||
mEditPlace = mFrame.findViewById(R.id.ll__place_editor);
|
mEditPlace = mFrame.findViewById(R.id.ll__place_editor);
|
||||||
mAddPlace = mFrame.findViewById(R.id.ll__place_add);
|
mAddPlace = mFrame.findViewById(R.id.ll__place_add);
|
||||||
|
mMapTooOld = mFrame.findViewById(R.id.cv__map_too_old);
|
||||||
mEditTopSpace = mFrame.findViewById(R.id.edit_top_space);
|
mEditTopSpace = mFrame.findViewById(R.id.edit_top_space);
|
||||||
latlon.setOnLongClickListener(this);
|
latlon.setOnLongClickListener(this);
|
||||||
address.setOnLongClickListener(this);
|
address.setOnLongClickListener(this);
|
||||||
@@ -684,42 +685,72 @@ public class PlacePageView extends Fragment
|
|||||||
|
|
||||||
if (RoutingController.get().isNavigating() || RoutingController.get().isPlanning())
|
if (RoutingController.get().isNavigating() || RoutingController.get().isPlanning())
|
||||||
{
|
{
|
||||||
UiUtils.hide(mEditPlace, mAddPlace, mEditTopSpace);
|
UiUtils.hide(mEditPlace, mAddPlace, mEditTopSpace, mMapTooOld);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UiUtils.showIf(Editor.nativeShouldShowEditPlace(), mEditPlace);
|
UiUtils.showIf(Editor.nativeShouldShowEditPlace(), mEditPlace);
|
||||||
UiUtils.showIf(Editor.nativeShouldShowAddPlace(), mAddPlace);
|
UiUtils.showIf(Editor.nativeShouldShowAddPlace(), mAddPlace);
|
||||||
|
UiUtils.hide(mMapTooOld);
|
||||||
MaterialButton mTvEditPlace = mEditPlace.findViewById(R.id.mb__place_editor);
|
MaterialButton mTvEditPlace = mEditPlace.findViewById(R.id.mb__place_editor);
|
||||||
MaterialButton mTvAddPlace = mAddPlace.findViewById(R.id.mb__place_add);
|
MaterialButton mTvAddPlace = mAddPlace.findViewById(R.id.mb__place_add);
|
||||||
|
|
||||||
|
boolean shouldEnableEditPlace = Editor.nativeShouldEnableEditPlace();
|
||||||
|
|
||||||
|
if (shouldEnableEditPlace)
|
||||||
|
{
|
||||||
mTvEditPlace.setOnClickListener(this);
|
mTvEditPlace.setOnClickListener(this);
|
||||||
mTvAddPlace.setOnClickListener(this);
|
mTvAddPlace.setOnClickListener(this);
|
||||||
mTvEditPlace.setEnabled(Editor.nativeShouldEnableEditPlace());
|
}
|
||||||
mTvAddPlace.setEnabled(Editor.nativeShouldEnableAddPlace());
|
else
|
||||||
final int editTextButtonColor =
|
{
|
||||||
Editor.nativeShouldEnableEditPlace()
|
mTvEditPlace.setOnClickListener(
|
||||||
|
(v) -> { Utils.showSnackbar(v.getContext(), v.getRootView(), R.string.place_page_too_old_to_edit); });
|
||||||
|
mTvAddPlace.setOnClickListener(
|
||||||
|
(v) -> { Utils.showSnackbar(v.getContext(), v.getRootView(), R.string.place_page_too_old_to_edit); });
|
||||||
|
|
||||||
|
String countryId = MapManager.nativeGetSelectedCountry();
|
||||||
|
|
||||||
|
if (countryId != null)
|
||||||
|
{
|
||||||
|
CountryItem map = CountryItem.fill(countryId);
|
||||||
|
|
||||||
|
if (map.status == CountryItem.STATUS_UPDATABLE || map.status == CountryItem.STATUS_DONE
|
||||||
|
|| map.status == CountryItem.STATUS_FAILED)
|
||||||
|
{
|
||||||
|
UiUtils.show(mMapTooOld);
|
||||||
|
|
||||||
|
boolean canUpdateMap = map.status != CountryItem.STATUS_DONE;
|
||||||
|
MaterialButton mTvUpdateTooOldMap = mMapTooOld.findViewById(R.id.mb__update_too_old_map);
|
||||||
|
UiUtils.showIf(canUpdateMap, mTvUpdateTooOldMap);
|
||||||
|
|
||||||
|
MaterialTextView mapTooOldDescription = mMapTooOld.findViewById(R.id.tv__map_too_old_description);
|
||||||
|
if (canUpdateMap)
|
||||||
|
{
|
||||||
|
mapTooOldDescription.setText(R.string.place_page_map_too_old_description);
|
||||||
|
mTvUpdateTooOldMap.setOnClickListener((v) -> {
|
||||||
|
MapManagerHelper.warn3gAndDownload(requireActivity(), map.id, null);
|
||||||
|
UiUtils.hide(mMapTooOld);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
mapTooOldDescription.setText(R.string.place_page_app_too_old_description);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
final int editButtonColor =
|
||||||
|
shouldEnableEditPlace
|
||||||
? ContextCompat.getColor(
|
? ContextCompat.getColor(
|
||||||
getContext(),
|
getContext(),
|
||||||
UiUtils.getStyledResourceId(getContext(), com.google.android.material.R.attr.colorSecondary))
|
UiUtils.getStyledResourceId(getContext(), com.google.android.material.R.attr.colorSecondary))
|
||||||
: ContextCompat.getColor(getContext(), R.color.button_accent_text_disabled);
|
: ContextCompat.getColor(getContext(), R.color.button_accent_text_disabled);
|
||||||
final ColorStateList editStrokeButtonColor = new ColorStateList(
|
|
||||||
new int[][]{
|
mTvEditPlace.setTextColor(editButtonColor);
|
||||||
new int[]{android.R.attr.state_enabled}, // enabled
|
mTvAddPlace.setTextColor(editButtonColor);
|
||||||
new int[]{-android.R.attr.state_enabled} // disabled
|
mTvEditPlace.setStrokeColor(ColorStateList.valueOf(editButtonColor));
|
||||||
},
|
mTvAddPlace.setStrokeColor(ColorStateList.valueOf(editButtonColor));
|
||||||
new int[]{
|
UiUtils.showIf(UiUtils.isVisible(mEditPlace) || UiUtils.isVisible(mAddPlace), mEditTopSpace);
|
||||||
ContextCompat.getColor(
|
|
||||||
getContext(),
|
|
||||||
UiUtils.getStyledResourceId(getContext(), com.google.android.material.R.attr.colorSecondary)),
|
|
||||||
ContextCompat.getColor(getContext(), R.color.button_accent_text_disabled)
|
|
||||||
});
|
|
||||||
mTvEditPlace.setTextColor(editTextButtonColor);
|
|
||||||
mTvAddPlace.setTextColor(editTextButtonColor);
|
|
||||||
mTvEditPlace.setStrokeColor(editStrokeButtonColor);
|
|
||||||
mTvAddPlace.setStrokeColor(editStrokeButtonColor);
|
|
||||||
UiUtils.showIf(
|
|
||||||
UiUtils.isVisible(mEditPlace) || UiUtils.isVisible(mAddPlace),
|
|
||||||
mEditTopSpace);
|
|
||||||
}
|
}
|
||||||
updateLinksView();
|
updateLinksView();
|
||||||
updateOpeningHoursView();
|
updateOpeningHoursView();
|
||||||
@@ -820,8 +851,7 @@ public class PlacePageView extends Fragment
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Get colours
|
// Get colours
|
||||||
final ForegroundColorSpan colorGreen =
|
final ForegroundColorSpan colorGreen = new ForegroundColorSpan(ContextCompat.getColor(context, R.color.base_green));
|
||||||
new ForegroundColorSpan(ContextCompat.getColor(context, R.color.base_green));
|
|
||||||
final ForegroundColorSpan colorYellow =
|
final ForegroundColorSpan colorYellow =
|
||||||
new ForegroundColorSpan(ContextCompat.getColor(context, R.color.base_yellow));
|
new ForegroundColorSpan(ContextCompat.getColor(context, R.color.base_yellow));
|
||||||
final ForegroundColorSpan colorRed = new ForegroundColorSpan(ContextCompat.getColor(context, R.color.base_red));
|
final ForegroundColorSpan colorRed = new ForegroundColorSpan(ContextCompat.getColor(context, R.color.base_red));
|
||||||
@@ -849,13 +879,12 @@ public class PlacePageView extends Fragment
|
|||||||
if (nextStateTime > 0 && nextStateTime < Long.MAX_VALUE / 2)
|
if (nextStateTime > 0 && nextStateTime < Long.MAX_VALUE / 2)
|
||||||
{
|
{
|
||||||
// NOTE: Timezone is currently device timezone. TODO: use feature-specific timezone.
|
// NOTE: Timezone is currently device timezone. TODO: use feature-specific timezone.
|
||||||
nextChangeLocal = ZonedDateTime.ofInstant(
|
nextChangeLocal = ZonedDateTime.ofInstant(Instant.ofEpochSecond(nextStateTime), ZoneId.systemDefault());
|
||||||
Instant.ofEpochSecond(nextStateTime), ZoneId.systemDefault()
|
|
||||||
);
|
|
||||||
hasFiniteNextChange = true;
|
hasFiniteNextChange = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Throwable ignored) {}
|
catch (Throwable ignored)
|
||||||
|
{}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!hasFiniteNextChange) // No valid next change
|
if (!hasFiniteNextChange) // No valid next change
|
||||||
@@ -895,16 +924,14 @@ public class PlacePageView extends Fragment
|
|||||||
final boolean isToday =
|
final boolean isToday =
|
||||||
OpenStateTextFormatter.isSameLocalDate(nextChangeLocal, ZonedDateTime.now(nextChangeLocal.getZone()));
|
OpenStateTextFormatter.isSameLocalDate(nextChangeLocal, ZonedDateTime.now(nextChangeLocal.getZone()));
|
||||||
// Full weekday name per design feedback.
|
// Full weekday name per design feedback.
|
||||||
final String dayName =
|
final String dayName = nextChangeLocal.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.getDefault());
|
||||||
nextChangeLocal.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.getDefault());
|
|
||||||
|
|
||||||
if (isOpen) // > 60 minutes OR negative (safety). Show “Open now • Closes at 18:00”
|
if (isOpen) // > 60 minutes OR negative (safety). Show “Open now • Closes at 18:00”
|
||||||
{
|
{
|
||||||
openStateString.append(getString(R.string.open_now), colorGreen, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
openStateString.append(getString(R.string.open_now), colorGreen, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||||
|
|
||||||
final String atLabel =
|
final String atLabel = OpenStateTextFormatter.buildAtLabel(
|
||||||
OpenStateTextFormatter.buildAtLabel(false, isToday, dayName, localizedTimeString,
|
false, isToday, dayName, localizedTimeString, opensAtStr, closesAtStr, opensDayAtStr, closesDayAtStr);
|
||||||
opensAtStr, closesAtStr, opensDayAtStr, closesDayAtStr);
|
|
||||||
|
|
||||||
if (!TextUtils.isEmpty(atLabel))
|
if (!TextUtils.isEmpty(atLabel))
|
||||||
openStateString.append(" • ").append(atLabel);
|
openStateString.append(" • ").append(atLabel);
|
||||||
@@ -913,9 +940,8 @@ public class PlacePageView extends Fragment
|
|||||||
{
|
{
|
||||||
openStateString.append(getString(R.string.closed_now), colorRed, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
openStateString.append(getString(R.string.closed_now), colorRed, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||||
|
|
||||||
final String atLabel =
|
final String atLabel = OpenStateTextFormatter.buildAtLabel(
|
||||||
OpenStateTextFormatter.buildAtLabel(true, isToday, dayName, localizedTimeString,
|
true, isToday, dayName, localizedTimeString, opensAtStr, closesAtStr, opensDayAtStr, closesDayAtStr);
|
||||||
opensAtStr, closesAtStr, opensDayAtStr, closesDayAtStr);
|
|
||||||
|
|
||||||
if (!TextUtils.isEmpty(atLabel))
|
if (!TextUtils.isEmpty(atLabel))
|
||||||
openStateString.append(" • ").append(atLabel);
|
openStateString.append(" • ").append(atLabel);
|
||||||
|
|||||||
@@ -3,9 +3,7 @@ package app.organicmaps.widget.placepage;
|
|||||||
import androidx.lifecycle.LiveData;
|
import androidx.lifecycle.LiveData;
|
||||||
import androidx.lifecycle.MutableLiveData;
|
import androidx.lifecycle.MutableLiveData;
|
||||||
import androidx.lifecycle.ViewModel;
|
import androidx.lifecycle.ViewModel;
|
||||||
|
|
||||||
import app.organicmaps.sdk.bookmarks.data.MapObject;
|
import app.organicmaps.sdk.bookmarks.data.MapObject;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class PlacePageViewModel extends ViewModel
|
public class PlacePageViewModel extends ViewModel
|
||||||
|
|||||||
@@ -31,7 +31,8 @@ import app.organicmaps.widget.placepage.PlacePageViewModel;
|
|||||||
import com.google.android.material.textview.MaterialTextView;
|
import com.google.android.material.textview.MaterialTextView;
|
||||||
|
|
||||||
public class PlacePageBookmarkFragment extends Fragment implements View.OnClickListener, View.OnLongClickListener,
|
public class PlacePageBookmarkFragment extends Fragment implements View.OnClickListener, View.OnLongClickListener,
|
||||||
Observer<MapObject>, EditBookmarkFragment.EditBookmarkListener
|
Observer<MapObject>,
|
||||||
|
EditBookmarkFragment.EditBookmarkListener
|
||||||
{
|
{
|
||||||
private View mFrame;
|
private View mFrame;
|
||||||
private MaterialTextView mTvBookmarkNote;
|
private MaterialTextView mTvBookmarkNote;
|
||||||
|
|||||||
@@ -13,15 +13,13 @@ import androidx.annotation.Nullable;
|
|||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.lifecycle.Observer;
|
import androidx.lifecycle.Observer;
|
||||||
import androidx.lifecycle.ViewModelProvider;
|
import androidx.lifecycle.ViewModelProvider;
|
||||||
|
|
||||||
import com.google.android.material.imageview.ShapeableImageView;
|
|
||||||
import com.google.android.material.textview.MaterialTextView;
|
|
||||||
|
|
||||||
import app.organicmaps.R;
|
import app.organicmaps.R;
|
||||||
import app.organicmaps.sdk.Framework;
|
import app.organicmaps.sdk.Framework;
|
||||||
import app.organicmaps.sdk.bookmarks.data.ChargeSocketDescriptor;
|
import app.organicmaps.sdk.bookmarks.data.ChargeSocketDescriptor;
|
||||||
import app.organicmaps.sdk.bookmarks.data.MapObject;
|
import app.organicmaps.sdk.bookmarks.data.MapObject;
|
||||||
import app.organicmaps.widget.placepage.PlacePageViewModel;
|
import app.organicmaps.widget.placepage.PlacePageViewModel;
|
||||||
|
import com.google.android.material.imageview.ShapeableImageView;
|
||||||
|
import com.google.android.material.textview.MaterialTextView;
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
|
|
||||||
public class PlacePageChargeSocketsFragment extends Fragment implements Observer<MapObject>
|
public class PlacePageChargeSocketsFragment extends Fragment implements Observer<MapObject>
|
||||||
@@ -96,8 +94,8 @@ public class PlacePageChargeSocketsFragment extends Fragment implements Observer
|
|||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("DiscouragedApi")
|
@SuppressLint("DiscouragedApi")
|
||||||
int resTypeId =
|
int resTypeId = getResources().getIdentifier("charge_socket_" + socket.visualType(), "string",
|
||||||
getResources().getIdentifier("charge_socket_" + socket.visualType(), "string", requireContext().getPackageName());
|
requireContext().getPackageName());
|
||||||
if (resTypeId != 0)
|
if (resTypeId != 0)
|
||||||
{
|
{
|
||||||
type.setText(resTypeId);
|
type.setText(resTypeId);
|
||||||
@@ -108,7 +106,8 @@ public class PlacePageChargeSocketsFragment extends Fragment implements Observer
|
|||||||
DecimalFormat df = new DecimalFormat("#.##");
|
DecimalFormat df = new DecimalFormat("#.##");
|
||||||
power.setText(getString(R.string.kw_label, df.format(socket.power())));
|
power.setText(getString(R.string.kw_label, df.format(socket.power())));
|
||||||
}
|
}
|
||||||
else if (socket.ignorePower()) {
|
else if (socket.ignorePower())
|
||||||
|
{
|
||||||
power.setVisibility(INVISIBLE);
|
power.setVisibility(INVISIBLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -192,7 +192,8 @@ public class PlacePageLinksFragment extends Fragment implements Observer<MapObje
|
|||||||
default -> mMapObject.getMetadata(type);
|
default -> mMapObject.getMetadata(type);
|
||||||
};
|
};
|
||||||
// Add user names for social media if available
|
// Add user names for social media if available
|
||||||
if (!TextUtils.isEmpty(title) && !title.equals(url) && !title.contains("/")) items.add(title);
|
if (!TextUtils.isEmpty(title) && !title.equals(url) && !title.contains("/"))
|
||||||
|
items.add(title);
|
||||||
|
|
||||||
if (items.size() == 1)
|
if (items.size() == 1)
|
||||||
PlacePageUtils.copyToClipboard(requireContext(), mFrame, items.get(0));
|
PlacePageUtils.copyToClipboard(requireContext(), mFrame, items.get(0));
|
||||||
|
|||||||
10
android/app/src/main/res/drawable/info_icon.xml
Normal file
10
android/app/src/main/res/drawable/info_icon.xml
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="48dp"
|
||||||
|
android:height="48dp"
|
||||||
|
android:viewportWidth="960"
|
||||||
|
android:viewportHeight="960"
|
||||||
|
android:tint="?colorControlNormal">
|
||||||
|
<path
|
||||||
|
android:fillColor="@android:color/white"
|
||||||
|
android:pathData="M453,680L513,680L513,440L453,440L453,680ZM479.98,366Q494,366 503.5,356.8Q513,347.6 513,334Q513,319.55 503.52,309.78Q494.04,300 480.02,300Q466,300 456.5,309.78Q447,319.55 447,334Q447,347.6 456.48,356.8Q465.96,366 479.98,366ZM480.27,880Q397.53,880 324.77,848.5Q252,817 197.5,762.5Q143,708 111.5,635.16Q80,562.32 80,479.5Q80,396.68 111.5,323.84Q143,251 197.5,197Q252,143 324.84,111.5Q397.68,80 480.5,80Q563.32,80 636.16,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,479.73Q880,562.47 848.5,635.23Q817,708 763,762.32Q709,816.63 636,848.32Q563,880 480.27,880ZM480.5,820Q622,820 721,720.5Q820,621 820,479.5Q820,338 721.19,239Q622.38,140 480,140Q339,140 239.5,238.81Q140,337.62 140,480Q140,621 239.5,720.5Q339,820 480.5,820ZM480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Z"/>
|
||||||
|
</vector>
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
app:tint="?colorSecondary"/>
|
app:tint="?colorSecondary"/>
|
||||||
<com.google.android.material.textview.MaterialTextView
|
<com.google.android.material.textview.MaterialTextView
|
||||||
android:id="@+id/head_message"
|
android:id="@+id/head_message"
|
||||||
style="?fontHeadline6"
|
style="@style/TextAppearance.Headline6"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/margin_base"
|
android:layout_marginTop="@dimen/margin_base"
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
android:text="@string/download_map_title" />
|
android:text="@string/download_map_title" />
|
||||||
<com.google.android.material.textview.MaterialTextView
|
<com.google.android.material.textview.MaterialTextView
|
||||||
android:id="@+id/download_message"
|
android:id="@+id/download_message"
|
||||||
style="?fontBody2"
|
style="@style/TextAppearance.Body2"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="@dimen/margin_base"
|
android:layout_marginStart="@dimen/margin_base"
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
android:layout_marginBottom="8dp"
|
android:layout_marginBottom="8dp"
|
||||||
android:text="@string/aa_connected_title"
|
android:text="@string/aa_connected_title"
|
||||||
android:textAlignment="center"
|
android:textAlignment="center"
|
||||||
android:textAppearance="@style/TextAppearance.MaterialComponents.Headline4"
|
android:textAppearance="@style/TextAppearance.Headline4"
|
||||||
android:textStyle="bold" />
|
android:textStyle="bold" />
|
||||||
|
|
||||||
<com.google.android.material.textview.MaterialTextView
|
<com.google.android.material.textview.MaterialTextView
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/car_used_on_the_car_screen"
|
android:text="@string/car_used_on_the_car_screen"
|
||||||
android:textAlignment="center"
|
android:textAlignment="center"
|
||||||
android:textAppearance="@style/TextAppearance.MaterialComponents.Body1" />
|
android:textAppearance="@style/TextAppearance.Body1" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<com.google.android.material.button.MaterialButton
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
android:layout_marginStart="32dp"
|
android:layout_marginStart="32dp"
|
||||||
android:text="@string/aa_request_permission_activity_text"
|
android:text="@string/aa_request_permission_activity_text"
|
||||||
android:textAlignment="center"
|
android:textAlignment="center"
|
||||||
android:textAppearance="@style/TextAppearance.MaterialComponents.Headline4"
|
android:textAppearance="@style/TextAppearance.Headline4"
|
||||||
android:textStyle="bold" />
|
android:textStyle="bold" />
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<com.google.android.material.button.MaterialButton
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
android:layout_marginStart="@dimen/margin_base"
|
android:layout_marginStart="@dimen/margin_base"
|
||||||
android:maxLines="3"
|
android:maxLines="3"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:textAppearance="?fontHeadline6"
|
android:textAppearance="@style/TextAppearance.Headline6"
|
||||||
tools:text="Title" />
|
tools:text="Title" />
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="@dimen/margin_base"
|
android:layout_marginStart="@dimen/margin_base"
|
||||||
android:text="@string/download_country_ask"
|
android:text="@string/download_country_ask"
|
||||||
android:textAppearance="?fontBody2"
|
android:textAppearance="@style/TextAppearance.Body2"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
tools:visibility="visible"/>
|
tools:visibility="visible"/>
|
||||||
<com.google.android.material.progressindicator.LinearProgressIndicator
|
<com.google.android.material.progressindicator.LinearProgressIndicator
|
||||||
|
|||||||
@@ -14,7 +14,6 @@
|
|||||||
android:textAppearance="@style/MwmTextAppearance.Title" />
|
android:textAppearance="@style/MwmTextAppearance.Title" />
|
||||||
<com.google.android.material.textfield.TextInputLayout
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
android:id="@+id/et__input_layout"
|
android:id="@+id/et__input_layout"
|
||||||
style="?fontBody1"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:hintEnabled="false">
|
app:hintEnabled="false">
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
android:layout_marginTop="@dimen/margin_base">
|
android:layout_marginTop="@dimen/margin_base">
|
||||||
|
|
||||||
<RadioButton
|
<RadioButton
|
||||||
style="?fontSubtitle1"
|
style="@style/TextAppearance.Subtitle1"
|
||||||
android:id="@+id/sort_by_default"
|
android:id="@+id/sort_by_default"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
app:buttonTint="@null"/>
|
app:buttonTint="@null"/>
|
||||||
|
|
||||||
<RadioButton
|
<RadioButton
|
||||||
style="?fontSubtitle1"
|
style="@style/TextAppearance.Subtitle1"
|
||||||
android:id="@+id/sort_by_name"
|
android:id="@+id/sort_by_name"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@@ -47,7 +47,7 @@
|
|||||||
app:buttonTint="@null"/>
|
app:buttonTint="@null"/>
|
||||||
|
|
||||||
<RadioButton
|
<RadioButton
|
||||||
style="?fontSubtitle1"
|
style="@style/TextAppearance.Subtitle1"
|
||||||
android:id="@+id/sort_by_type"
|
android:id="@+id/sort_by_type"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@@ -57,7 +57,7 @@
|
|||||||
app:buttonTint="@null"/>
|
app:buttonTint="@null"/>
|
||||||
|
|
||||||
<RadioButton
|
<RadioButton
|
||||||
style="?fontSubtitle1"
|
style="@style/TextAppearance.Subtitle1"
|
||||||
android:id="@+id/sort_by_distance"
|
android:id="@+id/sort_by_distance"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@@ -67,7 +67,7 @@
|
|||||||
app:buttonTint="@null"/>
|
app:buttonTint="@null"/>
|
||||||
|
|
||||||
<RadioButton
|
<RadioButton
|
||||||
style="?fontSubtitle1"
|
style="@style/TextAppearance.Subtitle1"
|
||||||
android:id="@+id/sort_by_time"
|
android:id="@+id/sort_by_time"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
|||||||
@@ -17,7 +17,6 @@
|
|||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
<com.google.android.material.textfield.TextInputLayout
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
android:id="@+id/edit_bookmark_name_input"
|
android:id="@+id/edit_bookmark_name_input"
|
||||||
style="?fontBody1"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:hint="@string/name"
|
android:hint="@string/name"
|
||||||
@@ -88,7 +87,6 @@
|
|||||||
tools:src="@drawable/ic_bookmark_none" />
|
tools:src="@drawable/ic_bookmark_none" />
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
<com.google.android.material.textfield.TextInputLayout
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
style="?fontBody1"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginEnd="@dimen/margin_half"
|
android:layout_marginEnd="@dimen/margin_half"
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
android:layout_marginEnd="@dimen/margin_base"
|
android:layout_marginEnd="@dimen/margin_base"
|
||||||
android:paddingTop="@dimen/margin_half"
|
android:paddingTop="@dimen/margin_half"
|
||||||
android:paddingBottom="@dimen/margin_base"
|
android:paddingBottom="@dimen/margin_base"
|
||||||
android:textAppearance="?fontHeadline6"
|
android:textAppearance="@style/TextAppearance.Headline6"
|
||||||
tools:text="Xindian Shitoushan Trail" />
|
tools:text="Xindian Shitoushan Trail" />
|
||||||
<include
|
<include
|
||||||
layout="@layout/item_divider"
|
layout="@layout/item_divider"
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
android:layout_marginStart="@dimen/margin_base"
|
android:layout_marginStart="@dimen/margin_base"
|
||||||
android:layout_marginTop="@dimen/margin_base"
|
android:layout_marginTop="@dimen/margin_base"
|
||||||
android:text="@string/layers_title"
|
android:text="@string/layers_title"
|
||||||
android:textAppearance="?fontHeadline6"
|
android:textAppearance="@style/TextAppearance.Headline6"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
<com.google.android.material.button.MaterialButton
|
<com.google.android.material.button.MaterialButton
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
android:ellipsize="middle"
|
android:ellipsize="middle"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textAppearance="?fontBody1"
|
android:textAppearance="@style/TextAppearance.Body1"
|
||||||
tools:text="Bookmark name looooooooooooooooooongasdasdasd" />
|
tools:text="Bookmark name looooooooooooooooooongasdasdasd" />
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/bottom_line_container"
|
android:id="@+id/bottom_line_container"
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
android:layout_marginEnd="@dimen/bookmark_collection_item_end_margin"
|
android:layout_marginEnd="@dimen/bookmark_collection_item_end_margin"
|
||||||
android:ellipsize="middle"
|
android:ellipsize="middle"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:textAppearance="?fontBody1"
|
android:textAppearance="@style/TextAppearance.Body1"
|
||||||
tools:text="Bookmark name looooooooooooooooooongasdasdasd" />
|
tools:text="Bookmark name looooooooooooooooooongasdasdasd" />
|
||||||
<com.google.android.material.textview.MaterialTextView
|
<com.google.android.material.textview.MaterialTextView
|
||||||
android:id="@+id/size"
|
android:id="@+id/size"
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:textColor="?android:textColorSecondary"
|
android:textColor="?android:textColorSecondary"
|
||||||
style="?fontBody2"
|
style="@style/TextAppearance.Body2"
|
||||||
tools:text="42000000" />
|
tools:text="42000000" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
android:paddingBottom="@dimen/margin_half_plus">
|
android:paddingBottom="@dimen/margin_half_plus">
|
||||||
<com.google.android.material.textview.MaterialTextView
|
<com.google.android.material.textview.MaterialTextView
|
||||||
android:id="@+id/text_message"
|
android:id="@+id/text_message"
|
||||||
style="?fontHeadline6"
|
style="@style/TextAppearance.Headline6"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_alignParentStart="true"
|
android:layout_alignParentStart="true"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<com.google.android.material.textview.MaterialTextView
|
<com.google.android.material.textview.MaterialTextView
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:id="@+id/text"
|
android:id="@+id/text"
|
||||||
style="?fontHeadline6"
|
style="@style/TextAppearance.Headline6"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="?windowBackgroundForced"
|
android:background="?windowBackgroundForced"
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:maxWidth="500dp"
|
android:maxWidth="500dp"
|
||||||
android:text="@string/editor_category_unsuitable_title"
|
android:text="@string/editor_category_unsuitable_title"
|
||||||
android:textAppearance="@style/TextAppearance.MdcTypographyStyles.Headline6"
|
android:textAppearance="@style/TextAppearance.Headline6"
|
||||||
android:textStyle="bold" />
|
android:textStyle="bold" />
|
||||||
<com.google.android.material.textview.MaterialTextView
|
<com.google.android.material.textview.MaterialTextView
|
||||||
android:id="@+id/editor_category_unsuitable_text"
|
android:id="@+id/editor_category_unsuitable_text"
|
||||||
|
|||||||
@@ -10,7 +10,6 @@
|
|||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
<com.google.android.material.textfield.TextInputLayout
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
android:id="@+id/input_layout"
|
android:id="@+id/input_layout"
|
||||||
style="?fontBody1"
|
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
|
|||||||
@@ -147,12 +147,12 @@
|
|||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/allday"
|
android:id="@+id/allday"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="@dimen/editor_height_allday"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
android:background="?clickableBackground"
|
android:background="?clickableBackground"
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
android:padding="@dimen/margin_half_plus">
|
android:padding="@dimen/margin_half">
|
||||||
|
|
||||||
<com.google.android.material.textview.MaterialTextView
|
<com.google.android.material.textview.MaterialTextView
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
@@ -164,7 +164,8 @@
|
|||||||
<com.google.android.material.materialswitch.MaterialSwitch
|
<com.google.android.material.materialswitch.MaterialSwitch
|
||||||
android:id="@+id/sw__allday"
|
android:id="@+id/sw__allday"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"/>
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginEnd="@dimen/margin_quarter"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
android:layout_marginTop="@dimen/margin_base"
|
android:layout_marginTop="@dimen/margin_base"
|
||||||
android:layout_marginEnd="@dimen/bookmark_collection_item_end_margin"
|
android:layout_marginEnd="@dimen/bookmark_collection_item_end_margin"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:textAppearance="?fontBody1"
|
android:textAppearance="@style/TextAppearance.Body1"
|
||||||
tools:text="@string/tracks_title" />
|
tools:text="@string/tracks_title" />
|
||||||
<com.google.android.material.textview.MaterialTextView
|
<com.google.android.material.textview.MaterialTextView
|
||||||
android:id="@+id/tv__bookmark_distance"
|
android:id="@+id/tv__bookmark_distance"
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
android:layout_marginBottom="@dimen/margin_half_plus"
|
android:layout_marginBottom="@dimen/margin_half_plus"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:textColor="?android:textColorSecondary"
|
android:textColor="?android:textColorSecondary"
|
||||||
android:textAppearance="?fontBody2"
|
android:textAppearance="@style/TextAppearance.Body2"
|
||||||
tools:text="@string/by_distance" />
|
tools:text="@string/by_distance" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
<com.google.android.material.imageview.ShapeableImageView
|
<com.google.android.material.imageview.ShapeableImageView
|
||||||
|
|||||||
@@ -82,13 +82,15 @@
|
|||||||
|
|
||||||
<com.google.android.material.textview.MaterialTextView
|
<com.google.android.material.textview.MaterialTextView
|
||||||
android:id="@+id/place_page_last_checked"
|
android:id="@+id/place_page_last_checked"
|
||||||
style="?fontCaption"
|
style="@style/TextAppearance.Caption"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:paddingBottom="@dimen/margin_half"
|
android:paddingBottom="@dimen/margin_half"
|
||||||
android:paddingHorizontal="@dimen/margin_base"
|
android:paddingHorizontal="@dimen/margin_base"
|
||||||
tools:text="Existence confirmed 1 month ago"/>
|
tools:text="Existence confirmed 1 month ago"/>
|
||||||
|
|
||||||
|
<include android:visibility="gone" layout="@layout/place_page_map_too_old"/>
|
||||||
|
|
||||||
<include android:visibility="gone" layout="@layout/place_page_editor"/>
|
<include android:visibility="gone" layout="@layout/place_page_editor"/>
|
||||||
|
|
||||||
<include android:visibility="gone" layout="@layout/place_page_add"/>
|
<include android:visibility="gone" layout="@layout/place_page_add"/>
|
||||||
|
|||||||
65
android/app/src/main/res/layout/place_page_map_too_old.xml
Normal file
65
android/app/src/main/res/layout/place_page_map_too_old.xml
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<com.google.android.material.card.MaterialCardView
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:id="@+id/cv__map_too_old"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginHorizontal="@dimen/margin_base"
|
||||||
|
android:layout_marginTop="@dimen/margin_half"
|
||||||
|
app:strokeWidth="1dp"
|
||||||
|
app:strokeColor="@color/base_accent"
|
||||||
|
app:cardBackgroundColor="@color/bg_cards">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:padding="@dimen/margin_base"
|
||||||
|
android:gravity="center_vertical">
|
||||||
|
|
||||||
|
<com.google.android.material.imageview.ShapeableImageView
|
||||||
|
android:layout_width="48dp"
|
||||||
|
android:layout_height="48dp"
|
||||||
|
android:layout_marginEnd="@dimen/margin_base"
|
||||||
|
app:srcCompat="@drawable/info_icon"
|
||||||
|
app:tint="@color/base_accent" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<com.google.android.material.textview.MaterialTextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginBottom="@dimen/margin_quarter"
|
||||||
|
android:text="@string/place_page_map_too_old_title"
|
||||||
|
android:textAppearance="@style/MwmTextAppearance.Body2"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:textColor="?android:textColorPrimary" />
|
||||||
|
|
||||||
|
<com.google.android.material.textview.MaterialTextView
|
||||||
|
android:id="@+id/tv__map_too_old_description"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginBottom="@dimen/margin_quarter"
|
||||||
|
android:text="@string/place_page_map_too_old_description"
|
||||||
|
android:fontFamily="@string/robotoRegular"
|
||||||
|
android:textAppearance="@style/MwmTextAppearance.Body3"
|
||||||
|
android:textColor="?android:textColorPrimary" />
|
||||||
|
|
||||||
|
<com.google.android.material.button.MaterialButton
|
||||||
|
android:id="@+id/mb__update_too_old_map"
|
||||||
|
style="@style/MwmWidget.M3.Button.Primary"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_gravity="end"
|
||||||
|
android:text="@string/place_page_update_too_old_map"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</com.google.android.material.card.MaterialCardView>
|
||||||
@@ -65,7 +65,7 @@
|
|||||||
|
|
||||||
<com.google.android.material.textview.MaterialTextView
|
<com.google.android.material.textview.MaterialTextView
|
||||||
android:id="@+id/oh_check_date"
|
android:id="@+id/oh_check_date"
|
||||||
style="?fontCaption"
|
style="@style/TextAppearance.Caption"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_alignParentEnd="true"
|
android:layout_alignParentEnd="true"
|
||||||
|
|||||||
@@ -295,7 +295,7 @@
|
|||||||
<!-- location service disabled -->
|
<!-- location service disabled -->
|
||||||
<string name="enable_location_services">Activeu els serveis de geolocalització</string>
|
<string name="enable_location_services">Activeu els serveis de geolocalització</string>
|
||||||
<string name="save">Desa</string>
|
<string name="save">Desa</string>
|
||||||
<string name="create">crea</string>
|
<string name="create">Crear</string>
|
||||||
<!-- red color -->
|
<!-- red color -->
|
||||||
<string name="red">Vermell</string>
|
<string name="red">Vermell</string>
|
||||||
<!-- yellow color -->
|
<!-- yellow color -->
|
||||||
@@ -473,7 +473,7 @@
|
|||||||
<string name="error_enter_correct_house_number">Introduïu un número d’edifici vàlid</string>
|
<string name="error_enter_correct_house_number">Introduïu un número d’edifici vàlid</string>
|
||||||
<!-- Error message in Editor when a user tries to set the number of floors for a building higher than %d floors -->
|
<!-- Error message in Editor when a user tries to set the number of floors for a building higher than %d floors -->
|
||||||
<string name="error_enter_correct_storey_number">El nombre de plantes no pot excedir de %d</string>
|
<string name="error_enter_correct_storey_number">El nombre de plantes no pot excedir de %d</string>
|
||||||
<string name="editor_zip_code">Codi postal</string>
|
<string name="editor_zip_code">Codi Postal</string>
|
||||||
<string name="error_enter_correct_zip_code">Introduïu un codi postal vàlid</string>
|
<string name="error_enter_correct_zip_code">Introduïu un codi postal vàlid</string>
|
||||||
<!-- Title for OSM note section in the editor -->
|
<!-- Title for OSM note section in the editor -->
|
||||||
<string name="editor_other_info">Nota per als voluntaris d\'OpenStreetMap (opcional)</string>
|
<string name="editor_other_info">Nota per als voluntaris d\'OpenStreetMap (opcional)</string>
|
||||||
@@ -521,8 +521,8 @@
|
|||||||
<!-- Displayed when saving some edits to the map to warn against publishing personal data -->
|
<!-- Displayed when saving some edits to the map to warn against publishing personal data -->
|
||||||
<string name="editor_share_to_all_dialog_title">Voleu enviar-ho a tots els usuaris?</string>
|
<string name="editor_share_to_all_dialog_title">Voleu enviar-ho a tots els usuaris?</string>
|
||||||
<!-- Dialog before publishing the modifications to the public map. -->
|
<!-- Dialog before publishing the modifications to the public map. -->
|
||||||
<string name="editor_share_to_all_dialog_message_1">Assegureu-vos que no heu introduït cap dada personal</string>
|
<string name="editor_share_to_all_dialog_message_1">Assegureu-vos que no heu introduït cap dada personal.</string>
|
||||||
<string name="editor_share_to_all_dialog_message_2">Revisarem els canvis. Si tenim cap pregunta contactem amb vós via correu electrònic</string>
|
<string name="editor_share_to_all_dialog_message_2">Els editors d\'OpenStreetMap revisaran els canvis. Et contactaran si tenen cap pregunta.</string>
|
||||||
<string name="navigation_stop_button">Atura</string>
|
<string name="navigation_stop_button">Atura</string>
|
||||||
<!-- Shown as toast when starting the recent track recording -->
|
<!-- Shown as toast when starting the recent track recording -->
|
||||||
<string name="track_recording">S’està enregistrant el recorregut</string>
|
<string name="track_recording">S’està enregistrant el recorregut</string>
|
||||||
@@ -875,4 +875,41 @@
|
|||||||
<string name="delete_track_dialog_title">Voleu eliminar %s?</string>
|
<string name="delete_track_dialog_title">Voleu eliminar %s?</string>
|
||||||
<string name="pref_tts_no_system_tts_short">No s\'ha trobat cap motor de text a veu, comproveu la configuració de l\'app</string>
|
<string name="pref_tts_no_system_tts_short">No s\'ha trobat cap motor de text a veu, comproveu la configuració de l\'app</string>
|
||||||
<string name="offline_explanation_title">Mapes sense Connexió</string>
|
<string name="offline_explanation_title">Mapes sense Connexió</string>
|
||||||
|
<string name="charge_socket_schuko">EU Domèstic</string>
|
||||||
|
<string name="unknown_socket_type">endoll desconegut</string>
|
||||||
|
<string name="edit_socket_info_tooltip">Crea nous endolls o edita els existents.</string>
|
||||||
|
<string name="charging_station_available_sockets">Endolls disponibles</string>
|
||||||
|
<string name="charge_socket_unknown_other">Altres o desconegut</string>
|
||||||
|
<string name="charge_socket_count">Recompte</string>
|
||||||
|
<string name="charge_socket_power">Potència (kW)</string>
|
||||||
|
<string name="editor_socket">Editar endoll</string>
|
||||||
|
<string name="unknown_count">desconegut</string>
|
||||||
|
<string name="error_value_must_be_positive">El valor ha de ser positiu</string>
|
||||||
|
<string name="error_invalid_number">Número invàlid</string>
|
||||||
|
<string name="offline_explanation_text">Un mapa ha de ser desconegut per a veure i navegar l\'àrea.\nDescarrega mapes per a àrees on vulgues viatjar.</string>
|
||||||
|
<string name="list_description_empty">Edita la llista per afegir una descripció</string>
|
||||||
|
<string name="opens_at">Obre a %s</string>
|
||||||
|
<string name="closes_at">Tanca a %s</string>
|
||||||
|
<string name="opens_day_at">Obre els %1$s a %2$s</string>
|
||||||
|
<string name="closes_day_at">Tanca els %1$s a %2$s</string>
|
||||||
|
<plurals name="minutes_short">
|
||||||
|
<item quantity="one">%d min</item>
|
||||||
|
<item quantity="many">%d mins</item>
|
||||||
|
<item quantity="other">%d mins</item>
|
||||||
|
</plurals>
|
||||||
|
<string name="editor_place_doesnt_exist_description">Descriu com és el lloc ara mateix per enviar una nota d\'error a la comunitat d\'OpenStreetMap</string>
|
||||||
|
<string name="editor_business_vacant_button">El negoci està vacant</string>
|
||||||
|
<string name="editor_mark_business_vacant_title">Marcar negoci com a vacant</string>
|
||||||
|
<string name="editor_mark_business_vacant_description">Fes servir aquesta funció si el negoci s\'ha mogut, i l\'espai està buit i llest per a un altre llogater.</string>
|
||||||
|
<string name="editor_submit">Enviar</string>
|
||||||
|
<string name="power_management">Gestió de Potència</string>
|
||||||
|
<string name="avoid_steps">Evita escales</string>
|
||||||
|
<string name="avoid_paved">Evita carreteres asfaltades</string>
|
||||||
|
<string name="unknown_power_output">desconegut</string>
|
||||||
|
<string name="charge_socket_type2">Tipus 2 (sense cable)</string>
|
||||||
|
<string name="charge_socket_type2_cable">Tipus 2 (amb cable)</string>
|
||||||
|
<string name="charge_socket_type2_combo">Tipus 2 comb.</string>
|
||||||
|
<string name="charge_socket_type1">Tipus 1</string>
|
||||||
|
<string name="charge_socket_nacs">NACS</string>
|
||||||
|
<string name="charge_socket_chademo">CHAdeMO</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -905,4 +905,6 @@
|
|||||||
</plurals>
|
</plurals>
|
||||||
<string name="power_management">Správa výkonu</string>
|
<string name="power_management">Správa výkonu</string>
|
||||||
<string name="charge_socket_schuko">Domovní EU</string>
|
<string name="charge_socket_schuko">Domovní EU</string>
|
||||||
|
<string name="prefs_speed_cameras_information">Upozornění na radary jsou vypnuty v zemích, kde je tato funkcionalita zakázána místními zákony.</string>
|
||||||
|
<string name="navigation_start_tts_message">"Spouštím navigaci, jazyk hlasových instrukcí: "</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -607,7 +607,7 @@
|
|||||||
<!-- Recommended length for CarPlay and Android Auto is around 25-27 characters -->
|
<!-- Recommended length for CarPlay and Android Auto is around 25-27 characters -->
|
||||||
<string name="avoid_tolls">Undgå betalingsveje</string>
|
<string name="avoid_tolls">Undgå betalingsveje</string>
|
||||||
<!-- Recommended length for CarPlay and Android Auto is around 25-27 characters -->
|
<!-- Recommended length for CarPlay and Android Auto is around 25-27 characters -->
|
||||||
<string name="avoid_unpaved">Undgå ikke-asfalterede veje</string>
|
<string name="avoid_unpaved">Undgå veje uden fast belægning</string>
|
||||||
<!-- Recommended length for CarPlay and Android Auto is around 25-27 characters -->
|
<!-- Recommended length for CarPlay and Android Auto is around 25-27 characters -->
|
||||||
<string name="avoid_ferry">Undgå færger</string>
|
<string name="avoid_ferry">Undgå færger</string>
|
||||||
<string name="avoid_motorways">Undgå motorveje</string>
|
<string name="avoid_motorways">Undgå motorveje</string>
|
||||||
@@ -894,4 +894,6 @@
|
|||||||
<string name="editor_submit">Indsend</string>
|
<string name="editor_submit">Indsend</string>
|
||||||
<string name="power_management">Strømstyring</string>
|
<string name="power_management">Strømstyring</string>
|
||||||
<string name="charge_socket_schuko">Europæisk</string>
|
<string name="charge_socket_schuko">Europæisk</string>
|
||||||
|
<string name="prefs_speed_cameras_information">Advarsler om hastighedskameraer er deaktiveret i lande, hvor advarsler er forbudt i henhold til lokal lovgivning.</string>
|
||||||
|
<string name="navigation_start_tts_message">"Starter navigation, sprog for stemmeinstruktioner: "</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -197,7 +197,7 @@
|
|||||||
<string name="prefs_group_information">Información</string>
|
<string name="prefs_group_information">Información</string>
|
||||||
<string name="prefs_group_route">Navegación</string>
|
<string name="prefs_group_route">Navegación</string>
|
||||||
<string name="pref_zoom_title">Botones de zoom</string>
|
<string name="pref_zoom_title">Botones de zoom</string>
|
||||||
<string name="pref_zoom_summary">Visualizar en la pantalla</string>
|
<string name="pref_zoom_summary">Ver en el mapa</string>
|
||||||
<!-- Settings «Map» category: «Night style» title -->
|
<!-- Settings «Map» category: «Night style» title -->
|
||||||
<string name="pref_map_style_title">Modo nocturno</string>
|
<string name="pref_map_style_title">Modo nocturno</string>
|
||||||
<!-- Generic «Off» string -->
|
<!-- Generic «Off» string -->
|
||||||
@@ -297,7 +297,7 @@
|
|||||||
<!-- location service disabled -->
|
<!-- location service disabled -->
|
||||||
<string name="enable_location_services">Por favor, activa los Servicios de Localización</string>
|
<string name="enable_location_services">Por favor, activa los Servicios de Localización</string>
|
||||||
<string name="save">Guardar</string>
|
<string name="save">Guardar</string>
|
||||||
<string name="create">crear</string>
|
<string name="create">Crear</string>
|
||||||
<!-- red color -->
|
<!-- red color -->
|
||||||
<string name="red">Rojo</string>
|
<string name="red">Rojo</string>
|
||||||
<!-- yellow color -->
|
<!-- yellow color -->
|
||||||
@@ -493,7 +493,7 @@
|
|||||||
<string name="editor_category_unsuitable_title">¿No halla una categoría adecuada?</string>
|
<string name="editor_category_unsuitable_title">¿No halla una categoría adecuada?</string>
|
||||||
<string name="editor_category_unsuitable_text">CoMaps permite añadir únicamente categorías de puntos sencillos, es decir, no ciudades, carreteras, lagos, contornos de edificios, etc. Por favor, añade dichas categorías directamente en <a href="https://www.openstreetmap.org">OpenStreetMap.org</a>. Consulta nuestra <a href="https://www.comaps.app/support/advanced-map-editing/">guía</a> para obtener instrucciones detalladas paso a paso.</string>
|
<string name="editor_category_unsuitable_text">CoMaps permite añadir únicamente categorías de puntos sencillos, es decir, no ciudades, carreteras, lagos, contornos de edificios, etc. Por favor, añade dichas categorías directamente en <a href="https://www.openstreetmap.org">OpenStreetMap.org</a>. Consulta nuestra <a href="https://www.comaps.app/support/advanced-map-editing/">guía</a> para obtener instrucciones detalladas paso a paso.</string>
|
||||||
<string name="downloader_no_downloaded_maps_title">No has descargado ningún mapa</string>
|
<string name="downloader_no_downloaded_maps_title">No has descargado ningún mapa</string>
|
||||||
<string name="downloader_no_downloaded_maps_message">Descargue mapas para encontrar la ubicación y navegar sin conexión</string>
|
<string name="downloader_no_downloaded_maps_message">Descarga mapas para buscar ubicaciones y navegar sin conexión</string>
|
||||||
<string name="current_location_unknown_error_title">Se desconoce la ubicación actual</string>
|
<string name="current_location_unknown_error_title">Se desconoce la ubicación actual</string>
|
||||||
<!-- abbreviation for kilometers per hour -->
|
<!-- abbreviation for kilometers per hour -->
|
||||||
<string name="kilometers_per_hour">km/h</string>
|
<string name="kilometers_per_hour">km/h</string>
|
||||||
@@ -524,11 +524,11 @@
|
|||||||
<!-- Displayed when saving some edits to the map to warn against publishing personal data -->
|
<!-- Displayed when saving some edits to the map to warn against publishing personal data -->
|
||||||
<string name="editor_share_to_all_dialog_title">¿Quieres enviarlo a todos los usuarios?</string>
|
<string name="editor_share_to_all_dialog_title">¿Quieres enviarlo a todos los usuarios?</string>
|
||||||
<!-- Dialog before publishing the modifications to the public map. -->
|
<!-- Dialog before publishing the modifications to the public map. -->
|
||||||
<string name="editor_share_to_all_dialog_message_1">Cerciórate de que no has introducido ningún dato privado o personal</string>
|
<string name="editor_share_to_all_dialog_message_1">Cerciórate de que no has introducido ningún dato privado o personal.</string>
|
||||||
<string name="editor_share_to_all_dialog_message_2">Los editores de OpenStreetMap comprobarán los cambios y se pondrán en contacto contigo si tienen alguna pregunta</string>
|
<string name="editor_share_to_all_dialog_message_2">Los editores de OpenStreetMap comprobarán los cambios y se pondrán en contacto contigo si tienen alguna pregunta.</string>
|
||||||
<string name="navigation_stop_button">Detener</string>
|
<string name="navigation_stop_button">Detener</string>
|
||||||
<!-- Shown as toast when starting the recent track recording -->
|
<!-- Shown as toast when starting the recent track recording -->
|
||||||
<string name="track_recording">Grabando el trayeco</string>
|
<string name="track_recording">Grabando el trayecto</string>
|
||||||
<!-- For the first routing -->
|
<!-- For the first routing -->
|
||||||
<string name="accept">Aceptar</string>
|
<string name="accept">Aceptar</string>
|
||||||
<!-- For the first routing -->
|
<!-- For the first routing -->
|
||||||
@@ -539,7 +539,7 @@
|
|||||||
<string name="mobile_data_option_not_today">No usar hoy</string>
|
<string name="mobile_data_option_not_today">No usar hoy</string>
|
||||||
<string name="mobile_data">Internet móvil</string>
|
<string name="mobile_data">Internet móvil</string>
|
||||||
<!-- NOTE to translators: please synchronize your translation with the English one. -->
|
<!-- NOTE to translators: please synchronize your translation with the English one. -->
|
||||||
<string name="mobile_data_description">Se requiere Internet móvil para recibir notificaciones de actualización de mapas y cargar ediciones</string>
|
<string name="mobile_data_description">Se requiere conexión a Internet para recibir notificaciones de actualización de mapas y cargar ediciones</string>
|
||||||
<string name="mobile_data_option_never">No usar nunca</string>
|
<string name="mobile_data_option_never">No usar nunca</string>
|
||||||
<string name="mobile_data_option_ask">Preguntar siempre</string>
|
<string name="mobile_data_option_ask">Preguntar siempre</string>
|
||||||
<string name="traffic_update_maps_text">Para mostrar los datos de tráfico, deben actualizarse los mapas</string>
|
<string name="traffic_update_maps_text">Para mostrar los datos de tráfico, deben actualizarse los mapas</string>
|
||||||
|
|||||||
@@ -903,4 +903,6 @@
|
|||||||
<string name="editor_submit">Saada</string>
|
<string name="editor_submit">Saada</string>
|
||||||
<string name="power_management">Toitehaldus</string>
|
<string name="power_management">Toitehaldus</string>
|
||||||
<string name="charge_socket_schuko">EU-sisene</string>
|
<string name="charge_socket_schuko">EU-sisene</string>
|
||||||
|
<string name="prefs_speed_cameras_information">Kiiruskaamerate teavitused on nendes riikides lülitatud välja, kus seda keelab kohalik seadusandlus.</string>
|
||||||
|
<string name="navigation_start_tts_message">"Alustan tee juhatamist, hääljuhiste keel: "</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -868,4 +868,5 @@
|
|||||||
<string name="opens_day_at">1$s ean %2$s tan irekitzen da</string>
|
<string name="opens_day_at">1$s ean %2$s tan irekitzen da</string>
|
||||||
<string name="closes_day_at">%1$s ean %2$s etan itxiko da</string>
|
<string name="closes_day_at">%1$s ean %2$s etan itxiko da</string>
|
||||||
<string name="editor_place_doesnt_exist_description">Deskribatu nolakoa den lekua orain OpenStreetMap komunitateari errore-ohar bat bidaltzeko.</string>
|
<string name="editor_place_doesnt_exist_description">Deskribatu nolakoa den lekua orain OpenStreetMap komunitateari errore-ohar bat bidaltzeko.</string>
|
||||||
|
<string name="offline_explanation_title">Lineaz kanpoko mapak</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -9,9 +9,9 @@
|
|||||||
<string name="delete">سِتُردن</string>
|
<string name="delete">سِتُردن</string>
|
||||||
<string name="download_maps">بارگیری نقشهها</string>
|
<string name="download_maps">بارگیری نقشهها</string>
|
||||||
<!-- Settings/Downloader - info for country when download fails -->
|
<!-- Settings/Downloader - info for country when download fails -->
|
||||||
<string name="download_has_failed">دانلود ناموفق بود، برای تلاش مجدد لمس کنید</string>
|
<string name="download_has_failed">بارگیری ناکام بود، برای تلاش دوباره بِپَرماسید</string>
|
||||||
<!-- Settings/Downloader - info for country which started downloading -->
|
<!-- Settings/Downloader - info for country which started downloading -->
|
||||||
<string name="downloading">درحال دانلود…</string>
|
<string name="downloading">بارگیری میشود…</string>
|
||||||
<!-- Choose measurement on first launch alert - choose metric system button -->
|
<!-- Choose measurement on first launch alert - choose metric system button -->
|
||||||
<string name="kilometres">کیلومتر</string>
|
<string name="kilometres">کیلومتر</string>
|
||||||
<!-- Choose measurement on first launch alert - choose imperial system button -->
|
<!-- Choose measurement on first launch alert - choose imperial system button -->
|
||||||
@@ -21,9 +21,9 @@
|
|||||||
<!-- View and button titles for accessibility, please also edit it in iphone/plist.txt -->
|
<!-- View and button titles for accessibility, please also edit it in iphone/plist.txt -->
|
||||||
<string name="search">جستجو</string>
|
<string name="search">جستجو</string>
|
||||||
<!-- Search box placeholder text; Used when searching on the map itself, not when searching for a map -->
|
<!-- Search box placeholder text; Used when searching on the map itself, not when searching for a map -->
|
||||||
<string name="search_map">جستوجوی نقشه</string>
|
<string name="search_map">جستجوی نقشه</string>
|
||||||
<!-- Location services are disabled by user alert - message -->
|
<!-- Location services are disabled by user alert - message -->
|
||||||
<string name="location_is_disabled_long_text">سرویس موقعیت مکانی شما غیر فعال است. لطفا جهت کارکرد صحیح نرم افزار آن را فعال کنید.</string>
|
<string name="location_is_disabled_long_text">هماینک، شما همهی سامانههای گیاگیابی را برای این دستگاه یا این برنامه ناکارا کردهاید. خواهشمند است آن را در پیکربندیها کارا کنید.</string>
|
||||||
<!-- A dialog title, that warns a user that Precise Location is disabled and suggests to turn it on -->
|
<!-- A dialog title, that warns a user that Precise Location is disabled and suggests to turn it on -->
|
||||||
<string name="limited_accuracy">دقت محدود</string>
|
<string name="limited_accuracy">دقت محدود</string>
|
||||||
<!-- A dialog text, that warns a user that Precise Location is disabled and suggests to turn it on -->
|
<!-- A dialog text, that warns a user that Precise Location is disabled and suggests to turn it on -->
|
||||||
|
|||||||
@@ -296,7 +296,7 @@
|
|||||||
<!-- location service disabled -->
|
<!-- location service disabled -->
|
||||||
<string name="enable_location_services">Ota sijaintipalvelut käyttöön</string>
|
<string name="enable_location_services">Ota sijaintipalvelut käyttöön</string>
|
||||||
<string name="save">Tallenna</string>
|
<string name="save">Tallenna</string>
|
||||||
<string name="create">luo</string>
|
<string name="create">Luo</string>
|
||||||
<!-- red color -->
|
<!-- red color -->
|
||||||
<string name="red">Punainen</string>
|
<string name="red">Punainen</string>
|
||||||
<!-- yellow color -->
|
<!-- yellow color -->
|
||||||
@@ -523,7 +523,7 @@
|
|||||||
<!-- Displayed when saving some edits to the map to warn against publishing personal data -->
|
<!-- Displayed when saving some edits to the map to warn against publishing personal data -->
|
||||||
<string name="editor_share_to_all_dialog_title">Haluatko lähettää sen kaikille käyttäjille?</string>
|
<string name="editor_share_to_all_dialog_title">Haluatko lähettää sen kaikille käyttäjille?</string>
|
||||||
<!-- Dialog before publishing the modifications to the public map. -->
|
<!-- Dialog before publishing the modifications to the public map. -->
|
||||||
<string name="editor_share_to_all_dialog_message_1">Varmista, ettet ole syöttänyt yksityisiä tai henkilökohtaisia tietoja</string>
|
<string name="editor_share_to_all_dialog_message_1">Varmista, ettet syöttänyt henkilökohtaisia tietojasi.</string>
|
||||||
<string name="editor_share_to_all_dialog_message_2">OpenStreetMap-muokkaimet tarkistavat muutokset ja ottavat sinuun yhteyttä, jos niillä on kysyttävää</string>
|
<string name="editor_share_to_all_dialog_message_2">OpenStreetMap-muokkaimet tarkistavat muutokset ja ottavat sinuun yhteyttä, jos niillä on kysyttävää</string>
|
||||||
<string name="navigation_stop_button">Lopeta</string>
|
<string name="navigation_stop_button">Lopeta</string>
|
||||||
<!-- Shown as toast when starting the recent track recording -->
|
<!-- Shown as toast when starting the recent track recording -->
|
||||||
@@ -894,12 +894,13 @@
|
|||||||
<string name="avoid_paved">Vältä päällystettyjä teitä</string>
|
<string name="avoid_paved">Vältä päällystettyjä teitä</string>
|
||||||
<string name="opens_at">Avautuu %s</string>
|
<string name="opens_at">Avautuu %s</string>
|
||||||
<string name="closes_at">Sulkeutuu %s</string>
|
<string name="closes_at">Sulkeutuu %s</string>
|
||||||
<string name="opens_day_at">Avautuu %1$s klo %2$s</string>
|
<string name="opens_day_at">Avautuu %1$sna klo %2$s</string>
|
||||||
<string name="closes_day_at">Sulkeutuu %1$s klo %2$s</string>
|
<string name="closes_day_at">Sulkeutuu %1$sna klo %2$s</string>
|
||||||
<plurals name="minutes_short">
|
<plurals name="minutes_short">
|
||||||
<item quantity="one">%d min</item>
|
<item quantity="one">%d min</item>
|
||||||
<item quantity="other">%d min</item>
|
<item quantity="other">%d min</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
<string name="editor_submit">Lähetä</string>
|
<string name="editor_submit">Lähetä</string>
|
||||||
<string name="list_description_empty">Muokkaa listaa lisätäksesi kuvauksen</string>
|
<string name="list_description_empty">Muokkaa listaa lisätäksesi kuvauksen</string>
|
||||||
|
<string name="editor_business_vacant_button">Liike on tyhjillään</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -139,4 +139,126 @@
|
|||||||
<string name="self_service">Samoposluživanje</string>
|
<string name="self_service">Samoposluživanje</string>
|
||||||
<string name="panoramax">Panoramax slika</string>
|
<string name="panoramax">Panoramax slika</string>
|
||||||
<string name="saved">Spremljeno</string>
|
<string name="saved">Spremljeno</string>
|
||||||
|
<string name="disconnect_usb_cable">Isključite USB kabel ili umetnite memorijsku karticu za korištenje CoMaps</string>
|
||||||
|
<string name="not_enough_free_space_on_sdcard">Prvo oslobodite prostor na SD kartici/USB memoriji kako biste mogli koristiti aplikaciju</string>
|
||||||
|
<string name="download_resources">Prije nego što počnete koristiti aplikaciju, preuzmite općenitu kartu svijeta na svoj uređaj.\nZauzeti će %s prostora za pohranu.</string>
|
||||||
|
<string name="downloading_country_can_proceed">Preuzimanje %1$s (%2$s). Sada možete\nnastaviti na kartu.</string>
|
||||||
|
<string name="update_country_ask">Ažurirati %1$s? (%2$s)</string>
|
||||||
|
<string name="add_new_set">Dodaj novu Listu</string>
|
||||||
|
<string name="bookmark_set_name">Označi naziv Liste</string>
|
||||||
|
<string name="bookmarks">Oznake</string>
|
||||||
|
<string name="bookmarks_and_tracks">Oznake i Rute</string>
|
||||||
|
<string name="maps_storage">Spremi karte u</string>
|
||||||
|
<string name="maps_storage_summary">Odaberite mapu u koju želite spremiti karte</string>
|
||||||
|
<string name="maps_storage_downloaded">Preuzete karte</string>
|
||||||
|
<string name="maps_storage_free_size">%1$s slobodno od %2$s</string>
|
||||||
|
<string name="move_maps">Premjesti karte?</string>
|
||||||
|
<string name="move_maps_error">Greška prilikom premještanja datoteka karte</string>
|
||||||
|
<string name="wait_several_minutes">Ovo može potrajati nekoliko minuta.\nMolimo pričekajte…</string>
|
||||||
|
<string name="measurement_units">Mjerne jedinice</string>
|
||||||
|
<string name="measurement_units_summary">Odaberite milje ili kilometre</string>
|
||||||
|
<string name="category_eat">Gdje jesti</string>
|
||||||
|
<string name="category_food">Namirnice</string>
|
||||||
|
<string name="category_transport">Prijevoz</string>
|
||||||
|
<string name="category_fuel">Benzinske stanice</string>
|
||||||
|
<string name="category_shopping">Kupovina</string>
|
||||||
|
<string name="category_secondhand">Rabljena roba</string>
|
||||||
|
<string name="category_tourism">Znamenitosti</string>
|
||||||
|
<string name="category_entertainment">Zabava</string>
|
||||||
|
<string name="category_atm">Bankomat</string>
|
||||||
|
<string name="category_nightlife">Noćni život</string>
|
||||||
|
<string name="category_children">Obiteljski praznici</string>
|
||||||
|
<string name="category_bank">Banka</string>
|
||||||
|
<string name="category_pharmacy">Ljekarna</string>
|
||||||
|
<string name="category_police">Policija</string>
|
||||||
|
<string name="category_water">Voda</string>
|
||||||
|
<string name="category_rv">Objekti za kampere</string>
|
||||||
|
<string name="share_bookmarks_email_subject">CoMaps Oznake su podijeljene s vama</string>
|
||||||
|
<string name="share_bookmarks_email_body">Pozdrav!\n\nU privitku su moje oznake; otvorite ih u CoMaps aplikaciji. Ukoliko ju nemate instaliranu, možete ju preuzeti ovdje: https://www.comaps.app/download/\n\nUživajte u putovanju s CoMapsima!</string>
|
||||||
|
<string name="load_kmz_title">Učitavam Oznake</string>
|
||||||
|
<string name="load_kmz_successful">Oznake su uspješno učitane! Možete ih pronaći na karti ili na zaslonu Upravitelja Oznaka.</string>
|
||||||
|
<string name="load_kmz_failed">Učitavanje Oznaka nije uspjelo. Datoteka je možda oštećena ili neispravna.</string>
|
||||||
|
<string name="unknown_file_type">Aplikacija ne prepoznaje tip datoteke:\n%1$s</string>
|
||||||
|
<string name="failed_to_open_file">Nije moguće otvoriti datoteku %1$s\n \n%2$s</string>
|
||||||
|
<string name="unknown_current_position">Vaša lokacija još nije utvrđena</string>
|
||||||
|
<string name="cant_change_this_setting">Žao nam je, postavke Pohrane karata trenutno su onemogućene</string>
|
||||||
|
<string name="downloading_is_active">Preuzimanje karte je trenutno u tijeku</string>
|
||||||
|
<string name="my_position_share_sms">Pogledajte moju trenutnu lokaciju u CoMapsu! %1$s ili %2$s Nemate offline karte? Preuzmite ih ovdje: https://www.comaps.app/download/</string>
|
||||||
|
<string name="bookmark_share_email_subject">Hej, pogledaj moju oznaku u CoMapsu!</string>
|
||||||
|
<string name="my_position_share_email_subject">Hej, pogledaj moju trenutnu lokaciju na CoMaps karti!</string>
|
||||||
|
<string name="my_position_share_email">Bok,\n\nSada sam ovdje: %1$s. Kliknite na ovu %2$s ili ovu %3$s poveznicu da biste vidjeli lokaciju na karti.\n\nHvala.</string>
|
||||||
|
<string name="copied_to_clipboard">Kopirano u međuspremnik: %s</string>
|
||||||
|
<string name="data_version">OpenStreetMap podaci: %s</string>
|
||||||
|
<string name="tracks_title">Rute</string>
|
||||||
|
<string name="category_hotel">hotel</string>
|
||||||
|
<string name="category_toilet">WC</string>
|
||||||
|
<string name="track_recording">Snimanje Rute</string>
|
||||||
|
<string name="bookmarks_import">Uvoz Oznaka i Ruta</string>
|
||||||
|
<plurals name="tracks">
|
||||||
|
<item quantity="one">%d ruta</item>
|
||||||
|
<item quantity="few">%d rute</item>
|
||||||
|
<item quantity="other">%d ruta</item>
|
||||||
|
</plurals>
|
||||||
|
<string name="bookmarks_export">Izvoz svih Oznaka i Ruta</string>
|
||||||
|
<string name="start_track_recording">Snimi Rutu</string>
|
||||||
|
<string name="stop_track_recording">Zaustavi snimanje Rute</string>
|
||||||
|
<string name="track_recording_alert_title">Spremi u Oznake i Rute?</string>
|
||||||
|
<string name="track_recording_toast_nothing_to_save">Ruta je prazna - nema ništa za spremiti</string>
|
||||||
|
<string name="edit_track">Izmijeni Rutu</string>
|
||||||
|
<string name="pref_backup_title">Sigurnosna kopija Oznaka i Ruta</string>
|
||||||
|
<string name="pref_backup_now_summary_empty_lists">Nema Oznaka i Ruta za izradu sigurnosne kopije</string>
|
||||||
|
<string name="share_track">Podijeli Rutu</string>
|
||||||
|
<string name="placepage_edit_bookmark_button">Uredi Oznaku</string>
|
||||||
|
<string name="bookmark_lists_hide_all">Sakrij sve</string>
|
||||||
|
<plurals name="bookmarks_places">
|
||||||
|
<item quantity="one">%d Oznaka</item>
|
||||||
|
<item quantity="few">%d Oznake</item>
|
||||||
|
<item quantity="other">%d Oznaka</item>
|
||||||
|
</plurals>
|
||||||
|
<string name="bookmarks_create_new_group">Kreiraj novu Listu</string>
|
||||||
|
<string name="bookmarks_error_message_share_general">Nije moguće podijeliti zbog greške u aplikaciji</string>
|
||||||
|
<string name="bookmarks_error_message_share_empty">Nije moguće dijeliti praznu Lista</string>
|
||||||
|
<string name="bookmarks_error_title_empty_list_name">Naziv ne može biti prazan</string>
|
||||||
|
<string name="bookmarks_error_message_empty_list_name">Molimo unesite naziv Liste</string>
|
||||||
|
<string name="bookmarks_new_list_hint">Nova Lista</string>
|
||||||
|
<string name="bookmarks_error_title_list_name_already_taken">Taj naziv je već zauzet</string>
|
||||||
|
<string name="bookmarks_error_message_list_name_already_taken">Molimo odaberite drugi naziv</string>
|
||||||
|
<string name="bookmarks_empty_list_title">Ova Lista je prazna</string>
|
||||||
|
<string name="bookmarks_empty_list_message">Za dodavanje Oznake dotaknite mjesto na karti, a zatim dodirnite ikonu zvjezdice</string>
|
||||||
|
<string name="sort_bookmarks">Sortiraj Oznake</string>
|
||||||
|
<string name="bookmark_color">Boja Oznake</string>
|
||||||
|
<string name="share_my_location">Podijeli moju lokaciju</string>
|
||||||
|
<string name="pref_zoom_title">Gumbi za zumiranje</string>
|
||||||
|
<string name="pref_map_3d_title">Pogled iz perspektive</string>
|
||||||
|
<string name="pref_map_3d_buildings_title">3D zgrade</string>
|
||||||
|
<string name="pref_tts_enable_title">Glasovne najave</string>
|
||||||
|
<string name="pref_tts_street_names_title">Najavi nazive ulica</string>
|
||||||
|
<string name="pref_tts_street_names_description">Kada je omogućeno, naziv ulice ili izlaza gdje koji treba skrenuti bit će izgovoren naglas.</string>
|
||||||
|
<string name="pref_tts_language_title">Jezik glasovnih najava</string>
|
||||||
|
<string name="pref_tts_test_voice_title">Testiranje glasovnih najava</string>
|
||||||
|
<string name="pref_tts_playing_test_voice">Provjerite glasnoću ili sistemske postavke za pretvaranje teksta u govor ako sada ne čujete glas</string>
|
||||||
|
<string name="pref_tts_unavailable">Nije dostupno</string>
|
||||||
|
<string name="pref_map_auto_zoom">Automatsko zumiranje</string>
|
||||||
|
<string name="search_show_on_map">Prikaži na karti</string>
|
||||||
|
<string name="feedback">Povratne informacije</string>
|
||||||
|
<string name="faq">Često postavljana pitanja</string>
|
||||||
|
<string name="how_to_support_us">Volontiraj i poboljšaj CoMaps</string>
|
||||||
|
<string name="compass_calibration_recommended">Poboljšajte preciznost pokazivača smjera gibanja kruženjem telefona u obliku osmice kako biste kalibrirali kompas.</string>
|
||||||
|
<string name="compass_calibration_required">Pomičite telefon u obliku figure osmice kako biste kalibrirali kompas i popravili strelicu indikatora smjera na karti.</string>
|
||||||
|
<string name="long_tap_toast">Ponovno dugo dodirnite kartu da biste prikazali sučelje</string>
|
||||||
|
<string name="downloader_update_all_button">Ažuriraj sve</string>
|
||||||
|
<string name="downloader_cancel_all">Otkaži sve</string>
|
||||||
|
<string name="downloader_near_me_subtitle">U mojoj blizini</string>
|
||||||
|
<string name="downloader_download_all_button">Preuzmi sve</string>
|
||||||
|
<string name="downloader_delete_map_while_routing_dialog">Za brisanje karte, molimo prvo zaustavite navigaciju</string>
|
||||||
|
<string name="routing_failed_cross_mwm_building">Rute se mogu kreirati samo ako su u potpunosti unutar karte jedne regije.</string>
|
||||||
|
<string name="downloader_download_map">Preuzmi kartu</string>
|
||||||
|
<string name="downloader_delete_map">Obriši kartu</string>
|
||||||
|
<string name="downloader_update_map">Ažuriraj kartu</string>
|
||||||
|
<string name="dialog_routing_select_closer_end">Molimo odaberite odredišnu točku koja se nalazi bliže cesti</string>
|
||||||
|
<string name="dialog_routing_change_intermediate">Nije moguće pronaći međutočku</string>
|
||||||
|
<string name="dialog_routing_intermediate_not_determined">Molimo prilagodite svoju međutočku</string>
|
||||||
|
<string name="dialog_routing_system_error">Sistemska greška</string>
|
||||||
|
<string name="dialog_routing_application_error">Nije moguće napraviti rutu zbog greške u aplikaciji</string>
|
||||||
|
<string name="dialog_routing_try_again">Pokušajte ponovno</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -163,7 +163,7 @@
|
|||||||
<!-- Alert message that we can't run Map Storage settings due to some reasons. -->
|
<!-- Alert message that we can't run Map Storage settings due to some reasons. -->
|
||||||
<string name="cant_change_this_setting">Le impostazioni di archiviazione delle mappe sono al momento disabilitate</string>
|
<string name="cant_change_this_setting">Le impostazioni di archiviazione delle mappe sono al momento disabilitate</string>
|
||||||
<!-- Alert message that downloading is in progress. -->
|
<!-- Alert message that downloading is in progress. -->
|
||||||
<string name="downloading_is_active">Lo scaricamento della mappa è in corso</string>
|
<string name="downloading_is_active">Scaricamento mappa in corso</string>
|
||||||
<!-- Share my position using SMS, %1$@ contains om:// and %2$@ https://comaps.app link WITHOUT NAME. @NOTE non-ascii symbols in the link will result in max 70 characters SMS instead of 140. -->
|
<!-- Share my position using SMS, %1$@ contains om:// and %2$@ https://comaps.app link WITHOUT NAME. @NOTE non-ascii symbols in the link will result in max 70 characters SMS instead of 140. -->
|
||||||
<string name="my_position_share_sms">Guarda la mia posizione in CoMaps! %1$s o %2$s Non hai scaricato l\'app? La puoi scaricare da qui: https://www.comaps.app/download/</string>
|
<string name="my_position_share_sms">Guarda la mia posizione in CoMaps! %1$s o %2$s Non hai scaricato l\'app? La puoi scaricare da qui: https://www.comaps.app/download/</string>
|
||||||
<!-- Subject for emailed bookmark -->
|
<!-- Subject for emailed bookmark -->
|
||||||
@@ -219,7 +219,7 @@
|
|||||||
<!-- Settings «Route» category: «Test Voice Directions» title -->
|
<!-- Settings «Route» category: «Test Voice Directions» title -->
|
||||||
<string name="pref_tts_test_voice_title">Prova le indicazioni vocali</string>
|
<string name="pref_tts_test_voice_title">Prova le indicazioni vocali</string>
|
||||||
<!-- Settings «Route» category: Pop-up message when clicking «Test Voice Directions» -->
|
<!-- Settings «Route» category: Pop-up message when clicking «Test Voice Directions» -->
|
||||||
<string name="pref_tts_playing_test_voice">Controlla il volume o le impostazioni del sistema di sintesi vocale se ora non senti la voce</string>
|
<string name="pref_tts_playing_test_voice">Controlla il volume o le impostazioni del sistema di sintesi vocale se non senti la voce</string>
|
||||||
<!-- Settings «Route» category: «Tts unavailable» subtitle -->
|
<!-- Settings «Route» category: «Tts unavailable» subtitle -->
|
||||||
<string name="pref_tts_unavailable">Non disponibile</string>
|
<string name="pref_tts_unavailable">Non disponibile</string>
|
||||||
<string name="pref_map_auto_zoom">Zoom automatico</string>
|
<string name="pref_map_auto_zoom">Zoom automatico</string>
|
||||||
@@ -291,7 +291,7 @@
|
|||||||
<!-- location service disabled -->
|
<!-- location service disabled -->
|
||||||
<string name="enable_location_services">Abilita i servizi di localizzazione</string>
|
<string name="enable_location_services">Abilita i servizi di localizzazione</string>
|
||||||
<string name="save">Salva</string>
|
<string name="save">Salva</string>
|
||||||
<string name="create">crea</string>
|
<string name="create">Crea</string>
|
||||||
<!-- red color -->
|
<!-- red color -->
|
||||||
<string name="red">Rosso</string>
|
<string name="red">Rosso</string>
|
||||||
<!-- yellow color -->
|
<!-- yellow color -->
|
||||||
@@ -872,7 +872,7 @@
|
|||||||
<string name="delete_track_dialog_title">Eliminare %s?</string>
|
<string name="delete_track_dialog_title">Eliminare %s?</string>
|
||||||
<string name="pref_tts_no_system_tts_short">Motore testo - parlato non trovato, controlla le impostazioni dell\'app</string>
|
<string name="pref_tts_no_system_tts_short">Motore testo - parlato non trovato, controlla le impostazioni dell\'app</string>
|
||||||
<string name="avoid_steps">Evita scale</string>
|
<string name="avoid_steps">Evita scale</string>
|
||||||
<string name="unknown_power_output">sconosciuto</string>
|
<string name="unknown_power_output">Sconosciuto</string>
|
||||||
<string name="charge_socket_type2">Tipo 2 (senza cavo)</string>
|
<string name="charge_socket_type2">Tipo 2 (senza cavo)</string>
|
||||||
<string name="charge_socket_type2_cable">Tipo 2 (con cavo)</string>
|
<string name="charge_socket_type2_cable">Tipo 2 (con cavo)</string>
|
||||||
<string name="charge_socket_type1">Tipo 1</string>
|
<string name="charge_socket_type1">Tipo 1</string>
|
||||||
@@ -896,4 +896,6 @@
|
|||||||
<string name="editor_submit">Conferma</string>
|
<string name="editor_submit">Conferma</string>
|
||||||
<string name="charge_socket_chademo">CHAdeMO</string>
|
<string name="charge_socket_chademo">CHAdeMO</string>
|
||||||
<string name="avoid_paved">Evita le strade asfaltate</string>
|
<string name="avoid_paved">Evita le strade asfaltate</string>
|
||||||
|
<string name="charge_socket_schuko">Domestico EU</string>
|
||||||
|
<string name="power_management">Risparmio energetico</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
374
android/app/src/main/res/values-kw/strings.xml
Normal file
374
android/app/src/main/res/values-kw/strings.xml
Normal file
@@ -0,0 +1,374 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<string name="app_site_url">https://comaps.app/</string>
|
||||||
|
<string name="back">Dehweles</string>
|
||||||
|
<string name="cancel">Hedhi</string>
|
||||||
|
<string name="delete">Dilea</string>
|
||||||
|
<string name="download_maps">Iskarga Mappys</string>
|
||||||
|
<string name="kilometres">Kilometrow</string>
|
||||||
|
<string name="miles">Mildiryow</string>
|
||||||
|
<string name="later">Wosa henna</string>
|
||||||
|
<string name="search">Hwilas</string>
|
||||||
|
<string name="search_map">Hwilas Mappa</string>
|
||||||
|
<string name="limited_accuracy">Kewerder Strothys</string>
|
||||||
|
<string name="zoom_to_country">Diskwedhes war dhe mappa</string>
|
||||||
|
<string name="try_again">Assayewgh Arta</string>
|
||||||
|
<string name="about_menu_title">A-dro CoMaps</string>
|
||||||
|
<string name="about_proposition_3">• Dhywarlinen, uskis ha kesstrothys</string>
|
||||||
|
<string name="location_settings">Settyansow GPS</string>
|
||||||
|
<string name="close">Degea</string>
|
||||||
|
<string name="download">Iskarga</string>
|
||||||
|
<string name="download_resources_continue">Mos yn dhe Mappa</string>
|
||||||
|
<string name="download_country_ask">Iskarga %1$s? (%2$s)</string>
|
||||||
|
<string name="update_country_ask">Nowedhi %1$s? (%2$s)</string>
|
||||||
|
<string name="pause">Powes</string>
|
||||||
|
<string name="continue_button">Pesyewgh</string>
|
||||||
|
<string name="bookmarks">Lyververkys</string>
|
||||||
|
<string name="bookmarks_and_tracks">Lyververkys ha Lerghow</string>
|
||||||
|
<string name="name">Hanow</string>
|
||||||
|
<string name="address">Trigva</string>
|
||||||
|
<string name="list">Rol</string>
|
||||||
|
<string name="settings">Settyansow</string>
|
||||||
|
<string name="move_maps">Gwaya mappys?</string>
|
||||||
|
<string name="measurement_units">Systemow musurans</string>
|
||||||
|
<string name="measurement_units_summary">Dewis yntra mildiryow ha kilometrow</string>
|
||||||
|
<string name="category_food">Gwara boos</string>
|
||||||
|
<string name="category_transport">Karyans</string>
|
||||||
|
<string name="category_fuel">Petrol</string>
|
||||||
|
<string name="category_parking">Parkyans</string>
|
||||||
|
<string name="category_hotel">Ostel</string>
|
||||||
|
<string name="category_tourism">Tornyaseth</string>
|
||||||
|
<string name="category_entertainment">Didhan</string>
|
||||||
|
<string name="category_atm">Toll y\'n fos</string>
|
||||||
|
<string name="category_children">Dy\'gol teylu</string>
|
||||||
|
<string name="category_bank">Arghanti</string>
|
||||||
|
<string name="category_pharmacy">Ferylva</string>
|
||||||
|
<string name="category_hospital">Klavji</string>
|
||||||
|
<string name="category_toilet">Attesva</string>
|
||||||
|
<string name="category_post">Post</string>
|
||||||
|
<string name="category_police">Kreslu</string>
|
||||||
|
<string name="category_recycling">Eylgylghyans</string>
|
||||||
|
<string name="category_water">Dowr</string>
|
||||||
|
<string name="category_rv">Komodytys Karavans</string>
|
||||||
|
<string name="description">Notennow</string>
|
||||||
|
<string name="load_kmz_title">Ow Karga Lyververkys</string>
|
||||||
|
<string name="bookmark_share_email_subject">Dydh da, checkyewgh ow pynn yn CoMaps!</string>
|
||||||
|
<string name="my_position_share_email_subject">Dydh da, checkyewgh ow tyller a\'n jydh war an mappa CoMaps!</string>
|
||||||
|
<string name="share">Kevrenna</string>
|
||||||
|
<string name="email">Ebost</string>
|
||||||
|
<string name="done">Gwrys</string>
|
||||||
|
<string name="data_version">Data OpenStreetMap: %s</string>
|
||||||
|
<string name="tracks_title">Lerghow</string>
|
||||||
|
<string name="length">Hys</string>
|
||||||
|
<string name="share_my_location">Kevrennewgh Ow Tyller</string>
|
||||||
|
<string name="prefs_group_general">Settyansow mayni</string>
|
||||||
|
<string name="prefs_group_information">Kedhlow</string>
|
||||||
|
<string name="prefs_group_route">Navygacyon</string>
|
||||||
|
<string name="pref_zoom_summary">Displetya war an mappa</string>
|
||||||
|
<string name="pref_map_style_title">Fordh Nos</string>
|
||||||
|
<string name="auto">Awtomatek</string>
|
||||||
|
<string name="pref_map_3d_title">Gwel gemusur</string>
|
||||||
|
<string name="pref_map_3d_buildings_title">Drehevyansow lymnys tri</string>
|
||||||
|
<string name="pref_tts_enable_title">Danvonadow dre lev</string>
|
||||||
|
<string name="pref_tts_street_names_title">Deklarya Henwyn Stretow</string>
|
||||||
|
<string name="pref_tts_language_title">Tavas Lev</string>
|
||||||
|
<string name="pref_tts_test_voice_title">Prov Tuyow Dre Lev</string>
|
||||||
|
<string name="pref_tts_unavailable">Nakavadow</string>
|
||||||
|
<string name="search_show_on_map">Gweles war mappa</string>
|
||||||
|
<string name="menu">Rol</string>
|
||||||
|
<string name="website">Gwiasva</string>
|
||||||
|
<string name="news">Nowodhow</string>
|
||||||
|
<string name="panoramax">Imach Panoramax</string>
|
||||||
|
<string name="feedback">Dasliv</string>
|
||||||
|
<string name="rate_the_app">Breusyans an app</string>
|
||||||
|
<string name="help">Gweres</string>
|
||||||
|
<string name="faq">Govynnow Kemmyn</string>
|
||||||
|
<string name="donate">Argevri</string>
|
||||||
|
<string name="copyright">Gwirbryntyan</string>
|
||||||
|
<string name="report_a_bug">Reportya unn kudyn</string>
|
||||||
|
<string name="downloader_update_all_button">Nowedhi Oll</string>
|
||||||
|
<string name="downloader_cancel_all">Dilea Oll</string>
|
||||||
|
<string name="downloader_near_me_subtitle">Dhe dhorn</string>
|
||||||
|
<string name="downloader_status_maps">Mappys</string>
|
||||||
|
<string name="downloader_download_all_button">Iskarga Oll</string>
|
||||||
|
<string name="downloader_download_map">Iskarga mappa</string>
|
||||||
|
<string name="downloader_retry">Hwilewgh arta</string>
|
||||||
|
<string name="downloader_delete_map">Dilea Mappa</string>
|
||||||
|
<string name="downloader_update_map">Nowedhi Mappa</string>
|
||||||
|
<string name="google_play_services">Servis GPS gans Google</string>
|
||||||
|
<string name="routing_not_enough_space">Nyns eus lowr dalghuster</string>
|
||||||
|
<string name="enable_location_services">Gallosegi Servisyow GPS mar pleg</string>
|
||||||
|
<string name="create">Gul</string>
|
||||||
|
<string name="red">Rudh</string>
|
||||||
|
<string name="yellow">Melyn</string>
|
||||||
|
<string name="blue">Blou</string>
|
||||||
|
<string name="green">Gwyrdh</string>
|
||||||
|
<string name="purple">Purpur</string>
|
||||||
|
<string name="orange">Melynrudh</string>
|
||||||
|
<string name="brown">Godhlos</string>
|
||||||
|
<string name="pink">Kigliw</string>
|
||||||
|
<string name="deep_purple">Rudhlas</string>
|
||||||
|
<string name="light_blue">Glaswyn</string>
|
||||||
|
<string name="teal">Gwerlas</string>
|
||||||
|
<string name="lime">Gwerwyn</string>
|
||||||
|
<string name="deep_orange">Rudhvelyn</string>
|
||||||
|
<string name="gray">Loos</string>
|
||||||
|
<string name="blue_gray">Glas</string>
|
||||||
|
<string name="dialog_routing_check_gps">Checkya sinell GPS</string>
|
||||||
|
<string name="dialog_routing_location_turn_on">Gallosegi servisyow GPS</string>
|
||||||
|
<string name="dialog_routing_change_end">Desedha destnans</string>
|
||||||
|
<string name="dialog_routing_system_error">Error gans an kevreyth</string>
|
||||||
|
<string name="dialog_routing_try_again">Assayewgh arta mar pleg</string>
|
||||||
|
<string name="not_now">Na Vynnav Lemmyn</string>
|
||||||
|
<string name="search_select_map">Dewis Mappa</string>
|
||||||
|
<string name="show">Showya</string>
|
||||||
|
<string name="hide">Kudha</string>
|
||||||
|
<string name="categories">Klassow</string>
|
||||||
|
<string name="history">Istori</string>
|
||||||
|
<string name="search_history_title">Istori Hwilas</string>
|
||||||
|
<string name="clear_search">Dilea Istori Hwilas</string>
|
||||||
|
<string name="read_in_wikipedia">Wikipedya</string>
|
||||||
|
<string name="wikimedia_commons">Wikimedia Commons</string>
|
||||||
|
<string name="p2p_your_location">Agas Tyller</string>
|
||||||
|
<string name="p2p_start">Dalleth</string>
|
||||||
|
<string name="next_button">Nessa</string>
|
||||||
|
<string name="editor_time_add">Addya Rol Vetyansow</string>
|
||||||
|
<string name="editor_time_delete">Dilea Rol Vetyansow</string>
|
||||||
|
<string name="editor_time_allday">Dres an Jorna (24 ourys)</string>
|
||||||
|
<string name="editor_time_open">Ygor</string>
|
||||||
|
<string name="editor_time_close">Deges</string>
|
||||||
|
<string name="editor_time_add_closed">Addya Ourys Nanegys</string>
|
||||||
|
<string name="editor_time_title">Ourys Negys</string>
|
||||||
|
<string name="editor_time_advanced">Fordh Avonsys</string>
|
||||||
|
<string name="editor_time_simple">Fordh Sempel</string>
|
||||||
|
<string name="editor_hours_closed">Ourys Nanegys</string>
|
||||||
|
<string name="editor_correct_mistake">Ewna kammgemeryans</string>
|
||||||
|
<string name="editor_add_select_location">Dewis Tyller</string>
|
||||||
|
<string name="editor_report_problem_send_button">Danvon</string>
|
||||||
|
<string name="editor_report_problem_title">Kudyn</string>
|
||||||
|
<string name="daily">Dedhyek</string>
|
||||||
|
<string name="twentyfour_seven">24/7</string>
|
||||||
|
<string name="day_off_today">Deges hedhyw</string>
|
||||||
|
<string name="day_off">Deges</string>
|
||||||
|
<string name="closed">Deges</string>
|
||||||
|
<string name="edit_opening_hours">Golegi ourys negys</string>
|
||||||
|
<string name="no_osm_account">Vyth akont OpenStreetMap?</string>
|
||||||
|
<string name="register_at_openstreetmap">Kovskrifa orth OpenStreetMap</string>
|
||||||
|
<string name="login">Omgelmi</string>
|
||||||
|
<string name="login_osm">Omgelmi dhe OpenStreetMap</string>
|
||||||
|
<string name="logout">Omdenna</string>
|
||||||
|
<string name="edit_place">Golegi Le</string>
|
||||||
|
<string name="add_language">Addya unn tavas</string>
|
||||||
|
<string name="street">Stret</string>
|
||||||
|
<string name="house_number">Niver drehevyans</string>
|
||||||
|
<string name="details">Manylyon</string>
|
||||||
|
<string name="social_media">Media Socyal</string>
|
||||||
|
<string name="building">Drehevyans</string>
|
||||||
|
<string name="add_street">Addya unn stret</string>
|
||||||
|
<string name="empty_street_name_error">Ynworra unn hanow street mar pleg</string>
|
||||||
|
<string name="choose_language">Dewis unn tavas</string>
|
||||||
|
<string name="choose_street">Dewis unn stret</string>
|
||||||
|
<string name="editor_add_phone">Addya Niver Fon</string>
|
||||||
|
<string name="level">Leur</string>
|
||||||
|
<string name="level_value_generic">Leur: %s</string>
|
||||||
|
<string name="downloader_update_maps">Nowedhi Mappys</string>
|
||||||
|
<string name="downloader_search_field_hint">Kavos mappa</string>
|
||||||
|
<string name="editor_login_error_dialog">Error dres omgelmi</string>
|
||||||
|
<string name="editor_edit_place_name_hint">Hanow a an le</string>
|
||||||
|
<string name="editor_default_language_hint">Dell yw skrifys yn an tavas teythiek</string>
|
||||||
|
<string name="editor_edit_place_category_title">Klass</string>
|
||||||
|
<string name="detailed_problem_description">Deskrifans manylys a an kudyn</string>
|
||||||
|
<string name="editor_report_problem_other_title">Kudyn dyffrans</string>
|
||||||
|
<string name="download_over_mobile_header">Iskarga dres unn kevren klapkodh?</string>
|
||||||
|
<string name="error_enter_correct_house_number">Ynworra unn niver trigva ewn</string>
|
||||||
|
<string name="editor_building_levels">Leur (ow komprehendya leur a-woles, a-der to)</string>
|
||||||
|
<string name="editor_zip_code">Kod Post</string>
|
||||||
|
<string name="error_enter_correct_zip_code">Ynworra unn kod post ewn</string>
|
||||||
|
<string name="editor_other_info">Noten dhe bodhogyon OpenStreetMap (dre dhewis)</string>
|
||||||
|
<string name="editor_more_about_osm">Moy a-dro OpenStreetMap</string>
|
||||||
|
<string name="editor_osm_history">Agas istori golegi</string>
|
||||||
|
<string name="editor_osm_notes">Agas notennow mappow</string>
|
||||||
|
<string name="editor_operator">Oberador</string>
|
||||||
|
<string name="operator">Oberador: %s</string>
|
||||||
|
<string name="kilometers_per_hour">kdo</string>
|
||||||
|
<string name="miles_per_hour">mdo</string>
|
||||||
|
<string name="hour">o</string>
|
||||||
|
<string name="minute">mynysen</string>
|
||||||
|
<string name="placepage_more_button">Moy</string>
|
||||||
|
<string name="placepage_edit_bookmark_button">Pennskrifa Lyververk</string>
|
||||||
|
<string name="placepage_personal_notes_hint">Notennow privedh (tekst bo html)</string>
|
||||||
|
<string name="editor_reset_edits_message">Dilea oll chanjyow dhywarlinen?</string>
|
||||||
|
<string name="editor_reset_edits_button">Dilea</string>
|
||||||
|
<string name="editor_remove_place_message">Dilea le keworrys?</string>
|
||||||
|
<string name="editor_remove_place_button">Dilea</string>
|
||||||
|
<string name="editor_place_doesnt_exist">Le na eksistya</string>
|
||||||
|
<string name="delete_place_empty_comment_error">Provia an acheson rag dilea an le mar pleg</string>
|
||||||
|
<string name="editor_business_vacant_button">Negys usi gwag</string>
|
||||||
|
<string name="editor_mark_business_vacant_title">Sin negys dell gwag</string>
|
||||||
|
<string name="editor_submit">Danvon</string>
|
||||||
|
<string name="error_enter_correct_phone">Ynworra unn niver fon ewn</string>
|
||||||
|
<string name="error_enter_correct_web">Ynworra unn trigva gwiasva ewn</string>
|
||||||
|
<string name="error_enter_correct_email">Ynworra unn trigva ebost ewn</string>
|
||||||
|
<string name="editor_level">Leur (0 usi leur a-woles)</string>
|
||||||
|
<string name="error_enter_correct_level">Ynworra unn niver leur ewn</string>
|
||||||
|
<string name="error_enter_correct_facebook_page">Ynworra unn trigva Lyverenep, akont, bo hanow folen ewn</string>
|
||||||
|
<string name="error_enter_correct_instagram_page">Ynworra unn hanow usyer Instagram bo trigva gwiasva ewn</string>
|
||||||
|
<string name="error_enter_correct_twitter_page">Ynworra unn hanow usyer Twytter bo trigva gwiasva ewn</string>
|
||||||
|
<string name="error_enter_correct_vk_page">Ynworra unn hanow usyer VK bo trigva gwiasva ewn</string>
|
||||||
|
<string name="error_enter_correct_line_page">Ynworra unn ID LINE bo trigva gwiasva ewn</string>
|
||||||
|
<string name="error_enter_correct_fediverse_page">Ynworra unn hanow usyer Mastodon bo trigva gwiasva ewn</string>
|
||||||
|
<string name="error_enter_correct_bluesky_page">Ynworra unn hanow usyer Bluesky bo trigva gwiasva ewn</string>
|
||||||
|
<string name="placepage_add_place_button">Addya Le dhe OpenStreetMap</string>
|
||||||
|
<string name="osm_note_hint">Bo, yn tereylys, skrifa unn noten dhe kemeneth OpenStreetMap, ha orth nebonan yll addya bo ewnhe unn le omma.</string>
|
||||||
|
<string name="osm_note_toast">Noten a vydh danvon dhe OpenStreetMap</string>
|
||||||
|
<string name="editor_share_to_all_dialog_title">A vynn\'ta mos danvon dhe oll usyoryon?</string>
|
||||||
|
<string name="navigation_stop_button">Hedhi</string>
|
||||||
|
<string name="track_recording">Y\'n eur ma rekordya an lergh</string>
|
||||||
|
<string name="accept">Amyttya</string>
|
||||||
|
<string name="decline">Nagha</string>
|
||||||
|
<string name="mobile_data_option_today">Unn Hedhyw</string>
|
||||||
|
<string name="traffic_update_app">Nowedhi CoMaps mar pleg</string>
|
||||||
|
<string name="feedback_general">Dasliv Mayni</string>
|
||||||
|
<string name="learn_more">Dyski moy</string>
|
||||||
|
<string name="button_plan">Devisya</string>
|
||||||
|
<string name="placepage_remove_stop">Dilea Powes</string>
|
||||||
|
<string name="placepage_add_stop">Addya Powes</string>
|
||||||
|
<string name="error_enter_correct_name">Ynworra unn hanow ewn mar pleg</string>
|
||||||
|
<string name="bookmark_lists">Rolyow</string>
|
||||||
|
<string name="bookmark_lists_hide_all">Keles oll</string>
|
||||||
|
<string name="bookmark_lists_show_all">Diskwedhes oll</string>
|
||||||
|
<string name="bookmarks_create_new_group">Gul unn rol nowydh</string>
|
||||||
|
<string name="bookmarks_import">Ynperthi Lyververkys ha Lerghow</string>
|
||||||
|
<string name="bookmarks_error_message_empty_list_name">Ynworra an hanow rol mar pleg</string>
|
||||||
|
<string name="bookmarks_new_list_hint">Rol nowydh</string>
|
||||||
|
<string name="bookmarks_error_title_list_name_already_taken">An hanow ma usi seulabrys yn usyans</string>
|
||||||
|
<string name="bookmarks_error_message_list_name_already_taken">Dewis aral hanow mar pleg</string>
|
||||||
|
<string name="please_wait">Gortos mar pleg…</string>
|
||||||
|
<string name="phone_number">Niver fon</string>
|
||||||
|
<string name="profile">Akont OpenStreetMap</string>
|
||||||
|
<string name="restore">Astiveri</string>
|
||||||
|
<string name="privacy">Privetter</string>
|
||||||
|
<string name="privacy_policy">Polici privetter</string>
|
||||||
|
<string name="power_management">Dyghtyans batri</string>
|
||||||
|
<string name="terms_of_use">Termys usadow</string>
|
||||||
|
<string name="button_layer_traffic">Data daromdak</string>
|
||||||
|
<string name="subway">Metro</string>
|
||||||
|
<string name="layers_title">Gisyow ha gwiskasow mappow</string>
|
||||||
|
<string name="bookmarks_empty_list_title">An rol ma usi gwag</string>
|
||||||
|
<string name="category_desc_more">…moy</string>
|
||||||
|
<string name="export_file">Esperthi KMZ</string>
|
||||||
|
<string name="export_file_gpx">Esperthi GPX</string>
|
||||||
|
<string name="delete_list">Dilea rol</string>
|
||||||
|
<string name="speedcams_alert_title">Kameras finweth tooth</string>
|
||||||
|
<string name="place_description_title">Deskrifans Le</string>
|
||||||
|
<string name="pref_tts_speedcams_auto">Gwarnya a tothya</string>
|
||||||
|
<string name="define_to_avoid_btn">Styrya fordhow rag avodya</string>
|
||||||
|
<string name="toll_road">Tollfordh</string>
|
||||||
|
<string name="unpaved_road">Fordh dor</string>
|
||||||
|
<string name="ferry_crossing">Kowbalhyns</string>
|
||||||
|
<string name="yes">Ya</string>
|
||||||
|
<string name="no">Na</string>
|
||||||
|
<string name="yes_available">Ya</string>
|
||||||
|
<string name="no_available">Na</string>
|
||||||
|
<string name="capacity">Dalghuster: %s</string>
|
||||||
|
<string name="network">Rosweyth: %s</string>
|
||||||
|
<string name="trip_finished">Hwi re wrug!</string>
|
||||||
|
<string name="ok">Da lowr</string>
|
||||||
|
<string name="sort">Sortya…</string>
|
||||||
|
<string name="sort_bookmarks">Sortya lyververkys</string>
|
||||||
|
<string name="by_default">Dre defowt</string>
|
||||||
|
<string name="by_type">Dre eghen</string>
|
||||||
|
<string name="by_distance">Dre pellder</string>
|
||||||
|
<string name="by_date">Dre dydh</string>
|
||||||
|
<string name="by_name">Dre hanow</string>
|
||||||
|
<string name="near_me_sorttype">Dhe dhorn</string>
|
||||||
|
<string name="others_sorttype">Re erel</string>
|
||||||
|
<string name="food_places">Boos</string>
|
||||||
|
<string name="tourist_places">Tornyaseth</string>
|
||||||
|
<string name="museums">Gwithtiow</string>
|
||||||
|
<string name="parks">Parkow</string>
|
||||||
|
<string name="swim_places">Neuvya</string>
|
||||||
|
<string name="mountains">Menydhyow</string>
|
||||||
|
<string name="animals">Bestes</string>
|
||||||
|
<string name="hotels">Ostelyow</string>
|
||||||
|
<string name="buildings">Drehevyansow</string>
|
||||||
|
<string name="money">Mona</string>
|
||||||
|
<string name="shops">Gwerthjiow</string>
|
||||||
|
<string name="parkings">Parkyans</string>
|
||||||
|
<string name="fuel_places">Petrolva</string>
|
||||||
|
<string name="medicine">Medhegneth</string>
|
||||||
|
<string name="search_in_the_list">Hwilas yn an rol</string>
|
||||||
|
<string name="religious_places">Leow kryjyk</string>
|
||||||
|
<string name="select_list">Dewis rol</string>
|
||||||
|
<string name="transit_not_found">Navygacyon metro yn an pow ma usi nakavadow hwath</string>
|
||||||
|
<string name="button_layer_isolines">Linen kettres</string>
|
||||||
|
<string name="elevation_profile_min_elevation">Ughelder ispoyntel</string>
|
||||||
|
<string name="elevation_profile_max_elevation">Ughelder ughboyntel</string>
|
||||||
|
<string name="elevation_profile_difficulty">Kaletter</string>
|
||||||
|
<string name="elevation_profile_distance">Pellder:</string>
|
||||||
|
<string name="elevation_profile_time">Prys:</string>
|
||||||
|
<string name="isolines_toast_zooms_1_10">Moghhe dhe furya linen kettres</string>
|
||||||
|
<string name="download_map_title">Iskarga an mappa bys simpel</string>
|
||||||
|
<string name="disk_error_title">Error plasen</string>
|
||||||
|
<string name="connection_failure">Defowt kevren</string>
|
||||||
|
<string name="change_map_locale">Tavas mappow</string>
|
||||||
|
<string name="splash_subtitle">Data mappow a OpenStreetMap</string>
|
||||||
|
<string name="telegram_url">https://t.me/CoMapsApp/</string>
|
||||||
|
<string name="instagram_url">https://www.instagram.com/comaps.app/</string>
|
||||||
|
<string name="tts_info_link">https://www.comaps.app/support/tts-configuration-guide-for-android/</string>
|
||||||
|
<string name="osm_wiki_about_url">https://wiki.openstreetmap.org/wiki/About_OpenStreetMap</string>
|
||||||
|
<string name="comma_separated_pair">%1$s, %2$s</string>
|
||||||
|
<string name="app_tip_00">Meur ras rag usya a\'gan mappys drehevys gans an kemeneth!</string>
|
||||||
|
<string name="app_tip_01">Gans agas argevrohow ha skoodhyans, ni a yll gul an mappys an gwella yn an Nor!</string>
|
||||||
|
<string name="app_tip_02">Yw da genes a\'gan app? Argevri mar pleg dhe skoodhya an displegyans! Yw na da genes a\'n hwath? Mar pleg, kedhlewgh dhyn prag ha ni a ewnhe a\'n!</string>
|
||||||
|
<string name="app_tip_06">Hwi a yll gweres treylya a\'gan app yn agas tavas.</string>
|
||||||
|
<string name="aa_connected_title">Dha vos lemmyn rosweythys dhe Android Auto</string>
|
||||||
|
<string name="aa_grant_permissions">Grontya grontys</string>
|
||||||
|
<string name="button_layer_outdoor">Yn-mes</string>
|
||||||
|
<string name="browser_not_available">Peurell nakavadow</string>
|
||||||
|
<string name="volume">Ughelder</string>
|
||||||
|
<string name="bookmarks_export">Esperthi oll Lyververkys ha Lerghow</string>
|
||||||
|
<string name="clear_the_search">Dilea an hwithrans</string>
|
||||||
|
<string name="zoom_in">Moghhe</string>
|
||||||
|
<string name="zoom_out">Lehe</string>
|
||||||
|
<string name="website_menu">Kevren Rol Voos</string>
|
||||||
|
<string name="view_menu">Vu Rol Voos</string>
|
||||||
|
<string name="open_in_app">Ygeri yn Aral App</string>
|
||||||
|
<string name="select_option">Dewis dewis</string>
|
||||||
|
<string name="outdoor_seating">Esedhow yn-mes</string>
|
||||||
|
<string name="start_track_recording">Rekordya Lergh</string>
|
||||||
|
<string name="choose_color">Dewis Kolor</string>
|
||||||
|
<string name="edit_track">Golegi Lergh</string>
|
||||||
|
<string name="nav_auto">Awtomatek yn navygacyon</string>
|
||||||
|
<string name="pref_left_button_title">Boton kledh dewisyow</string>
|
||||||
|
<string name="backup_interval_every_day">Dedhyek</string>
|
||||||
|
<string name="backup_interval_every_week">Seythennyek</string>
|
||||||
|
<string name="clear">Dilea</string>
|
||||||
|
<string name="vehicle">Karr</string>
|
||||||
|
<string name="pedestrian">Kerdher</string>
|
||||||
|
<string name="bicycle">Diwros</string>
|
||||||
|
<string name="ruler">Rewlell</string>
|
||||||
|
<string name="bookmark_color">Kolor lyververk</string>
|
||||||
|
<string name="about_help">A-dro ha Gweres</string>
|
||||||
|
<string name="share_track">Kevren Lergh</string>
|
||||||
|
<string name="delete_track_dialog_title">Dilea %s?</string>
|
||||||
|
<string name="unknown_power_output">ankoth</string>
|
||||||
|
<string name="charge_socket_type2">Eghen diw (na fun)</string>
|
||||||
|
<string name="charge_socket_type2_cable">Eghen diw (gans fun)</string>
|
||||||
|
<string name="charge_socket_type2_combo">Eghen diw kesunyans</string>
|
||||||
|
<string name="charge_socket_type1">Eghen unn</string>
|
||||||
|
<string name="charge_socket_nacs">NACS</string>
|
||||||
|
<string name="charge_socket_chademo">CHAdeMO</string>
|
||||||
|
<string name="charge_socket_schuko">Unyans Europek a-bervedh</string>
|
||||||
|
<string name="unknown_socket_type">ankoth kraw</string>
|
||||||
|
<string name="edit_socket_info_tooltip">Gul krawyow nowydh bo golegi krowyow a‑lemmyn.</string>
|
||||||
|
<string name="charging_station_available_sockets">Krawyow kavadow</string>
|
||||||
|
<string name="charge_socket_unknown_other">Aral bo anokth</string>
|
||||||
|
<string name="charge_socket_count">Somm</string>
|
||||||
|
<string name="charge_socket_power">Gallosedh (kW)</string>
|
||||||
|
<string name="editor_socket">Golegi kraw</string>
|
||||||
|
<string name="unknown_count">ankoth</string>
|
||||||
|
<string name="error_value_must_be_positive">Res an niver positiv</string>
|
||||||
|
<string name="error_invalid_number">Niver anewn</string>
|
||||||
|
<string name="offline_explanation_title">Mappys Dhywarlinen</string>
|
||||||
|
</resources>
|
||||||
@@ -281,7 +281,7 @@
|
|||||||
<!-- location service disabled -->
|
<!-- location service disabled -->
|
||||||
<string name="enable_location_services">Įjunkite vietovės tarnybas</string>
|
<string name="enable_location_services">Įjunkite vietovės tarnybas</string>
|
||||||
<string name="save">Įrašyti</string>
|
<string name="save">Įrašyti</string>
|
||||||
<string name="create">kurti</string>
|
<string name="create">Kurti</string>
|
||||||
<!-- red color -->
|
<!-- red color -->
|
||||||
<string name="red">Raudonas</string>
|
<string name="red">Raudonas</string>
|
||||||
<!-- yellow color -->
|
<!-- yellow color -->
|
||||||
@@ -401,8 +401,8 @@
|
|||||||
<string name="twentyfour_seven">24×7</string>
|
<string name="twentyfour_seven">24×7</string>
|
||||||
<string name="day_off_today">Šiandien uždaryta</string>
|
<string name="day_off_today">Šiandien uždaryta</string>
|
||||||
<string name="day_off">Uždaryta</string>
|
<string name="day_off">Uždaryta</string>
|
||||||
<string name="opens_in">Atsidaro už %s</string>
|
<string name="opens_in">Atidaroma už %s</string>
|
||||||
<string name="closes_in">Užsidaro už %s</string>
|
<string name="closes_in">Uždaroma už %s</string>
|
||||||
<string name="closed">Uždaryta</string>
|
<string name="closed">Uždaryta</string>
|
||||||
<string name="edit_opening_hours">Taisyti darbo valandas</string>
|
<string name="edit_opening_hours">Taisyti darbo valandas</string>
|
||||||
<string name="no_osm_account">Neturite „OpenStreetMap“ paskyros?</string>
|
<string name="no_osm_account">Neturite „OpenStreetMap“ paskyros?</string>
|
||||||
@@ -510,8 +510,8 @@
|
|||||||
<!-- Displayed when saving some edits to the map to warn against publishing personal data -->
|
<!-- Displayed when saving some edits to the map to warn against publishing personal data -->
|
||||||
<string name="editor_share_to_all_dialog_title">Ar tikrai norite šiuos pakeitimus paviešinti?</string>
|
<string name="editor_share_to_all_dialog_title">Ar tikrai norite šiuos pakeitimus paviešinti?</string>
|
||||||
<!-- Dialog before publishing the modifications to the public map. -->
|
<!-- Dialog before publishing the modifications to the public map. -->
|
||||||
<string name="editor_share_to_all_dialog_message_1">Įsitikinkite, kad neįvedėte jokių asmeninių duomenų</string>
|
<string name="editor_share_to_all_dialog_message_1">Įsitikinkite, kad neįvedėte jokių asmeninių duomenų.</string>
|
||||||
<string name="editor_share_to_all_dialog_message_2">„OpenStreetMap“ redaktoriai peržiūrės pakeitimus ir su jumis susisieks, jei kiltų klausimų</string>
|
<string name="editor_share_to_all_dialog_message_2">„OpenStreetMap“ redaktoriai peržiūrės pakeitimus ir su jumis susisieks, jei kiltų klausimų.</string>
|
||||||
<string name="navigation_stop_button">Stabdyti</string>
|
<string name="navigation_stop_button">Stabdyti</string>
|
||||||
<!-- Shown as toast when starting the recent track recording -->
|
<!-- Shown as toast when starting the recent track recording -->
|
||||||
<string name="track_recording">Trasa įrašoma</string>
|
<string name="track_recording">Trasa įrašoma</string>
|
||||||
@@ -870,4 +870,22 @@
|
|||||||
<string name="error_invalid_number">Netinkamas skaičius</string>
|
<string name="error_invalid_number">Netinkamas skaičius</string>
|
||||||
<string name="offline_explanation_title">Žemėlapio parsisiuntimas</string>
|
<string name="offline_explanation_title">Žemėlapio parsisiuntimas</string>
|
||||||
<string name="offline_explanation_text">Kad galėtumėte matyti šios vietovės žemėlapį ir planuoti jame keliones, pirma turite jį atsiųsti.</string>
|
<string name="offline_explanation_text">Kad galėtumėte matyti šios vietovės žemėlapį ir planuoti jame keliones, pirma turite jį atsiųsti.</string>
|
||||||
|
<string name="avoid_paved">Vengti grįstų kelių</string>
|
||||||
|
<string name="opens_at">Atidaroma %s</string>
|
||||||
|
<string name="closes_at">Uždaroma %s</string>
|
||||||
|
<string name="opens_day_at">Atidaroma %1$s , %2$s</string>
|
||||||
|
<string name="closes_day_at">Uždaroma %1$s, %2$s</string>
|
||||||
|
<plurals name="minutes_short">
|
||||||
|
<item quantity="one">%d min.</item>
|
||||||
|
<item quantity="few">%d min.</item>
|
||||||
|
<item quantity="many">%d min.</item>
|
||||||
|
<item quantity="other">%d min.</item>
|
||||||
|
</plurals>
|
||||||
|
<string name="editor_business_vacant_button">Erdvė nenaudojama</string>
|
||||||
|
<string name="editor_mark_business_vacant_title">Pažymėti erdvę kaip nenaudojamą</string>
|
||||||
|
<string name="editor_mark_business_vacant_description">Pasinaudokite šia funkcija, jei šioje erdvėje buvusi įmonė ar įstaiga išsikėlė ir ši erdvė dabar nenaudojama.</string>
|
||||||
|
<string name="editor_submit">Pateikti</string>
|
||||||
|
<string name="power_management">Energijos naudojimas</string>
|
||||||
|
<string name="charge_socket_schuko">Buitinis ES</string>
|
||||||
|
<string name="list_description_empty">Paredaguokite sąrašą ir pridėkite aprašymą</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -896,4 +896,7 @@
|
|||||||
<string name="editor_submit">Send</string>
|
<string name="editor_submit">Send</string>
|
||||||
<string name="charge_socket_schuko">Schuko</string>
|
<string name="charge_socket_schuko">Schuko</string>
|
||||||
<string name="power_management">Strømstyring</string>
|
<string name="power_management">Strømstyring</string>
|
||||||
|
<string name="navigation_start_tts_disabled_message">Taleveiledninger deaktivert: TTS-motor ikke tilgjengelig</string>
|
||||||
|
<string name="navigation_start_tts_message">"Starter navigering, taleveiledningsspråk: "</string>
|
||||||
|
<string name="prefs_speed_cameras_information">Fotoboksvarsler er deaktivert i land hvor varsler er forbudt i henhold til lokal lovgivning.</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -88,19 +88,19 @@
|
|||||||
<item name="android:textAppearanceSmall">@style/TextAppearance.Small</item>
|
<item name="android:textAppearanceSmall">@style/TextAppearance.Small</item>
|
||||||
<item name="android:textAppearanceMedium">@style/TextAppearance.Medium</item>
|
<item name="android:textAppearanceMedium">@style/TextAppearance.Medium</item>
|
||||||
<item name="android:textAppearanceLarge">@style/TextAppearance.Large</item>
|
<item name="android:textAppearanceLarge">@style/TextAppearance.Large</item>
|
||||||
<item name="fontHeadline1">@style/TextAppearance.MdcTypographyStyles.Headline1</item>
|
<item name="fontHeadline1">@style/TextAppearance.Headline1</item>
|
||||||
<item name="fontHeadline2">@style/TextAppearance.MdcTypographyStyles.Headline2</item>
|
<item name="fontHeadline2">@style/TextAppearance.Headline2</item>
|
||||||
<item name="fontHeadline3">@style/TextAppearance.MdcTypographyStyles.Headline3</item>
|
<item name="fontHeadline3">@style/TextAppearance.Headline3</item>
|
||||||
<item name="fontHeadline4">@style/TextAppearance.MdcTypographyStyles.Headline4</item>
|
<item name="fontHeadline4">@style/TextAppearance.Headline4</item>
|
||||||
<item name="fontHeadline5">@style/TextAppearance.MaterialComponents.Headline5</item>
|
<item name="fontHeadline5">@style/TextAppearance.MaterialComponents.Headline5</item>
|
||||||
<item name="fontHeadline6">@style/TextAppearance.MdcTypographyStyles.Headline6</item>
|
<item name="fontHeadline6">@style/TextAppearance.Headline6</item>
|
||||||
<item name="fontSubtitle1">@style/TextAppearance.MdcTypographyStyles.Subtitle1</item>
|
<item name="fontSubtitle1">@style/TextAppearance.Subtitle1</item>
|
||||||
<item name="fontSubtitle2">@style/TextAppearance.MdcTypographyStyles.Subtitle2</item>
|
<item name="fontSubtitle2">@style/TextAppearance.Subtitle2</item>
|
||||||
<item name="fontBody1">@style/TextAppearance.MdcTypographyStyles.Body1</item>
|
<item name="fontBody1">@style/TextAppearance.Body1</item>
|
||||||
<item name="fontBody2">@style/TextAppearance.MdcTypographyStyles.Body2</item>
|
<item name="fontBody2">@style/TextAppearance.Body2</item>
|
||||||
<item name="fontButton">@style/TextAppearance.MdcTypographyStyles.Button</item>
|
<item name="fontButton">@style/TextAppearance.Button</item>
|
||||||
<item name="fontCaption">@style/TextAppearance.MdcTypographyStyles.Caption</item>
|
<item name="fontCaption">@style/TextAppearance.Caption</item>
|
||||||
<item name="fontOverline">@style/TextAppearance.MdcTypographyStyles.Overline</item>
|
<item name="fontOverline">@style/TextAppearance.Overline</item>
|
||||||
<item name="drivingOptionsViewBg">@color/bg_primary_dark</item>
|
<item name="drivingOptionsViewBg">@color/bg_primary_dark</item>
|
||||||
<item name="elevationProfilePropertyBg">@drawable/bg_rounded_rect</item>
|
<item name="elevationProfilePropertyBg">@drawable/bg_rounded_rect</item>
|
||||||
<item name="elevationProfilePropIconTint">@color/white_secondary</item>
|
<item name="elevationProfilePropIconTint">@color/white_secondary</item>
|
||||||
|
|||||||
@@ -907,4 +907,7 @@
|
|||||||
<string name="editor_mark_business_vacant_description">Gebruik dit als het bedrijf is verhuisd en de ruimte leeg is en klaar is voor een nieuwe huurder.</string>
|
<string name="editor_mark_business_vacant_description">Gebruik dit als het bedrijf is verhuisd en de ruimte leeg is en klaar is voor een nieuwe huurder.</string>
|
||||||
<string name="power_management">Energiebeheer</string>
|
<string name="power_management">Energiebeheer</string>
|
||||||
<string name="charge_socket_schuko">Binnenlandse EU</string>
|
<string name="charge_socket_schuko">Binnenlandse EU</string>
|
||||||
|
<string name="navigation_start_tts_message">"Navigatie starten, taal voor steminstructie: "</string>
|
||||||
|
<string name="prefs_speed_cameras_information">Waarschuwingen voor flitsers zijn uitgeschakeld in landen waar deze wettelijk zijn verboden.</string>
|
||||||
|
<string name="navigation_start_tts_disabled_message">Spraakinstructies uitgeschakeld: TTS-engine niet beschikbaar</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -915,4 +915,7 @@
|
|||||||
<string name="pref_tts_no_system_tts_short">Nie znaleziono silnika text-to-speech, sprawdź ustawienia aplikacji</string>
|
<string name="pref_tts_no_system_tts_short">Nie znaleziono silnika text-to-speech, sprawdź ustawienia aplikacji</string>
|
||||||
<string name="list_description_empty">Edytuj listę, aby dodać opis</string>
|
<string name="list_description_empty">Edytuj listę, aby dodać opis</string>
|
||||||
<string name="editor_submit">Wyślij</string>
|
<string name="editor_submit">Wyślij</string>
|
||||||
|
<string name="prefs_speed_cameras_information">Ostrzeżenia o fotoradarach są wyłączone w krajach, gdzie takie alerty są zabronione prawnie.</string>
|
||||||
|
<string name="navigation_start_tts_message">"Startowanie nawigacji, język komunikatów głosowych: "</string>
|
||||||
|
<string name="navigation_start_tts_disabled_message">Komunikaty głosowe są wyłączone: silnik TTS jest niedostępny</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -631,4 +631,12 @@
|
|||||||
<string name="bicycle">Kolo</string>
|
<string name="bicycle">Kolo</string>
|
||||||
<string name="unknown_power_output">neznano</string>
|
<string name="unknown_power_output">neznano</string>
|
||||||
<string name="ruler">Ravnilo</string>
|
<string name="ruler">Ravnilo</string>
|
||||||
|
<string name="opens_at">Odpre se ob %s</string>
|
||||||
|
<string name="closes_at">Zapre se ob %s</string>
|
||||||
|
<plurals name="minutes_short">
|
||||||
|
<item quantity="one">%d min</item>
|
||||||
|
<item quantity="two">%d min</item>
|
||||||
|
<item quantity="few">%d min</item>
|
||||||
|
<item quantity="other">%d min</item>
|
||||||
|
</plurals>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -510,8 +510,8 @@
|
|||||||
<string name="placepage_more_button">更多</string>
|
<string name="placepage_more_button">更多</string>
|
||||||
<string name="placepage_edit_bookmark_button">编辑书签</string>
|
<string name="placepage_edit_bookmark_button">编辑书签</string>
|
||||||
<string name="placepage_personal_notes_hint">个人注记(文字或 html)</string>
|
<string name="placepage_personal_notes_hint">个人注记(文字或 html)</string>
|
||||||
<string name="editor_reset_edits_message">重置所有本地更改?</string>
|
<string name="editor_reset_edits_message">舍弃所有本地更改?</string>
|
||||||
<string name="editor_reset_edits_button">重置</string>
|
<string name="editor_reset_edits_button">舍弃</string>
|
||||||
<string name="editor_remove_place_message">删除已添加的地点?</string>
|
<string name="editor_remove_place_message">删除已添加的地点?</string>
|
||||||
<string name="editor_remove_place_button">删除</string>
|
<string name="editor_remove_place_button">删除</string>
|
||||||
<string name="editor_place_doesnt_exist">该地点不存在</string>
|
<string name="editor_place_doesnt_exist">该地点不存在</string>
|
||||||
@@ -907,4 +907,9 @@
|
|||||||
<string name="editor_mark_business_vacant_description">如果商铺已搬离且场地空置待租,请使用此选项。</string>
|
<string name="editor_mark_business_vacant_description">如果商铺已搬离且场地空置待租,请使用此选项。</string>
|
||||||
<string name="editor_submit">提交</string>
|
<string name="editor_submit">提交</string>
|
||||||
<string name="avoid_paved">避开铺装道路</string>
|
<string name="avoid_paved">避开铺装道路</string>
|
||||||
|
<string name="power_management">电源管理</string>
|
||||||
|
<string name="charge_socket_schuko">欧盟标准</string>
|
||||||
|
<string name="navigation_start_tts_message">"启动导航,语音指令语言: "</string>
|
||||||
|
<string name="prefs_speed_cameras_information">在当地法律禁止发出警报的国家/地区,测速摄像头警告功能将被禁用。</string>
|
||||||
|
<string name="navigation_start_tts_disabled_message">语音指令已禁用:TTS 引擎不可用</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -130,7 +130,6 @@
|
|||||||
<!-- Editor -->
|
<!-- Editor -->
|
||||||
<dimen name="editor_height_days">72dp</dimen>
|
<dimen name="editor_height_days">72dp</dimen>
|
||||||
<dimen name="editor_height_closed">72dp</dimen>
|
<dimen name="editor_height_closed">72dp</dimen>
|
||||||
<dimen name="editor_height_allday">56dp</dimen>
|
|
||||||
<dimen name="editor_height_field">64dp</dimen>
|
<dimen name="editor_height_field">64dp</dimen>
|
||||||
<dimen name="editor_margin_left">56dp</dimen>
|
<dimen name="editor_margin_left">56dp</dimen>
|
||||||
<dimen name="editor_auth_btn_height">@dimen/primary_button_min_height</dimen>
|
<dimen name="editor_auth_btn_height">@dimen/primary_button_min_height</dimen>
|
||||||
|
|||||||
@@ -573,6 +573,16 @@
|
|||||||
<string name="error_enter_correct_fediverse_page">Enter a valid Mastodon username or web address</string>
|
<string name="error_enter_correct_fediverse_page">Enter a valid Mastodon username or web address</string>
|
||||||
<string name="error_enter_correct_bluesky_page">Enter a valid Bluesky username or web address</string>
|
<string name="error_enter_correct_bluesky_page">Enter a valid Bluesky username or web address</string>
|
||||||
<string name="placepage_add_place_button">Add Place to OpenStreetMap</string>
|
<string name="placepage_add_place_button">Add Place to OpenStreetMap</string>
|
||||||
|
<!-- Title of info shown when the map is older than 3 to 6 months -->
|
||||||
|
<string name="place_page_map_too_old_title">Map data outdated</string>
|
||||||
|
<!-- Description of info shown when the map is older than 3 months -->
|
||||||
|
<string name="place_page_map_too_old_description"> Your current map data is very old, please update the map.</string>
|
||||||
|
<!-- Description of info shown when the app and the map are older than 6 months -->
|
||||||
|
<string name="place_page_app_too_old_description"> Your current map data is very old, please update the CoMaps app.</string>
|
||||||
|
<!-- Button to update map region, part of the map too old info -->
|
||||||
|
<string name="place_page_update_too_old_map">Update map region</string>
|
||||||
|
<!-- Toast shown after pressing add place / edit OpenStreetMap when editing is disabled -->
|
||||||
|
<string name="place_page_too_old_to_edit">OpenStreetMap editing is disabled because the map data is too old.</string>
|
||||||
<string name="osm_note_hint">Or, alternatively, leave a note to OpenStreetMap community so that someone else can add or fix a place here.</string>
|
<string name="osm_note_hint">Or, alternatively, leave a note to OpenStreetMap community so that someone else can add or fix a place here.</string>
|
||||||
<string name="osm_note_toast">Note will be sent to OpenStreetMap</string>
|
<string name="osm_note_toast">Note will be sent to OpenStreetMap</string>
|
||||||
<!-- Displayed when saving some edits to the map to warn against publishing personal data -->
|
<!-- Displayed when saving some edits to the map to warn against publishing personal data -->
|
||||||
@@ -934,6 +944,7 @@
|
|||||||
<string name="delete_track_dialog_title">Delete %s?</string>
|
<string name="delete_track_dialog_title">Delete %s?</string>
|
||||||
<string name="pref_tts_no_system_tts_short">No text-to-speech engine found, check the app settings</string>
|
<string name="pref_tts_no_system_tts_short">No text-to-speech engine found, check the app settings</string>
|
||||||
<string name="navigation_start_tts_message">"Starting Navigation, voice instruction language: "</string>
|
<string name="navigation_start_tts_message">"Starting Navigation, voice instruction language: "</string>
|
||||||
|
<string name="navigation_start_tts_disabled_message">"Voice instructions disabled: TTS engine not available"</string>
|
||||||
<string name="unknown_power_output">unknown</string>
|
<string name="unknown_power_output">unknown</string>
|
||||||
<string name="charge_socket_type2">Type 2 (no cable)</string>
|
<string name="charge_socket_type2">Type 2 (no cable)</string>
|
||||||
<string name="charge_socket_type2_cable">Type 2 (w/ cable)</string>
|
<string name="charge_socket_type2_cable">Type 2 (w/ cable)</string>
|
||||||
|
|||||||
@@ -6,11 +6,6 @@
|
|||||||
<item name="android:textStyle">normal</item>
|
<item name="android:textStyle">normal</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="MwmTextAppearance.Display1">
|
|
||||||
<item name="android:textSize">@dimen/text_size_display_1</item>
|
|
||||||
<item name="android:textColor">?android:textColorPrimary</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<style name="MwmTextAppearance.Title">
|
<style name="MwmTextAppearance.Title">
|
||||||
<item name="android:textSize">@dimen/text_size_title</item>
|
<item name="android:textSize">@dimen/text_size_title</item>
|
||||||
<item name="android:textColor">?android:textColorPrimary</item>
|
<item name="android:textColor">?android:textColorPrimary</item>
|
||||||
@@ -190,91 +185,91 @@
|
|||||||
<item name="android:textColor">@color/white_secondary</item>
|
<item name="android:textColor">@color/white_secondary</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="TextAppearance.MdcTypographyStyles.Headline1"
|
<style name="TextAppearance.Headline1"
|
||||||
parent="TextAppearance.MaterialComponents.Headline1">
|
parent="TextAppearance.Material3.DisplayLarge">
|
||||||
<item name="fontFamily">@string/robotoLight</item>
|
<item name="fontFamily">@string/robotoLight</item>
|
||||||
<item name="android:fontFamily">@string/robotoLight</item>
|
<item name="android:fontFamily">@string/robotoLight</item>
|
||||||
<item name="android:textSize">96sp</item>
|
<item name="android:textSize">96sp</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="TextAppearance.MdcTypographyStyles.Headline2"
|
<style name="TextAppearance.Headline2"
|
||||||
parent="TextAppearance.MaterialComponents.Headline2">
|
parent="TextAppearance.Material3.DisplayLarge">
|
||||||
<item name="fontFamily">@string/robotoRegular</item>
|
<item name="fontFamily">@string/robotoRegular</item>
|
||||||
<item name="android:fontFamily">@string/robotoRegular</item>
|
<item name="android:fontFamily">@string/robotoRegular</item>
|
||||||
<item name="android:textSize">60sp</item>
|
<item name="android:textSize">60sp</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="TextAppearance.MdcTypographyStyles.Headline3"
|
<style name="TextAppearance.Headline3"
|
||||||
parent="TextAppearance.MaterialComponents.Headline3">
|
parent="TextAppearance.Material3.DisplayMedium">
|
||||||
<item name="fontFamily">@string/robotoRegular</item>
|
<item name="fontFamily">@string/robotoRegular</item>
|
||||||
<item name="android:fontFamily">@string/robotoRegular</item>
|
<item name="android:fontFamily">@string/robotoRegular</item>
|
||||||
<item name="android:textSize">48sp</item>
|
<item name="android:textSize">48sp</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="TextAppearance.MdcTypographyStyles.Headline4"
|
<style name="TextAppearance.Headline4"
|
||||||
parent="TextAppearance.MaterialComponents.Headline4">
|
parent="TextAppearance.Material3.HeadlineLarge">
|
||||||
<item name="fontFamily">@string/robotoRegular</item>
|
<item name="fontFamily">@string/robotoRegular</item>
|
||||||
<item name="android:fontFamily">@string/robotoRegular</item>
|
<item name="android:fontFamily">@string/robotoRegular</item>
|
||||||
<item name="android:textSize">34sp</item>
|
<item name="android:textSize">34sp</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="TextAppearance.MdcTypographyStyles.Headline5"
|
<style name="TextAppearance.Headline5"
|
||||||
parent="TextAppearance.MaterialComponents.Headline5">
|
parent="TextAppearance.Material3.HeadlineMedium">
|
||||||
<item name="fontFamily">@string/robotoRegular</item>
|
<item name="fontFamily">@string/robotoRegular</item>
|
||||||
<item name="android:fontFamily">@string/robotoRegular</item>
|
<item name="android:fontFamily">@string/robotoRegular</item>
|
||||||
<item name="android:textSize">24sp</item>
|
<item name="android:textSize">24sp</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="TextAppearance.MdcTypographyStyles.Headline6"
|
<style name="TextAppearance.Headline6"
|
||||||
parent="TextAppearance.MaterialComponents.Headline6">
|
parent="TextAppearance.Material3.HeadlineSmall">
|
||||||
<item name="fontFamily">@string/robotoMedium</item>
|
<item name="fontFamily">@string/robotoMedium</item>
|
||||||
<item name="android:fontFamily">@string/robotoMedium</item>
|
<item name="android:fontFamily">@string/robotoMedium</item>
|
||||||
<item name="android:textSize">20sp</item>
|
<item name="android:textSize">20sp</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="TextAppearance.MdcTypographyStyles.Subtitle1"
|
<style name="TextAppearance.Subtitle1"
|
||||||
parent="TextAppearance.MaterialComponents.Subtitle1">
|
parent="TextAppearance.Material3.TitleMedium">
|
||||||
<item name="fontFamily">@string/robotoRegular</item>
|
<item name="fontFamily">@string/robotoRegular</item>
|
||||||
<item name="android:fontFamily">@string/robotoRegular</item>
|
<item name="android:fontFamily">@string/robotoRegular</item>
|
||||||
<item name="android:textSize">16sp</item>
|
<item name="android:textSize">16sp</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="TextAppearance.MdcTypographyStyles.Subtitle2"
|
<style name="TextAppearance.Subtitle2"
|
||||||
parent="TextAppearance.MaterialComponents.Subtitle2">
|
parent="TextAppearance.Material3.TitleSmall">
|
||||||
<item name="fontFamily">@string/robotoMedium</item>
|
<item name="fontFamily">@string/robotoMedium</item>
|
||||||
<item name="android:fontFamily">@string/robotoMedium</item>
|
<item name="android:fontFamily">@string/robotoMedium</item>
|
||||||
<item name="android:textSize">14sp</item>
|
<item name="android:textSize">14sp</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="TextAppearance.MdcTypographyStyles.Body1"
|
<style name="TextAppearance.Body1"
|
||||||
parent="TextAppearance.MaterialComponents.Body1">
|
parent="TextAppearance.Material3.BodyLarge">
|
||||||
<item name="fontFamily">@string/robotoRegular</item>
|
<item name="fontFamily">@string/robotoRegular</item>
|
||||||
<item name="android:fontFamily">@string/robotoRegular</item>
|
<item name="android:fontFamily">@string/robotoRegular</item>
|
||||||
<item name="android:textSize">16sp</item>
|
<item name="android:textSize">16sp</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="TextAppearance.MdcTypographyStyles.Body2"
|
<style name="TextAppearance.Body2"
|
||||||
parent="TextAppearance.MaterialComponents.Body2">
|
parent="TextAppearance.Material3.BodyMedium">
|
||||||
<item name="fontFamily">@string/robotoRegular</item>
|
<item name="fontFamily">@string/robotoRegular</item>
|
||||||
<item name="android:fontFamily">@string/robotoRegular</item>
|
<item name="android:fontFamily">@string/robotoRegular</item>
|
||||||
<item name="android:textSize">14sp</item>
|
<item name="android:textSize">14sp</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="TextAppearance.MdcTypographyStyles.Button"
|
<style name="TextAppearance.Button"
|
||||||
parent="TextAppearance.MaterialComponents.Button">
|
parent="TextAppearance.MaterialComponents.Button">
|
||||||
<item name="fontFamily">@string/robotoMedium</item>
|
<item name="fontFamily">@string/robotoMedium</item>
|
||||||
<item name="android:fontFamily">@string/robotoMedium</item>
|
<item name="android:fontFamily">@string/robotoMedium</item>
|
||||||
<item name="android:textSize">14sp</item>
|
<item name="android:textSize">14sp</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="TextAppearance.MdcTypographyStyles.Caption"
|
<style name="TextAppearance.Caption"
|
||||||
parent="TextAppearance.MaterialComponents.Caption">
|
parent="TextAppearance.Material3.LabelMedium">
|
||||||
<item name="fontFamily">@string/robotoRegular</item>
|
<item name="fontFamily">@string/robotoRegular</item>
|
||||||
<item name="android:fontFamily">@string/robotoRegular</item>
|
<item name="android:fontFamily">@string/robotoRegular</item>
|
||||||
<item name="android:textSize">12sp</item>
|
<item name="android:textSize">12sp</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="TextAppearance.MdcTypographyStyles.Overline"
|
<style name="TextAppearance.Overline"
|
||||||
parent="TextAppearance.MaterialComponents.Overline">
|
parent="TextAppearance.MaterialComponents.Overline">
|
||||||
<item name="fontFamily">@string/robotoRegular</item>
|
<item name="fontFamily">@string/robotoRegular</item>
|
||||||
<item name="android:fontFamily">@string/robotoRegular</item>
|
<item name="android:fontFamily">@string/robotoRegular</item>
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user