mirror of
https://codeberg.org/comaps/comaps
synced 2026-01-18 00:45:45 +00:00
Compare commits
1 Commits
x7z4w-map
...
pastk-mapg
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5b6b424f83 |
@@ -277,7 +277,7 @@ jobs:
|
||||
run: |
|
||||
cd /home/planet/planet/
|
||||
rm -f planet-latest-new.osm.pbf
|
||||
pyosmium-up-to-date planet-latest.osm.pbf -o planet-latest-new.osm.pbf -v --size 16384
|
||||
pyosmium-up-to-date planet-latest.osm.pbf -o planet-latest-new.osm.pbf -vv --size 16384
|
||||
mv planet-latest-new.osm.pbf planet-latest.osm.pbf
|
||||
- name: Notify Zulip
|
||||
run: |
|
||||
|
||||
@@ -2,5 +2,3 @@
|
||||
480fa6c2fcf53be296504ac6ba8e6b3d70f92b42
|
||||
a6ede2b1466f0c9d8a443600ef337ba6b5832e58
|
||||
1377b81bf1cac72bb6da192da7fed6696d5d5281
|
||||
b4e9bbb8d2e24a2829defe7753590df4a937dac0
|
||||
f6d01325136c4d65e20763d0e1e9b32b94571bba
|
||||
|
||||
7
.gitignore
vendored
7
.gitignore
vendored
@@ -31,9 +31,10 @@ data/types.txt*
|
||||
data/visibility.txt*
|
||||
data/colors.txt*
|
||||
data/patterns.txt*
|
||||
data/symbols/*/design/
|
||||
data/colors_design.txt
|
||||
data/patterns_design.txt
|
||||
# TODO: designer is not used at the moment
|
||||
# data/symbols/*/design/
|
||||
# data/colors_design.txt
|
||||
# data/patterns_design.txt
|
||||
|
||||
# Auto-generated from data/categories-strings/* by tools/unix/generate_categories.sh
|
||||
data/categories.txt
|
||||
|
||||
@@ -1,83 +0,0 @@
|
||||
///////////////////////// 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
|
||||
File diff suppressed because it is too large
Load Diff
@@ -104,8 +104,7 @@ if (${CMAKE_BUILD_TYPE} STREQUAL "Debug")
|
||||
elseif (${CMAKE_BUILD_TYPE} MATCHES "Rel")
|
||||
add_definitions(-DRELEASE)
|
||||
if (NOT MSVC)
|
||||
add_compile_options(-O3)
|
||||
set (CMAKE_INTERPROCEDURAL_OPTIMIZATION True)
|
||||
add_compile_options(-O3 $<$<CXX_COMPILER_ID:GNU>:-flto=auto>)
|
||||
endif()
|
||||
else()
|
||||
message(FATAL_ERROR "Unknown build type: " ${CMAKE_BUILD_TYPE})
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
CoMaps- Navigasi Offline dengan Privasi
|
||||
@@ -1,36 +1,36 @@
|
||||
Besplatna aplikacija za karte otvorenog koda koju vodi zajednica, a temelji se na podacima OpenStreetMapa, a pojačana je predanošću transparentnosti, privatnosti i neprofitnosti.
|
||||
Besplatna aplikacija otvorenog koda koju vodi zajednica i temelji se na podacima OpenStreetMap-a, usmjerana transparentnosti, privatnosti i neprofitnosti.
|
||||
|
||||
Pridružite se zajednici i pomozite u izradi najbolje aplikacije za karte
|
||||
• Koristite aplikaciju i širite vijest o njoj
|
||||
Pridružite se otvorenoj zajednici i pomozite izraditi najbolju aplikaciju za karte
|
||||
• Koristite aplikaciju i proširite glas o njoj
|
||||
• Dajte povratne informacije i prijavite probleme
|
||||
• Ažurirajte podatke karte u aplikaciji ili na web stranici OpenStreetMap
|
||||
• Ažurirajte podatke na karti u aplikaciji ili na web stranici OpenStreetMap-a
|
||||
|
||||
<i>Vaše povratne informacije i recenzije s 5 zvjezdica najbolja su nam podrška!</i>
|
||||
|
||||
‣ <b>Jednostavno i dotjerano</b>: bitne značajke koje su jednostavne za korištenje i jednostavno rade.
|
||||
‣ <b>Usmjereno na rad izvan mreže</b>: Planirajte i upravljajte svojim putovanjem u inozemstvo bez potrebe za mobilnom mrežom, pretražujte točke puta tijekom udaljenog planinarenja itd. Sve funkcije aplikacije dizajnirane su za rad izvan mreže.
|
||||
‣ <b>Poštivanje privatnosti</b>: Aplikacija je dizajnirana imajući na umu privatnost - ne identificira ljude, ne prati i ne prikuplja osobne podatke. Bez oglasa.
|
||||
‣ <b>Štedi bateriju i prostor</b>: Ne prazni bateriju kao druge navigacijske aplikacije. Kompaktne karte štede dragocjeni prostor na vašem telefonu.
|
||||
‣ <b>Besplatno i izrađeno od strane zajednice</b>: Ljudi poput vas pomogli su u izgradnji aplikacije dodavanjem mjesta u OpenStreetMap, testiranjem i davanjem povratnih informacija o značajkama te doprinosom svojim razvojnim vještinama i novcem.
|
||||
‣ <b>Otvoreno i transparentno donošenje odluka i financije, neprofitno i potpuno otvorenog koda.</b>
|
||||
‣ <b>Jednostavna i dotjerana</b>: aplikacija je trivijalna za korištenje i jednostavno radi.
|
||||
‣ <b>Fokusirana na Offline rad</b>: Planirajte i upravljajte svojim putovanjem u inozemstvo bez potrebe za mobilnom uslugom, tražite putne točke dok ste na udaljenom pješačenju itd. Sve funkcije aplikacije dizajnirane su za offline rad.
|
||||
‣ <b>Poštivanje privatnosti</b>: Aplikacija je dizajnirana imajući na umu privatnost - ne identificira ljude, ne prati i ne prikuplja osobne podatke. Bez reklama.
|
||||
‣ <b>Štedi vašu bateriju i prostor</b>: Ne troši bateriju kao druge navigacijske aplikacije. Kompaktne karte štede dragocjeni prostor na vašem telefonu.
|
||||
‣ <b>Otvorena i izrađena od strane zajednice</b>: Ljudi poput vas pomogli su izraditi aplikaciju dodavanjem lokacija na OpenStreetMap-u, testiranjem i davanjem povratnih informacija o aplikaciji te doprinoseći svojim razvojnim vještinama i novcem.
|
||||
‣ <b>Otvoreno i transparentno donošenje odluka i korištenja financija, Neprofitna i potpuno Otvorenog koda.</b>
|
||||
|
||||
<b>Glavne značajke</b>:
|
||||
• Detaljne karte za preuzimanje s mjestima koja nisu dostupna na Google kartama
|
||||
• Vanjski način rada s označenim planinarskim stazama, kampovima, izvorima vode, vrhovima, konturnim linijama itd.
|
||||
• Preuzimanje detaljnih karti s lokacijama koje nisu dostupne s Google kartama
|
||||
• Karte za izlete s istaknutim pješačkim stazama, kampovima, izvorima vode, planinskim vrhovima, konturnim linijama itd.
|
||||
• Pješačke i biciklističke staze
|
||||
• Znamenitosti poput restorana, benzinskih postaja, hotela, trgovina, znamenitosti i mnogih drugih
|
||||
• Pretraživanje po imenu ili adresi ili po kategoriji znamenitosti
|
||||
• Navigacija s glasovnim najavama za hodanje, vožnju biciklom ili vožnju
|
||||
• Označavanje omiljenih mjesta jednim dodirom
|
||||
• Članci na Wikipediji izvan mreže
|
||||
• Sloj i upute za podzemnu željeznicu
|
||||
• Snimanje tragova
|
||||
• Izvoz i uvoz oznaka i tragova u KML, KMZ, GPX formatima
|
||||
• Točke interesa kao što su restorani, benzinske crpke, hoteli, trgovine, vidikovci i još mnogo toga
|
||||
• Pretražujte po nazivu ili adresi ili po kategoriji interesa
|
||||
• Navigacija s glasovnim najavama za hodanje, vožnju biciklom ili automobilom
|
||||
• Obilježite svoja omiljena mjesta jednim dodirom
|
||||
• Offline članci Wikipedije
|
||||
• Tranzitni sloj podzemne željeznice sa navigacijom
|
||||
• Snimanje GPS tragova
|
||||
• Izvoz i uvoz oznaka i staza u KML, KMZ, i GPX formatima
|
||||
• Tamni način rada za korištenje tijekom noći
|
||||
• Poboljšajte podatke karte za sve pomoću osnovnog ugrađenog uređivača
|
||||
• Podrška za Android Auto
|
||||
• Poboljšajte kartu za sve korisnike, koristeći osnovni ugrađeni uređivač karte
|
||||
• Android Auto podrška
|
||||
|
||||
Prijavite probleme s aplikacijom, predložite ideje i pridružite se našoj zajednici na web stranici <b><i>comaps.app</i></b>.
|
||||
|
||||
<b>Sloboda je ovdje</b>
|
||||
Otkrijte svoje putovanje, snađite se u svijetu s privatnošću i zajednicom u prvom planu!
|
||||
Otkrijte svoje putovanje, navigirajte svijetom s privatnošću i zajednicom na prvom mjestu!
|
||||
|
||||
@@ -28,6 +28,7 @@ import com.github.mikephil.charting.formatter.IAxisValueFormatter;
|
||||
import com.github.mikephil.charting.highlight.Highlight;
|
||||
import com.github.mikephil.charting.listener.OnChartValueSelectedListener;
|
||||
import com.google.android.material.textview.MaterialTextView;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
||||
@@ -18,6 +18,7 @@ import android.location.Location;
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.activity.result.ActivityResultLauncher;
|
||||
import androidx.activity.result.contract.ActivityResultContracts;
|
||||
import androidx.annotation.CallSuper;
|
||||
@@ -25,6 +26,13 @@ import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.StringRes;
|
||||
import androidx.core.view.ViewCompat;
|
||||
|
||||
import com.google.android.material.button.MaterialButton;
|
||||
import com.google.android.material.checkbox.MaterialCheckBox;
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
import com.google.android.material.progressindicator.LinearProgressIndicator;
|
||||
import com.google.android.material.textview.MaterialTextView;
|
||||
|
||||
import app.organicmaps.base.BaseMwmFragmentActivity;
|
||||
import app.organicmaps.dialog.CustomMapServerDialog;
|
||||
import app.organicmaps.downloader.MapManagerHelper;
|
||||
@@ -39,11 +47,7 @@ import app.organicmaps.sdk.util.StringUtils;
|
||||
import app.organicmaps.util.UiUtils;
|
||||
import app.organicmaps.util.Utils;
|
||||
import app.organicmaps.util.WindowInsetUtils.PaddingInsetsListener;
|
||||
import com.google.android.material.button.MaterialButton;
|
||||
import com.google.android.material.checkbox.MaterialCheckBox;
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
import com.google.android.material.progressindicator.LinearProgressIndicator;
|
||||
import com.google.android.material.textview.MaterialTextView;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@@ -255,7 +259,7 @@ public class DownloadResourcesLegacyActivity extends BaseMwmFragmentActivity
|
||||
|
||||
mProgress.setMax(bytes);
|
||||
// Start progress at 1% according to M3 guidelines
|
||||
mProgress.setProgressCompat(bytes / 100, true);
|
||||
mProgress.setProgressCompat(bytes/100, true);
|
||||
}
|
||||
else
|
||||
finishFilesDownload(bytes);
|
||||
@@ -271,8 +275,11 @@ public class DownloadResourcesLegacyActivity extends BaseMwmFragmentActivity
|
||||
mChbDownloadCountry = findViewById(R.id.chb_download_country);
|
||||
mBtnAdvanced = findViewById(R.id.btn_advanced);
|
||||
|
||||
mBtnAdvanced.setOnClickListener(
|
||||
v -> { CustomMapServerDialog.show(this, url -> { prepareFilesDownload(false); }); });
|
||||
mBtnAdvanced.setOnClickListener(v -> {
|
||||
CustomMapServerDialog.show(this, url -> {
|
||||
prepareFilesDownload(false);
|
||||
});
|
||||
});
|
||||
mBtnAdvanced.setEnabled(true);
|
||||
|
||||
mBtnListeners = new View.OnClickListener[BTN_COUNT];
|
||||
@@ -387,7 +394,7 @@ public class DownloadResourcesLegacyActivity extends BaseMwmFragmentActivity
|
||||
mTvMessage.setText(getString(R.string.downloading_country_can_proceed, item.name, fileSizeString));
|
||||
mProgress.setMax((int) item.totalSize);
|
||||
// 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);
|
||||
MapManagerHelper.startDownload(mCurrentCountry);
|
||||
@@ -439,18 +446,21 @@ public class DownloadResourcesLegacyActivity extends BaseMwmFragmentActivity
|
||||
default -> throw new AssertionError("Unexpected result code = " + result);
|
||||
};
|
||||
|
||||
mAlertDialog = new MaterialAlertDialogBuilder(this)
|
||||
.setTitle(titleId)
|
||||
.setMessage(messageId)
|
||||
.setCancelable(true)
|
||||
.setOnCancelListener((dialog) -> setAction(RESUME))
|
||||
.setPositiveButton(R.string.try_again,
|
||||
(dialog, which) -> {
|
||||
setAction(TRY_AGAIN);
|
||||
onTryAgainClicked();
|
||||
})
|
||||
.setNegativeButton(R.string.cancel, (dialog, which) -> { setAction(RESUME); })
|
||||
.setOnDismissListener(dialog -> mAlertDialog = null)
|
||||
.show();
|
||||
mAlertDialog = new MaterialAlertDialogBuilder(this)
|
||||
.setTitle(titleId)
|
||||
.setMessage(messageId)
|
||||
.setCancelable(true)
|
||||
.setOnCancelListener((dialog) -> setAction(RESUME))
|
||||
.setPositiveButton(R.string.try_again,
|
||||
(dialog, which) -> {
|
||||
setAction(TRY_AGAIN);
|
||||
onTryAgainClicked();
|
||||
})
|
||||
.setNegativeButton(R.string.cancel,
|
||||
(dialog, which) -> {
|
||||
setAction(RESUME);
|
||||
})
|
||||
.setOnDismissListener(dialog -> mAlertDialog = null)
|
||||
.show();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,9 +38,8 @@ public class OsmUploadWork extends Worker
|
||||
{
|
||||
final Constraints c = new Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build();
|
||||
OneTimeWorkRequest.Builder builder = new OneTimeWorkRequest.Builder(OsmUploadWork.class).setConstraints(c);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S)
|
||||
{
|
||||
builder.setExpedited(OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
||||
builder.setExpedited(OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST);
|
||||
}
|
||||
final OneTimeWorkRequest wr = builder.build();
|
||||
WorkManager.getInstance(context).beginUniqueWork("UploadOsmChanges", ExistingWorkPolicy.KEEP, wr).enqueue();
|
||||
|
||||
@@ -17,6 +17,7 @@ import androidx.annotation.NonNull;
|
||||
import androidx.documentfile.provider.DocumentFile;
|
||||
import app.organicmaps.R;
|
||||
import app.organicmaps.sdk.util.log.Logger;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
|
||||
@@ -10,6 +10,7 @@ import androidx.fragment.app.DialogFragment;
|
||||
|
||||
public class BaseMwmDialogFragment extends DialogFragment
|
||||
{
|
||||
|
||||
protected int getStyle()
|
||||
{
|
||||
return STYLE_NORMAL;
|
||||
|
||||
@@ -282,13 +282,11 @@ public class BookmarksListFragment extends BaseMwmRecyclerFragment<ConcatAdapter
|
||||
{
|
||||
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())
|
||||
{
|
||||
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();
|
||||
|
||||
@@ -23,6 +23,7 @@ import app.organicmaps.util.UiUtils;
|
||||
import app.organicmaps.util.Utils;
|
||||
import app.organicmaps.widget.recycler.RecyclerClickListener;
|
||||
import app.organicmaps.widget.recycler.RecyclerLongClickListener;
|
||||
|
||||
import com.google.android.material.button.MaterialButton;
|
||||
import com.google.android.material.checkbox.MaterialCheckBox;
|
||||
import com.google.android.material.imageview.ShapeableImageView;
|
||||
@@ -457,12 +458,10 @@ public class Holders
|
||||
|
||||
String formattedDesc = desc.replace("\n", "<br>");
|
||||
Spanned spannedDesc = Utils.fromHtml(formattedDesc);
|
||||
if (!TextUtils.isEmpty(spannedDesc))
|
||||
{
|
||||
if (!TextUtils.isEmpty(spannedDesc)) {
|
||||
mDescText.setText(spannedDesc);
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
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)
|
||||
private static void processNavigationIntent(@NonNull CarContext carContext, @NonNull Renderer surfaceRenderer,
|
||||
@NonNull Intent intent)
|
||||
private static void processNavigationIntent(@NonNull CarContext carContext,
|
||||
@NonNull Renderer surfaceRenderer, @NonNull Intent intent)
|
||||
{
|
||||
// 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
|
||||
|
||||
@@ -31,7 +31,7 @@ public final class RoutingHelpers
|
||||
default -> Distance.UNIT_METERS;
|
||||
};
|
||||
|
||||
return Distance.create(distance.mDistance, displayUnit);
|
||||
return Distance.create(distance.mDistance, displayUnit);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@@ -52,7 +52,7 @@ public final class RoutingHelpers
|
||||
default -> LaneDirection.SHAPE_UNKNOWN;
|
||||
};
|
||||
|
||||
return LaneDirection.create(shape, isRecommended);
|
||||
return LaneDirection.create(shape, isRecommended);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@@ -77,7 +77,7 @@ public final class RoutingHelpers
|
||||
case EXIT_HIGHWAY_TO_LEFT -> Maneuver.TYPE_OFF_RAMP_SLIGHT_LEFT;
|
||||
case EXIT_HIGHWAY_TO_RIGHT -> Maneuver.TYPE_OFF_RAMP_SLIGHT_RIGHT;
|
||||
};
|
||||
final Maneuver.Builder builder = new Maneuver.Builder(maneuverType);
|
||||
final Maneuver.Builder builder = new Maneuver.Builder(maneuverType);
|
||||
if (maneuverType == Maneuver.TYPE_ROUNDABOUT_ENTER_AND_EXIT_CCW)
|
||||
builder.setRoundaboutExitNumber(roundaboutExitNum > 0 ? roundaboutExitNum : 1);
|
||||
builder.setIcon(new CarIcon.Builder(createManeuverIcon(context, carDirection, roundaboutExitNum)).build());
|
||||
@@ -85,8 +85,7 @@ public final class RoutingHelpers
|
||||
}
|
||||
|
||||
@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)
|
||||
{
|
||||
|
||||
@@ -39,7 +39,8 @@ public final class UiHelpers
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public static ActionStrip createMapActionStrip(@NonNull CarContext context, @NonNull Renderer surfaceRenderer)
|
||||
public static ActionStrip createMapActionStrip(@NonNull CarContext context,
|
||||
@NonNull Renderer surfaceRenderer)
|
||||
{
|
||||
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();
|
||||
@@ -58,13 +59,15 @@ public final class UiHelpers
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public static MapController createMapController(@NonNull CarContext context, @NonNull Renderer surfaceRenderer)
|
||||
public static MapController createMapController(@NonNull CarContext context,
|
||||
@NonNull Renderer surfaceRenderer)
|
||||
{
|
||||
return new MapController.Builder().setMapActionStrip(createMapActionStrip(context, surfaceRenderer)).build();
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public static Action createSettingsAction(@NonNull BaseMapScreen mapScreen, @NonNull Renderer surfaceRenderer)
|
||||
public static Action createSettingsAction(@NonNull BaseMapScreen mapScreen,
|
||||
@NonNull Renderer surfaceRenderer)
|
||||
{
|
||||
return createSettingsAction(mapScreen, surfaceRenderer, null);
|
||||
}
|
||||
@@ -78,7 +81,8 @@ public final class UiHelpers
|
||||
}
|
||||
|
||||
@NonNull
|
||||
private static Action createSettingsAction(@NonNull BaseMapScreen mapScreen, @NonNull Renderer surfaceRenderer,
|
||||
private static Action createSettingsAction(@NonNull BaseMapScreen mapScreen,
|
||||
@NonNull Renderer surfaceRenderer,
|
||||
@Nullable OnScreenResultListener onScreenResultListener)
|
||||
{
|
||||
final CarContext context = mapScreen.getCarContext();
|
||||
@@ -119,7 +123,8 @@ public final class UiHelpers
|
||||
return null;
|
||||
|
||||
final Row.Builder builder = new Row.Builder();
|
||||
builder.setImage(new CarIcon.Builder(IconCompat.createWithResource(context, R.drawable.ic_opening_hours)).build());
|
||||
builder.setImage(
|
||||
new CarIcon.Builder(IconCompat.createWithResource(context, R.drawable.ic_opening_hours)).build());
|
||||
|
||||
if (isEmptyTT)
|
||||
builder.setTitle(ohStr);
|
||||
|
||||
@@ -6,16 +6,19 @@ import android.content.SharedPreferences;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.preference.PreferenceManager;
|
||||
import app.organicmaps.R;
|
||||
import app.organicmaps.sdk.Framework;
|
||||
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
import com.google.android.material.textfield.TextInputEditText;
|
||||
import com.google.android.material.textfield.TextInputLayout;
|
||||
|
||||
import app.organicmaps.R;
|
||||
import app.organicmaps.sdk.Framework;
|
||||
|
||||
public final class CustomMapServerDialog
|
||||
{
|
||||
public interface OnUrlAppliedListener
|
||||
@@ -25,22 +28,26 @@ public final class CustomMapServerDialog
|
||||
|
||||
private CustomMapServerDialog() {}
|
||||
|
||||
public static void show(@NonNull Context context, @Nullable OnUrlAppliedListener listener)
|
||||
public static void show(@NonNull Context context,
|
||||
@Nullable OnUrlAppliedListener listener)
|
||||
{
|
||||
View dialogView = LayoutInflater.from(context).inflate(R.layout.dialog_custom_map_server, null);
|
||||
View dialogView = LayoutInflater.from(context)
|
||||
.inflate(R.layout.dialog_custom_map_server, null);
|
||||
TextInputLayout til = dialogView.findViewById(R.id.til_custom_map_server);
|
||||
TextInputEditText edit = dialogView.findViewById(R.id.edit_custom_map_server);
|
||||
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
SharedPreferences prefs =
|
||||
PreferenceManager.getDefaultSharedPreferences(context);
|
||||
String current = prefs.getString(context.getString(R.string.pref_custom_map_download_url), "");
|
||||
edit.setText(current);
|
||||
|
||||
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(context)
|
||||
.setTitle(R.string.download_resources_custom_url_title)
|
||||
.setMessage(R.string.download_resources_custom_url_message)
|
||||
.setView(dialogView)
|
||||
.setNegativeButton(R.string.cancel, null)
|
||||
.setPositiveButton(R.string.save, null);
|
||||
MaterialAlertDialogBuilder builder =
|
||||
new MaterialAlertDialogBuilder(context)
|
||||
.setTitle(R.string.download_resources_custom_url_title)
|
||||
.setMessage(R.string.download_resources_custom_url_message)
|
||||
.setView(dialogView)
|
||||
.setNegativeButton(R.string.cancel, null)
|
||||
.setPositiveButton(R.string.save, null);
|
||||
|
||||
AlertDialog dialog = builder.create();
|
||||
dialog.setOnShowListener(dlg -> {
|
||||
@@ -48,7 +55,9 @@ public final class CustomMapServerDialog
|
||||
ok.setOnClickListener(v -> {
|
||||
String url = edit.getText() != null ? edit.getText().toString().trim() : "";
|
||||
|
||||
if (!url.isEmpty() && !url.startsWith("http://") && !url.startsWith("https://"))
|
||||
if (!url.isEmpty()
|
||||
&& !url.startsWith("http://")
|
||||
&& !url.startsWith("https://"))
|
||||
{
|
||||
til.setError(context.getString(R.string.download_resources_custom_url_error_scheme));
|
||||
return;
|
||||
@@ -58,7 +67,9 @@ public final class CustomMapServerDialog
|
||||
|
||||
String normalizedUrl = Framework.normalizeServerUrl(url);
|
||||
|
||||
prefs.edit().putString(context.getString(R.string.pref_custom_map_download_url), normalizedUrl).apply();
|
||||
prefs.edit()
|
||||
.putString(context.getString(R.string.pref_custom_map_download_url), normalizedUrl)
|
||||
.apply();
|
||||
|
||||
// Apply to native
|
||||
Framework.applyCustomMapDownloadUrl(context, normalizedUrl);
|
||||
|
||||
@@ -125,8 +125,7 @@ public class EditTextDialogFragment extends BaseMwmDialogFragment
|
||||
|
||||
positiveButton.setOnClickListener(view -> {
|
||||
final String result = mEtInput.getText().toString();
|
||||
if (validateInput(requireActivity(), result))
|
||||
{
|
||||
if (validateInput(requireActivity(), result)) {
|
||||
processInput(result);
|
||||
editTextDialog.dismiss();
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import android.location.Location;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import app.organicmaps.MwmActivity;
|
||||
@@ -48,8 +49,7 @@ public class OnmapDownloader implements MwmActivity.LeftAnimationTrackListener
|
||||
@Override
|
||||
public void onStatusChanged(List<MapManager.StorageCallbackData> data)
|
||||
{
|
||||
if (mCurrentCountry == null)
|
||||
{
|
||||
if (mCurrentCountry == null) {
|
||||
updateOfflineExplanationVisibility();
|
||||
return;
|
||||
}
|
||||
@@ -109,13 +109,10 @@ public class OnmapDownloader implements MwmActivity.LeftAnimationTrackListener
|
||||
return enqueued || progress || applying;
|
||||
}
|
||||
|
||||
private void updateOfflineExplanationVisibility()
|
||||
{
|
||||
if (mOfflineExplanation == null)
|
||||
return;
|
||||
private void updateOfflineExplanationVisibility() {
|
||||
if (mOfflineExplanation == null) return;
|
||||
// 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)
|
||||
|
||||
@@ -15,6 +15,7 @@ import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.AutoCompleteTextView;
|
||||
import android.widget.GridLayout;
|
||||
|
||||
import androidx.annotation.CallSuper;
|
||||
import androidx.annotation.DrawableRes;
|
||||
import androidx.annotation.IdRes;
|
||||
@@ -195,9 +196,8 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
||||
{
|
||||
final Context context = mInputBuildingLevels.getContext();
|
||||
final boolean isValid = Editor.nativeIsLevelValid(s.toString());
|
||||
mInputBuildingLevels.setError(isValid ? null
|
||||
: context.getString(R.string.error_enter_correct_storey_number,
|
||||
Editor.nativeGetMaxEditableBuildingLevels()));
|
||||
mInputBuildingLevels.setError(isValid ? null : context.getString(R.string.error_enter_correct_storey_number,
|
||||
Editor.nativeGetMaxEditableBuildingLevels()));
|
||||
}
|
||||
});
|
||||
|
||||
@@ -396,7 +396,7 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
||||
List<String> SOCKET_TYPES = Arrays.stream(getResources().getStringArray(R.array.charge_socket_types)).toList();
|
||||
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);
|
||||
|
||||
@@ -404,16 +404,16 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
||||
|
||||
// load SVG icon converted into VectorDrawable in res/drawable
|
||||
@SuppressLint("DiscouragedApi")
|
||||
int resIconId = getResources().getIdentifier("ic_charge_socket_" + socket.visualType(), "drawable",
|
||||
requireContext().getPackageName());
|
||||
int resIconId =
|
||||
getResources().getIdentifier("ic_charge_socket_" + socket.visualType(), "drawable", requireContext().getPackageName());
|
||||
if (resIconId != 0)
|
||||
{
|
||||
btn.setIcon(getResources().getDrawable(resIconId));
|
||||
}
|
||||
|
||||
@SuppressLint("DiscouragedApi")
|
||||
int resTypeId = getResources().getIdentifier("charge_socket_" + socket.visualType(), "string",
|
||||
requireContext().getPackageName());
|
||||
int resTypeId =
|
||||
getResources().getIdentifier("charge_socket_" + socket.visualType(), "string", requireContext().getPackageName());
|
||||
if (resTypeId != 0)
|
||||
{
|
||||
btn.setText(getResources().getString(resTypeId));
|
||||
@@ -461,16 +461,13 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
||||
// Add a TextWatcher to validate on text change
|
||||
countView.addTextChangedListener(new TextWatcher() {
|
||||
@Override
|
||||
public void beforeTextChanged(CharSequence s, int start, int count, int after)
|
||||
{}
|
||||
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
|
||||
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count)
|
||||
{}
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {}
|
||||
|
||||
@Override
|
||||
public void afterTextChanged(Editable s)
|
||||
{
|
||||
public void afterTextChanged(Editable s) {
|
||||
validatePositiveField(s.toString(), countInputLayout);
|
||||
}
|
||||
});
|
||||
@@ -485,16 +482,13 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
||||
// Add a TextWatcher to validate on text change
|
||||
powerView.addTextChangedListener(new TextWatcher() {
|
||||
@Override
|
||||
public void beforeTextChanged(CharSequence s, int start, int count, int after)
|
||||
{}
|
||||
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
|
||||
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count)
|
||||
{}
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {}
|
||||
|
||||
@Override
|
||||
public void afterTextChanged(Editable s)
|
||||
{
|
||||
public void afterTextChanged(Editable s) {
|
||||
validatePositiveField(s.toString(), powerInputLayout);
|
||||
}
|
||||
});
|
||||
@@ -502,82 +496,74 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
||||
return new MaterialAlertDialogBuilder(requireActivity())
|
||||
.setTitle(R.string.editor_socket)
|
||||
.setView(dialogView)
|
||||
.setPositiveButton(
|
||||
R.string.save,
|
||||
(dialog, which) -> {
|
||||
String socketType = "";
|
||||
for (MaterialButton b : buttonList)
|
||||
{
|
||||
if (b.isChecked())
|
||||
{
|
||||
socketType = b.getTag(R.id.socket_type).toString();
|
||||
break;
|
||||
}
|
||||
}
|
||||
.setPositiveButton(R.string.save,
|
||||
(dialog, which) -> {
|
||||
String socketType = "";
|
||||
for (MaterialButton b : buttonList)
|
||||
{
|
||||
if (b.isChecked())
|
||||
{
|
||||
socketType = b.getTag(R.id.socket_type).toString();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
int countValue = 0; // 0 means 'unknown count'
|
||||
try
|
||||
{
|
||||
countValue = Integer.parseInt(countView.getText().toString());
|
||||
}
|
||||
catch (NumberFormatException ignored)
|
||||
{
|
||||
Logger.w(CHARGE_SOCKETS_TAG, "Invalid count value for socket:" + countView.getText().toString());
|
||||
}
|
||||
int countValue = 0; // 0 means 'unknown count'
|
||||
try
|
||||
{
|
||||
countValue = Integer.parseInt(countView.getText().toString());
|
||||
}
|
||||
catch (NumberFormatException ignored)
|
||||
{
|
||||
Logger.w(CHARGE_SOCKETS_TAG, "Invalid count value for socket:" + countView.getText().toString());
|
||||
}
|
||||
|
||||
if (countValue < 0)
|
||||
{
|
||||
countValue = 0;
|
||||
Logger.w(CHARGE_SOCKETS_TAG, "Invalid count value for socket:" + countView.getText().toString());
|
||||
}
|
||||
if (countValue < 0)
|
||||
{
|
||||
countValue = 0;
|
||||
Logger.w(CHARGE_SOCKETS_TAG, "Invalid count value for socket:" + countView.getText().toString());
|
||||
}
|
||||
|
||||
double powerValue = 0; // 0 means 'unknown power'
|
||||
try
|
||||
{
|
||||
powerValue = Double.parseDouble(powerView.getText().toString());
|
||||
}
|
||||
catch (NumberFormatException ignored)
|
||||
{
|
||||
Logger.w(CHARGE_SOCKETS_TAG, "Invalid power value for socket:" + powerView.getText().toString());
|
||||
}
|
||||
double powerValue = 0; // 0 means 'unknown power'
|
||||
try
|
||||
{
|
||||
powerValue = Double.parseDouble(powerView.getText().toString());
|
||||
}
|
||||
catch (NumberFormatException ignored)
|
||||
{
|
||||
Logger.w(CHARGE_SOCKETS_TAG, "Invalid power value for socket:" + powerView.getText().toString());
|
||||
}
|
||||
|
||||
if (powerValue < 0)
|
||||
{
|
||||
powerValue = 0;
|
||||
Logger.w(CHARGE_SOCKETS_TAG, "Invalid power value for socket:" + powerView.getText().toString());
|
||||
}
|
||||
if (powerValue < 0)
|
||||
{
|
||||
powerValue = 0;
|
||||
Logger.w(CHARGE_SOCKETS_TAG, "Invalid power value for socket:" + powerView.getText().toString());
|
||||
}
|
||||
|
||||
ChargeSocketDescriptor socket = new ChargeSocketDescriptor(socketType, countValue, powerValue);
|
||||
ChargeSocketDescriptor socket =
|
||||
new ChargeSocketDescriptor(socketType, countValue, powerValue);
|
||||
|
||||
updateChargeSockets(socketIndex, socket);
|
||||
})
|
||||
updateChargeSockets(socketIndex, socket);
|
||||
})
|
||||
.setNegativeButton(R.string.cancel, (dialog, which) -> dialog.dismiss());
|
||||
}
|
||||
|
||||
// Helper method for validation logic
|
||||
private boolean validatePositiveField(String text, TextInputLayout layout)
|
||||
{
|
||||
if (text.isEmpty())
|
||||
{
|
||||
private boolean validatePositiveField(String text, TextInputLayout layout) {
|
||||
if (text.isEmpty()) {
|
||||
layout.setError(null); // No error if empty (assuming 0 is the default)
|
||||
return true;
|
||||
}
|
||||
try
|
||||
{
|
||||
try {
|
||||
double value = Double.parseDouble(text);
|
||||
if (value < 0)
|
||||
{
|
||||
if (value < 0) {
|
||||
layout.setError(getString(R.string.error_value_must_be_positive));
|
||||
return false;
|
||||
} else {
|
||||
layout.setError(null);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
layout.setError(null);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
catch (NumberFormatException e)
|
||||
{
|
||||
} catch (NumberFormatException e) {
|
||||
layout.setError(getString(R.string.error_invalid_number));
|
||||
return false;
|
||||
}
|
||||
@@ -597,8 +583,7 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
||||
{
|
||||
sockets[socketIndex] = socket;
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
List<ChargeSocketDescriptor> list = new ArrayList<>(Arrays.asList(sockets));
|
||||
list.add(socket);
|
||||
sockets = list.toArray(new ChargeSocketDescriptor[0]);
|
||||
@@ -616,8 +601,7 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
||||
GridLayout socketsGrid = mChargeSockets.findViewById(R.id.socket_grid_editor);
|
||||
socketsGrid.removeAllViews();
|
||||
|
||||
for (int i = 0; i < sockets.length; i++)
|
||||
{
|
||||
for (int i = 0; i < sockets.length; i++) {
|
||||
final int currentIndex = i;
|
||||
ChargeSocketDescriptor socket = sockets[i];
|
||||
|
||||
@@ -628,30 +612,27 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
||||
MaterialTextView power = itemView.findViewById(R.id.socket_power);
|
||||
MaterialTextView count = itemView.findViewById(R.id.socket_count);
|
||||
|
||||
|
||||
// load SVG icon converted into VectorDrawable in res/drawable
|
||||
@SuppressLint("DiscouragedApi")
|
||||
int resIconId = getResources().getIdentifier("ic_charge_socket_" + socket.visualType(), "drawable",
|
||||
requireContext().getPackageName());
|
||||
if (resIconId != 0)
|
||||
{
|
||||
requireContext().getPackageName());
|
||||
if (resIconId != 0) {
|
||||
icon.setImageResource(resIconId);
|
||||
}
|
||||
|
||||
@SuppressLint("DiscouragedApi")
|
||||
int resTypeId = getResources().getIdentifier("charge_socket_" + socket.visualType(), "string",
|
||||
requireContext().getPackageName());
|
||||
if (resTypeId != 0)
|
||||
{
|
||||
int resTypeId =
|
||||
getResources().getIdentifier("charge_socket_" + socket.visualType(), "string", requireContext().getPackageName());
|
||||
if (resTypeId != 0) {
|
||||
type.setText(resTypeId);
|
||||
}
|
||||
|
||||
if (socket.power() != 0)
|
||||
{
|
||||
if (socket.power() != 0) {
|
||||
DecimalFormat df = new DecimalFormat("#.##");
|
||||
power.setText(getString(R.string.kw_label, df.format(socket.power())));
|
||||
}
|
||||
else if (socket.ignorePower())
|
||||
{
|
||||
else if (socket.ignorePower()) {
|
||||
power.setVisibility(INVISIBLE);
|
||||
}
|
||||
|
||||
@@ -660,8 +641,7 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -807,8 +787,9 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
||||
View lineContactBlock =
|
||||
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);
|
||||
View blueskyContactBlock = initBlock(view, Metadata.MetadataType.FMD_CONTACT_BLUESKY, R.id.block_bluesky,
|
||||
R.drawable.ic_bluesky, R.string.bluesky, InputType.TYPE_TEXT_VARIATION_URI);
|
||||
View blueskyContactBlock =
|
||||
initBlock(view, Metadata.MetadataType.FMD_CONTACT_BLUESKY, R.id.block_bluesky, R.drawable.ic_bluesky,
|
||||
R.string.bluesky, InputType.TYPE_TEXT_VARIATION_URI);
|
||||
View operatorBlock = initBlock(view, Metadata.MetadataType.FMD_OPERATOR, R.id.block_operator,
|
||||
R.drawable.ic_operator, R.string.editor_operator, 0);
|
||||
|
||||
@@ -1040,15 +1021,14 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
||||
private void placeDisused()
|
||||
{
|
||||
new MaterialAlertDialogBuilder(requireActivity())
|
||||
.setTitle(R.string.editor_mark_business_vacant_title)
|
||||
.setMessage(R.string.editor_mark_business_vacant_description)
|
||||
.setPositiveButton(R.string.editor_submit,
|
||||
(dlg, which) -> {
|
||||
Editor.nativeMarkPlaceAsDisused();
|
||||
mParent.processEditedFeatures();
|
||||
})
|
||||
.setNegativeButton(android.R.string.cancel, null)
|
||||
.show();
|
||||
.setTitle(R.string.editor_mark_business_vacant_title)
|
||||
.setMessage(R.string.editor_mark_business_vacant_description)
|
||||
.setPositiveButton(R.string.editor_submit, (dlg, which) -> {
|
||||
Editor.nativeMarkPlaceAsDisused();
|
||||
mParent.processEditedFeatures();
|
||||
})
|
||||
.setNegativeButton(android.R.string.cancel, null)
|
||||
.show();
|
||||
}
|
||||
|
||||
private void commitPlaceDoesntExists(@NonNull String text)
|
||||
|
||||
@@ -237,7 +237,7 @@ public class EditorHostFragment
|
||||
for (LocalizedName name : sNames)
|
||||
languages.add(name.lang);
|
||||
args.putStringArrayList(LanguagesFragment.EXISTING_LOCALIZED_NAMES, languages);
|
||||
args.putBoolean(LanguagesFragment.IS_MAP_LANGUAGE_SELECTION, false);
|
||||
args.putBoolean(LanguagesFragment.INCLUDE_LOCAL_LANGUAGE, false);
|
||||
editWithFragment(Mode.LANGUAGE, R.string.choose_language, args, LanguagesFragment.class, false);
|
||||
}
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ import app.organicmaps.R;
|
||||
import app.organicmaps.sdk.editor.data.FeatureCategory;
|
||||
import app.organicmaps.sdk.util.StringUtils;
|
||||
import app.organicmaps.util.UiUtils;
|
||||
|
||||
import com.google.android.material.button.MaterialButton;
|
||||
import com.google.android.material.textfield.TextInputEditText;
|
||||
import com.google.android.material.textview.MaterialTextView;
|
||||
@@ -68,7 +69,8 @@ public class FeatureCategoryAdapter extends RecyclerView.Adapter<RecyclerView.Vi
|
||||
}
|
||||
case TYPE_FOOTER ->
|
||||
{
|
||||
return new FooterViewHolder(inflater.inflate(R.layout.item_feature_category_footer, parent, false), mFragment);
|
||||
return new FooterViewHolder(inflater.inflate(R.layout.item_feature_category_footer, parent, false),
|
||||
mFragment);
|
||||
}
|
||||
default -> throw new IllegalArgumentException("Unsupported viewType: " + viewType);
|
||||
}
|
||||
@@ -132,21 +134,26 @@ public class FeatureCategoryAdapter extends RecyclerView.Adapter<RecyclerView.Vi
|
||||
mSendNoteButton = itemView.findViewById(R.id.send_note_button);
|
||||
mSendNoteButton.setOnClickListener(v -> listener.onSendNoteClicked());
|
||||
final ColorStateList bgButtonColor = new ColorStateList(
|
||||
new int[][] {
|
||||
new int[] {android.R.attr.state_enabled}, // enabled
|
||||
new int[] {-android.R.attr.state_enabled} // disabled
|
||||
},
|
||||
new int[] {ContextCompat.getColor(mSendNoteButton.getContext(), R.color.base_accent),
|
||||
ContextCompat.getColor(mSendNoteButton.getContext(), R.color.button_accent_disabled)});
|
||||
new int[][]{
|
||||
new int[]{android.R.attr.state_enabled}, // enabled
|
||||
new int[]{-android.R.attr.state_enabled} // disabled
|
||||
},
|
||||
new int[]{
|
||||
ContextCompat.getColor(
|
||||
mSendNoteButton.getContext(), R.color.base_accent),
|
||||
ContextCompat.getColor(mSendNoteButton.getContext(), R.color.button_accent_disabled)
|
||||
});
|
||||
final ColorStateList textButtonColor = new ColorStateList(
|
||||
new int[][] {
|
||||
new int[] {android.R.attr.state_enabled}, // enabled
|
||||
new int[] {-android.R.attr.state_enabled} // disabled
|
||||
},
|
||||
new int[] {ContextCompat.getColor(mSendNoteButton.getContext(),
|
||||
UiUtils.getStyledResourceId(mSendNoteButton.getContext(),
|
||||
android.R.attr.textColorPrimaryInverse)),
|
||||
ContextCompat.getColor(mSendNoteButton.getContext(), R.color.button_accent_text_disabled)});
|
||||
new int[][]{
|
||||
new int[]{android.R.attr.state_enabled}, // enabled
|
||||
new int[]{-android.R.attr.state_enabled} // disabled
|
||||
},
|
||||
new int[]{
|
||||
ContextCompat.getColor(
|
||||
mSendNoteButton.getContext(),
|
||||
UiUtils.getStyledResourceId(mSendNoteButton.getContext(), android.R.attr.textColorPrimaryInverse)),
|
||||
ContextCompat.getColor(mSendNoteButton.getContext(), R.color.button_accent_text_disabled)
|
||||
});
|
||||
mSendNoteButton.setBackgroundTintList(bgButtonColor);
|
||||
mSendNoteButton.setTextColor(textButtonColor);
|
||||
mNoteEditText.addTextChangedListener(new StringUtils.SimpleTextWatcher() {
|
||||
|
||||
@@ -2,16 +2,19 @@ package app.organicmaps.editor;
|
||||
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
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.sdk.editor.data.HoursMinutes;
|
||||
import app.organicmaps.sdk.util.DateUtils;
|
||||
import com.google.android.material.timepicker.MaterialTimePicker;
|
||||
import com.google.android.material.timepicker.TimeFormat;
|
||||
|
||||
public class FromToTimePicker
|
||||
{
|
||||
@@ -29,11 +32,18 @@ public class FromToTimePicker
|
||||
private boolean mIsFromTimePicked;
|
||||
private int mInputMode;
|
||||
|
||||
public static void pickTime(@NonNull Fragment fragment, @NonNull FromToTimePicker.OnPickListener listener,
|
||||
@NonNull HoursMinutes fromTime, @NonNull HoursMinutes toTime, int id,
|
||||
public static void pickTime(@NonNull Fragment fragment,
|
||||
@NonNull FromToTimePicker.OnPickListener listener,
|
||||
@NonNull HoursMinutes fromTime,
|
||||
@NonNull HoursMinutes toTime,
|
||||
int id,
|
||||
boolean startWithToTime)
|
||||
{
|
||||
FromToTimePicker timePicker = new FromToTimePicker(fragment, listener, fromTime, toTime, id);
|
||||
FromToTimePicker timePicker = new FromToTimePicker(fragment,
|
||||
listener,
|
||||
fromTime,
|
||||
toTime,
|
||||
id);
|
||||
|
||||
if (startWithToTime)
|
||||
timePicker.showToTimePicker();
|
||||
@@ -41,8 +51,11 @@ public class FromToTimePicker
|
||||
timePicker.showFromTimePicker();
|
||||
}
|
||||
|
||||
private FromToTimePicker(@NonNull Fragment fragment, @NonNull FromToTimePicker.OnPickListener listener,
|
||||
@NonNull HoursMinutes fromTime, @NonNull HoursMinutes toTime, int id)
|
||||
private FromToTimePicker(@NonNull Fragment fragment,
|
||||
@NonNull FromToTimePicker.OnPickListener listener,
|
||||
@NonNull HoursMinutes fromTime,
|
||||
@NonNull HoursMinutes toTime,
|
||||
int id)
|
||||
{
|
||||
mActivity = fragment.requireActivity();
|
||||
mFragmentManager = fragment.getChildFragmentManager();
|
||||
@@ -87,12 +100,15 @@ public class FromToTimePicker
|
||||
|
||||
private MaterialTimePicker buildFromTimePicker()
|
||||
{
|
||||
MaterialTimePicker timePicker = buildTimePicker(mFromTime, mResources.getString(R.string.editor_time_from),
|
||||
mResources.getString(R.string.next_button), null);
|
||||
MaterialTimePicker timePicker = buildTimePicker(mFromTime,
|
||||
mResources.getString(R.string.editor_time_from),
|
||||
mResources.getString(R.string.next_button),
|
||||
null);
|
||||
|
||||
timePicker.addOnNegativeButtonClickListener(view -> finishTimePicking(false));
|
||||
|
||||
timePicker.addOnPositiveButtonClickListener(view -> {
|
||||
timePicker.addOnPositiveButtonClickListener(view ->
|
||||
{
|
||||
mIsFromTimePicked = true;
|
||||
saveState(timePicker, true);
|
||||
mFromTimePicker = null;
|
||||
@@ -106,10 +122,13 @@ public class FromToTimePicker
|
||||
|
||||
private MaterialTimePicker buildToTimePicker()
|
||||
{
|
||||
MaterialTimePicker timePicker = buildTimePicker(mToTime, mResources.getString(R.string.editor_time_to), null,
|
||||
MaterialTimePicker timePicker = buildTimePicker(mToTime,
|
||||
mResources.getString(R.string.editor_time_to),
|
||||
null,
|
||||
mResources.getString(R.string.back));
|
||||
|
||||
timePicker.addOnNegativeButtonClickListener(view -> {
|
||||
timePicker.addOnNegativeButtonClickListener(view ->
|
||||
{
|
||||
saveState(timePicker, false);
|
||||
mToTimePicker = null;
|
||||
if (mIsFromTimePicked)
|
||||
@@ -118,7 +137,8 @@ public class FromToTimePicker
|
||||
finishTimePicking(false);
|
||||
});
|
||||
|
||||
timePicker.addOnPositiveButtonClickListener(view -> {
|
||||
timePicker.addOnPositiveButtonClickListener(view ->
|
||||
{
|
||||
saveState(timePicker, false);
|
||||
finishTimePicking(true);
|
||||
});
|
||||
@@ -129,18 +149,18 @@ public class FromToTimePicker
|
||||
}
|
||||
|
||||
@NonNull
|
||||
private MaterialTimePicker buildTimePicker(@NonNull HoursMinutes time, @NonNull String title,
|
||||
private MaterialTimePicker buildTimePicker(@NonNull HoursMinutes time,
|
||||
@NonNull String title,
|
||||
@Nullable String positiveButtonTextOverride,
|
||||
@Nullable String negativeButtonTextOverride)
|
||||
{
|
||||
MaterialTimePicker.Builder builder =
|
||||
new MaterialTimePicker.Builder()
|
||||
.setTitleText(title)
|
||||
.setTimeFormat(mIs24HourFormat ? TimeFormat.CLOCK_24H : TimeFormat.CLOCK_12H)
|
||||
.setInputMode(mInputMode)
|
||||
.setTheme(R.style.MwmTheme_MaterialTimePicker)
|
||||
.setHour((int) time.hours)
|
||||
.setMinute((int) time.minutes);
|
||||
MaterialTimePicker.Builder builder = new MaterialTimePicker.Builder()
|
||||
.setTitleText(title)
|
||||
.setTimeFormat(mIs24HourFormat ? TimeFormat.CLOCK_24H : TimeFormat.CLOCK_12H)
|
||||
.setInputMode(mInputMode)
|
||||
.setTheme(R.style.MwmTheme_MaterialTimePicker)
|
||||
.setHour((int) time.hours)
|
||||
.setMinute((int) time.minutes);
|
||||
|
||||
if (positiveButtonTextOverride != null)
|
||||
builder.setPositiveButtonText(positiveButtonTextOverride);
|
||||
|
||||
@@ -8,6 +8,7 @@ import androidx.annotation.NonNull;
|
||||
import androidx.core.os.ConfigurationCompat;
|
||||
import androidx.core.os.LocaleListCompat;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import app.organicmaps.R;
|
||||
import app.organicmaps.base.BaseMwmRecyclerFragment;
|
||||
import app.organicmaps.sdk.editor.Editor;
|
||||
@@ -24,7 +25,7 @@ import java.util.Set;
|
||||
public class LanguagesFragment extends BaseMwmRecyclerFragment<LanguagesAdapter>
|
||||
{
|
||||
final static String EXISTING_LOCALIZED_NAMES = "ExistingLocalizedNames";
|
||||
final static String IS_MAP_LANGUAGE_SELECTION = "IsMapLanguageSelection";
|
||||
final static String INCLUDE_LOCAL_LANGUAGE = "IncludeLocalLanguage";
|
||||
|
||||
public interface Listener
|
||||
{
|
||||
@@ -38,7 +39,8 @@ public class LanguagesFragment extends BaseMwmRecyclerFragment<LanguagesAdapter>
|
||||
protected LanguagesAdapter createAdapter()
|
||||
{
|
||||
Bundle args = getArguments();
|
||||
boolean isMapLanguageSelection = args != null ? args.getBoolean(IS_MAP_LANGUAGE_SELECTION) : true;
|
||||
boolean includeLocalLanguage =
|
||||
args != null ? args.getBoolean(INCLUDE_LOCAL_LANGUAGE) : true;
|
||||
Set<String> existingLanguages =
|
||||
args != null ? new HashSet<>(args.getStringArrayList(EXISTING_LOCALIZED_NAMES)) : new HashSet<>();
|
||||
|
||||
@@ -50,14 +52,8 @@ public class LanguagesFragment extends BaseMwmRecyclerFragment<LanguagesAdapter>
|
||||
for (int i = 0; i < systemLocales.size(); i++)
|
||||
systemLanguages.add(null);
|
||||
|
||||
// service languages are old_name, alt_name, ...
|
||||
boolean includeServiceLangs = !isMapLanguageSelection;
|
||||
|
||||
for (Language lang : Editor.nativeGetSupportedLanguages(includeServiceLangs))
|
||||
for (Language lang : Editor.nativeGetSupportedLanguages(false))
|
||||
{
|
||||
if (existingLanguages.contains(lang.code))
|
||||
continue;
|
||||
|
||||
// Separately extract system languages
|
||||
for (int i = 0; i < systemLocales.size(); i++)
|
||||
{
|
||||
@@ -69,7 +65,7 @@ public class LanguagesFragment extends BaseMwmRecyclerFragment<LanguagesAdapter>
|
||||
}
|
||||
}
|
||||
|
||||
if (systemLanguages.contains(lang))
|
||||
if (existingLanguages.contains(lang.code) || systemLanguages.contains(lang))
|
||||
continue;
|
||||
|
||||
languages.add(lang);
|
||||
@@ -79,8 +75,7 @@ public class LanguagesFragment extends BaseMwmRecyclerFragment<LanguagesAdapter>
|
||||
|
||||
languages.addAll(0, systemLanguages.stream().filter(Objects::nonNull).toList());
|
||||
|
||||
if (isMapLanguageSelection)
|
||||
{
|
||||
if (includeLocalLanguage) {
|
||||
String localLanguageLabel = getString(R.string.pref_maplanguage_local);
|
||||
Language localLanguage = new Language(DEFAULT_LANG_CODE, localLanguageLabel);
|
||||
languages.add(0, localLanguage);
|
||||
|
||||
@@ -7,6 +7,7 @@ import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.CompoundButton;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
import androidx.annotation.IdRes;
|
||||
import androidx.annotation.IntRange;
|
||||
import androidx.annotation.Nullable;
|
||||
@@ -121,14 +122,20 @@ class SimpleTimetableAdapter extends RecyclerView.Adapter<SimpleTimetableAdapter
|
||||
notifyItemChanged(getItemCount() - 1);
|
||||
}
|
||||
|
||||
private void pickTime(int position, @IntRange(from = ID_OPENING_TIME, to = ID_CLOSED_SPAN) int id,
|
||||
private void pickTime(int position,
|
||||
@IntRange(from = ID_OPENING_TIME, to = ID_CLOSED_SPAN) int id,
|
||||
boolean startWithToTime)
|
||||
{
|
||||
final Timetable data = mItems.get(position);
|
||||
mPickingPosition = position;
|
||||
|
||||
FromToTimePicker.pickTime(mFragment, this, data.workingTimespan.start, data.workingTimespan.end, id,
|
||||
startWithToTime);
|
||||
FromToTimePicker.pickTime(mFragment,
|
||||
this,
|
||||
data.workingTimespan.start,
|
||||
data.workingTimespan.end,
|
||||
id,
|
||||
startWithToTime);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -377,21 +384,26 @@ class SimpleTimetableAdapter extends RecyclerView.Adapter<SimpleTimetableAdapter
|
||||
final String text = mFragment.getString(R.string.editor_time_add);
|
||||
mAdd.setEnabled(enable);
|
||||
final ColorStateList bgButtonColor = new ColorStateList(
|
||||
new int[][] {
|
||||
new int[] {android.R.attr.state_enabled}, // enabled
|
||||
new int[] {-android.R.attr.state_enabled} // disabled
|
||||
},
|
||||
new int[] {ContextCompat.getColor(mAdd.getContext(), R.color.base_accent),
|
||||
ContextCompat.getColor(mAdd.getContext(), R.color.button_accent_disabled)});
|
||||
new int[][]{
|
||||
new int[]{android.R.attr.state_enabled}, // enabled
|
||||
new int[]{-android.R.attr.state_enabled} // disabled
|
||||
},
|
||||
new int[]{
|
||||
ContextCompat.getColor(
|
||||
mAdd.getContext(), R.color.base_accent),
|
||||
ContextCompat.getColor(mAdd.getContext(), R.color.button_accent_disabled)
|
||||
});
|
||||
final ColorStateList textButtonColor = new ColorStateList(
|
||||
new int[][] {
|
||||
new int[] {android.R.attr.state_enabled}, // enabled
|
||||
new int[] {-android.R.attr.state_enabled} // disabled
|
||||
},
|
||||
new int[] {
|
||||
ContextCompat.getColor(mAdd.getContext(), UiUtils.getStyledResourceId(
|
||||
mAdd.getContext(), android.R.attr.textColorPrimaryInverse)),
|
||||
ContextCompat.getColor(mAdd.getContext(), R.color.button_accent_text_disabled)});
|
||||
new int[][]{
|
||||
new int[]{android.R.attr.state_enabled}, // enabled
|
||||
new int[]{-android.R.attr.state_enabled} // disabled
|
||||
},
|
||||
new int[]{
|
||||
ContextCompat.getColor(
|
||||
mAdd.getContext(),
|
||||
UiUtils.getStyledResourceId(mAdd.getContext(), android.R.attr.textColorPrimaryInverse)),
|
||||
ContextCompat.getColor(mAdd.getContext(), R.color.button_accent_text_disabled)
|
||||
});
|
||||
mAdd.setBackgroundTintList(bgButtonColor);
|
||||
mAdd.setTextColor(textButtonColor);
|
||||
mAdd.setText(enable ? text + " (" + TimeFormatUtils.formatWeekdays(mComplementItem) + ")" : text);
|
||||
|
||||
@@ -9,8 +9,8 @@ import androidx.annotation.Nullable;
|
||||
import app.organicmaps.R;
|
||||
import app.organicmaps.base.BaseMwmRecyclerFragment;
|
||||
|
||||
public class SimpleTimetableFragment
|
||||
extends BaseMwmRecyclerFragment<SimpleTimetableAdapter> implements TimetableProvider
|
||||
public class SimpleTimetableFragment extends BaseMwmRecyclerFragment<SimpleTimetableAdapter>
|
||||
implements TimetableProvider
|
||||
{
|
||||
private SimpleTimetableAdapter mAdapter;
|
||||
@Nullable
|
||||
|
||||
@@ -35,30 +35,25 @@ public class LayerBottomSheetItem
|
||||
@DrawableRes
|
||||
int drawableResId = 0;
|
||||
@StringRes
|
||||
int buttonTextResource = switch (mode)
|
||||
{
|
||||
case OUTDOORS ->
|
||||
{
|
||||
drawableResId = R.drawable.ic_layers_outdoors;
|
||||
yield R.string.button_layer_outdoor;
|
||||
}
|
||||
case SUBWAY ->
|
||||
{
|
||||
drawableResId = R.drawable.ic_layers_subway;
|
||||
yield R.string.subway;
|
||||
}
|
||||
case ISOLINES ->
|
||||
{
|
||||
drawableResId = R.drawable.ic_layers_isoline;
|
||||
yield R.string.button_layer_isolines;
|
||||
}
|
||||
case TRAFFIC ->
|
||||
{
|
||||
drawableResId = R.drawable.ic_layers_traffic;
|
||||
yield R.string.button_layer_traffic;
|
||||
}
|
||||
int buttonTextResource = switch (mode) {
|
||||
case OUTDOORS -> {
|
||||
drawableResId = R.drawable.ic_layers_outdoors;
|
||||
yield R.string.button_layer_outdoor;
|
||||
}
|
||||
case SUBWAY -> {
|
||||
drawableResId = R.drawable.ic_layers_subway;
|
||||
yield R.string.subway;
|
||||
}
|
||||
case ISOLINES -> {
|
||||
drawableResId = R.drawable.ic_layers_isoline;
|
||||
yield R.string.button_layer_isolines;
|
||||
}
|
||||
case TRAFFIC -> {
|
||||
drawableResId = R.drawable.ic_layers_traffic;
|
||||
yield R.string.button_layer_traffic;
|
||||
}
|
||||
};
|
||||
return new LayerBottomSheetItem(drawableResId, buttonTextResource, mode, layerItemClickListener);
|
||||
return new LayerBottomSheetItem(drawableResId, buttonTextResource, mode, layerItemClickListener);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
|
||||
@@ -5,9 +5,11 @@ import android.widget.ImageView;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.google.android.material.textview.MaterialTextView;
|
||||
|
||||
import app.organicmaps.R;
|
||||
import app.organicmaps.adapter.OnItemClickListener;
|
||||
import com.google.android.material.textview.MaterialTextView;
|
||||
|
||||
class LayerHolder extends RecyclerView.ViewHolder
|
||||
{
|
||||
|
||||
@@ -395,7 +395,7 @@ public class MapButtonsController extends Fragment
|
||||
0;
|
||||
// Allow offset tolerance for zoom buttons
|
||||
};
|
||||
showButton(getViewTopOffset(translation, button) >= toleranceOffset, entry.getKey());
|
||||
showButton(getViewTopOffset(translation, button) >= toleranceOffset, entry.getKey());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -99,9 +99,9 @@ public class NavigationController implements TrafficManager.TrafficCallback, Nav
|
||||
mCurrentSpeed = topFrame.findViewById(R.id.nav_current_speed);
|
||||
|
||||
View mTopbar = topFrame.findViewById(R.id.statutbar);
|
||||
ViewCompat.setOnApplyWindowInsetsListener(mTopbar, (v, windowInsets) -> {
|
||||
UiUtils.setViewNavigationTopInsetsMargin(v, windowInsets);
|
||||
return windowInsets;
|
||||
ViewCompat.setOnApplyWindowInsetsListener(mTopbar,(v, windowInsets) -> {
|
||||
UiUtils.setViewNavigationTopInsetsMargin(v, windowInsets);
|
||||
return windowInsets;
|
||||
});
|
||||
// Show a blank view below the navbar to hide the menu content
|
||||
final View navigationBarBackground = mFrame.findViewById(R.id.nav_bottom_sheet_nav_bar);
|
||||
|
||||
@@ -43,6 +43,7 @@ import app.organicmaps.util.UiUtils;
|
||||
import app.organicmaps.util.Utils;
|
||||
import app.organicmaps.widget.recycler.DotDividerItemDecoration;
|
||||
import app.organicmaps.widget.recycler.MultilineLayoutManager;
|
||||
|
||||
import com.google.android.material.button.MaterialButton;
|
||||
import com.google.android.material.imageview.ShapeableImageView;
|
||||
import com.google.android.material.textview.MaterialTextView;
|
||||
@@ -122,9 +123,9 @@ final class RoutingBottomMenuController implements View.OnClickListener
|
||||
@NonNull View timeElevationLine, @NonNull View transitFrame,
|
||||
@NonNull MaterialTextView error, @NonNull MaterialButton start,
|
||||
@NonNull ShapeableImageView altitudeChart, @NonNull MaterialTextView time,
|
||||
@NonNull MaterialTextView altitudeDifference,
|
||||
@NonNull MaterialTextView timeVehicle, @Nullable MaterialTextView arrival,
|
||||
@NonNull View actionFrame, @Nullable RoutingBottomMenuListener listener)
|
||||
@NonNull MaterialTextView altitudeDifference, @NonNull MaterialTextView timeVehicle,
|
||||
@Nullable MaterialTextView arrival, @NonNull View actionFrame,
|
||||
@Nullable RoutingBottomMenuListener listener)
|
||||
{
|
||||
mContext = context;
|
||||
mAltitudeChartFrame = altitudeChartFrame;
|
||||
|
||||
@@ -12,6 +12,9 @@ import androidx.annotation.IdRes;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.core.view.WindowInsetsCompat;
|
||||
|
||||
import com.google.android.material.textview.MaterialTextView;
|
||||
|
||||
import app.organicmaps.MwmApplication;
|
||||
import app.organicmaps.R;
|
||||
import app.organicmaps.sdk.Framework;
|
||||
@@ -26,7 +29,6 @@ import app.organicmaps.util.WindowInsetUtils.PaddingInsetsListener;
|
||||
import app.organicmaps.widget.RoutingToolbarButton;
|
||||
import app.organicmaps.widget.ToolbarController;
|
||||
import app.organicmaps.widget.WheelProgressView;
|
||||
import com.google.android.material.textview.MaterialTextView;
|
||||
|
||||
public class RoutingPlanController extends ToolbarController
|
||||
{
|
||||
@@ -262,7 +264,7 @@ public class RoutingPlanController extends ToolbarController
|
||||
default -> throw new IllegalArgumentException("unknown router: " + router);
|
||||
};
|
||||
|
||||
RoutingToolbarButton button = mRouterTypes.findViewById(mRouterTypes.getCheckedRadioButtonId());
|
||||
RoutingToolbarButton button = mRouterTypes.findViewById(mRouterTypes.getCheckedRadioButtonId());
|
||||
button.progress();
|
||||
|
||||
updateProgressLabels();
|
||||
|
||||
@@ -14,10 +14,12 @@ import androidx.annotation.NonNull;
|
||||
import androidx.annotation.StringRes;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.google.android.material.textview.MaterialTextView;
|
||||
|
||||
import app.organicmaps.R;
|
||||
import app.organicmaps.sdk.search.DisplayedCategories;
|
||||
import app.organicmaps.sdk.util.Language;
|
||||
import com.google.android.material.textview.MaterialTextView;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.util.Locale;
|
||||
|
||||
@@ -10,12 +10,14 @@ import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.google.android.material.textview.MaterialTextView;
|
||||
|
||||
import app.organicmaps.R;
|
||||
import app.organicmaps.sdk.search.SearchResult;
|
||||
import app.organicmaps.util.Graphics;
|
||||
import app.organicmaps.util.ThemeUtils;
|
||||
import app.organicmaps.util.UiUtils;
|
||||
import com.google.android.material.textview.MaterialTextView;
|
||||
|
||||
class SearchAdapter extends RecyclerView.Adapter<SearchAdapter.SearchDataViewHolder>
|
||||
{
|
||||
@@ -150,8 +152,7 @@ class SearchAdapter extends RecyclerView.Adapter<SearchAdapter.SearchDataViewHol
|
||||
{
|
||||
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
|
||||
UiUtils.hide(mOpen);
|
||||
@@ -168,18 +169,15 @@ class SearchAdapter extends RecyclerView.Adapter<SearchAdapter.SearchDataViewHol
|
||||
{
|
||||
final String minsToChangeStr = resources.getQuantityString(
|
||||
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);
|
||||
mOpen.setTextColor(ContextCompat.getColor(mSearchFragment.getContext(), R.color.base_yellow));
|
||||
}
|
||||
else
|
||||
{
|
||||
UiUtils.setTextAndShow(
|
||||
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));
|
||||
UiUtils.setTextAndShow(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,8 +273,7 @@ public class SearchFragment extends BaseMwmFragment implements SearchListener, C
|
||||
RecyclerView mResults = mResultsFrame.findViewById(R.id.recycler);
|
||||
setRecyclerScrollListener(mResults);
|
||||
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()
|
||||
|
||||
{
|
||||
|
||||
@@ -5,13 +5,15 @@ import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.google.android.material.textview.MaterialTextView;
|
||||
|
||||
import app.organicmaps.MwmApplication;
|
||||
import app.organicmaps.R;
|
||||
import app.organicmaps.sdk.routing.RoutingController;
|
||||
import app.organicmaps.sdk.search.SearchRecents;
|
||||
import app.organicmaps.util.Graphics;
|
||||
import app.organicmaps.widget.SearchToolbarController;
|
||||
import com.google.android.material.textview.MaterialTextView;
|
||||
|
||||
class SearchHistoryAdapter extends RecyclerView.Adapter<SearchHistoryAdapter.ViewHolder>
|
||||
{
|
||||
|
||||
@@ -8,12 +8,14 @@ import android.view.ViewGroup;
|
||||
import android.widget.CompoundButton;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.google.android.material.materialswitch.MaterialSwitch;
|
||||
|
||||
import app.organicmaps.R;
|
||||
import app.organicmaps.base.BaseMwmToolbarFragment;
|
||||
import app.organicmaps.sdk.routing.RoutingController;
|
||||
import app.organicmaps.sdk.routing.RoutingOptions;
|
||||
import app.organicmaps.sdk.settings.RoadType;
|
||||
import com.google.android.material.materialswitch.MaterialSwitch;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
|
||||
@@ -8,6 +8,7 @@ import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.preference.ListPreference;
|
||||
@@ -15,6 +16,9 @@ import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceCategory;
|
||||
import androidx.preference.PreferenceManager;
|
||||
import androidx.preference.TwoStatePreference;
|
||||
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
|
||||
import app.organicmaps.MwmApplication;
|
||||
import app.organicmaps.R;
|
||||
import app.organicmaps.dialog.CustomMapServerDialog;
|
||||
@@ -39,7 +43,7 @@ import app.organicmaps.sdk.util.SharedPropertiesUtils;
|
||||
import app.organicmaps.sdk.util.log.LogsManager;
|
||||
import app.organicmaps.util.ThemeSwitcher;
|
||||
import app.organicmaps.util.Utils;
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
@@ -138,12 +142,9 @@ public class SettingsPrefsFragment extends BaseXmlSettingsFragment implements La
|
||||
{
|
||||
final Preference pref = getPreference(getString(R.string.pref_map_locale));
|
||||
String mapLanguageCode = MapLanguageCode.getMapLanguageCode();
|
||||
if (mapLanguageCode.equals(DEFAULT_LANG_CODE))
|
||||
{
|
||||
if (mapLanguageCode.equals(DEFAULT_LANG_CODE)) {
|
||||
pref.setSummary(R.string.pref_maplanguage_local);
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
Locale locale = new Locale(mapLanguageCode);
|
||||
pref.setSummary(locale.getDisplayLanguage());
|
||||
}
|
||||
@@ -558,8 +559,9 @@ public class SettingsPrefsFragment extends BaseXmlSettingsFragment implements La
|
||||
String normalizedUrl = Framework.normalizeServerUrl(current);
|
||||
|
||||
// Initial summary
|
||||
customUrlPref.setSummary(normalizedUrl.isEmpty() ? getString(R.string.download_resources_custom_url_summary_none)
|
||||
: normalizedUrl);
|
||||
customUrlPref.setSummary(normalizedUrl.isEmpty()
|
||||
? getString(R.string.download_resources_custom_url_summary_none)
|
||||
: normalizedUrl);
|
||||
|
||||
// Sync native
|
||||
Framework.applyCustomMapDownloadUrl(requireContext(), normalizedUrl);
|
||||
@@ -567,7 +569,9 @@ public class SettingsPrefsFragment extends BaseXmlSettingsFragment implements La
|
||||
// Show dialog
|
||||
customUrlPref.setOnPreferenceClickListener(preference -> {
|
||||
CustomMapServerDialog.show(requireContext(), url -> {
|
||||
preference.setSummary(url.isEmpty() ? getString(R.string.download_resources_custom_url_summary_none) : url);
|
||||
preference.setSummary(url.isEmpty()
|
||||
? getString(R.string.download_resources_custom_url_summary_none)
|
||||
: url);
|
||||
});
|
||||
return true;
|
||||
});
|
||||
|
||||
@@ -274,10 +274,10 @@ public final class UiUtils
|
||||
|
||||
public static void setViewNavigationTopInsetsMargin(View view, WindowInsetsCompat windowInsets)
|
||||
{
|
||||
final Insets systemInsets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars());
|
||||
ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
|
||||
lp.topMargin = systemInsets.top;
|
||||
view.setLayoutParams(lp);
|
||||
final Insets systemInsets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars());
|
||||
ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
|
||||
lp.topMargin = systemInsets.top;
|
||||
view.setLayoutParams(lp);
|
||||
}
|
||||
|
||||
public static void setupNavigationIcon(@NonNull MaterialToolbar toolbar, @NonNull View.OnClickListener listener)
|
||||
|
||||
@@ -8,165 +8,165 @@ import android.graphics.Typeface;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
public abstract class BaseSignView extends View
|
||||
{
|
||||
private float mBorderWidthRatio = 0.1f;
|
||||
protected void setBorderWidthRatio(float ratio)
|
||||
{
|
||||
mBorderWidthRatio = ratio;
|
||||
}
|
||||
|
||||
private float mBorderInsetRatio = 0f;
|
||||
protected void setBorderInsetRatio(float ratio)
|
||||
{
|
||||
mBorderInsetRatio = ratio;
|
||||
}
|
||||
|
||||
// colors
|
||||
protected int mBackgroundColor;
|
||||
protected int mBorderColor;
|
||||
protected int mAlertColor;
|
||||
protected int mTextColor;
|
||||
protected int mTextAlertColor;
|
||||
|
||||
// paints
|
||||
protected final Paint mBackgroundPaint;
|
||||
protected final Paint mBorderPaint;
|
||||
protected final Paint mTextPaint;
|
||||
|
||||
// geometry
|
||||
protected float mWidth;
|
||||
protected float mHeight;
|
||||
protected float mRadius;
|
||||
protected float mBorderWidth;
|
||||
protected float mBorderRadius;
|
||||
|
||||
public BaseSignView(Context ctx, @Nullable AttributeSet attrs)
|
||||
{
|
||||
super(ctx, attrs);
|
||||
mBackgroundPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
|
||||
mBorderPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
|
||||
mBorderPaint.setStyle(Paint.Style.STROKE);
|
||||
mTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
|
||||
mTextPaint.setTextAlign(Paint.Align.CENTER);
|
||||
mTextPaint.setTypeface(Typeface.create(Typeface.DEFAULT, Typeface.BOLD));
|
||||
}
|
||||
|
||||
protected void setColors(int backgroundColor, int borderColor, int alertColor, int textColor, int textAlertColor)
|
||||
{
|
||||
mBackgroundColor = backgroundColor;
|
||||
mBorderColor = borderColor;
|
||||
mAlertColor = alertColor;
|
||||
mTextColor = textColor;
|
||||
mTextAlertColor = textAlertColor;
|
||||
|
||||
mBackgroundPaint.setColor(mBackgroundColor);
|
||||
mBorderPaint.setColor(mBorderColor);
|
||||
mTextPaint.setColor(mTextColor);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onSizeChanged(int width, int height, int oldWidth, int oldHeight)
|
||||
{
|
||||
super.onSizeChanged(width, height, oldWidth, oldHeight);
|
||||
final float paddingX = getPaddingLeft() + getPaddingRight();
|
||||
final float paddingY = getPaddingTop() + getPaddingBottom();
|
||||
mWidth = width - paddingX;
|
||||
mHeight = height - paddingY;
|
||||
mRadius = Math.min(mWidth, mHeight) / 2f;
|
||||
mBorderWidth = mRadius * mBorderWidthRatio;
|
||||
// subtract half the stroke PLUS the extra inset
|
||||
final float gap = mRadius * mBorderInsetRatio;
|
||||
mBorderRadius = mRadius - (mBorderWidth / 2f) - gap;
|
||||
configureTextSize();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDraw(@NonNull Canvas canvas)
|
||||
{
|
||||
super.onDraw(canvas);
|
||||
final String str = getValueString();
|
||||
if (str == null)
|
||||
return;
|
||||
|
||||
final float cx = mWidth / 2f;
|
||||
final float cy = mHeight / 2f;
|
||||
|
||||
// background & border
|
||||
boolean alert = isAlert();
|
||||
mBackgroundPaint.setColor(alert ? mAlertColor : mBackgroundColor);
|
||||
canvas.drawCircle(cx, cy, mRadius, mBackgroundPaint);
|
||||
if (!alert)
|
||||
{
|
||||
mBorderPaint.setStrokeWidth(mBorderWidth);
|
||||
mBorderPaint.setColor(mBorderColor);
|
||||
canvas.drawCircle(cx, cy, mBorderRadius, mBorderPaint);
|
||||
private float mBorderWidthRatio = 0.1f;
|
||||
protected void setBorderWidthRatio(float ratio) {
|
||||
mBorderWidthRatio = ratio;
|
||||
}
|
||||
|
||||
// text
|
||||
mTextPaint.setColor(alert ? mTextAlertColor : mTextColor);
|
||||
drawValueString(canvas, cx, cy, str);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onTouchEvent(@NonNull MotionEvent e)
|
||||
{
|
||||
final float cx = mWidth / 2f, cy = mHeight / 2f;
|
||||
final float dx = e.getX() - cx, dy = e.getY() - cy;
|
||||
if ((dx * dx) + (dy * dy) <= (mRadius * mRadius))
|
||||
{
|
||||
performClick();
|
||||
return true;
|
||||
private float mBorderInsetRatio = 0f;
|
||||
protected void setBorderInsetRatio(float ratio) {
|
||||
mBorderInsetRatio = ratio;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean performClick()
|
||||
{
|
||||
super.performClick();
|
||||
return false;
|
||||
}
|
||||
// colors
|
||||
protected int mBackgroundColor;
|
||||
protected int mBorderColor;
|
||||
protected int mAlertColor;
|
||||
protected int mTextColor;
|
||||
protected int mTextAlertColor;
|
||||
|
||||
private void drawValueString(Canvas c, float cx, float cy, String str)
|
||||
{
|
||||
Rect b = new Rect();
|
||||
mTextPaint.getTextBounds(str, 0, str.length(), b);
|
||||
final float y = cy - b.exactCenterY();
|
||||
c.drawText(str, cx, y, mTextPaint);
|
||||
}
|
||||
// paints
|
||||
protected final Paint mBackgroundPaint;
|
||||
protected final Paint mBorderPaint;
|
||||
protected final Paint mTextPaint;
|
||||
|
||||
void configureTextSize()
|
||||
{
|
||||
String text = getValueString();
|
||||
if (text == null)
|
||||
return;
|
||||
final float textRadius = mBorderRadius - mBorderWidth;
|
||||
final float maxTextSize = 2f * textRadius;
|
||||
final float maxTextSize2 = maxTextSize * maxTextSize;
|
||||
float lo = 0f, hi = maxTextSize, sz = maxTextSize;
|
||||
Rect b = new Rect();
|
||||
while (lo <= hi)
|
||||
// geometry
|
||||
protected float mWidth;
|
||||
protected float mHeight;
|
||||
protected float mRadius;
|
||||
protected float mBorderWidth;
|
||||
protected float mBorderRadius;
|
||||
|
||||
public BaseSignView(Context ctx, @Nullable AttributeSet attrs)
|
||||
{
|
||||
sz = (lo + hi) / 2f;
|
||||
mTextPaint.setTextSize(sz);
|
||||
mTextPaint.getTextBounds(text, 0, text.length(), b);
|
||||
float area = b.width() * b.width() + b.height() * b.height();
|
||||
if (area <= maxTextSize2)
|
||||
lo = sz + 1f;
|
||||
else
|
||||
hi = sz - 1f;
|
||||
super(ctx, attrs);
|
||||
mBackgroundPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
|
||||
mBorderPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
|
||||
mBorderPaint.setStyle(Paint.Style.STROKE);
|
||||
mTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
|
||||
mTextPaint.setTextAlign(Paint.Align.CENTER);
|
||||
mTextPaint.setTypeface(Typeface.create(Typeface.DEFAULT, Typeface.BOLD));
|
||||
}
|
||||
mTextPaint.setTextSize(Math.max(1f, sz));
|
||||
}
|
||||
|
||||
/** child must return the string to draw, or null if nothing */
|
||||
@Nullable
|
||||
protected abstract String getValueString();
|
||||
protected void setColors(int backgroundColor,
|
||||
int borderColor,
|
||||
int alertColor,
|
||||
int textColor,
|
||||
int textAlertColor)
|
||||
{
|
||||
mBackgroundColor = backgroundColor;
|
||||
mBorderColor = borderColor;
|
||||
mAlertColor = alertColor;
|
||||
mTextColor = textColor;
|
||||
mTextAlertColor = textAlertColor;
|
||||
|
||||
/** child decides if this is in “alert” state */
|
||||
protected abstract boolean isAlert();
|
||||
mBackgroundPaint.setColor(mBackgroundColor);
|
||||
mBorderPaint.setColor(mBorderColor);
|
||||
mTextPaint.setColor(mTextColor);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onSizeChanged(int width, int height, int oldWidth, int oldHeight) {
|
||||
super.onSizeChanged(width, height, oldWidth, oldHeight);
|
||||
final float paddingX = getPaddingLeft() + getPaddingRight();
|
||||
final float paddingY = getPaddingTop() + getPaddingBottom();
|
||||
mWidth = width - paddingX;
|
||||
mHeight = height - paddingY;
|
||||
mRadius = Math.min(mWidth, mHeight) / 2f;
|
||||
mBorderWidth = mRadius * mBorderWidthRatio;
|
||||
// subtract half the stroke PLUS the extra inset
|
||||
final float gap = mRadius * mBorderInsetRatio;
|
||||
mBorderRadius = mRadius - (mBorderWidth / 2f) - gap;
|
||||
configureTextSize();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDraw(@NonNull Canvas canvas)
|
||||
{
|
||||
super.onDraw(canvas);
|
||||
final String str = getValueString();
|
||||
if (str == null) return;
|
||||
|
||||
final float cx = mWidth / 2f;
|
||||
final float cy = mHeight / 2f;
|
||||
|
||||
// background & border
|
||||
boolean alert = isAlert();
|
||||
mBackgroundPaint.setColor(alert ? mAlertColor : mBackgroundColor);
|
||||
canvas.drawCircle(cx, cy, mRadius, mBackgroundPaint);
|
||||
if (!alert)
|
||||
{
|
||||
mBorderPaint.setStrokeWidth(mBorderWidth);
|
||||
mBorderPaint.setColor(mBorderColor);
|
||||
canvas.drawCircle(cx, cy, mBorderRadius, mBorderPaint);
|
||||
}
|
||||
|
||||
// text
|
||||
mTextPaint.setColor(alert ? mTextAlertColor : mTextColor);
|
||||
drawValueString(canvas, cx, cy, str);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onTouchEvent(@NonNull MotionEvent e)
|
||||
{
|
||||
final float cx = mWidth / 2f, cy = mHeight / 2f;
|
||||
final float dx = e.getX() - cx, dy = e.getY() - cy;
|
||||
if ((dx * dx) + (dy * dy) <= (mRadius * mRadius))
|
||||
{
|
||||
performClick();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean performClick()
|
||||
{
|
||||
super.performClick();
|
||||
return false;
|
||||
}
|
||||
|
||||
private void drawValueString(Canvas c, float cx, float cy, String str)
|
||||
{
|
||||
Rect b = new Rect();
|
||||
mTextPaint.getTextBounds(str, 0, str.length(), b);
|
||||
final float y = cy - b.exactCenterY();
|
||||
c.drawText(str, cx, y, mTextPaint);
|
||||
}
|
||||
|
||||
void configureTextSize()
|
||||
{
|
||||
String text = getValueString();
|
||||
if (text == null) return;
|
||||
final float textRadius = mBorderRadius - mBorderWidth;
|
||||
final float maxTextSize = 2f * textRadius;
|
||||
final float maxTextSize2 = maxTextSize * maxTextSize;
|
||||
float lo = 0f, hi = maxTextSize, sz = maxTextSize;
|
||||
Rect b = new Rect();
|
||||
while (lo <= hi)
|
||||
{
|
||||
sz = (lo + hi) / 2f;
|
||||
mTextPaint.setTextSize(sz);
|
||||
mTextPaint.getTextBounds(text, 0, text.length(), b);
|
||||
float area = b.width()*b.width() + b.height()*b.height();
|
||||
if (area <= maxTextSize2)
|
||||
lo = sz + 1f;
|
||||
else
|
||||
hi = sz - 1f;
|
||||
}
|
||||
mTextPaint.setTextSize(Math.max(1f, sz));
|
||||
}
|
||||
|
||||
/** child must return the string to draw, or null if nothing */
|
||||
@Nullable
|
||||
protected abstract String getValueString();
|
||||
|
||||
/** child decides if this is in “alert” state */
|
||||
protected abstract boolean isAlert();
|
||||
}
|
||||
|
||||
@@ -4,7 +4,9 @@ import android.content.Context;
|
||||
import android.content.res.TypedArray;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Pair;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import app.organicmaps.R;
|
||||
import app.organicmaps.sdk.util.StringUtils;
|
||||
|
||||
@@ -20,18 +22,18 @@ public class CurrentSpeedView extends BaseSignView
|
||||
setBorderWidthRatio(0.1f);
|
||||
setBorderInsetRatio(0.05f);
|
||||
|
||||
try (TypedArray a = ctx.getTheme().obtainStyledAttributes(
|
||||
attrs, R.styleable.CurrentSpeedView /* reuse same attrs or define new */, 0, 0))
|
||||
try (TypedArray a = ctx.getTheme()
|
||||
.obtainStyledAttributes(attrs, R.styleable.CurrentSpeedView /* reuse same attrs or define new */ , 0, 0))
|
||||
{
|
||||
int bg = a.getColor(R.styleable.CurrentSpeedView_currentSpeedBackgroundColor, DefaultValues.BACKGROUND_COLOR);
|
||||
int bd = a.getColor(R.styleable.CurrentSpeedView_currentSpeedBorderColor, DefaultValues.BORDER_COLOR);
|
||||
int tc = a.getColor(R.styleable.CurrentSpeedView_currentSpeedTextColor, DefaultValues.TEXT_COLOR);
|
||||
int bg = a.getColor(R.styleable.CurrentSpeedView_currentSpeedBackgroundColor, DefaultValues.BACKGROUND_COLOR);
|
||||
int bd = a.getColor(R.styleable.CurrentSpeedView_currentSpeedBorderColor, DefaultValues.BORDER_COLOR);
|
||||
int tc = a.getColor(R.styleable.CurrentSpeedView_currentSpeedTextColor, DefaultValues.TEXT_COLOR);
|
||||
setColors(bg, bd, 0, tc, 0);
|
||||
|
||||
if (isInEditMode())
|
||||
{
|
||||
mSpeedMps = a.getInt(R.styleable.CurrentSpeedView_currentSpeedEditModeCurrentSpeed, 50);
|
||||
mSpeedStr = Integer.toString((int) mSpeedMps);
|
||||
mSpeedMps = a.getInt(R.styleable.CurrentSpeedView_currentSpeedEditModeCurrentSpeed, 50);
|
||||
mSpeedStr = Integer.toString((int)mSpeedMps);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -45,7 +47,7 @@ public class CurrentSpeedView extends BaseSignView
|
||||
}
|
||||
else
|
||||
{
|
||||
Pair<String, String> su = StringUtils.nativeFormatSpeedAndUnits(mps);
|
||||
Pair<String,String> su = StringUtils.nativeFormatSpeedAndUnits(mps);
|
||||
mSpeedStr = su.first;
|
||||
}
|
||||
requestLayout();
|
||||
@@ -68,8 +70,8 @@ public class CurrentSpeedView extends BaseSignView
|
||||
|
||||
private interface DefaultValues
|
||||
{
|
||||
int BACKGROUND_COLOR = 0xFFFFFFFF;
|
||||
int BORDER_COLOR = 0xFF000000;
|
||||
int TEXT_COLOR = 0xFF000000;
|
||||
int BACKGROUND_COLOR = 0xFFFFFFFF;
|
||||
int BORDER_COLOR = 0xFF000000;
|
||||
int TEXT_COLOR = 0xFF000000;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,11 +12,13 @@ import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.StringRes;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import app.organicmaps.R;
|
||||
import app.organicmaps.util.UiUtils;
|
||||
|
||||
import com.google.android.material.imageview.ShapeableImageView;
|
||||
import com.google.android.material.textview.MaterialTextView;
|
||||
|
||||
import app.organicmaps.R;
|
||||
import app.organicmaps.util.UiUtils;
|
||||
|
||||
public class PlaceholderView extends LinearLayout
|
||||
{
|
||||
@SuppressWarnings("NullableProblems")
|
||||
|
||||
@@ -5,14 +5,16 @@ import android.content.res.TypedArray;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Paint;
|
||||
import android.util.AttributeSet;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import app.organicmaps.R;
|
||||
|
||||
public class SpeedLimitView extends BaseSignView
|
||||
{
|
||||
private int mSpeedLimit = -1;
|
||||
private boolean mAlert = false;
|
||||
private String mSpeedStr = "-1";
|
||||
private int mSpeedLimit = -1;
|
||||
private boolean mAlert = false;
|
||||
private String mSpeedStr = "-1";
|
||||
private final int unlimitedBorderColor;
|
||||
private final int unlimitedStripeColor;
|
||||
|
||||
@@ -25,22 +27,15 @@ public class SpeedLimitView extends BaseSignView
|
||||
|
||||
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 borderColor =
|
||||
styleAttrs.getColor(R.styleable.SpeedLimitView_speedLimitBorderColor, DefaultValues.BORDER_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);
|
||||
final int bgColor = styleAttrs.getColor(R.styleable.SpeedLimitView_speedLimitBackgroundColor, DefaultValues.BACKGROUND_COLOR);
|
||||
final int borderColor = styleAttrs.getColor(R.styleable.SpeedLimitView_speedLimitBorderColor, DefaultValues.BORDER_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);
|
||||
|
||||
unlimitedBorderColor = styleAttrs.getColor(R.styleable.SpeedLimitView_speedLimitUnlimitedBorderColor,
|
||||
DefaultValues.UNLIMITED_BORDER_COLOR);
|
||||
unlimitedStripeColor = styleAttrs.getColor(R.styleable.SpeedLimitView_speedLimitUnlimitedStripeColor,
|
||||
DefaultValues.UNLIMITED_STRIPE_COLOR);
|
||||
unlimitedBorderColor = styleAttrs.getColor(R.styleable.SpeedLimitView_speedLimitUnlimitedBorderColor, DefaultValues.UNLIMITED_BORDER_COLOR);
|
||||
unlimitedStripeColor = styleAttrs.getColor(R.styleable.SpeedLimitView_speedLimitUnlimitedStripeColor, DefaultValues.UNLIMITED_STRIPE_COLOR);
|
||||
|
||||
if (isInEditMode())
|
||||
{
|
||||
@@ -56,7 +51,7 @@ public class SpeedLimitView extends BaseSignView
|
||||
if (mSpeedLimit != limit)
|
||||
{
|
||||
mSpeedLimit = limit;
|
||||
mSpeedStr = Integer.toString(limit);
|
||||
mSpeedStr = Integer.toString(limit);
|
||||
requestLayout();
|
||||
}
|
||||
mAlert = alert;
|
||||
@@ -80,7 +75,7 @@ public class SpeedLimitView extends BaseSignView
|
||||
@Override
|
||||
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)
|
||||
{
|
||||
@@ -110,7 +105,7 @@ public class SpeedLimitView extends BaseSignView
|
||||
stripe.setStrokeWidth(mBorderWidth * 0.4f);
|
||||
|
||||
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 px = -dy, py = +dx; // Perpendicular
|
||||
final float step = radius * 0.15f; // Spacing
|
||||
@@ -127,13 +122,14 @@ public class SpeedLimitView extends BaseSignView
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private interface DefaultValues
|
||||
{
|
||||
int BACKGROUND_COLOR = 0xFFFFFFFF;
|
||||
int BORDER_COLOR = 0xFFFF0000;
|
||||
int ALERT_COLOR = 0xFFFF0000;
|
||||
int TEXT_COLOR = 0xFF000000;
|
||||
int TEXT_ALERT_COLOR = 0xFFFFFFFF;
|
||||
int BACKGROUND_COLOR = 0xFFFFFFFF;
|
||||
int BORDER_COLOR = 0xFFFF0000;
|
||||
int ALERT_COLOR = 0xFFFF0000;
|
||||
int TEXT_COLOR = 0xFF000000;
|
||||
int TEXT_ALERT_COLOR = 0xFFFFFFFF;
|
||||
int UNLIMITED_BORDER_COLOR = 0xFF000000;
|
||||
int UNLIMITED_STRIPE_COLOR = 0xFF000000;
|
||||
}
|
||||
|
||||
@@ -72,7 +72,7 @@ public class MyPositionButton
|
||||
case LocationState.FOLLOW_AND_ROTATE -> R.drawable.ic_follow_and_rotate;
|
||||
default -> throw new IllegalArgumentException("Invalid button mode: " + mode);
|
||||
};
|
||||
image = ResourcesCompat.getDrawable(resources, drawableRes, context.getTheme());
|
||||
image = ResourcesCompat.getDrawable(resources, drawableRes, context.getTheme());
|
||||
mIcons.put(mode, image);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package app.organicmaps.widget.placepage;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import app.organicmaps.sdk.util.StringUtils;
|
||||
import com.github.mikephil.charting.charts.BarLineChartBase;
|
||||
import androidx.annotation.Nullable;
|
||||
import com.github.mikephil.charting.components.AxisBase;
|
||||
import com.github.mikephil.charting.formatter.IAxisValueFormatter;
|
||||
|
||||
|
||||
@@ -105,8 +105,7 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View.
|
||||
public EditBookmarkFragment() {}
|
||||
|
||||
@Override
|
||||
public void onCreate(@Nullable Bundle savedInstanceState)
|
||||
{
|
||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setStyle(DialogFragment.STYLE_NORMAL, R.style.MwmTheme_FullScreenDialog);
|
||||
}
|
||||
@@ -185,9 +184,10 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View.
|
||||
{
|
||||
super.onStart();
|
||||
Dialog dialog = getDialog();
|
||||
if (dialog != null)
|
||||
{
|
||||
dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
|
||||
if (dialog != null) {
|
||||
dialog.getWindow().setLayout(
|
||||
ViewGroup.LayoutParams.MATCH_PARENT,
|
||||
ViewGroup.LayoutParams.MATCH_PARENT);
|
||||
}
|
||||
|
||||
// Focus name and show keyboard for "Unknown Place" bookmarks
|
||||
|
||||
@@ -6,6 +6,9 @@ import android.widget.RelativeLayout;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.core.widget.NestedScrollView;
|
||||
|
||||
import com.google.android.material.textview.MaterialTextView;
|
||||
|
||||
import app.organicmaps.ChartController;
|
||||
import app.organicmaps.R;
|
||||
import app.organicmaps.sdk.Framework;
|
||||
@@ -14,7 +17,6 @@ import app.organicmaps.sdk.bookmarks.data.Track;
|
||||
import app.organicmaps.sdk.bookmarks.data.TrackStatistics;
|
||||
import app.organicmaps.util.UiUtils;
|
||||
import app.organicmaps.util.Utils;
|
||||
import com.google.android.material.textview.MaterialTextView;
|
||||
import java.util.Objects;
|
||||
|
||||
public class ElevationProfileViewRenderer implements PlacePageStateListener
|
||||
|
||||
@@ -14,8 +14,7 @@ public class OpenStateTextFormatter
|
||||
return String.format(Locale.ROOT, "%02d:%02d", hour, minute);
|
||||
|
||||
int h = hour % 12;
|
||||
if (h == 0)
|
||||
h = 12;
|
||||
if (h == 0) h = 12;
|
||||
String ampm = (hour < 12) ? "AM" : "PM";
|
||||
return String.format(Locale.ROOT, "%d:%02d %s", h, minute, ampm);
|
||||
}
|
||||
@@ -30,13 +29,21 @@ public class OpenStateTextFormatter
|
||||
return t.getDayOfWeek().getDisplayName(TextStyle.SHORT, locale);
|
||||
}
|
||||
|
||||
static String buildAtLabel(boolean opens, boolean isToday, String dayShort, String time, String opensAtLocalized,
|
||||
String closesAtLocalized, String opensDayAtLocalized, String closesDayAtLocalized)
|
||||
static String buildAtLabel(
|
||||
boolean opens,
|
||||
boolean isToday,
|
||||
String dayShort,
|
||||
String time,
|
||||
String opensAtLocalized,
|
||||
String closesAtLocalized,
|
||||
String opensDayAtLocalized,
|
||||
String closesDayAtLocalized
|
||||
)
|
||||
{
|
||||
if (isToday)
|
||||
return opens ? String.format(Locale.ROOT, opensAtLocalized, time) // Opens at %s
|
||||
: String.format(Locale.ROOT, closesAtLocalized, time); // Closes at %s
|
||||
: String.format(Locale.ROOT, closesAtLocalized, time); // Closes at %s
|
||||
return opens ? String.format(Locale.ROOT, opensDayAtLocalized, dayShort, time) // Opens %s at %s
|
||||
: String.format(Locale.ROOT, closesDayAtLocalized, dayShort, time); // Closes %s at %s
|
||||
: String.format(Locale.ROOT, closesDayAtLocalized, dayShort, time); // Closes %s at %s
|
||||
}
|
||||
}
|
||||
|
||||
@@ -80,6 +80,6 @@ public class PlacePageButtonFactory
|
||||
yield R.drawable.ic_more;
|
||||
}
|
||||
};
|
||||
return new PlacePageButton(titleId, iconId, buttonType);
|
||||
return new PlacePageButton(titleId, iconId, buttonType);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ import androidx.fragment.app.FragmentFactory;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.lifecycle.Observer;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
|
||||
import app.organicmaps.MwmActivity;
|
||||
import app.organicmaps.MwmApplication;
|
||||
import app.organicmaps.R;
|
||||
@@ -427,7 +428,7 @@ public class PlacePageView extends Fragment
|
||||
|
||||
private void updateBookmarkView()
|
||||
{
|
||||
boolean enabled = mMapObject.isBookmark() || mMapObject.isTrack();
|
||||
boolean enabled = mMapObject.isBookmark() || mMapObject.isTrack();
|
||||
updateViewFragment(PlacePageBookmarkFragment.class, BOOKMARK_FRAGMENT_TAG, R.id.place_page_bookmark_fragment,
|
||||
enabled);
|
||||
}
|
||||
@@ -714,10 +715,12 @@ public class PlacePageView extends Fragment
|
||||
// map editing is disabled because the map is too old
|
||||
mTvEditPlace.setEnabled(true);
|
||||
mTvAddPlace.setEnabled(true);
|
||||
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); });
|
||||
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);
|
||||
});
|
||||
|
||||
CountryItem map = CountryItem.fill(countryId);
|
||||
|
||||
@@ -762,7 +765,9 @@ public class PlacePageView extends Fragment
|
||||
mTvAddPlace.setTextColor(editButtonColor);
|
||||
mTvEditPlace.setStrokeColor(ColorStateList.valueOf(editButtonColor));
|
||||
mTvAddPlace.setStrokeColor(ColorStateList.valueOf(editButtonColor));
|
||||
UiUtils.showIf(UiUtils.isVisible(mEditPlace) || UiUtils.isVisible(mAddPlace), mEditTopSpace);
|
||||
UiUtils.showIf(
|
||||
UiUtils.isVisible(mEditPlace) || UiUtils.isVisible(mAddPlace),
|
||||
mEditTopSpace);
|
||||
}
|
||||
updateLinksView();
|
||||
updateOpeningHoursView();
|
||||
@@ -863,9 +868,10 @@ public class PlacePageView extends Fragment
|
||||
}
|
||||
|
||||
// Get colours
|
||||
final ForegroundColorSpan colorGreen = new ForegroundColorSpan(ContextCompat.getColor(context, R.color.base_green));
|
||||
final ForegroundColorSpan colorGreen =
|
||||
new ForegroundColorSpan(ContextCompat.getColor(context, R.color.base_green));
|
||||
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));
|
||||
|
||||
// Get next state info
|
||||
@@ -891,12 +897,13 @@ public class PlacePageView extends Fragment
|
||||
if (nextStateTime > 0 && nextStateTime < Long.MAX_VALUE / 2)
|
||||
{
|
||||
// NOTE: Timezone is currently device timezone. TODO: use feature-specific timezone.
|
||||
nextChangeLocal = ZonedDateTime.ofInstant(Instant.ofEpochSecond(nextStateTime), ZoneId.systemDefault());
|
||||
nextChangeLocal = ZonedDateTime.ofInstant(
|
||||
Instant.ofEpochSecond(nextStateTime), ZoneId.systemDefault()
|
||||
);
|
||||
hasFiniteNextChange = true;
|
||||
}
|
||||
}
|
||||
catch (Throwable ignored)
|
||||
{}
|
||||
catch (Throwable ignored) {}
|
||||
}
|
||||
|
||||
if (!hasFiniteNextChange) // No valid next change
|
||||
@@ -911,7 +918,7 @@ public class PlacePageView extends Fragment
|
||||
}
|
||||
|
||||
String localizedTimeString = OpenStateTextFormatter.formatHoursMinutes(
|
||||
nextChangeLocal.getHour(), nextChangeLocal.getMinute(), DateUtils.is24HourFormat(context));
|
||||
nextChangeLocal.getHour(), nextChangeLocal.getMinute(), DateUtils.is24HourFormat(context));
|
||||
|
||||
final boolean shortHorizonClosing = isOpen && minsToNextState >= 0 && minsToNextState <= SHORT_HORIZON_CLOSE_MIN;
|
||||
final boolean shortHorizonOpening = !isOpen && minsToNextState >= 0 && minsToNextState <= SHORT_HORIZON_OPEN_MIN;
|
||||
@@ -919,12 +926,12 @@ public class PlacePageView extends Fragment
|
||||
if (shortHorizonClosing || shortHorizonOpening) // POI Opens/Closes in 60 mins • at 18:00
|
||||
{
|
||||
final String minsToChangeStr = getResources().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 = getString(isOpen ? R.string.closes_in : R.string.opens_in, minsToChangeStr);
|
||||
|
||||
openStateString.append(nextChangeFormatted, colorYellow, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
|
||||
.append(" • ") // Add spacer
|
||||
.append(getString(R.string.at, localizedTimeString));
|
||||
.append(" • ") // Add spacer
|
||||
.append(getString(R.string.at, localizedTimeString));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -934,16 +941,18 @@ public class PlacePageView extends Fragment
|
||||
final String closesDayAtStr = getString(R.string.closes_day_at); // "Closes %1$s at %2$s"
|
||||
|
||||
final boolean isToday =
|
||||
OpenStateTextFormatter.isSameLocalDate(nextChangeLocal, ZonedDateTime.now(nextChangeLocal.getZone()));
|
||||
OpenStateTextFormatter.isSameLocalDate(nextChangeLocal, ZonedDateTime.now(nextChangeLocal.getZone()));
|
||||
// Full weekday name per design feedback.
|
||||
final String dayName = nextChangeLocal.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.getDefault());
|
||||
final String dayName =
|
||||
nextChangeLocal.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.getDefault());
|
||||
|
||||
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);
|
||||
|
||||
final String atLabel = OpenStateTextFormatter.buildAtLabel(
|
||||
false, isToday, dayName, localizedTimeString, opensAtStr, closesAtStr, opensDayAtStr, closesDayAtStr);
|
||||
final String atLabel =
|
||||
OpenStateTextFormatter.buildAtLabel(false, isToday, dayName, localizedTimeString,
|
||||
opensAtStr, closesAtStr, opensDayAtStr, closesDayAtStr);
|
||||
|
||||
if (!TextUtils.isEmpty(atLabel))
|
||||
openStateString.append(" • ").append(atLabel);
|
||||
@@ -952,8 +961,9 @@ public class PlacePageView extends Fragment
|
||||
{
|
||||
openStateString.append(getString(R.string.closed_now), colorRed, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
|
||||
final String atLabel = OpenStateTextFormatter.buildAtLabel(
|
||||
true, isToday, dayName, localizedTimeString, opensAtStr, closesAtStr, opensDayAtStr, closesDayAtStr);
|
||||
final String atLabel =
|
||||
OpenStateTextFormatter.buildAtLabel(true, isToday, dayName, localizedTimeString,
|
||||
opensAtStr, closesAtStr, opensDayAtStr, closesDayAtStr);
|
||||
|
||||
if (!TextUtils.isEmpty(atLabel))
|
||||
openStateString.append(" • ").append(atLabel);
|
||||
|
||||
@@ -3,7 +3,9 @@ package app.organicmaps.widget.placepage;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
import androidx.lifecycle.ViewModel;
|
||||
|
||||
import app.organicmaps.sdk.bookmarks.data.MapObject;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class PlacePageViewModel extends ViewModel
|
||||
|
||||
@@ -32,8 +32,7 @@ import app.organicmaps.widget.placepage.PlacePageViewModel;
|
||||
import com.google.android.material.textview.MaterialTextView;
|
||||
|
||||
public class PlacePageBookmarkFragment extends Fragment implements View.OnClickListener, View.OnLongClickListener,
|
||||
Observer<MapObject>,
|
||||
EditBookmarkFragment.EditBookmarkListener
|
||||
Observer<MapObject>, EditBookmarkFragment.EditBookmarkListener
|
||||
{
|
||||
private View mFrame;
|
||||
private MaterialTextView mTvBookmarkNote;
|
||||
@@ -91,15 +90,15 @@ public class PlacePageBookmarkFragment extends Fragment implements View.OnClickL
|
||||
|
||||
private void updateBookmarkDetails()
|
||||
{
|
||||
String notes = null;
|
||||
if (currentBookmark != null)
|
||||
{
|
||||
notes = currentBookmark.getBookmarkDescription();
|
||||
}
|
||||
if (currentTrack != null)
|
||||
{
|
||||
notes = currentTrack.getTrackDescription();
|
||||
}
|
||||
String notes = null;
|
||||
if (currentBookmark != null)
|
||||
{
|
||||
notes = currentBookmark.getBookmarkDescription();
|
||||
}
|
||||
if (currentTrack != null)
|
||||
{
|
||||
notes = currentTrack.getTrackDescription();
|
||||
}
|
||||
if (TextUtils.isEmpty(notes))
|
||||
{
|
||||
UiUtils.hide(mTvBookmarkNote);
|
||||
@@ -133,13 +132,13 @@ public class PlacePageBookmarkFragment extends Fragment implements View.OnClickL
|
||||
final FragmentActivity activity = requireActivity();
|
||||
if (currentBookmark != null)
|
||||
{
|
||||
EditBookmarkFragment.editBookmark(currentBookmark.getCategoryId(), currentBookmark.getBookmarkId(), activity,
|
||||
getChildFragmentManager(), PlacePageBookmarkFragment.this);
|
||||
EditBookmarkFragment.editBookmark(currentBookmark.getCategoryId(), currentBookmark.getBookmarkId(), activity,
|
||||
getChildFragmentManager(), PlacePageBookmarkFragment.this);
|
||||
}
|
||||
else if (currentTrack != null)
|
||||
{
|
||||
EditBookmarkFragment.editBookmark(currentTrack.getCategoryId(), currentTrack.getTrackId(), activity,
|
||||
getChildFragmentManager(), PlacePageBookmarkFragment.this);
|
||||
EditBookmarkFragment.editBookmark(currentTrack.getCategoryId(), currentTrack.getTrackId(), activity,
|
||||
getChildFragmentManager(), PlacePageBookmarkFragment.this);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -13,13 +13,15 @@ import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.lifecycle.Observer;
|
||||
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.sdk.Framework;
|
||||
import app.organicmaps.sdk.bookmarks.data.ChargeSocketDescriptor;
|
||||
import app.organicmaps.sdk.bookmarks.data.MapObject;
|
||||
import app.organicmaps.widget.placepage.PlacePageViewModel;
|
||||
import com.google.android.material.imageview.ShapeableImageView;
|
||||
import com.google.android.material.textview.MaterialTextView;
|
||||
import java.text.DecimalFormat;
|
||||
|
||||
public class PlacePageChargeSocketsFragment extends Fragment implements Observer<MapObject>
|
||||
@@ -94,8 +96,8 @@ public class PlacePageChargeSocketsFragment extends Fragment implements Observer
|
||||
}
|
||||
|
||||
@SuppressLint("DiscouragedApi")
|
||||
int resTypeId = getResources().getIdentifier("charge_socket_" + socket.visualType(), "string",
|
||||
requireContext().getPackageName());
|
||||
int resTypeId =
|
||||
getResources().getIdentifier("charge_socket_" + socket.visualType(), "string", requireContext().getPackageName());
|
||||
if (resTypeId != 0)
|
||||
{
|
||||
type.setText(resTypeId);
|
||||
@@ -106,8 +108,7 @@ public class PlacePageChargeSocketsFragment extends Fragment implements Observer
|
||||
DecimalFormat df = new DecimalFormat("#.##");
|
||||
power.setText(getString(R.string.kw_label, df.format(socket.power())));
|
||||
}
|
||||
else if (socket.ignorePower())
|
||||
{
|
||||
else if (socket.ignorePower()) {
|
||||
power.setVisibility(INVISIBLE);
|
||||
}
|
||||
|
||||
|
||||
@@ -191,9 +191,8 @@ public class PlacePageLinksFragment extends Fragment implements Observer<MapObje
|
||||
case FMD_PANORAMAX -> null; // Don't add raw ID to list, as it's useless for users.
|
||||
default -> mMapObject.getMetadata(type);
|
||||
};
|
||||
// Add user names for social media if available
|
||||
if (!TextUtils.isEmpty(title) && !title.equals(url) && !title.contains("/"))
|
||||
items.add(title);
|
||||
// Add user names for social media if available
|
||||
if (!TextUtils.isEmpty(title) && !title.equals(url) && !title.contains("/")) items.add(title);
|
||||
|
||||
if (items.size() == 1)
|
||||
PlacePageUtils.copyToClipboard(requireContext(), mFrame, items.get(0));
|
||||
|
||||
@@ -3,13 +3,12 @@
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
style="@style/Widget.Material3.CardView.Elevated"
|
||||
style="@style/Widget.Material3.CardView.Filled"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingBottom="@dimen/margin_half"
|
||||
app:cardBackgroundColor="?attr/colorSurfaceContainerHigh"
|
||||
app:cardCornerRadius="28dp"
|
||||
app:cardElevation="@dimen/m3_sys_elevation_level3">
|
||||
app:cardCornerRadius="28dp">
|
||||
<LinearLayout
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
|
||||
@@ -41,5 +41,5 @@
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_gravity="bottom|start"
|
||||
android:background="?appBackground"/>
|
||||
android:background="?colorSurfaceContainerLow"/>
|
||||
</FrameLayout>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
android:layout_margin="4dp"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
app:cardBackgroundColor="?appBackground"
|
||||
app:cardBackgroundColor="?cardBackground"
|
||||
app:cardCornerRadius="12dp"
|
||||
app:cardElevation="2dp"
|
||||
tools:showIn="@layout/item_charging_sockets">
|
||||
|
||||
@@ -5,10 +5,9 @@
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/Widget.Material3.CardView.Elevated"
|
||||
style="@style/Widget.Material3.CardView.Filled"
|
||||
app:cardBackgroundColor="?attr/colorSurfaceContainerHigh"
|
||||
app:cardCornerRadius="28dp"
|
||||
app:cardElevation="@dimen/m3_sys_elevation_level3">
|
||||
app:cardCornerRadius="28dp">
|
||||
<LinearLayout
|
||||
android:orientation="vertical"
|
||||
android:minWidth="@dimen/bookmark_purchase_img_width"
|
||||
|
||||
@@ -2,15 +2,14 @@
|
||||
<com.google.android.material.card.MaterialCardView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
style="@style/Widget.Material3.CardView.Elevated"
|
||||
style="@style/Widget.Material3.CardView.Filled"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="@dimen/margin_double_and_half"
|
||||
android:minWidth="@dimen/dialog_min_width"
|
||||
android:minHeight="@dimen/dialog_min_height"
|
||||
app:cardBackgroundColor="?attr/colorSurfaceContainerHigh"
|
||||
app:cardCornerRadius="28dp"
|
||||
app:cardElevation="@dimen/m3_sys_elevation_level3">
|
||||
app:cardCornerRadius="28dp">
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
@@ -3,13 +3,12 @@
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
style="@style/Widget.Material3.CardView.Elevated"
|
||||
style="@style/Widget.Material3.CardView.Filled"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingBottom="@dimen/margin_half"
|
||||
app:cardBackgroundColor="?attr/colorSurfaceContainerHigh"
|
||||
app:cardCornerRadius="28dp"
|
||||
app:cardElevation="@dimen/m3_sys_elevation_level3">
|
||||
app:cardCornerRadius="28dp">
|
||||
<LinearLayout
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:clipToPadding="false"
|
||||
android:background="@color/bg_editor"
|
||||
tools:context=".editor.EditorActivity">
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
@@ -431,6 +430,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:layout_marginBottom="@dimen/margin_quarter"
|
||||
app:backgroundTint="?cardBackground"
|
||||
android:textColor="@color/base_red"
|
||||
app:strokeColor="@color/base_red"
|
||||
android:text="@string/editor_business_vacant_button"/>
|
||||
@@ -441,6 +441,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:layout_marginBottom="@dimen/margin_base"
|
||||
app:backgroundTint="?cardBackground"
|
||||
android:textColor="@color/base_red"
|
||||
app:strokeColor="@color/base_red"
|
||||
tools:text="Reset my changes"/>
|
||||
|
||||
@@ -2,9 +2,10 @@
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:background="?windowBackgroundForced"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
|
||||
@@ -10,13 +10,13 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:id="@+id/frameLayout"
|
||||
android:background="@color/bg_editor"
|
||||
android:layout_marginBottom="@dimen/margin_quarter">
|
||||
android:background="?windowBackgroundForced">
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/phones_recycler"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?cardBackground"
|
||||
android:scrollbars="vertical" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
style="@style/MwmWidget.FrameLayout.Elevation"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/bg_editor"
|
||||
android:background="?windowBackgroundForced"
|
||||
android:layout_above="@+id/tv__mode_switch"
|
||||
android:layout_below="@id/toolbar"/>
|
||||
|
||||
@@ -19,13 +19,14 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignTop="@+id/tv__mode_switch"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:background="@color/bg_editor"/>
|
||||
android:background="?cardBackground"/>
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/tv__mode_switch"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:background="?clickableBackground"
|
||||
android:gravity="center_vertical"
|
||||
android:padding="@dimen/margin_base"
|
||||
android:text="@string/editor_time_advanced"
|
||||
@@ -34,7 +35,7 @@
|
||||
android:textColor="?colorSecondary" />
|
||||
|
||||
<include
|
||||
layout="@layout/item_divider"
|
||||
layout="@layout/shadow_bottom"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_above="@id/tv__mode_switch"/>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/bg_editor">
|
||||
android:background="?windowBackgroundForced">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
@@ -17,7 +17,8 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/margin_half"
|
||||
style="@style/MwmWidget.M3.Editor.CardView">
|
||||
style="@style/MwmWidget.M3.Editor.CardView"
|
||||
app:cardBackgroundColor="?cardBackground">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/examples"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
android:id="@+id/recycler"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/bg_editor"
|
||||
android:background="?windowBackgroundForced"
|
||||
android:paddingStart="@dimen/margin_half"
|
||||
android:paddingEnd="@dimen/margin_half"
|
||||
android:scrollbars="vertical"/>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
android:layout_margin="4dp"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
app:cardBackgroundColor="?appBackground"
|
||||
app:cardBackgroundColor="?cardBackground"
|
||||
app:cardCornerRadius="12dp"
|
||||
app:cardElevation="2dp">
|
||||
|
||||
|
||||
@@ -21,6 +21,5 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/edit_socket_info_tooltip"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:layout_marginBottom="@dimen/margin_quarter"/>
|
||||
android:textAppearance="?android:attr/textAppearanceSmall" />
|
||||
</LinearLayout>
|
||||
@@ -3,7 +3,7 @@
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginTop="@dimen/margin_base_plus_quarter"
|
||||
android:layout_marginTop="@dimen/margin_direction_big"
|
||||
android:orientation="vertical">
|
||||
|
||||
<FrameLayout
|
||||
|
||||
@@ -40,5 +40,5 @@
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_gravity="bottom|center"
|
||||
android:background="?appBackground"/>
|
||||
android:background="?colorSurfaceContainerLow"/>
|
||||
</FrameLayout>
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
android:orientation="vertical"
|
||||
android:paddingEnd="@dimen/margin_base"
|
||||
android:paddingStart="@dimen/margin_base"
|
||||
android:background="@color/fg_editor"
|
||||
android:animateLayoutChanges="true">
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
@@ -21,12 +20,7 @@
|
||||
android:textAppearance="@style/MwmTextAppearance.Body3"
|
||||
tools:drawableEnd="@drawable/ic_expand_more" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recycler"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/fg_editor"
|
||||
android:scrollbars="vertical"/>
|
||||
<include layout="@layout/recycler_default" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/more_names"
|
||||
|
||||
@@ -4,5 +4,5 @@
|
||||
android:id="@+id/recycler"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?appBackground"
|
||||
android:background="?cardBackground"
|
||||
android:scrollbars="vertical"/>
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
<string name="delete">Изтриване</string>
|
||||
<string name="download_maps">Изтегляне на карти</string>
|
||||
<!-- 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 -->
|
||||
<string name="downloading">Теглене…</string>
|
||||
<!-- Choose measurement on first launch alert - choose metric system button -->
|
||||
@@ -27,7 +27,7 @@
|
||||
<!-- A dialog title, that warns a user that Precise Location is disabled and suggests to turn it on -->
|
||||
<string name="limited_accuracy">Ограничена точност</string>
|
||||
<!-- A dialog text, that warns a user that Precise Location is disabled and suggests to turn it on -->
|
||||
<string name="precise_location_is_disabled_long_text">За да осигурите точна навигация, активирайте функцията \"Точно местоположение\" в настройките</string>
|
||||
<string name="precise_location_is_disabled_long_text">За да осигурите точна навигация, активирайте функцията \"Точно местоположение\" в настройките.</string>
|
||||
<!-- View and button titles for accessibility -->
|
||||
<string name="zoom_to_country">Показване на картата</string>
|
||||
<!-- Message to display at the center of the screen when the country download has failed -->
|
||||
@@ -66,11 +66,11 @@
|
||||
<!-- "Add new bookmark list" dialog title -->
|
||||
<string name="add_new_set">Добавяне на нова група</string>
|
||||
<!-- Add Bookmark list dialog - hint when the list name is empty -->
|
||||
<string name="bookmark_set_name">Име на списък</string>
|
||||
<string name="bookmark_set_name">Име на група</string>
|
||||
<!-- Should be used in the bookmarks-only context, see bookmarks_and_tracks if tracks are also implied. -->
|
||||
<string name="bookmarks">Места</string>
|
||||
<string name="bookmarks">Отметки</string>
|
||||
<!-- "Bookmarks and Tracks" dialog title, also sync it with iphone/plist.txt -->
|
||||
<string name="bookmarks_and_tracks">Любими</string>
|
||||
<string name="bookmarks_and_tracks">Отметки и пътеки</string>
|
||||
<!-- Add bookmark dialog - bookmark name -->
|
||||
<string name="name">Име</string>
|
||||
<!-- Editor title above street and house number, duplicates [type.building.address] in types_strings.txt -->
|
||||
|
||||
@@ -66,11 +66,11 @@
|
||||
<!-- "Add new bookmark list" dialog title -->
|
||||
<string name="add_new_set">Afegeix una llista nova</string>
|
||||
<!-- Add Bookmark list dialog - hint when the list name is empty -->
|
||||
<string name="bookmark_set_name">Nom de la llista</string>
|
||||
<string name="bookmark_set_name">Nom de la llista de marcadors</string>
|
||||
<!-- Should be used in the bookmarks-only context, see bookmarks_and_tracks if tracks are also implied. -->
|
||||
<string name="bookmarks">Llocs</string>
|
||||
<string name="bookmarks">Marcadors</string>
|
||||
<!-- "Bookmarks and Tracks" dialog title, also sync it with iphone/plist.txt -->
|
||||
<string name="bookmarks_and_tracks">Preferits</string>
|
||||
<string name="bookmarks_and_tracks">Marcadors i recorreguts</string>
|
||||
<!-- Add bookmark dialog - bookmark name -->
|
||||
<string name="name">Nom</string>
|
||||
<!-- Editor title above street and house number, duplicates [type.building.address] in types_strings.txt -->
|
||||
@@ -146,14 +146,14 @@
|
||||
<!-- Notes field in Bookmarks view -->
|
||||
<string name="description">Notes</string>
|
||||
<!-- Email Subject when sharing bookmark list -->
|
||||
<string name="share_bookmarks_email_subject">Els meus preferits de CoMaps</string>
|
||||
<string name="share_bookmarks_email_body">Hola! \n \nAdjunto els meus marcadors de l\'aplicació CoMaps. Obriu-los si teniu l\'CoMaps instal·lat. O, si no teniu l\'aplicació, baixeu-la per al vostre dispositiu iOS o Android seguint aquest enllaç: https://www.comaps.app/download/ \n \nGaudiu viatjant amb l\'CoMaps!</string>
|
||||
<string name="share_bookmarks_email_subject">Marcadors d\'CoMaps compartits</string>
|
||||
<string name="share_bookmarks_email_body">Hola! \n \nAdjunto els meus marcadors de l\'aplicació CoMaps. Obriu-los si teniu l\'CoMaps instal·lat. O, si no teniu l\'aplicació, baixeu-la per al vostre aparell iOS o Android seguint aquest enllaç: https://www.comaps.app/download/ \n \nGaudiu viatjant amb l\'CoMaps!</string>
|
||||
<!-- message title of loading file -->
|
||||
<string name="load_kmz_title">Carregant Preferits</string>
|
||||
<string name="load_kmz_title">S\'estan carregant els marcadors</string>
|
||||
<!-- Kmz file successful loading -->
|
||||
<string name="load_kmz_successful">Els preferits s’han carregat correctament. Els trobareu al mapa i a la pantalla de gestió de preferits.</string>
|
||||
<string name="load_kmz_successful">Els marcadors s’han carregat correctament. Els trobareu al mapa i a la pantalla de gestió de marcadors.</string>
|
||||
<!-- Kml file loading failed -->
|
||||
<string name="load_kmz_failed">No s\'han pogut carregar els preferits. El fitxer pot estar corromput o ser defectuós.</string>
|
||||
<string name="load_kmz_failed">No s\'ha pogut carregar els marcadors. El fitxer pot ser malmès o defectuós.</string>
|
||||
<!-- Failed to recognize the format of a bookmarks or tracks file. -->
|
||||
<string name="unknown_file_type">L\'aplicació no reconeix el tipus de fitxer: \n%1$s</string>
|
||||
<!-- Failed to open a bookmarks or tracks file in CoMaps. -->
|
||||
@@ -499,7 +499,7 @@
|
||||
<string name="minute">min</string>
|
||||
<string name="day">d</string>
|
||||
<string name="placepage_more_button">Més</string>
|
||||
<string name="placepage_edit_bookmark_button">Edita el Lloc Desat</string>
|
||||
<string name="placepage_edit_bookmark_button">Edita el marcador</string>
|
||||
<string name="placepage_personal_notes_hint">Notes personals (text o html)</string>
|
||||
<string name="editor_reset_edits_message">Voleu descartar tots els canvis locals?</string>
|
||||
<string name="editor_reset_edits_button">Descartar canvis</string>
|
||||
@@ -564,18 +564,18 @@
|
||||
<string name="dialog_error_storage_message">L\'emmagatzematg extern no és accessible. La targeta SD potser s\'ha retirat, malmès, o el sistema de fitxer és de només lectura. Comproveu la targeta SD o contacteu amb nosaltres a support@comaps.app</string>
|
||||
<string name="setting_emulate_bad_storage">Emula un emmagatzematge malmès</string>
|
||||
<string name="error_enter_correct_name">Introduïu un nom correcte</string>
|
||||
<string name="bookmark_lists">Llista de Preferits</string>
|
||||
<string name="bookmark_lists">Llistes</string>
|
||||
<!-- Do not display all bookmark lists on the map -->
|
||||
<string name="bookmark_lists_hide_all">Amaga-ho tot</string>
|
||||
<string name="bookmark_lists_show_all">Mostra-ho tot</string>
|
||||
<plurals name="bookmarks_places">
|
||||
<item quantity="one">%d lloc desat</item>
|
||||
<item quantity="many">%d llocs desats</item>
|
||||
<item quantity="other">%d llocs desats</item>
|
||||
<item quantity="one">%d marcador</item>
|
||||
<item quantity="many">%d marcadors</item>
|
||||
<item quantity="other">%d marcadors</item>
|
||||
</plurals>
|
||||
<string name="bookmarks_create_new_group">Crea una llista</string>
|
||||
<!-- Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files -->
|
||||
<string name="bookmarks_import">Importar preferits</string>
|
||||
<string name="bookmarks_import">Importa marcadors i recorreguts</string>
|
||||
<string name="bookmarks_error_message_share_general">No s\'ha pogut compartir a causa d\'un error de l\'aplicació</string>
|
||||
<string name="bookmarks_error_title_share_empty">Error al compartir</string>
|
||||
<string name="bookmarks_error_message_share_empty">No es pot compartir una llista buida</string>
|
||||
@@ -606,7 +606,7 @@
|
||||
<string name="subway">Metro</string>
|
||||
<string name="layers_title">Estils i capes del mapa</string>
|
||||
<string name="bookmarks_empty_list_title">Aquesta llista és buida</string>
|
||||
<string name="bookmarks_empty_list_message">Per a desar un lloc, toqueu-ne un en el mapa i després toqueu la icona d\'estrella</string>
|
||||
<string name="bookmarks_empty_list_message">Per a afegir un marcador, toqueu un lloc en el mapa i després toqueu la icona d\'estrella</string>
|
||||
<string name="category_desc_more">…més</string>
|
||||
<string name="export_file">Exporta KMZ</string>
|
||||
<string name="export_file_gpx">Exporta GPX</string>
|
||||
@@ -659,7 +659,7 @@
|
||||
<!-- max. 10 symbols, both iOS and Android -->
|
||||
<string name="sort">Ordena…</string>
|
||||
<!-- Android, title, max 20-22 symbols -->
|
||||
<string name="sort_bookmarks">Ordenar preferits</string>
|
||||
<string name="sort_bookmarks">Ordena els marcadors</string>
|
||||
<!-- Android -->
|
||||
<string name="by_default">Per defecte</string>
|
||||
<!-- Android -->
|
||||
@@ -777,7 +777,7 @@
|
||||
<string name="browser_not_available">El navegador web no està disponible</string>
|
||||
<string name="volume">Volum</string>
|
||||
<!-- Bookmark categories screen, button that opens share dialog to export all bookmarks and tracks -->
|
||||
<string name="bookmarks_export">Exporta tots els llocs i recorreguts</string>
|
||||
<string name="bookmarks_export">Exporta tots els marcadors i recorreguts</string>
|
||||
<!-- button in (app) TTS settings, to open the system TTS settings. -->
|
||||
<string name="pref_tts_open_system_settings">Paràmetres de la síntesi de veu del sistema</string>
|
||||
<!-- toast displayed when pressing the "Speech synthesis system settings" button, and the system settings aren't found. -->
|
||||
@@ -809,7 +809,7 @@
|
||||
<!-- Title for the "Stop Without Saving" action for the alert when saving a track recording. -->
|
||||
<string name="continue_recording">Continuar enregistrant</string>
|
||||
<!-- Title for the alert when saving a track recording. -->
|
||||
<string name="track_recording_alert_title">Desar en preferits?</string>
|
||||
<string name="track_recording_alert_title">Voleu desar l’enregistrament a Marcadors i recorreguts?</string>
|
||||
<!-- Message for the toast when saving the track recording is finished but nothing to save. -->
|
||||
<string name="track_recording_toast_nothing_to_save">El recorregut està buit; no hi ha res a desar</string>
|
||||
<!-- Error message when there are no File Manager apps installed to select a folder when importing Bookmarks and Tracks -->
|
||||
@@ -839,11 +839,11 @@
|
||||
<string name="pref_left_button_disable">Desactivar</string>
|
||||
<string name="editor_level">Pis (0 és la planta baixa)</string>
|
||||
<string name="error_enter_correct_bluesky_page">Introdueix un nom d\'usuari o una adreça web de Bluesky vàlids</string>
|
||||
<string name="pref_backup_title">Còpia de seguretat de preferits</string>
|
||||
<string name="pref_backup_title">Còpia de seguretat de marcadors i recorreguts</string>
|
||||
<string name="pref_left_button_title">Configuració del botó esquerre</string>
|
||||
<string name="pref_backup_summary">Còpia de seguretat automàtica a un directori del teu dispositiu</string>
|
||||
<string name="pref_backup_now_summary_ok">Còpia de seguretat completada amb èxit</string>
|
||||
<string name="pref_backup_now_summary_empty_lists">No hi ha llocs o recorreguts per a fer una còpia de seguretat</string>
|
||||
<string name="pref_backup_now_summary_empty_lists">No hi ha marcadors o recorreguts per a fer una còpia de seguretat</string>
|
||||
<string name="pref_backup_now_summary_failed">Còpia de seguretat fallida</string>
|
||||
<string name="pref_backup_now_summary_folder_unavailable">El directori de la còpia de seguretat no està disponible</string>
|
||||
<string name="pref_backup_status_summary_success">Última còpia de seguretat amb èxit</string>
|
||||
@@ -860,7 +860,7 @@
|
||||
<string name="pedestrian">A peu</string>
|
||||
<string name="bicycle">Bicicleta</string>
|
||||
<string name="ruler">Regle</string>
|
||||
<string name="bookmark_color">Color del preferit</string>
|
||||
<string name="bookmark_color">Color del marcador</string>
|
||||
<string name="about_help">Quant a i Ajuda</string>
|
||||
<string name="open_now">Obert ara</string>
|
||||
<string name="closed_now">Tancat ara</string>
|
||||
@@ -925,5 +925,4 @@
|
||||
<string name="download_resources_custom_url_message">Sobreescriu el servidor de descàrrega de mapes per defecte. Deixa en blanc per a emprar el servidor per defecte de CoMaps.</string>
|
||||
<string name="download_resources_custom_url_summary_none">No establert</string>
|
||||
<string name="download_resources_custom_url_error_scheme">Per favor introdueix una URL que comence amb http:// o https://</string>
|
||||
<string name="pref_maplanguage_local">Idioma Local</string>
|
||||
</resources>
|
||||
|
||||
@@ -892,7 +892,7 @@
|
||||
<string name="avoid_paved">Vyhnout se zpevněným cestám</string>
|
||||
<string name="opens_at">Otevírá v %s</string>
|
||||
<string name="closes_at">Zavírá v %s</string>
|
||||
<string name="opens_day_at">Otevírá v %1$s v %2$s</string>
|
||||
<string name="opens_day_at">Otevírá %1$s v %2$s</string>
|
||||
<string name="closes_day_at">Zavírá %1$s v %2$s</string>
|
||||
<string name="editor_business_vacant_button">Podnik je volný</string>
|
||||
<string name="editor_mark_business_vacant_title">Označit podnik jako volný</string>
|
||||
|
||||
@@ -153,7 +153,7 @@
|
||||
<!-- message title of loading file -->
|
||||
<string name="load_kmz_title">Favoriten laden</string>
|
||||
<!-- Kmz file successful loading -->
|
||||
<string name="load_kmz_successful">Lesezeichen erfolgreich geladen! Du kannst diese auf deiner Karte oder im Lesezeichen-Manager anzeigen lassen.</string>
|
||||
<string name="load_kmz_successful">Lesezeichen erfolgreich geladen! Du kannst dieses nun auf deiner Karte oder im Lesezeichen-Manager anzeigen lassen.</string>
|
||||
<!-- Kml file loading failed -->
|
||||
<string name="load_kmz_failed">Laden der Lesezeichen fehlgeschlagen. Die Datei könnte beschädigt oder defekt sein.</string>
|
||||
<!-- Failed to recognize the format of a bookmarks or tracks file. -->
|
||||
@@ -258,7 +258,7 @@
|
||||
<!-- Update all button text -->
|
||||
<string name="downloader_update_all_button">Alle Karten aktualisieren</string>
|
||||
<!-- Cancel all button text -->
|
||||
<string name="downloader_cancel_all">Alles abbrechen</string>
|
||||
<string name="downloader_cancel_all">Alle abbrechen</string>
|
||||
<!-- Downloaded maps list header -->
|
||||
<string name="downloader_downloaded_subtitle">Heruntergeladen</string>
|
||||
<!-- Country queued for download -->
|
||||
@@ -281,7 +281,7 @@
|
||||
<!-- Item in context menu. -->
|
||||
<string name="downloader_update_map">Karte aktualisieren</string>
|
||||
<!-- Preference title -->
|
||||
<string name="google_play_services">Google-Standortverknüpfungsdienst</string>
|
||||
<string name="google_play_services">Google Fused-Standortdienste</string>
|
||||
<!-- Preference text -->
|
||||
<string name="pref_use_google_play">Ein proprietärer Dienst, der GPS, Wi-Fi, Mobilfunknetzwerke etc. kombiniert, um den Standort genauer zu bestimmen. Er kann sich mit Google-Servern verbinden.</string>
|
||||
<!-- Preference title -->
|
||||
@@ -370,13 +370,13 @@
|
||||
<!-- The message when user did not find anything in the search. -->
|
||||
<string name="search_not_found_query">Lade die Region herunter, in der du suchst, oder füge den Namen einer nahe gelegenen Stadt oder eines Dorfes hinzu.</string>
|
||||
<string name="search_history_title">Suchverlauf</string>
|
||||
<string name="search_history_text">Deine letzten Suchanfragen anzeigen</string>
|
||||
<string name="search_history_text">Ihre letzten Suchanfragen anzeigen</string>
|
||||
<string name="clear_search">Suchverlauf löschen</string>
|
||||
<string name="p2p_your_location">Dein Standort</string>
|
||||
<string name="p2p_start">Start</string>
|
||||
<string name="p2p_from_here">Route von</string>
|
||||
<string name="p2p_to_here">Route nach</string>
|
||||
<string name="p2p_only_from_current">Die Navigation ist nur von deinem aktuellen Standort aus möglich</string>
|
||||
<string name="p2p_only_from_current">Die Navigation ist nur von Ihrem aktuellen Standort aus möglich</string>
|
||||
<string name="p2p_reroute_from_current">Soll eine Route von deinem aktuellen Standort aus berechnet werden?</string>
|
||||
<!-- Edit open hours/set time and minutes dialog -->
|
||||
<string name="next_button">Weiter</string>
|
||||
@@ -417,14 +417,14 @@
|
||||
<string name="edit_opening_hours">Öffnungszeiten bearbeiten</string>
|
||||
<string name="no_osm_account">Kein Konto bei OpenStreetMap?</string>
|
||||
<string name="register_at_openstreetmap">Bei OpenStreetMap registrieren</string>
|
||||
<string name="login">Anmelden</string>
|
||||
<string name="login">Bei OpenStreetMap anmelden</string>
|
||||
<!-- Status message indicating that user did not login to OSM profile yet. -->
|
||||
<string name="not_signed_in">Nicht angemeldet</string>
|
||||
<string name="login_osm">Bei OpenStreetMap anmelden</string>
|
||||
<string name="logout">Abmelden</string>
|
||||
<string name="edit_place">Eintrag bearbeiten</string>
|
||||
<string name="add_language">Eine Sprache hinzufügen</string>
|
||||
<string name="street">Innerortsstraße</string>
|
||||
<string name="street">Straße</string>
|
||||
<!-- Editable House Number text field (in address block). -->
|
||||
<string name="house_number">Hausnummer</string>
|
||||
<string name="details">Einzelheiten</string>
|
||||
@@ -505,7 +505,7 @@
|
||||
<string name="editor_reset_edits_button">Änderungen verwerfen</string>
|
||||
<string name="editor_remove_place_message">Hinzugefügtes Objekt löschen?</string>
|
||||
<string name="editor_remove_place_button">Löschen</string>
|
||||
<string name="editor_place_doesnt_exist">Ort existiert nicht</string>
|
||||
<string name="editor_place_doesnt_exist">Dieser Ort existiert nicht</string>
|
||||
<!-- Error message for "Place doesn't exist" dialog when comment is empty -->
|
||||
<string name="delete_place_empty_comment_error">Gebe bitte den Grund für die Löschung an</string>
|
||||
<!-- Phone number error message -->
|
||||
@@ -844,7 +844,7 @@
|
||||
<string name="pref_backup_summary">Backup automatisch in einem Ordner auf deinem Gerät erstellen</string>
|
||||
<string name="pref_backup_now_summary">Backup sofort erstellen</string>
|
||||
<string name="pref_backup_now_summary_ok">Backup erfolgreich abgeschlossen</string>
|
||||
<string name="pref_backup_now_summary_empty_lists">Keine Orte und Tracks für ein Backup vorhanden</string>
|
||||
<string name="pref_backup_now_summary_empty_lists">Keine Orte und Tracks zum Sichern</string>
|
||||
<string name="pref_backup_now_summary_failed">Backup fehlgeschlagen</string>
|
||||
<string name="pref_backup_now_summary_folder_unavailable">Der Backup-Ordner ist nicht verfügbar</string>
|
||||
<string name="pref_backup_location_summary_initial">Bitte wähle zuerst einen Ordner und erteile die Berechtigung</string>
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
</resources>
|
||||
@@ -68,9 +68,9 @@
|
||||
<!-- "Add new bookmark list" dialog title -->
|
||||
<string name="add_new_set">Agregar una lista nueva</string>
|
||||
<!-- Add Bookmark list dialog - hint when the list name is empty -->
|
||||
<string name="bookmark_set_name">Nombre de la lista</string>
|
||||
<string name="bookmark_set_name">Nombre de la lista de marcadores</string>
|
||||
<!-- Should be used in the bookmarks-only context, see bookmarks_and_tracks if tracks are also implied. -->
|
||||
<string name="bookmarks">Lugares</string>
|
||||
<string name="bookmarks">Marcadores</string>
|
||||
<!-- "Bookmarks and Tracks" dialog title, also sync it with iphone/plist.txt -->
|
||||
<string name="bookmarks_and_tracks">Favoritos</string>
|
||||
<!-- Add bookmark dialog - bookmark name -->
|
||||
@@ -107,7 +107,7 @@
|
||||
<!-- Search category for public transport; any changes should be duplicated in categories.txt @category_transport! -->
|
||||
<string name="category_transport">Transporte</string>
|
||||
<!-- Search category for fuel stations; any changes should be duplicated in categories.txt @category_fuel! -->
|
||||
<string name="category_fuel">Estación de servicio</string>
|
||||
<string name="category_fuel">Estación de Servicio</string>
|
||||
<!-- Search category for parking lots; any changes should be duplicated in categories.txt @category_parking! -->
|
||||
<string name="category_parking">Aparcamiento</string>
|
||||
<!-- Search category for malls/clothes/shoes/gifts/jewellery/sport shops; any changes should be duplicated in categories.txt @category_shopping! -->
|
||||
@@ -524,7 +524,7 @@
|
||||
<!-- 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>
|
||||
<!-- Dialog before publishing the modifications to the public map. -->
|
||||
<string name="editor_share_to_all_dialog_message_1">Asegúrate de que no has introducido ningún dato privado o personal.</string>
|
||||
<string name="editor_share_to_all_dialog_message_1">Asegú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="navigation_stop_button">Detener</string>
|
||||
<!-- Shown as toast when starting the recent track recording -->
|
||||
@@ -578,7 +578,7 @@
|
||||
</plurals>
|
||||
<string name="bookmarks_create_new_group">Crear nueva lista</string>
|
||||
<!-- Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files -->
|
||||
<string name="bookmarks_import">Importar favoritos</string>
|
||||
<string name="bookmarks_import">Importar marcadores y trazas</string>
|
||||
<string name="bookmarks_error_message_share_general">No se puede compartir debido a un error de la aplicación</string>
|
||||
<string name="bookmarks_error_title_share_empty">Error al compartir</string>
|
||||
<string name="bookmarks_error_message_share_empty">No se puede compartir una lista vacía</string>
|
||||
@@ -662,7 +662,7 @@
|
||||
<!-- max. 10 symbols, both iOS and Android -->
|
||||
<string name="sort">Ordenar…</string>
|
||||
<!-- Android, title, max 20-22 symbols -->
|
||||
<string name="sort_bookmarks">Exportar favoritos</string>
|
||||
<string name="sort_bookmarks">Ordenar marcadores</string>
|
||||
<!-- Android -->
|
||||
<string name="by_default">Por defecto</string>
|
||||
<!-- Android -->
|
||||
@@ -814,7 +814,7 @@
|
||||
<!-- Title for the "Stop Without Saving" action for the alert when saving a track recording. -->
|
||||
<string name="continue_recording">Continuar grabación</string>
|
||||
<!-- Title for the alert when saving a track recording. -->
|
||||
<string name="track_recording_alert_title">¿Guardar en Favoritos?</string>
|
||||
<string name="track_recording_alert_title">¿Guardar en Marcadores y trayectos?</string>
|
||||
<!-- Message for the toast when saving the track recording is finished but nothing to save. -->
|
||||
<string name="track_recording_toast_nothing_to_save">El trayecto está vacío; no hay nada que guardar</string>
|
||||
<!-- Error message when there are no File Manager apps installed to select a folder when importing Bookmarks and Tracks -->
|
||||
@@ -845,14 +845,14 @@
|
||||
<string name="about_help">Acerca de y Ayuda</string>
|
||||
<string name="clear">Limpiar</string>
|
||||
<string name="ruler">Regla</string>
|
||||
<string name="bookmark_color">Color del favorito</string>
|
||||
<string name="pref_backup_title">Respaldar favoritos</string>
|
||||
<string name="bookmark_color">Color del marcador</string>
|
||||
<string name="pref_backup_title">Copia de seguridad de marcadores y trayectos</string>
|
||||
<string name="pref_backup_summary">Copia de seguridad automática a una carpeta de tu dispositivo</string>
|
||||
<string name="pref_backup_now_title">Realizar copia de seguridad ahora</string>
|
||||
<string name="pref_backup_now_summary">Crear copia de seguridad inmediatamente</string>
|
||||
<string name="pref_backup_now_summary_progress">Copia de seguridad en progreso…</string>
|
||||
<string name="pref_backup_now_summary_ok">Copia de seguridad completada con éxito</string>
|
||||
<string name="pref_backup_now_summary_empty_lists">No hay marcadores ni trayectos para hacer un respaldo</string>
|
||||
<string name="pref_backup_now_summary_empty_lists">No hay marcadores ni trayectos para hacer una copia de seguridad</string>
|
||||
<string name="pref_backup_now_summary_failed">Copia de seguridad fallida</string>
|
||||
<string name="pref_backup_now_summary_folder_unavailable">La carpeta de copia de seguridad no está disponible</string>
|
||||
<string name="pref_backup_location_summary_initial">Selecciona por favor primero una carpeta y concede permiso</string>
|
||||
@@ -927,5 +927,4 @@
|
||||
<string name="download_resources_custom_url_message">Sobreescribe el servidor de mapas por defecto. Déjalo en blanco para usar el servidor de CoMaps por defecto.</string>
|
||||
<string name="download_resources_custom_url_summary_none">No establecido</string>
|
||||
<string name="download_resources_custom_url_error_scheme">Por favor introduce un URL empezando con http:// o https://</string>
|
||||
<string name="pref_maplanguage_local">Idioma local</string>
|
||||
</resources>
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
<!-- Add Bookmark list dialog - hint when the list name is empty -->
|
||||
<string name="bookmark_set_name">Nom du groupe de signets</string>
|
||||
<!-- Should be used in the bookmarks-only context, see bookmarks_and_tracks if tracks are also implied. -->
|
||||
<string name="bookmarks">Lieux</string>
|
||||
<string name="bookmarks">Signets</string>
|
||||
<!-- "Bookmarks and Tracks" dialog title, also sync it with iphone/plist.txt -->
|
||||
<string name="bookmarks_and_tracks">Signets et traces</string>
|
||||
<!-- Add bookmark dialog - bookmark name -->
|
||||
@@ -148,14 +148,14 @@
|
||||
<!-- Notes field in Bookmarks view -->
|
||||
<string name="description">Notes</string>
|
||||
<!-- Email Subject when sharing bookmark list -->
|
||||
<string name="share_bookmarks_email_subject">Mes favoris CoMaps.</string>
|
||||
<string name="share_bookmarks_email_body">Bonjour,\n \nVous trouverez ci-joint mes favoris, veuillez les ouvrir dans l’application CoMaps. Si vous ne l’avez pas encore installée, téléchargez l\'application depuis : https://www.comaps.app/download/ \n \nBon voyage avec CoMaps !</string>
|
||||
<string name="share_bookmarks_email_subject">Signets CoMaps partagés avec vous</string>
|
||||
<string name="share_bookmarks_email_body">Bonjour !\n \nVous trouverez ci-joint mes signets de l’appli CoMaps, à ouvrir dans l’application CoMaps. Si vous ne l’avez pas, téléchargez-la en suivant ce lien : https://www.comaps.app/download/ \n \nBon voyage avec CoMaps !</string>
|
||||
<!-- message title of loading file -->
|
||||
<string name="load_kmz_title">Chargement des Favoris</string>
|
||||
<string name="load_kmz_title">Chargement des signets</string>
|
||||
<!-- Kmz file successful loading -->
|
||||
<string name="load_kmz_successful">Les favoris ont été chargés avec succès ! Vous pouvez les trouver sur la carte ou sur l’écran du Gestionnaire des Favoris.</string>
|
||||
<string name="load_kmz_successful">Les signets ont été chargés avec succès ! Vous pouvez les trouver sur la carte ou sur l’écran du Gestionnaire de signets.</string>
|
||||
<!-- Kml file loading failed -->
|
||||
<string name="load_kmz_failed">Erreur lors du chargement des Favoris. Le fichier pourrait être corrompu ou défectueux.</string>
|
||||
<string name="load_kmz_failed">Échec lors du chargement des signets. Le fichier pourrait être corrompu ou défectueux.</string>
|
||||
<!-- Failed to recognize the format of a bookmarks or tracks file. -->
|
||||
<string name="unknown_file_type">Le type de fichier n’est pas reconnu par l’appli :\n%1$s</string>
|
||||
<!-- Failed to open a bookmarks or tracks file in CoMaps. -->
|
||||
@@ -567,7 +567,7 @@
|
||||
<string name="dialog_error_storage_message">Le stockage externe n’est pas disponible. La carte SD a probablement été enlevée, endommagée ou le système est en lecture seule. Veuillez vérifier votre carte SD ou nous contacter via support@comaps.app</string>
|
||||
<string name="setting_emulate_bad_storage">Émuler le mauvais stockage</string>
|
||||
<string name="error_enter_correct_name">Veuillez saisir un nom correct</string>
|
||||
<string name="bookmark_lists">Listes de favoris</string>
|
||||
<string name="bookmark_lists">Listes</string>
|
||||
<!-- Do not display all bookmark lists on the map -->
|
||||
<string name="bookmark_lists_hide_all">Tout masquer</string>
|
||||
<string name="bookmark_lists_show_all">Tout afficher</string>
|
||||
@@ -843,7 +843,7 @@
|
||||
<string name="pedestrian">À pied</string>
|
||||
<string name="bicycle">À vélo</string>
|
||||
<string name="ruler">Règle</string>
|
||||
<string name="bookmark_color">Couleur des Favoris</string>
|
||||
<string name="bookmark_color">Couleur du marque-page</string>
|
||||
<string name="panoramax">Image Panoramax</string>
|
||||
<string name="pref_backup_now_title">Enregistrer maintenant</string>
|
||||
<string name="backup_interval_every_day">Quotidien</string>
|
||||
@@ -926,5 +926,4 @@
|
||||
<string name="download_resources_custom_url_title">Serveur de cartes personnalisé</string>
|
||||
<string name="download_resources_custom_url_error_scheme">Veuillez saisir une URL complète commençant par http:// ou https://</string>
|
||||
<string name="download_resources_custom_url_message">Serveur pour télécharger les cartes. Laissez vide pour utiliser le serveur par défaut CoMaps.</string>
|
||||
<string name="pref_maplanguage_local">Langue locale</string>
|
||||
</resources>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<string name="zoom_to_country">Prikaži na karti</string>
|
||||
<string name="country_status_download_failed">Preuzimanje neuspješno</string>
|
||||
<string name="try_again">Pokušaj ponovo</string>
|
||||
<string name="about_proposition_2">• Usmjereno na privatnost i bez oglasa</string>
|
||||
<string name="about_proposition_2">• Fokusiran na privatnost i bez reklama</string>
|
||||
<string name="close">Zatvori</string>
|
||||
<string name="download">Preuzmi</string>
|
||||
<string name="download_resources_continue">Prikaži kartu</string>
|
||||
@@ -65,7 +65,7 @@
|
||||
<string name="downloader_retry">Pokušaj ponovno</string>
|
||||
<string name="red">Crvena</string>
|
||||
<string name="name">Naziv</string>
|
||||
<string name="category_post">Poštanski ured</string>
|
||||
<string name="category_post">Pošta</string>
|
||||
<string name="email">E-mail</string>
|
||||
<string name="done">Gotovo</string>
|
||||
<string name="rate_the_app">Ocijeni aplikaciju</string>
|
||||
@@ -73,7 +73,7 @@
|
||||
<string name="search_history_title">Povijest pretraživanja</string>
|
||||
<string name="not_now">Ne sada</string>
|
||||
<string name="pref_map_style_title">Noćni način</string>
|
||||
<string name="create">Kreiraj</string>
|
||||
<string name="create">Napravi</string>
|
||||
<string name="editor_time_close">Zatvoreno</string>
|
||||
<string name="p2p_start">Početak</string>
|
||||
<string name="editor_time_to">Do</string>
|
||||
@@ -115,9 +115,9 @@
|
||||
<string name="sort">Sortiraj…</string>
|
||||
<string name="money">Novac</string>
|
||||
<string name="app_site_url">https://comaps.app/hr/</string>
|
||||
<string name="location_is_disabled_long_text">Trenutno su vam sve lokacijske usluge onemogućene za ovaj uređaj ili aplikaciju. Omogućite ih u Postavkama.</string>
|
||||
<string name="precise_location_is_disabled_long_text">Kako biste osigurali točnu navigaciju, uključite Preciznu lokaciju u postavkama</string>
|
||||
<string name="about_menu_title">O CoMapsu</string>
|
||||
<string name="location_is_disabled_long_text">Trenutno su vam onemogućene sve usluge lokacije za ovaj uređaj ili aplikaciju. Molim omogućite ih u Postavkama.</string>
|
||||
<string name="precise_location_is_disabled_long_text">Za točnu navigaciju omogućite Preciznu lokaciju u postavkama</string>
|
||||
<string name="about_menu_title">O CoMaps aplikaciji</string>
|
||||
<string name="about_headline">Otvoreni projekt kojeg pokreće zajednica</string>
|
||||
<string name="about_proposition_1">• Jednostavan za korištenje i dotjeran</string>
|
||||
<string name="about_proposition_3">• Izvanmrežno, brz i kompaktan</string>
|
||||
@@ -160,7 +160,7 @@
|
||||
<string name="category_eat">Gdje jesti</string>
|
||||
<string name="category_food">Namirnice</string>
|
||||
<string name="category_transport">Prijevoz</string>
|
||||
<string name="category_fuel">Benzin</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>
|
||||
@@ -199,21 +199,21 @@
|
||||
<item quantity="few">%d rute</item>
|
||||
<item quantity="other">%d ruta</item>
|
||||
</plurals>
|
||||
<string name="bookmarks_export">Izvoz svih Mjesta i Ruta</string>
|
||||
<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 favorite?</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 favorita</string>
|
||||
<string name="pref_backup_now_summary_empty_lists">Nema Mjesta i Ruta za izradu sigurnosne kopije</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 spremljeno mjesto</string>
|
||||
<string name="bookmark_lists_hide_all">Sakrij sve</string>
|
||||
<plurals name="bookmarks_places">
|
||||
<item quantity="one">%d spremljeno mjesto</item>
|
||||
<item quantity="few">%d spremljena mjesta</item>
|
||||
<item quantity="other">%d spremljenih mjesta</item>
|
||||
<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>
|
||||
@@ -225,8 +225,8 @@
|
||||
<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 spremanje mjesta dodirnite mjesto na karti, a zatim dodirnite ikonu zvjezdice</string>
|
||||
<string name="sort_bookmarks">Sortiraj favorite</string>
|
||||
<string name="bookmark_color">Boja Favorita</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>
|
||||
@@ -361,7 +361,7 @@
|
||||
<string name="editor_business_vacant_button">Objekt više ne posluje</string>
|
||||
<string name="editor_mark_business_vacant_title">Označi da nema aktivnog poslovanja</string>
|
||||
<string name="editor_mark_business_vacant_description">Koristite ovo ako se tvrtka iselila, a prostor je prazan i spreman za novog najmoprimca.</string>
|
||||
<string name="editor_submit">Predaj</string>
|
||||
<string name="editor_submit">Pošalji</string>
|
||||
<string name="error_enter_correct_phone">Unesite važeći telefonski broj</string>
|
||||
<string name="error_enter_correct_web">Unesite valjanu web-adresu</string>
|
||||
<string name="error_enter_correct_email">Unesite važeću e-adresu</string>
|
||||
@@ -401,7 +401,7 @@
|
||||
<string name="enable_logging">Omogući zapisivanje</string>
|
||||
<string name="feedback_general">Opće povratne informacije</string>
|
||||
<string name="prefs_languages_information">Za glasovne upute koristimo sistemski TTS. Mnogi Android uređaji koriste Google TTS, možete ga preuzeti ili ažurirati s Google Playa (https://play.google.com/store/apps/details?id=com.google.android.tts)</string>
|
||||
<string name="prefs_languages_information_off">Za neke jezike morat ćete instalirati sintetizator govora ili dodatni jezični paket iz trgovine aplikacija (Google Play, Galaxy Store, App Gallery, FDroid). . \nOtvorite postavke uređaja → Jezik i unos → Govor → Izlaz teksta u govor. \nOvdje možete upravljati postavkama za sintezu govora (na primjer, preuzeti jezični paket za izvanmrežnu upotrebu) i odabrati drugi program za pretvaranje teksta u govor.</string>
|
||||
<string name="prefs_languages_information_off">Za neke jezike morat ćete instalirati sintetizator govora ili dodatni jezični paket iz trgovine aplikacija (Google Play, Galaxy Store, App Gallery, FDroid). \nOtvorite postavke uređaja → Jezik i unos → Govor → Izlaz teksta u govor. Ovdje možete upravljati postavkama za sintezu govora (na primjer, preuzeti jezični paket za izvanmrežnu upotrebu) i odabrati drugi program za pretvaranje teksta u govor.</string>
|
||||
<string name="prefs_languages_information_off_link">Za više informacija molimo provjerite ovaj vodič</string>
|
||||
<string name="prefs_speed_cameras_information">Upozorenja na kamere za nadzor brzine onemogućena su u državama u kojima su takva upozorenja zabranjena lokalnim zakonima.</string>
|
||||
<string name="transliteration_title">Prikaži u latinici</string>
|
||||
@@ -552,111 +552,4 @@
|
||||
<string name="aa_grant_permissions">Dodijeli dopuštenja</string>
|
||||
<string name="button_layer_outdoor">Na otvorenom</string>
|
||||
<string name="browser_not_available">Web preglednik nije dostupan</string>
|
||||
<string name="hours_confirmed_time_ago">Potvrđeno %s</string>
|
||||
<string name="existence_confirmed_time_ago">Postojanje potvrđeno %s</string>
|
||||
<string name="edit_opening_hours">Uredi radno vrijeme</string>
|
||||
<string name="no_osm_account">Nemate OpenStreetMap račun?</string>
|
||||
<string name="register_at_openstreetmap">Registrirajte se na OpenStreetMap-u</string>
|
||||
<string name="not_signed_in">Niste prijavljeni</string>
|
||||
<string name="login_osm">Prijava na OpenStreetMap</string>
|
||||
<string name="edit_place">Uredi mjesto</string>
|
||||
<string name="add_language">Dodaj jezik</string>
|
||||
<string name="street">Ulica</string>
|
||||
<string name="house_number">Broj zgrade</string>
|
||||
<string name="building">Zgrada</string>
|
||||
<string name="add_street">Dodaj ulicu</string>
|
||||
<string name="empty_street_name_error">Unesite naziv ulice</string>
|
||||
<string name="choose_language">Odaberite jezik</string>
|
||||
<string name="choose_street">Odaberite ulicu</string>
|
||||
<string name="cuisine">Kuhinja</string>
|
||||
<string name="select_cuisine">Odaberite kuhinju</string>
|
||||
<string name="editor_add_phone">Dodaj telefon</string>
|
||||
<string name="level">Kat</string>
|
||||
<string name="level_value_generic">Razina: %s</string>
|
||||
<string name="volume">Volumen</string>
|
||||
<string name="pref_tts_open_system_settings">Postavke sustava za sintezu govora</string>
|
||||
<string name="pref_tts_no_system_tts">Postavke sinteze govora nisu pronađene, jeste li sigurni da vaš uređaj to podržava?</string>
|
||||
<string name="drive_through">Prolaz za automobile</string>
|
||||
<string name="clear_the_search">Obriši pretragu</string>
|
||||
<string name="website_menu">Poveznica na Jelovnik</string>
|
||||
<string name="view_menu">Pogledaj Jelovnik</string>
|
||||
<string name="open_in_app">Otvori u drugoj aplikaciji</string>
|
||||
<string name="select_option">Odaberite opciju</string>
|
||||
<string name="outdoor_seating">Vanjski prostor za sjedenje</string>
|
||||
<string name="power_save_dialog_summary">Za najtočniju navigaciju preporučujemo isključivanje načina uštede energije u postavkama baterije telefona.</string>
|
||||
<string name="stop_without_saving">Zaustavi bez spremanja</string>
|
||||
<string name="continue_recording">Nastavi snimanje</string>
|
||||
<string name="error_no_file_manager_app">Dijalog za odabir mape nije moguće prikazati jer na vašem uređaju nije instalirana odgovarajuća aplikacija. Instalirajte aplikaciju za upravljanje datotekama i pokušajte ponovno.</string>
|
||||
<string name="choose_color">Odaberi boju</string>
|
||||
<string name="uri_open_location_failed">Nije instalirana aplikacija koja može otvoriti lokaciju</string>
|
||||
<string name="nav_auto">Automatska tema u navigaciji</string>
|
||||
<string name="pref_left_button_title">Postavke lijevog gumba</string>
|
||||
<string name="pref_left_button_disable">Onemogući</string>
|
||||
<string name="pref_backup_summary">Automatsko sigurnosno kopiranje u mapu na vašem uređaju</string>
|
||||
<string name="pref_backup_now_title">Sigurnosno kopiraj sada</string>
|
||||
<string name="pref_backup_now_summary">Odmah stvorite sigurnosnu kopiju</string>
|
||||
<string name="pref_backup_now_summary_progress">Sigurnosno kopiranje u tijeku…</string>
|
||||
<string name="pref_backup_now_summary_ok">Sigurnosna kopija uspješno dovršena</string>
|
||||
<string name="pref_backup_now_summary_failed">Sigurnosna kopija nije uspjela</string>
|
||||
<string name="pref_backup_now_summary_folder_unavailable">Mapa za sigurnosnu kopiju nije dostupna</string>
|
||||
<string name="pref_backup_status_summary_success">Posljednja uspješna sigurnosna kopija</string>
|
||||
<string name="pref_backup_location_title">Lokacija sigurnosne kopije</string>
|
||||
<string name="pref_backup_location_summary_initial">Najprije odaberite mapu i dodijelite dopuštenje</string>
|
||||
<string name="pref_backup_history_title">Broj sigurnosnih kopija koje treba čuvati</string>
|
||||
<string name="pref_backup_interval_title">Automatsko sigurnosno kopiranje</string>
|
||||
<string name="backup_interval_every_day">Dnevno</string>
|
||||
<string name="backup_interval_every_week">Tjedno</string>
|
||||
<string name="backup_interval_manual_only">Isključeno (samo ručno)</string>
|
||||
<string name="dialog_report_error_missing_folder">Odabrana lokacija za sigurnosnu kopiju nije dostupna ili na nju nije moguće zapisivati. Odaberite drugu lokaciju.</string>
|
||||
<string name="dialog_report_error_with_logs">Molimo vas da nam pošaljete izvješće o pogrešci:\n- \"Omogući zapisivanje\" u postavkama\n- reproducirajte problem\n- na zaslonu \"O nama i pomoć\" pritisnite gumb \"Prijavi grešku\" i pošaljite putem e-pošte ili chata\n- onemogućite zapisivanje</string>
|
||||
<string name="clear">Očisti</string>
|
||||
<string name="route_type">Vrsta rute</string>
|
||||
<string name="vehicle">Vozilo</string>
|
||||
<string name="pedestrian">Pješak</string>
|
||||
<string name="bicycle">Bicikla</string>
|
||||
<string name="ruler">Ravnalo</string>
|
||||
<string name="about_help">O nama & Pomoć</string>
|
||||
<string name="open_now">Otvoreno sada</string>
|
||||
<string name="closed_now">Zatvoreno sada</string>
|
||||
<string name="at">u %s</string>
|
||||
<string name="delete_track_dialog_title">Izbrisati %s?</string>
|
||||
<string name="pref_tts_no_system_tts_short">Nije pronađen program za pretvaranje teksta u govor, provjerite postavke aplikacije</string>
|
||||
<string name="navigation_start_tts_message">"Pokretanje navigacije, jezik glasovnih uputa: "</string>
|
||||
<string name="navigation_start_tts_disabled_message">Glasovne upute onemogućene: TTS mehanizam nije dostupan</string>
|
||||
<string name="unknown_power_output">nepoznato</string>
|
||||
<string name="charge_socket_type2">Tip 2 (bez kabela)</string>
|
||||
<string name="charge_socket_type2_cable">Tip 2 (s kabelom)</string>
|
||||
<string name="charge_socket_type2_combo">Tip 2 kombinacija</string>
|
||||
<string name="charge_socket_type1">Tip 1</string>
|
||||
<string name="charge_socket_nacs">NACS</string>
|
||||
<string name="charge_socket_chademo">CHAdeMO priključak</string>
|
||||
<string name="charge_socket_schuko">Domaći EU</string>
|
||||
<string name="unknown_socket_type">nepoznata utičnica</string>
|
||||
<string name="edit_socket_info_tooltip">Izradite nove utičnice ili uredite postojeće.</string>
|
||||
<string name="charging_station_available_sockets">Dostupne utičnice</string>
|
||||
<string name="charge_socket_unknown_other">Drugo ili nepoznato</string>
|
||||
<string name="charge_socket_count">Broj</string>
|
||||
<string name="charge_socket_power">Snaga (kW)</string>
|
||||
<string name="editor_socket">Uredi utičnicu</string>
|
||||
<string name="unknown_count">nepoznato</string>
|
||||
<string name="error_value_must_be_positive">Vrijednost mora biti pozitivna</string>
|
||||
<string name="error_invalid_number">Nevažeći broj</string>
|
||||
<string name="offline_explanation_title">Izvanmrežne karte</string>
|
||||
<string name="offline_explanation_text">Za prikaz i navigaciju područjem potrebno je preuzeti kartu.\nPreuzmite karte za područja u koja želite putovati.</string>
|
||||
<string name="list_description_empty">Uredite popis kako biste dodali opis</string>
|
||||
<string name="advanced">Napredno</string>
|
||||
<string name="download_resources_custom_url_title">Prilagođeni poslužitelj karata</string>
|
||||
<string name="download_resources_custom_url_message">Zamijenite zadani poslužitelj za preuzimanje karata. Ostavite prazno za korištenje CoMaps zadanog poslužitelja.</string>
|
||||
<string name="download_resources_custom_url_summary_none">Nije postavljeno</string>
|
||||
<string name="download_resources_custom_url_error_scheme">Molimo unesite URL koji počinje s http:// ili https://</string>
|
||||
<plurals name="minutes_short">
|
||||
<item quantity="one">%d minuta</item>
|
||||
<item quantity="few">%d minute</item>
|
||||
<item quantity="other">%d minuta</item>
|
||||
</plurals>
|
||||
<plurals name="bookmarks_detect_message">
|
||||
<item quantity="one">Pronađena je %d datoteka. Možete je vidjeti nakon pretvorbe.</item>
|
||||
<item quantity="few">Pronađeno je %d datoteka. Možete ih vidjeti nakon pretvorbe.</item>
|
||||
<item quantity="other">Pronađeno je %d datoteka. Možete ih vidjeti nakon pretvorbe.</item>
|
||||
</plurals>
|
||||
</resources>
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
<!-- Should be used in the bookmarks-only context, see bookmarks_and_tracks if tracks are also implied. -->
|
||||
<string name="bookmarks">Luoghi preferiti</string>
|
||||
<!-- "Bookmarks and Tracks" dialog title, also sync it with iphone/plist.txt -->
|
||||
<string name="bookmarks_and_tracks">Preferiti</string>
|
||||
<string name="bookmarks_and_tracks">Luoghi preferiti e tracce</string>
|
||||
<!-- Add bookmark dialog - bookmark name -->
|
||||
<string name="name">Nome</string>
|
||||
<!-- Editor title above street and house number, duplicates [type.building.address] in types_strings.txt -->
|
||||
@@ -144,7 +144,7 @@
|
||||
<!-- Notes field in Bookmarks view -->
|
||||
<string name="description">Informazioni</string>
|
||||
<!-- Email Subject when sharing bookmark list -->
|
||||
<string name="share_bookmarks_email_subject">I miei luoghi preferiti su CoMaps</string>
|
||||
<string name="share_bookmarks_email_subject">Questi sono i miei luoghi preferiti su CoMaps</string>
|
||||
<string name="share_bookmarks_email_body">Ciao!\n\nIn allegato ci sono i miei luoghi preferiti. Aprili se hai installato CoMaps. Oppure, se non ce l\'hai, scarica l\'app per iOS o Android seguendo questo link: https://www.comaps.app/\n\nDivertiti a viaggiare con CoMaps!</string>
|
||||
<!-- message title of loading file -->
|
||||
<string name="load_kmz_title">Caricamento luoghi preferiti</string>
|
||||
@@ -803,7 +803,7 @@
|
||||
<!-- Title for the "Stop Without Saving" action for the alert when saving a track recording. -->
|
||||
<string name="continue_recording">Continua a registrare</string>
|
||||
<!-- Title for the alert when saving a track recording. -->
|
||||
<string name="track_recording_alert_title">Salvare in Preferiti?</string>
|
||||
<string name="track_recording_alert_title">Salvare in Luoghi preferiti e tracce?</string>
|
||||
<!-- Message for the toast when saving the track recording is finished but nothing to save. -->
|
||||
<string name="track_recording_toast_nothing_to_save">La traccia è vuota - non c\'è nulla da salvare</string>
|
||||
<!-- Error message when there are no File Manager apps installed to select a folder when importing Bookmarks and Tracks -->
|
||||
|
||||
@@ -140,14 +140,14 @@
|
||||
<!-- Notes field in Bookmarks view -->
|
||||
<string name="description">Pastabos</string>
|
||||
<!-- Email Subject when sharing bookmark list -->
|
||||
<string name="share_bookmarks_email_subject">Mano „CoMaps“ žymės</string>
|
||||
<string name="share_bookmarks_email_body">Labas! \n \nČia prisegtas mano „CoMaps“ programėlės žymių failas. Jei jos neturi, gali ją parsisiųsti iš https://www.comaps.app/download/ \n \nSmagių kelionių su „CoMaps“!</string>
|
||||
<string name="share_bookmarks_email_subject">Su jumis bendrinamas „CoMaps“ žymių sąrašas</string>
|
||||
<string name="share_bookmarks_email_body">Labas! \n \nČia prisegtas mano žymių sąrašas iš „CoMaps“ programėlės. Jei jos neturi, gali ją parsisiųsti iš https://www.comaps.app/download/ \n \nSmagių kelionių su „CoMaps“!</string>
|
||||
<!-- message title of loading file -->
|
||||
<string name="load_kmz_title">Žymės įkeliamos</string>
|
||||
<string name="load_kmz_title">Žymių sąrašas įkeliamas</string>
|
||||
<!-- Kmz file successful loading -->
|
||||
<string name="load_kmz_successful">Žymės įkeltos! Galite jas rasti žemėlapyje arba žymių tvarkytuvės ekrane.</string>
|
||||
<string name="load_kmz_successful">Žymių sąrašas įkeltas! Galite rasti jį žemėlapyje arba žymių tvarkytuvės ekrane.</string>
|
||||
<!-- Kml file loading failed -->
|
||||
<string name="load_kmz_failed">Žymių įkelti nepavyko. Gali būti, kad failas sugadintas.</string>
|
||||
<string name="load_kmz_failed">Žymių sąrašo nepavyko įkelti. Gali būti, kad failas sugadintas.</string>
|
||||
<!-- Failed to recognize the format of a bookmarks or tracks file. -->
|
||||
<string name="unknown_file_type">Programėlė neatpažįsta failo tipo: \n%1$s</string>
|
||||
<!-- Failed to open a bookmarks or tracks file in CoMaps. -->
|
||||
@@ -553,13 +553,13 @@
|
||||
<string name="dialog_error_storage_message">Išorinė saugykla yra nepasiekiama. SD kortelė galimai yra pašalinta, pažeista, arba failų sistema joje yra nustatyta tik skaitymui. Patikrinkite SD kortelę arba susisiekite su mumis adresu support@comaps.app</string>
|
||||
<string name="setting_emulate_bad_storage">Emuliuoti blogą saugyklą</string>
|
||||
<string name="error_enter_correct_name">Įveskite teisingą pavadinimą</string>
|
||||
<string name="bookmark_lists">Žymių sąrašai</string>
|
||||
<string name="bookmark_lists">Sąrašai</string>
|
||||
<!-- Do not display all bookmark lists on the map -->
|
||||
<string name="bookmark_lists_hide_all">Nerodyti visų</string>
|
||||
<string name="bookmark_lists_show_all">Rodyti visus</string>
|
||||
<string name="bookmarks_create_new_group">Kurti naują sąrašą</string>
|
||||
<!-- Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files -->
|
||||
<string name="bookmarks_import">Importuoti žymes</string>
|
||||
<string name="bookmarks_import">Importuoti žymes ir trasas</string>
|
||||
<string name="bookmarks_error_message_share_general">Nepavyko bendrinti dėl programinės klaidos</string>
|
||||
<string name="bookmarks_error_title_share_empty">Klaida bendrinant</string>
|
||||
<string name="bookmarks_error_message_share_empty">Negalima bendrinti tuščio sąrašo</string>
|
||||
@@ -580,7 +580,7 @@
|
||||
<string name="subway">Metro</string>
|
||||
<string name="layers_title">Žemėlapio stiliai ir sluoksniai</string>
|
||||
<string name="bookmarks_empty_list_title">Sąrašas tuščias</string>
|
||||
<string name="bookmarks_empty_list_message">Jeigu norite pasižymėti, bakstelėkite ją žemėlapyje, o tada – bakstelėkite žvaigždutės piktogramą</string>
|
||||
<string name="bookmarks_empty_list_message">Jeigu norite pridėti žymę, bakstelėkite vietą žemėlapyje, o tada – žvaigždutės piktogramą</string>
|
||||
<string name="category_desc_more">…daugiau</string>
|
||||
<string name="export_file">Eksportuoti KMZ</string>
|
||||
<string name="export_file_gpx">Eksportuoti GPX</string>
|
||||
@@ -711,7 +711,7 @@
|
||||
<string name="browser_not_available">Saityno naršyklė nepasiekiama</string>
|
||||
<string name="volume">Garsumas</string>
|
||||
<!-- Bookmark categories screen, button that opens share dialog to export all bookmarks and tracks -->
|
||||
<string name="bookmarks_export">Eksportuoti pasižymėtas žymes ir trasas</string>
|
||||
<string name="bookmarks_export">Eksportuoti visas žymes ir trasas</string>
|
||||
<!-- button in (app) TTS settings, to open the system TTS settings. -->
|
||||
<string name="pref_tts_open_system_settings">Šnekos sintezės sistemos nustatymai</string>
|
||||
<!-- toast displayed when pressing the "Speech synthesis system settings" button, and the system settings aren't found. -->
|
||||
@@ -743,7 +743,7 @@
|
||||
<!-- Title for the "Stop Without Saving" action for the alert when saving a track recording. -->
|
||||
<string name="continue_recording">Tęsti įrašymą</string>
|
||||
<!-- Title for the alert when saving a track recording. -->
|
||||
<string name="track_recording_alert_title">Pridėti žymę?</string>
|
||||
<string name="track_recording_alert_title">Įrašyti į žymių ir trasų sąrašą?</string>
|
||||
<!-- Message for the toast when saving the track recording is finished but nothing to save. -->
|
||||
<string name="track_recording_toast_nothing_to_save">Trasa tuščia – nėra ką įrašyti</string>
|
||||
<!-- Error message when there are no File Manager apps installed to select a folder when importing Bookmarks and Tracks -->
|
||||
@@ -753,7 +753,7 @@
|
||||
<string name="uri_open_location_failed">Neįdiegta programėlė, galinti atverti vietą</string>
|
||||
<!-- preference string for using auto theme only in navigation mode -->
|
||||
<string name="nav_auto">Automatinė naviguojant</string>
|
||||
<string name="bookmarks_and_tracks">Žymės</string>
|
||||
<string name="bookmarks_and_tracks">Žymės ir trasos</string>
|
||||
<string name="location_settings">Vietos nustatymai</string>
|
||||
<string name="maps_storage_summary">Pasirinkite aplanką atsiųstiems žemėlapiams įrašyti</string>
|
||||
<string name="category_secondhand">Naudotos prekės</string>
|
||||
@@ -780,10 +780,9 @@
|
||||
<string name="car_used_on_the_phone_screen">Dabar naudojatės „CoMaps“ telefono ekrane</string>
|
||||
<string name="car_used_on_the_car_screen">Dabar naudojatės „CoMaps“ automobilio ekrane</string>
|
||||
<plurals name="bookmarks_places">
|
||||
<item quantity="one">%d pasižymėta vieta</item>
|
||||
<item quantity="few">%d pasižymėtos vietos</item>
|
||||
<item quantity="many">%d pasižymėtų vietų</item>
|
||||
<item quantity="other">%d pasižymėtų vietų</item>
|
||||
<item quantity="one">%d žymė</item>
|
||||
<item quantity="few">%d žymės</item>
|
||||
<item quantity="other">%d žymių</item>
|
||||
</plurals>
|
||||
<string name="app_tip_01">Su jūsų parama ir palaikymu mes galime sukurti geriausius žemėlapius pasaulyje!</string>
|
||||
<string name="enable_keep_screen_on_description">Įgalinus šią parinktį, ekranas visada liks įjungtas, kol rodomas žemėlapis.</string>
|
||||
@@ -808,12 +807,12 @@
|
||||
<string name="saved">Įrašyta</string>
|
||||
<string name="ruler">Liniuotė</string>
|
||||
<string name="pref_left_button_title">Kairiojo mygtuko funkcija</string>
|
||||
<string name="pref_backup_now_summary_empty_lists">Nėra pasižymėtų vietų ar trasų atsarginei kopijai sudaryti</string>
|
||||
<string name="pref_backup_now_summary_empty_lists">Neturite jokių žymių ar trasų atsarginei kopijai sudaryti</string>
|
||||
<string name="pref_backup_interval_title">Automatinis atsarginis kopijavimas</string>
|
||||
<string name="dialog_report_error_missing_folder">Pasirinktas atsarginių kopijų aplankas nepasiekiamas, bent jau rašymui. Pasirinkite kitą aplanką.</string>
|
||||
<string name="dialog_report_error_with_logs">Būsime dėkingi, jei atsiųsti klaidos pranešimą:\n - programos nustatymuose pažymėkite „Įgalinti derinimo žurnalą“\n - atkartokite problemą\n - „Žinyno ir pagalbos“ ekrane bakstelėkite mygtuką „Pranešti apie klaidą“ ir išsiųskite pranešimą el. paštu ar per pokalbių programėlę\n - išjunkite derinimo žurnalą</string>
|
||||
<string name="bicycle">Dviračiu</string>
|
||||
<string name="pref_backup_title">Žymių atsarginis kopijavimas</string>
|
||||
<string name="pref_backup_title">Žymių ir trasų atsarginis kopijavimas</string>
|
||||
<string name="editor_building_levels">Aukštų skaičius (skaičiuojant pirmą aukštą, neskaičiuojant stogo)</string>
|
||||
<string name="editor_level">Aukštas (0 reiškia pirmą aukštą)</string>
|
||||
<string name="error_enter_correct_level">Įveskite leistiną aukšto numerį</string>
|
||||
@@ -902,5 +901,4 @@
|
||||
<string name="download_resources_custom_url_message">Žemėlapiams parsisiųsti galite nurodyti kitą, nei numatytasis, serverį. Palikite lauką tuščią, jei norite naudoti numatytąjį „CoMaps“ serverį.</string>
|
||||
<string name="download_resources_custom_url_summary_none">Nenurodytas</string>
|
||||
<string name="download_resources_custom_url_error_scheme">Įveskite URL adresą, prasidedantį „http://“ arba „https://“</string>
|
||||
<string name="pref_maplanguage_local">Vietos kalba</string>
|
||||
</resources>
|
||||
|
||||
@@ -516,10 +516,10 @@
|
||||
<string name="error_enter_correct_line_page">Ierakstiet LINE vietnes adresi vai LINE ID</string>
|
||||
<string name="placepage_add_place_button">Pievienot vietu „OpenStreetMap“</string>
|
||||
<!-- Displayed when saving some edits to the map to warn against publishing personal data -->
|
||||
<string name="editor_share_to_all_dialog_title">Vai nosūtīt to visiem lietotājiem?</string>
|
||||
<string name="editor_share_to_all_dialog_title">Vai vēlaties to nosūtīt visiem lietotājiem?</string>
|
||||
<!-- Dialog before publishing the modifications to the public map. -->
|
||||
<string name="editor_share_to_all_dialog_message_1">Jāpārliecinās, ka nav ievadīti nekādi privāti vai personīgi dati.</string>
|
||||
<string name="editor_share_to_all_dialog_message_2">OpenStreetMap redaktori pārbaudīs veiktās izmaiņas un sazināsies ar Tevi, ja viņiem būs kādi jautājumi.</string>
|
||||
<string name="editor_share_to_all_dialog_message_1">Jāpārliecinās, ka neievadīji nekādus privātus vai personīgus datus.</string>
|
||||
<string name="editor_share_to_all_dialog_message_2">OpenStreetMap redaktori pārbaudīs veiktās izmaiņas, un sazināsies ar Tevi, ja viņiem būs kādi jautājumi.</string>
|
||||
<string name="navigation_stop_button">Apturēt</string>
|
||||
<!-- Shown as toast when starting the recent track recording -->
|
||||
<string name="track_recording">Maršruta reģistrēšana</string>
|
||||
@@ -862,25 +862,4 @@
|
||||
<item quantity="other">%d min.</item>
|
||||
</plurals>
|
||||
<string name="pref_maplanguage_local">Vietējā valoda</string>
|
||||
<string name="opens_day_at">Atver %1$s plkst. %2$s</string>
|
||||
<string name="closes_at">Slēdz %s</string>
|
||||
<string name="opens_at">Atver %s</string>
|
||||
<string name="closes_day_at">Slēdz %1$s plkst. %2$s</string>
|
||||
<string name="osm_note_toast">Piezīme tiks nosūtīta “OpenStreetMap”</string>
|
||||
<string name="pref_backup_now_summary_ok">Rezerves kopēšana sekmīgi pabeigta</string>
|
||||
<string name="pref_backup_now_summary_empty_lists">Nav vietu un ceļu, kam veikt rezerves kopēšanu</string>
|
||||
<string name="pref_backup_now_summary_failed">Rezerves kopēšana neizdevās</string>
|
||||
<string name="pref_backup_now_summary_folder_unavailable">Rezerves kopiju mape nav pieejama</string>
|
||||
<string name="pref_backup_status_summary_success">Pēdējā sekmīgā rezerves kopēšana</string>
|
||||
<string name="pref_backup_location_title">Rezerves kopiju atrašanās vieta</string>
|
||||
<string name="pref_backup_location_summary_initial">Lūgums vispirms atlasīt mapi un nodrošināt atļauju</string>
|
||||
<string name="pref_backup_history_title">Paturamo rezerves kopiju daudzums</string>
|
||||
<string name="pref_backup_interval_title">Automātiskā rezerves kopēšana</string>
|
||||
<string name="pref_backup_title">Izveidot izlases rezerves kopiju</string>
|
||||
<string name="pref_backup_summary">Automātiski veikt rezerves kopēšanu ierīces mapē</string>
|
||||
<string name="pref_backup_now_title">Veikt rezerves kopēšanu tagad</string>
|
||||
<string name="pref_backup_now_summary">Nekavējoties izveidot rezerves kopiju</string>
|
||||
<string name="pref_backup_now_summary_progress">Notiek rezerves kopēšana…</string>
|
||||
<string name="pedestrian">Kājāmgājēju</string>
|
||||
<string name="bicycle">Divriteņu</string>
|
||||
</resources>
|
||||
|
||||
@@ -16,8 +16,6 @@
|
||||
<color name="bg_panel">@color/bg_window</color>
|
||||
<color name="bg_primary_dark">#FF588157</color>
|
||||
<color name="bg_app">#10140F</color>
|
||||
<color name="bg_editor">#161b14</color>
|
||||
<color name="fg_editor">#282e25</color>
|
||||
|
||||
<color name="bg_menu">#CC2D3237</color>
|
||||
|
||||
|
||||
@@ -151,7 +151,7 @@
|
||||
<item name="colorSurfaceContainerHigh">@color/md_theme_surfaceContainerHigh</item>
|
||||
<item name="colorSurfaceContainerHighest">@color/md_theme_surfaceContainerHighest</item>
|
||||
|
||||
<item name="appBackground">@color/bg_app</item>
|
||||
<item name="appBackground">?android:attr/colorBackground</item>
|
||||
</style>
|
||||
|
||||
<style name="MwmTheme" parent="MwmTheme.Base"/>
|
||||
|
||||
@@ -21,30 +21,30 @@
|
||||
<!-- View and button titles for accessibility, please also edit it in iphone/plist.txt -->
|
||||
<string name="search">Zoeken</string>
|
||||
<!-- Search box placeholder text; Used when searching on the map itself, not when searching for a map -->
|
||||
<string name="search_map">Zoeken op kaart</string>
|
||||
<string name="search_map">Zoeken op de kaart</string>
|
||||
<!-- Location services are disabled by user alert - message -->
|
||||
<string name="location_is_disabled_long_text">U heeft momenteel alle locatiediensten voor dit apparaat of deze app uitgeschakeld. Schakel ze in bij Instellingen.</string>
|
||||
<string name="location_is_disabled_long_text">U heeft momenteel alle locatieservices voor dit apparaat of deze app uitgeschakeld. Schakel ze in bij Instellingen.</string>
|
||||
<!-- A dialog title, that warns a user that Precise Location is disabled and suggests to turn it on -->
|
||||
<string name="limited_accuracy">Beperkte nauwkeurigheid</string>
|
||||
<!-- A dialog text, that warns a user that Precise Location is disabled and suggests to turn it on -->
|
||||
<string name="precise_location_is_disabled_long_text">Voor nauwkeurige navigatie moet Nauwkeurige Locatie worden ingesteld in de instellingen</string>
|
||||
<string name="precise_location_is_disabled_long_text">Voor nauwkeurige navigatie moet Nauwkeurige Locatie worden ingesteld bij Instellingen</string>
|
||||
<!-- View and button titles for accessibility -->
|
||||
<string name="zoom_to_country">Weergeven op kaart</string>
|
||||
<string name="zoom_to_country">Weergeven op de kaart</string>
|
||||
<!-- Message to display at the center of the screen when the country download has failed -->
|
||||
<string name="country_status_download_failed">Downloaden is mislukt</string>
|
||||
<!-- Button text for the button under the country_status_download_failed message -->
|
||||
<string name="try_again">Opnieuw proberen</string>
|
||||
<string name="about_menu_title">Over CoMaps</string>
|
||||
<!-- Text in About screen -->
|
||||
<string name="about_headline">Open project gedreven door de community</string>
|
||||
<string name="about_headline">Open project, gemaakt door de community</string>
|
||||
<!-- Text in About screen -->
|
||||
<string name="about_proposition_1">• Gebruiksvriendelijk en afgewerkt</string>
|
||||
<string name="about_proposition_1">• Gebruiksvriendelijk en gestroomlijnd</string>
|
||||
<!-- Text in About screen -->
|
||||
<string name="about_proposition_2">• Privacygericht en vrij van advertenties</string>
|
||||
<!-- Text in About screen -->
|
||||
<string name="about_proposition_3">• Offline, snel en compact</string>
|
||||
<!-- Text in About screen -->
|
||||
<string name="about_developed_by_enthusiasts">Volledige open source, non-profit, transparante besluitvorming en financiering.</string>
|
||||
<string name="about_developed_by_enthusiasts">Volledig open source, non-profit, transparante besluitvorming en financiering.</string>
|
||||
<!-- The button that opens system location settings -->
|
||||
<string name="location_settings">Locatie-instellingen</string>
|
||||
<string name="close">Sluiten</string>
|
||||
@@ -55,7 +55,7 @@
|
||||
<!-- Used in DownloadResources startup screen -->
|
||||
<string name="not_enough_free_space_on_sdcard">Maak eerst ruimte vrij op de SD-kaart/USB-opslag om de app te gebruiken</string>
|
||||
<string name="download_resources">Laten we, voor de eerste start, de algemene wereldkaart downloaden. \nDeze gebruikt %s aan opslag.</string>
|
||||
<string name="download_resources_continue">Ga naar kaart</string>
|
||||
<string name="download_resources_continue">Ga naar de kaart</string>
|
||||
<string name="downloading_country_can_proceed">%1$s (%2$s) downloaden. U kunt nu \ndoorgaan naar de kaart.</string>
|
||||
<string name="download_country_ask">%1$s downloaden? (%2$s)</string>
|
||||
<string name="update_country_ask">%1$s bijwerken? (%2$s)</string>
|
||||
@@ -66,7 +66,7 @@
|
||||
<!-- Show popup notification on top of the map when country download has failed. -->
|
||||
<string name="download_country_failed">%s download is mislukt</string>
|
||||
<!-- "Add new bookmark list" dialog title -->
|
||||
<string name="add_new_set">Nieuwe lijst toevoegen</string>
|
||||
<string name="add_new_set">Nieuwe groep toevoegen</string>
|
||||
<!-- Add Bookmark list dialog - hint when the list name is empty -->
|
||||
<string name="bookmark_set_name">Naam van lijst</string>
|
||||
<!-- Should be used in the bookmarks-only context, see bookmarks_and_tracks if tracks are also implied. -->
|
||||
@@ -96,7 +96,7 @@
|
||||
<!-- Ask user to wait several minutes (some long process in modal dialog). -->
|
||||
<string name="wait_several_minutes">Dit kan enkele minuten duren. \nEven geduld…</string>
|
||||
<!-- Measurement units title in settings activity -->
|
||||
<string name="measurement_units">Eenheid van afstand</string>
|
||||
<string name="measurement_units">Afstandseenheid</string>
|
||||
<!-- Detailed description of Measurement Units settings button -->
|
||||
<string name="measurement_units_summary">Kies tussen mijlen en kilometers</string>
|
||||
<!-- SECTION: Search categories -->
|
||||
@@ -143,7 +143,7 @@
|
||||
<!-- Search category for water; any changes should be duplicated in categories.txt @category_water! also used to sort bookmarks by type -->
|
||||
<string name="category_water">Water</string>
|
||||
<!-- Search category for RV facilities; any changes should be duplicated in categories.txt @category_rv! -->
|
||||
<string name="category_rv">Camperfaciliteiten</string>
|
||||
<string name="category_rv">Caravanfaciliteiten</string>
|
||||
<!-- SECTION: Other translations -->
|
||||
<!-- Notes field in Bookmarks view -->
|
||||
<string name="description">Notities</string>
|
||||
@@ -159,7 +159,7 @@
|
||||
<!-- Failed to recognize the format of a bookmarks or tracks file. -->
|
||||
<string name="unknown_file_type">Het bestandstype wordt niet herkend door de app: \n%1$s</string>
|
||||
<!-- Failed to open a bookmarks or tracks file in CoMaps. -->
|
||||
<string name="failed_to_open_file">Bestand openen is mislukt %1$s \n \n%2$s</string>
|
||||
<string name="failed_to_open_file">Bestand openen mislukt %1$s \n \n%2$s</string>
|
||||
<!-- resource for context menu -->
|
||||
<string name="edit">Bewerken</string>
|
||||
<!-- Warning message when doing search around current position -->
|
||||
@@ -841,21 +841,21 @@
|
||||
<string name="bookmark_color">Kleur voor favoriet</string>
|
||||
<string name="backup_interval_every_day">Dagelijks</string>
|
||||
<string name="backup_interval_manual_only">Uit (alleen handmatig)</string>
|
||||
<string name="pref_backup_title">Back-up maken van favorieten</string>
|
||||
<string name="pref_backup_title">Back-up van favorieten</string>
|
||||
<string name="pref_backup_summary">Automatisch back-up maken naar een map op je apparaat</string>
|
||||
<string name="pref_backup_now_title">Nu back-up maken</string>
|
||||
<string name="pref_backup_now_summary">Onmiddellijk een back-up maken</string>
|
||||
<string name="pref_backup_now_summary_progress">Bezig met back-up maken…</string>
|
||||
<string name="pref_backup_now_summary_ok">Back-up met succes voltooid</string>
|
||||
<string name="pref_backup_now_title">Nu back-uppen</string>
|
||||
<string name="pref_backup_now_summary">Maak onmiddellijk een back-up</string>
|
||||
<string name="pref_backup_now_summary_progress">Bezig met het maken van back-up…</string>
|
||||
<string name="pref_backup_now_summary_ok">Back-up succesvol voltooid</string>
|
||||
<string name="pref_backup_now_summary_empty_lists">Geen plaatsen en sporen voor een back-up</string>
|
||||
<string name="pref_backup_status_summary_success">Laatste succesvolle back-up</string>
|
||||
<string name="pref_backup_interval_title">Automatische back-up</string>
|
||||
<string name="pref_backup_location_title">Back-uplocatie</string>
|
||||
<string name="pref_backup_now_summary_failed">Backup is mislukt</string>
|
||||
<string name="pref_backup_location_title">Back-up locatie</string>
|
||||
<string name="pref_backup_now_summary_failed">Backup mislukt</string>
|
||||
<string name="pref_backup_history_title">Aantal back-ups om te bewaren</string>
|
||||
<string name="dialog_report_error_missing_folder">De geselecteerde back-uplocatie is niet beschikbaar of niet beschrijfbaar. Kies een andere locatie.</string>
|
||||
<string name="backup_interval_every_week">Wekelijks</string>
|
||||
<string name="pref_backup_now_summary_folder_unavailable">De back-upmap is niet beschikbaar</string>
|
||||
<string name="pref_backup_now_summary_folder_unavailable">De back-up map is niet beschikbaar</string>
|
||||
<string name="panoramax">Panoramax-afbeelding</string>
|
||||
<string name="pref_backup_location_summary_initial">Selecteer eerst een map en geef toestemming</string>
|
||||
<string name="pref_left_button_title">Linkerknop configuratie</string>
|
||||
|
||||
@@ -68,11 +68,11 @@
|
||||
<!-- "Add new bookmark list" dialog title -->
|
||||
<string name="add_new_set">Adicionar conjunto novo</string>
|
||||
<!-- Add Bookmark list dialog - hint when the list name is empty -->
|
||||
<string name="bookmark_set_name">Nome da Lista</string>
|
||||
<string name="bookmark_set_name">Nome do conjunto de favoritos</string>
|
||||
<!-- Should be used in the bookmarks-only context, see bookmarks_and_tracks if tracks are also implied. -->
|
||||
<string name="bookmarks">Lugares</string>
|
||||
<string name="bookmarks">Favoritos</string>
|
||||
<!-- "Bookmarks and Tracks" dialog title, also sync it with iphone/plist.txt -->
|
||||
<string name="bookmarks_and_tracks">Favoritos</string>
|
||||
<string name="bookmarks_and_tracks">Favoritos e trajetos</string>
|
||||
<!-- Add bookmark dialog - bookmark name -->
|
||||
<string name="name">Nome</string>
|
||||
<!-- Editor title above street and house number, duplicates [type.building.address] in types_strings.txt -->
|
||||
@@ -144,10 +144,10 @@
|
||||
<!-- Notes field in Bookmarks view -->
|
||||
<string name="description">Notas</string>
|
||||
<!-- Email Subject when sharing bookmark list -->
|
||||
<string name="share_bookmarks_email_subject">Os meus Favoritos do CoMaps</string>
|
||||
<string name="share_bookmarks_email_body">Olá! \n \nSegue em anexo os meus favoritos; por favor abra-os com o CoMaps. Caso não tenha, descarregue a aplicação aqui: https://www.comaps.app/download/ \n \nDivirta-se a viajar com o CoMaps!</string>
|
||||
<string name="share_bookmarks_email_subject">Os favoritos do CoMaps foram partilhados consigo</string>
|
||||
<string name="share_bookmarks_email_body">Olá! \n \nSegue em anexo os meus favoritos da aplicação CoMaps. Por favor abra-os se tiver o CoMaps instalado. Caso não tenha, descarregue a aplicação para o seu dispositivo iOS ou Android com a hiperligação https://www.comaps.app/download/ \n \nDivirta-se a viajar com o CoMaps!</string>
|
||||
<!-- message title of loading file -->
|
||||
<string name="load_kmz_title">Carregando Favoritos</string>
|
||||
<string name="load_kmz_title">A carregar favoritos</string>
|
||||
<!-- Kmz file successful loading -->
|
||||
<string name="load_kmz_successful">Os favoritos foram carregados com sucesso! Pode encontrá-los no mapa ou no ecrã de gestão dos favoritos.</string>
|
||||
<!-- Kml file loading failed -->
|
||||
|
||||
@@ -54,12 +54,12 @@
|
||||
<string name="maps_storage_free_size">%1$s prosto od %2$s</string>
|
||||
<string name="move_maps">Premaknem zemljevide?</string>
|
||||
<string name="move_maps_error">Napaka med premikanjem datotek zemljevidov</string>
|
||||
<string name="wait_several_minutes">To lahko traja nekaj minut. \nPočakajte …</string>
|
||||
<string name="wait_several_minutes">To lahko traja nekaj minut. \nProsimo, počakajte …</string>
|
||||
<string name="measurement_units">Merske enote</string>
|
||||
<string name="measurement_units_summary">Izberite med miljami in kilometri</string>
|
||||
<string name="category_eat">Kje jesti</string>
|
||||
<string name="category_food">Špecerija</string>
|
||||
<string name="category_transport">Prevoz</string>
|
||||
<string name="category_transport">Javni prevoz</string>
|
||||
<string name="category_fuel">Gorivo</string>
|
||||
<string name="category_parking">Parkiranje</string>
|
||||
<string name="category_shopping">Nakupovanje</string>
|
||||
@@ -80,7 +80,7 @@
|
||||
<string name="category_water">Voda</string>
|
||||
<string name="category_rv">Prostori za avtodome</string>
|
||||
<string name="description">Pripis</string>
|
||||
<string name="share_bookmarks_email_subject">Moji zaznamki na CoMaps</string>
|
||||
<string name="share_bookmarks_email_subject">Nekdo je z vami delil zaznamke CoMaps</string>
|
||||
<string name="share_bookmarks_email_body">Živjo! \n \nV priponki so moji zaznamki. Prosim, odpri jih v orodju CoMaps. Če ga še nisi namestil, ga lahko preneseš tukaj: https://www.comaps.app/download/ \n \nUživaj v potovanju s CoMaps!</string>
|
||||
<string name="load_kmz_title">Nalagam zaznamke</string>
|
||||
<string name="load_kmz_successful">Zaznamki so uspešno naloženi! Najdete jih lahko na zemljevidu ali v upravitelju zaznamkov.</string>
|
||||
@@ -239,7 +239,7 @@
|
||||
<string name="editor_example_values">Primeri vrednosti</string>
|
||||
<string name="editor_correct_mistake">Popravi napako</string>
|
||||
<string name="editor_add_select_location">Izberi lokacijo</string>
|
||||
<string name="editor_report_problem_desription_1">Podrobno opišite težavo, da jo lahko skupnost OpenStreetMap odpravi.</string>
|
||||
<string name="editor_report_problem_desription_1">Prosimo, podrobno opišite težavo, da jo lahko skupnost OpenStreetMap odpravi.</string>
|
||||
<string name="editor_report_problem_desription_2">Ali pa jo popravite sami na https://www.openstreetmap.org/</string>
|
||||
<string name="editor_report_problem_send_button">Pošlji</string>
|
||||
<string name="editor_report_problem_title">Težava</string>
|
||||
@@ -271,7 +271,7 @@
|
||||
<string name="social_media">Družbena omrežja</string>
|
||||
<string name="building">Stavba</string>
|
||||
<string name="add_street">Dodaj ulico</string>
|
||||
<string name="empty_street_name_error">Vnesite ime ulice</string>
|
||||
<string name="empty_street_name_error">Prosimo, vnesite ime ulice</string>
|
||||
<string name="choose_language">Izberite jezik</string>
|
||||
<string name="choose_street">Izberite ulico</string>
|
||||
<string name="cuisine">Kuhinja</string>
|
||||
@@ -285,7 +285,7 @@
|
||||
<string name="downloader_search_field_hint">Najdi zemljevid</string>
|
||||
<string name="common_check_internet_connection_dialog">Preverite, da je vaša naprava povezana na internet</string>
|
||||
<string name="downloader_no_space_title">Ni dovolj prostora</string>
|
||||
<string name="downloader_no_space_message">Izbrišite vse nepotrebne podatke</string>
|
||||
<string name="downloader_no_space_message">Prosimo, izbrišite vse nepotrebne podatke</string>
|
||||
<string name="editor_login_error_dialog">Napaka pri prijavi</string>
|
||||
<string name="editor_profile_changes">Potrjene spremembe</string>
|
||||
<string name="editor_focus_map_on_location">Povlecite zemljevid tako, da bo križ na lokaciji kraja ali podjetja.</string>
|
||||
@@ -308,7 +308,7 @@
|
||||
<string name="error_enter_correct_zip_code">Vnesite veljavno poštno številko</string>
|
||||
<string name="editor_other_info">Komentar za prostovoljce na OpenStreetMap (neobvezno)</string>
|
||||
<string name="editor_note_hint">Opišite napake na zemljevidu ali stvari, ki jih ni mogoče urediti prek CoMaps</string>
|
||||
<string name="editor_about_osm">Vaša urejanja se naložijo v javno podatkovno bazo <a href="https://wiki.openstreetmap.org/wiki/About_OpenStreetMap">OpenStreetMap</a>. Ne dodajajte osebnih ali avtorsko zaščitenih podatkov.</string>
|
||||
<string name="editor_about_osm">Vaša urejanja se naložijo v javno podatkovno bazo <a href="https://wiki.openstreetmap.org/wiki/About_OpenStreetMap">OpenStreetMap</a>. Prosimo, da ne dodajate osebnih ali avtorsko zaščitenih podatkov.</string>
|
||||
<string name="editor_more_about_osm">Več o OpenStreetMap</string>
|
||||
<string name="editor_osm_history">Vaša zgodovina urejanja</string>
|
||||
<string name="editor_osm_notes">Vaši komentarji za zemljevid</string>
|
||||
@@ -365,7 +365,7 @@
|
||||
<string name="mobile_data_option_ask">Vedno vprašaj</string>
|
||||
<string name="traffic_update_maps_text">Za prikazovanje podatkov o prometu je treba posodobiti zemljevide</string>
|
||||
<string name="big_font">Povečajte velikost oznak na zemljevidu</string>
|
||||
<string name="traffic_update_app">Posodobite CoMaps</string>
|
||||
<string name="traffic_update_app">Prosimo, posodobite CoMaps</string>
|
||||
<string name="traffic_data_unavailable">Prometni podatki niso na voljo</string>
|
||||
<string name="enable_logging">Omogoči dnevniške zapise</string>
|
||||
<string name="feedback_general">Splošne povratne informacije</string>
|
||||
@@ -384,7 +384,7 @@
|
||||
<string name="dialog_error_storage_message">Zunanja shramba ni dostopna. SD kartica je bila morda odstranjena, je poškodovana ali pa datotečni sistem ne podpira zapisovanja. Preverite svojo SD kartico ali stopite v stik z nami prek support@comaps.app</string>
|
||||
<string name="setting_emulate_bad_storage">Emuliraj pokvarjeno shrambo</string>
|
||||
<string name="error_enter_correct_name">Vnesite pravilno ime</string>
|
||||
<string name="bookmark_lists">Seznam priljubljenih</string>
|
||||
<string name="bookmark_lists">Seznami</string>
|
||||
<string name="bookmark_lists_hide_all">Skrij vse</string>
|
||||
<string name="bookmark_lists_show_all">Pokaži vse</string>
|
||||
<plurals name="bookmarks_places">
|
||||
@@ -394,7 +394,7 @@
|
||||
<item quantity="other">%d zaznamkov</item>
|
||||
</plurals>
|
||||
<string name="bookmarks_create_new_group">Ustvarite nov seznam</string>
|
||||
<string name="bookmarks_import">Uvozi zaznamke</string>
|
||||
<string name="bookmarks_import">Uvozi zaznamke in poti</string>
|
||||
<string name="bookmarks_error_message_share_general">Ni bilo mogoče deliti zaradi aplikacijske napake</string>
|
||||
<string name="bookmarks_error_title_share_empty">Napaka pri deljenju</string>
|
||||
<string name="bookmarks_error_message_share_empty">Ni mogoče deliti praznega seznama</string>
|
||||
@@ -448,7 +448,7 @@
|
||||
<string name="avoid_ferry">Brez trajektov</string>
|
||||
<string name="avoid_motorways">Brez avtocest</string>
|
||||
<string name="unable_to_calc_alert_title">Ne morem izračunati poti</string>
|
||||
<string name="unable_to_calc_alert_subtitle">Ni bilo mogoče najti povezave. Mogoče so krive vaše zahteve za pot ali pa nepopolni podatki OpenStreetMapa. Spremenite možnosti iskanja povezave in poskusite ponovno.</string>
|
||||
<string name="unable_to_calc_alert_subtitle">Ni bilo mogoče najti relacije. Mogoče so krive vaše zahteve za pot ali pa nepopolni podatki OpenStreetMap. Prosimo, spremenite možnosti relacije in poskusite ponovno.</string>
|
||||
<string name="define_to_avoid_btn">Definirajte, katerim cestam naj se izognemo</string>
|
||||
<string name="change_driving_options_btn">Možnosti relacije so omogočene</string>
|
||||
<string name="toll_road">Cesta s cestnino</string>
|
||||
@@ -524,7 +524,7 @@
|
||||
<string name="comma_separated_pair">%1$s, %2$s</string>
|
||||
<string name="app_tip_00">Hvala, ker uporabljate naše javno narejene zemljevide!</string>
|
||||
<string name="app_tip_01">Z vašo podporo lahko ustvarimo najboljše zemljevide na svetu!</string>
|
||||
<string name="app_tip_02">Ali vam je naša aplikacija všeč? Vabimo vas, da finančno podprete njen razvoj! Ali niste zadovoljni z njo? Prosimo, da nam sporočite zakaj, in jo bomo popravili!</string>
|
||||
<string name="app_tip_02">Ali vam je naša aplikacija všeč? Vabimo vas, da finančno podprete njen razvoj! Ali niste zadovoljni z njo? Prosimo, da nam sporočite, zakaj, in jo bomo popravili!</string>
|
||||
<string name="app_tip_03">Če poznate kakega_o razvijalca_ko programske opreme, ga_jo lahko prosite, da implementira funkcionalnost, ki jo potrebujete.</string>
|
||||
<string name="app_tip_04">S kratkim pritiskom na zemljevid lahko izberete kateri koli element. Z dolgim pritiskom lahko skrijete ali pokažete vmesnik.</string>
|
||||
<string name="app_tip_05">Ali ste vedeli, da lahko na zemljevidu izberete svojo trenutno lokacijo?</string>
|
||||
@@ -571,7 +571,7 @@
|
||||
<string name="stop_track_recording">Ustavi snemanje sledi</string>
|
||||
<string name="stop_without_saving">Ustavi brez shranjevanja</string>
|
||||
<string name="continue_recording">Nadaljuj snemanje</string>
|
||||
<string name="track_recording_alert_title">Shrani med zaznamke?</string>
|
||||
<string name="track_recording_alert_title">Shrani med Zaznamke in sledi?</string>
|
||||
<string name="track_recording_toast_nothing_to_save">Sled je prazna – ničesar ni za shraniti</string>
|
||||
<string name="error_no_file_manager_app">Pogovornega okna za izbiro mape ni mogoče prikazati, ker na vaši napravi ni nameščenega ustreznega orodja. Namestite upravitelja datotek in poskusite znova.</string>
|
||||
<string name="choose_color">Izberi barvo</string>
|
||||
@@ -581,7 +581,7 @@
|
||||
<string name="zoom_in">Približaj</string>
|
||||
<string name="zoom_out">Oddalji</string>
|
||||
<string name="pref_left_button_title">Nastavitev levega gumba</string>
|
||||
<string name="pref_backup_title">Varnostno kopiranje priljubljenih</string>
|
||||
<string name="pref_backup_title">Varnostno kopiranje zaznamkov in sledi</string>
|
||||
<string name="pref_backup_summary">Samodejno varnostno kopiraj v mapo na vaši napravi</string>
|
||||
<string name="pref_backup_now_title">Ustvari varnostno kopijo zdaj</string>
|
||||
<string name="pref_left_button_disable">Onemogoči</string>
|
||||
@@ -593,14 +593,14 @@
|
||||
<string name="pref_backup_now_summary_folder_unavailable">Mapa za varnostno kopijo ni na voljo</string>
|
||||
<string name="pref_backup_status_summary_success">Zadnje uspešno kopiranje</string>
|
||||
<string name="pref_backup_location_title">Mesto varnostne kopije</string>
|
||||
<string name="pref_backup_location_summary_initial">Najprej izberite mapo in dodelite dovoljenja</string>
|
||||
<string name="pref_backup_location_summary_initial">Prosimo, najprej izberite mapo in podelite dovoljenja</string>
|
||||
<string name="pref_backup_history_title">Število varnostnih kopij, ki jih je treba hraniti</string>
|
||||
<string name="pref_backup_interval_title">Samodejno varnostno kopiranje</string>
|
||||
<string name="backup_interval_manual_only">Izklopljeno (samo ročno)</string>
|
||||
<string name="dialog_report_error_missing_folder">Izbrano mesto za varnostno kopijo ni na voljo ali vanjo ni mogoče pisati. Izberite drugo mesto.</string>
|
||||
<string name="backup_interval_every_day">Dnevno</string>
|
||||
<string name="backup_interval_every_week">Tedensko</string>
|
||||
<string name="dialog_report_error_with_logs">Pošljite nam poročilo o napaki:\n - \"Omogoči beleženje\" v nastavitvah\n - poustvarite težavo\n - na zaslonu »O programu in Pomoč« pritisnite gumb »Prijavi napako« in jo pošljite po e-pošti ali klepetu\n - onemogočite beleženje</string>
|
||||
<string name="dialog_report_error_with_logs">Prosimo, pošljite nam poročilo o napaki:\n - \"Omogoči beleženje\" v nastavitvah\n - poustvarite težavo\n - na zaslonu »O programu in Pomoč« pritisnite gumb »Prijavi napako« in jo pošljite po e-pošti ali klepetu\n - onemogoči beleženje</string>
|
||||
<string name="route_type">Vrsta poti</string>
|
||||
<string name="vehicle">Vozilo</string>
|
||||
<string name="pedestrian">Za pešce</string>
|
||||
@@ -646,8 +646,8 @@
|
||||
<string name="editor_mark_business_vacant_description">To uporabite, če se je podjetje izselilo in so prostori prazni in pripravljeni za novega zakupnika.</string>
|
||||
<string name="editor_submit">Potrdi</string>
|
||||
<string name="place_page_map_too_old_title">Podatki zemljevida so zastareli</string>
|
||||
<string name="place_page_map_too_old_description">Vaši trenutni podatki zemljevida so zelo stari, posodobite zemljevid.</string>
|
||||
<string name="place_page_app_too_old_description">Vaši trenutni podatki zemljevida so zelo stari, posodobite orodje CoMaps.</string>
|
||||
<string name="place_page_map_too_old_description">Vaši trenutni podatki zemljevida so zelo stari; prosimo, posodobite zemljevid.</string>
|
||||
<string name="place_page_app_too_old_description">Vaši trenutni podatki zemljevida so zelo stari; prosimo, posodobite orodje CoMaps.</string>
|
||||
<string name="place_page_update_too_old_map">Posodobi področje zemljevida</string>
|
||||
<string name="place_page_too_old_to_edit">Urejanje OpenStreetMap je onemogočeno, ker so podatki zemljevida prestari.</string>
|
||||
<string name="prefs_speed_cameras_information">Opozorila o merilnikih hitrosti so onemogočena v državah, kjer so prepovedana s tamkajšnjimi zakoni.</string>
|
||||
@@ -661,6 +661,5 @@
|
||||
<string name="download_resources_custom_url_title">Strežnik zemljevida po meri</string>
|
||||
<string name="download_resources_custom_url_message">Prepiši privzeti strežnik za prenos zemljevidov, ki se uporablja za prenos zemljevidov. Pustite prazno, če želite uporabiti privzeti strežnik CoMaps.</string>
|
||||
<string name="download_resources_custom_url_summary_none">Ni nastavljeno</string>
|
||||
<string name="download_resources_custom_url_error_scheme">Vnesite polni URL, ki se začne z http:// ali https://</string>
|
||||
<string name="pref_maplanguage_local">Krajevni jezik</string>
|
||||
<string name="download_resources_custom_url_error_scheme">Prosimo, vnesite polni URL, ki se začne z https:// in konča z /</string>
|
||||
</resources>
|
||||
|
||||
@@ -66,11 +66,11 @@
|
||||
<!-- "Add new bookmark list" dialog title -->
|
||||
<string name="add_new_set">Lägg till ny samling</string>
|
||||
<!-- Add Bookmark list dialog - hint when the list name is empty -->
|
||||
<string name="bookmark_set_name">Listans namn</string>
|
||||
<string name="bookmark_set_name">Bokmärkessamlingens namn</string>
|
||||
<!-- Should be used in the bookmarks-only context, see bookmarks_and_tracks if tracks are also implied. -->
|
||||
<string name="bookmarks">Platser</string>
|
||||
<string name="bookmarks">Bokmärken</string>
|
||||
<!-- "Bookmarks and Tracks" dialog title, also sync it with iphone/plist.txt -->
|
||||
<string name="bookmarks_and_tracks">Favoriter</string>
|
||||
<string name="bookmarks_and_tracks">Bokmärken och rutter</string>
|
||||
<!-- Add bookmark dialog - bookmark name -->
|
||||
<string name="name">Namn</string>
|
||||
<!-- Editor title above street and house number, duplicates [type.building.address] in types_strings.txt -->
|
||||
@@ -142,13 +142,13 @@
|
||||
<!-- Notes field in Bookmarks view -->
|
||||
<string name="description">Anteckningar</string>
|
||||
<!-- Email Subject when sharing bookmark list -->
|
||||
<string name="share_bookmarks_email_subject">Mina CoMaps-favoriter</string>
|
||||
<string name="share_bookmarks_email_subject">CoMaps bokmärken har delats med dig</string>
|
||||
<!-- message title of loading file -->
|
||||
<string name="load_kmz_title">Läser in favoriter</string>
|
||||
<string name="load_kmz_title">Läser in bokmärken</string>
|
||||
<!-- Kmz file successful loading -->
|
||||
<string name="load_kmz_successful">Favoriterna lästes in! Du kan hitta dem på kartan eller i favorithanteraren.</string>
|
||||
<string name="load_kmz_successful">Bokmärkena lästes in! Du kan hitta dem på kartan eller i Bokmärkeshanteraren.</string>
|
||||
<!-- Kml file loading failed -->
|
||||
<string name="load_kmz_failed">Inläsningen av favoriterna misslyckades. Filen kan vara skadad eller defekt.</string>
|
||||
<string name="load_kmz_failed">Inläsningen av bokmärkena misslyckades. Filen kan vara skadad eller defekt.</string>
|
||||
<!-- Failed to recognize the format of a bookmarks or tracks file. -->
|
||||
<string name="unknown_file_type">Filtypen känns inte igen av appen: \n%1$s</string>
|
||||
<!-- Failed to open a bookmarks or tracks file in CoMaps. -->
|
||||
@@ -210,7 +210,7 @@
|
||||
<!-- Settings «Route» category: «Tts language» title -->
|
||||
<string name="pref_tts_language_title">Röstspråk</string>
|
||||
<!-- Settings «Route» category: «Test Voice Directions» title -->
|
||||
<string name="pref_tts_test_voice_title">Testa röstinstruktioner</string>
|
||||
<string name="pref_tts_test_voice_title">Testa röstinstruktioner (TTS, Text-To-Speech)</string>
|
||||
<!-- Settings «Route» category: Pop-up message when clicking «Test Voice Directions» -->
|
||||
<string name="pref_tts_playing_test_voice">Kontrollera volymen eller systemets text-till-tal-inställningar om du inte hör rösten nu</string>
|
||||
<!-- Settings «Route» category: «Tts unavailable» subtitle -->
|
||||
@@ -793,7 +793,7 @@
|
||||
<string name="connection_failure">Anslutningen bröts</string>
|
||||
<string name="disk_error_title">Diskfel</string>
|
||||
<string name="enable_show_on_lock_screen">Visa på låsskärmen</string>
|
||||
<string name="share_bookmarks_email_body">Hej! \n \nJag bifogar mina favoriter, öppna gärna dem med CoMaps. Om du inte redan har appen installerad, kan du ladda ner den här: https://www.comaps.app/download/ \n \nTrevlig resa med CoMaps!</string>
|
||||
<string name="share_bookmarks_email_body">Hej! \n \nJag bifogar mina bokmärken, öppna gärna dem med CoMaps. Om du inte redan har appen installerad, kan du ladda ner den här: https://www.comaps.app/download/ \n \nTrevlig resa med CoMaps!</string>
|
||||
<string name="instagram_url">https://www.instagram.com/comaps.app/</string>
|
||||
<string name="telegram_url">https://t.me/CoMapsApp/</string>
|
||||
<string name="osm_wiki_about_url">https://wiki.openstreetmap.org/wiki/Sv:Om_OpenStreetMap</string>
|
||||
@@ -850,5 +850,4 @@
|
||||
<string name="bicycle">Cykel</string>
|
||||
<string name="pedestrian">Gående</string>
|
||||
<string name="error_enter_correct_line_page">Ange en giltig webbadress</string>
|
||||
<string name="move_maps_error">Kunde inte flytta kartfiler</string>
|
||||
</resources>
|
||||
|
||||
@@ -65,8 +65,6 @@
|
||||
<color name="bg_panel">@color/bg_window</color>
|
||||
<color name="bg_primary_dark">#37653F</color> <!-- secondary dark -->
|
||||
<color name="bg_app">@android:color/white</color>
|
||||
<color name="bg_editor">#ebefe4</color>
|
||||
<color name="fg_editor">#f9faf2</color>
|
||||
|
||||
<color name="bg_dialog_translucent">#BB000000</color>
|
||||
<color name="bg_text_translucent">#99FFFFFF</color>
|
||||
|
||||
@@ -89,16 +89,8 @@
|
||||
<item name="android:layout_width">match_parent</item>
|
||||
<item name="android:layout_height">wrap_content</item>
|
||||
<item name="android:layout_marginBottom">@dimen/margin_half</item>
|
||||
<item name="cardBackgroundColor">@color/fg_editor</item>
|
||||
<item name="cardBackgroundColor">?cardBackground</item>
|
||||
<item name="android:padding">@dimen/margin_base</item>
|
||||
<item name="cardPreventCornerOverlap">false</item>
|
||||
</style>
|
||||
<style name="MwmWidget.M3.CardView" parent="Widget.Material3.CardView.Elevated">
|
||||
<item name="android:layout_width">match_parent</item>
|
||||
<item name="android:layout_height">wrap_content</item>
|
||||
<item name="android:layout_marginBottom">@dimen/margin_half</item>
|
||||
<item name="cardBackgroundColor">?appBackground</item>
|
||||
<item name="android:padding">@dimen/margin_base</item>
|
||||
<item name="cardPreventCornerOverlap">false</item>
|
||||
</style>
|
||||
</resources>
|
||||
@@ -239,6 +239,10 @@
|
||||
<item name="android:foreground">@drawable/shadow_top</item>
|
||||
</style>
|
||||
|
||||
<style name="MwmWidget.FrameLayout.BookmarkCategories">
|
||||
<item name="android:background">?windowBackgroundForced</item>
|
||||
</style>
|
||||
|
||||
<style name="MwmWidget.Counter">
|
||||
<item name="android:layout_width">wrap_content</item>
|
||||
<item name="android:layout_height">wrap_content</item>
|
||||
@@ -283,13 +287,13 @@
|
||||
</style>
|
||||
|
||||
<style name="MwmWidget.BottomSheetDialog" parent="Widget.Material3.BottomSheet.Modal">
|
||||
<item name="backgroundTint">?appBackground</item>
|
||||
<item name="backgroundTint">?colorSurfaceContainerLow</item>
|
||||
<item name="elevationOverlayEnabled">false</item>
|
||||
<item name="shapeAppearance">@style/ShapeAppearance.Material3.LargeComponent</item>
|
||||
</style>
|
||||
|
||||
<style name="MwmWidget.BottomSheet" parent="MwmWidget.BottomSheetDialog">
|
||||
<item name="android:background">?appBackground</item>
|
||||
<item name="android:background">?colorSurfaceContainerLow</item>
|
||||
<item name="behavior_hideable">false</item>
|
||||
</style>
|
||||
|
||||
|
||||
@@ -278,21 +278,15 @@
|
||||
<style name="MwmTheme.Navigation">
|
||||
<item name="iconTint">@color/white_primary</item>
|
||||
</style>
|
||||
|
||||
<style name="PopupMenu" parent="ThemeOverlay.Material3">
|
||||
<item name="android:popupBackground">?windowBackgroundForced</item>
|
||||
</style>
|
||||
<!-- Theme required to apply M3 dialog style on preference screen -->
|
||||
<style name="MwmTheme.M3.AlertDialog" parent="ThemeOverlay.Material3.MaterialAlertDialog">
|
||||
<item name="dialogCornerRadius">28dp</item>
|
||||
<item name="cornerFamily">rounded</item>
|
||||
<item name="android:colorBackground">?attr/colorSurfaceContainerHigh</item>
|
||||
<item name="android:layout">@layout/m3_alert_dialog</item>
|
||||
<item name="buttonBarPositiveButtonStyle">@style/MwmTheme.M3.AlertDialog.Button</item>
|
||||
<item name="buttonBarNegativeButtonStyle">@style/MwmTheme.M3.AlertDialog.Button</item>
|
||||
<item name="buttonBarNeutralButtonStyle">@style/MwmTheme.M3.AlertDialog.Button.Neutral</item>
|
||||
</style>
|
||||
|
||||
<style name="MwmTheme.M3.AlertDialog.Button" parent="@style/Widget.Material3.Button.TextButton.Dialog">
|
||||
<item name="android:textColor">?colorSecondary</item>
|
||||
</style>
|
||||
<style name="MwmTheme.M3.AlertDialog.Button.Neutral" parent="@style/Widget.Material3.Button.TextButton.Dialog.Flush">
|
||||
<item name="android:textColor">?colorSecondary</item>
|
||||
</style>
|
||||
</resources>
|
||||
|
||||
@@ -4,10 +4,11 @@ import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import java.time.ZoneId;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.util.Locale;
|
||||
import org.junit.Test;
|
||||
|
||||
public class OpenStateTextFormatterTest
|
||||
{
|
||||
@@ -35,10 +36,10 @@ public class OpenStateTextFormatterTest
|
||||
@Test
|
||||
public void buildAtLabel_today_open_close()
|
||||
{
|
||||
String open = OpenStateTextFormatter.buildAtLabel(true, true, "Sat", "09:00", OPENS_AT, CLOSES_AT, OPENS_DAY_AT,
|
||||
CLOSES_DAY_AT);
|
||||
String close = OpenStateTextFormatter.buildAtLabel(false, true, "Sat", "18:00", OPENS_AT, CLOSES_AT, OPENS_DAY_AT,
|
||||
CLOSES_DAY_AT);
|
||||
String open = OpenStateTextFormatter.buildAtLabel(true, true, "Sat", "09:00",
|
||||
OPENS_AT, CLOSES_AT, OPENS_DAY_AT, CLOSES_DAY_AT);
|
||||
String close = OpenStateTextFormatter.buildAtLabel(false, true, "Sat", "18:00",
|
||||
OPENS_AT, CLOSES_AT, OPENS_DAY_AT, CLOSES_DAY_AT);
|
||||
assertEquals("Opens at 09:00", open);
|
||||
assertEquals("Closes at 18:00", close);
|
||||
}
|
||||
@@ -46,10 +47,10 @@ public class OpenStateTextFormatterTest
|
||||
@Test
|
||||
public void buildAtLabel_other_day()
|
||||
{
|
||||
String open = OpenStateTextFormatter.buildAtLabel(true, false, "Sat", "09:00", OPENS_AT, CLOSES_AT, OPENS_DAY_AT,
|
||||
CLOSES_DAY_AT);
|
||||
String close = OpenStateTextFormatter.buildAtLabel(false, false, "Tue", "18:00", OPENS_AT, CLOSES_AT, OPENS_DAY_AT,
|
||||
CLOSES_DAY_AT);
|
||||
String open = OpenStateTextFormatter.buildAtLabel(true, false, "Sat", "09:00",
|
||||
OPENS_AT, CLOSES_AT, OPENS_DAY_AT, CLOSES_DAY_AT);
|
||||
String close = OpenStateTextFormatter.buildAtLabel(false, false, "Tue", "18:00",
|
||||
OPENS_AT, CLOSES_AT, OPENS_DAY_AT, CLOSES_DAY_AT);
|
||||
assertEquals("Opens Sat at 09:00", open);
|
||||
assertEquals("Closes Tue at 18:00", close);
|
||||
}
|
||||
|
||||
@@ -131,12 +131,6 @@ dependencies {
|
||||
testImplementation libs.junit
|
||||
}
|
||||
|
||||
android {
|
||||
androidResources {
|
||||
ignoreAssetsPatterns.add("!design")
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Running lint task triggers native build. Find a better solution.
|
||||
project.afterEvaluate {
|
||||
boolean isLintRun = project.gradle.startParameter.taskNames.any { it.toLowerCase().contains('lint') }
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
../../../../../data/subtypes.csv
|
||||
|
@@ -182,7 +182,8 @@ JNIEXPORT void JNICALL Java_app_organicmaps_sdk_DownloadResourcesLegacyActivity_
|
||||
g_currentRequest.reset();
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_app_organicmaps_sdk_DownloadResourcesLegacyActivity_nativeResetMetaConfig(JNIEnv *, jclass)
|
||||
JNIEXPORT void JNICALL Java_app_organicmaps_sdk_DownloadResourcesLegacyActivity_nativeResetMetaConfig(JNIEnv *,
|
||||
jclass)
|
||||
{
|
||||
auto & downloader = LegacyDownloader();
|
||||
if (downloader)
|
||||
|
||||
@@ -1505,16 +1505,20 @@ JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeGet3dMode(JNIEnv
|
||||
env->SetBooleanField(result, buildingsField, buildings);
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeSetCustomMapDownloadUrl(JNIEnv * env, jclass,
|
||||
JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeSetCustomMapDownloadUrl(JNIEnv * env, jclass,
|
||||
jstring url)
|
||||
{
|
||||
std::string nativeUrl = jni::ToNativeString(env, url);
|
||||
GetPlatform().SetCustomMapServerUrl(nativeUrl);
|
||||
|
||||
if (g_framework)
|
||||
{
|
||||
frm()->GetStorage().ResetMapDownloadMetaConfig();
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG(LINFO, ("nativeSetCustomMapDownloadUrl: framework not created yet, skipping ResetMapDownloadMetaConfig"));
|
||||
}
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeSetAutoZoomEnabled(JNIEnv * env, jclass,
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user