mirror of
https://codeberg.org/comaps/comaps
synced 2026-01-17 00:14:48 +00:00
Compare commits
7 Commits
x7z4w-map
...
yannikblos
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1fae6a11d9 | ||
|
|
942575af60 | ||
|
|
f832203c86 | ||
|
|
03c90aeff1 | ||
|
|
d1eb98d641 | ||
|
|
1a07fe4bcb | ||
|
|
439d8627c5 |
@@ -2,5 +2,3 @@
|
||||
480fa6c2fcf53be296504ac6ba8e6b3d70f92b42
|
||||
a6ede2b1466f0c9d8a443600ef337ba6b5832e58
|
||||
1377b81bf1cac72bb6da192da7fed6696d5d5281
|
||||
b4e9bbb8d2e24a2829defe7753590df4a937dac0
|
||||
f6d01325136c4d65e20763d0e1e9b32b94571bba
|
||||
|
||||
@@ -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
@@ -400,8 +400,14 @@
|
||||
android:name="app.organicmaps.settings.SettingsActivity"
|
||||
android:configChanges="orientation|screenLayout|screenSize"
|
||||
android:screenOrientation="fullUser"
|
||||
android:exported="true"
|
||||
android:label="@string/settings"
|
||||
android:parentActivityName="app.organicmaps.MwmActivity" />
|
||||
android:parentActivityName="app.organicmaps.MwmActivity" >
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.APPLICATION_PREFERENCES"/>
|
||||
<category android:name="android.intent.category.DEFAULT"/>
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
android:name="app.organicmaps.help.HelpActivity"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
@@ -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 isMapLanguageSelection =
|
||||
args != null ? args.getBoolean(IS_MAP_LANGUAGE_SELECTION) : true;
|
||||
Set<String> existingLanguages =
|
||||
args != null ? new HashSet<>(args.getStringArrayList(EXISTING_LOCALIZED_NAMES)) : new HashSet<>();
|
||||
|
||||
@@ -79,8 +81,7 @@ public class LanguagesFragment extends BaseMwmRecyclerFragment<LanguagesAdapter>
|
||||
|
||||
languages.addAll(0, systemLanguages.stream().filter(Objects::nonNull).toList());
|
||||
|
||||
if (isMapLanguageSelection)
|
||||
{
|
||||
if (isMapLanguageSelection) {
|
||||
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));
|
||||
|
||||
@@ -68,11 +68,11 @@
|
||||
<!-- "Add new bookmark list" dialog title -->
|
||||
<string name="add_new_set">Tilføj en ny liste</string>
|
||||
<!-- Add Bookmark list dialog - hint when the list name is empty -->
|
||||
<string name="bookmark_set_name">Indstil navn for bogmærkeliste</string>
|
||||
<string name="bookmark_set_name">Listenavn</string>
|
||||
<!-- Should be used in the bookmarks-only context, see bookmarks_and_tracks if tracks are also implied. -->
|
||||
<string name="bookmarks">Bogmærker</string>
|
||||
<string name="bookmarks">Steder</string>
|
||||
<!-- "Bookmarks and Tracks" dialog title, also sync it with iphone/plist.txt -->
|
||||
<string name="bookmarks_and_tracks">Bogmærker og spor</string>
|
||||
<string name="bookmarks_and_tracks">Favoritter</string>
|
||||
<!-- Add bookmark dialog - bookmark name -->
|
||||
<string name="name">Navn</string>
|
||||
<!-- Editor title above street and house number, duplicates [type.building.address] in types_strings.txt -->
|
||||
@@ -144,13 +144,13 @@
|
||||
<!-- Notes field in Bookmarks view -->
|
||||
<string name="description">Noter</string>
|
||||
<!-- Email Subject when sharing bookmark list -->
|
||||
<string name="share_bookmarks_email_subject">CoMaps bogmærker er blevet delt med dig</string>
|
||||
<string name="share_bookmarks_email_subject">Mine CoMaps-favoritter</string>
|
||||
<!-- message title of loading file -->
|
||||
<string name="load_kmz_title">Indlæser bogmærker</string>
|
||||
<string name="load_kmz_title">Indlæser favoritter</string>
|
||||
<!-- Kmz file successful loading -->
|
||||
<string name="load_kmz_successful">Bogmærker er indlæst! Du kan finde dem på kortet eller på skærmen for bogmærkehåndtering.</string>
|
||||
<string name="load_kmz_successful">Favoritter er indlæst! Du kan finde dem på kortet eller på skærmen for favorithåndtering.</string>
|
||||
<!-- Kml file loading failed -->
|
||||
<string name="load_kmz_failed">Bogmærkerne kunne ikke indlæses. Filen kan være skadet eller defekt.</string>
|
||||
<string name="load_kmz_failed">Favoritter kunne ikke indlæses. Filen kan være skadet eller defekt.</string>
|
||||
<!-- Failed to recognize the format of a bookmarks or tracks file. -->
|
||||
<string name="unknown_file_type">Filtypen genkendes ikke af appen: \n%1$s</string>
|
||||
<!-- Failed to open a bookmarks or tracks file in CoMaps. -->
|
||||
@@ -486,7 +486,7 @@
|
||||
<string name="minute">min</string>
|
||||
<string name="day">d</string>
|
||||
<string name="placepage_more_button">Mere</string>
|
||||
<string name="placepage_edit_bookmark_button">Rediger bogmærke</string>
|
||||
<string name="placepage_edit_bookmark_button">Rediger gemt sted</string>
|
||||
<string name="placepage_personal_notes_hint">Personlige notater (tekst eller html)</string>
|
||||
<string name="editor_reset_edits_message">Kassér alle lokale ændringer?</string>
|
||||
<string name="editor_reset_edits_button">Kassér ændringer</string>
|
||||
@@ -543,17 +543,17 @@
|
||||
<string name="dialog_error_storage_message">Eksternt lager er ikke tilgængeligt. SD-kortet kan være blevet fjernet eller beskadiget, eller filsystemet er skrivebeskyttet. Kontroller dit SD-kort eller kontakt os på support@comaps.app</string>
|
||||
<string name="setting_emulate_bad_storage">Emulér beskadiget lager</string>
|
||||
<string name="error_enter_correct_name">Angiv et korrekt navn</string>
|
||||
<string name="bookmark_lists">Lister</string>
|
||||
<string name="bookmark_lists">Favoritlister</string>
|
||||
<!-- Do not display all bookmark lists on the map -->
|
||||
<string name="bookmark_lists_hide_all">Skjul alle</string>
|
||||
<string name="bookmark_lists_show_all">Vis alle</string>
|
||||
<plurals name="bookmarks_places">
|
||||
<item quantity="one">%d bogmærke</item>
|
||||
<item quantity="other">%d bogmærker</item>
|
||||
<item quantity="one">%d gemt sted</item>
|
||||
<item quantity="other">%d gemte steder</item>
|
||||
</plurals>
|
||||
<string name="bookmarks_create_new_group">Opret ny liste</string>
|
||||
<!-- Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files -->
|
||||
<string name="bookmarks_import">Importer bogmærker og spor</string>
|
||||
<string name="bookmarks_import">Importer favoritter</string>
|
||||
<string name="bookmarks_error_message_share_general">Ikke i stand til at dele på grund af en applikationsfejl</string>
|
||||
<string name="bookmarks_error_title_share_empty">Delingsfejl</string>
|
||||
<string name="bookmarks_error_message_share_empty">Kan ikke dele en tom liste</string>
|
||||
@@ -582,7 +582,7 @@
|
||||
<string name="subway">Undergrundsbane</string>
|
||||
<string name="layers_title">Kortstile og -lag</string>
|
||||
<string name="bookmarks_empty_list_title">Listen er tom</string>
|
||||
<string name="bookmarks_empty_list_message">For at tilføje et bogmærke, så tryk et sted på kort og så på stjerneikonet</string>
|
||||
<string name="bookmarks_empty_list_message">For at gemme et sted, så tryk et sted på kortet og dernæst på stjerneikonet</string>
|
||||
<string name="category_desc_more">…mere</string>
|
||||
<string name="export_file">Eksporter KMZ</string>
|
||||
<string name="export_file_gpx">Eksporter GPX</string>
|
||||
@@ -635,7 +635,7 @@
|
||||
<!-- max. 10 symbols, both iOS and Android -->
|
||||
<string name="sort">Sorter…</string>
|
||||
<!-- Android, title, max 20-22 symbols -->
|
||||
<string name="sort_bookmarks">Sorter bogmærker</string>
|
||||
<string name="sort_bookmarks">Sorter favoritter</string>
|
||||
<!-- Android -->
|
||||
<string name="by_default">Som standard</string>
|
||||
<!-- Android -->
|
||||
@@ -736,7 +736,7 @@
|
||||
<string name="browser_not_available">Webbrowser er ikke tilgængelig</string>
|
||||
<string name="volume">Lydstyrke</string>
|
||||
<!-- Bookmark categories screen, button that opens share dialog to export all bookmarks and tracks -->
|
||||
<string name="bookmarks_export">Eksporter alle bogmærker og spor</string>
|
||||
<string name="bookmarks_export">Eksporter alle steder og spor</string>
|
||||
<!-- button in (app) TTS settings, to open the system TTS settings. -->
|
||||
<string name="pref_tts_open_system_settings">Indstillinger for talesyntese-system</string>
|
||||
<!-- toast displayed when pressing the "Speech synthesis system settings" button, and the system settings aren't found. -->
|
||||
@@ -768,7 +768,7 @@
|
||||
<!-- Title for the "Stop Without Saving" action for the alert when saving a track recording. -->
|
||||
<string name="continue_recording">Fortsæt optagelse</string>
|
||||
<!-- Title for the alert when saving a track recording. -->
|
||||
<string name="track_recording_alert_title">Gem i bogmærker og spor?</string>
|
||||
<string name="track_recording_alert_title">Gem i favoritter?</string>
|
||||
<!-- Message for the toast when saving the track recording is finished but nothing to save. -->
|
||||
<string name="track_recording_toast_nothing_to_save">Sporet er tomt - der er ikke noget at gemme</string>
|
||||
<!-- Error message when there are no File Manager apps installed to select a folder when importing Bookmarks and Tracks -->
|
||||
@@ -787,7 +787,7 @@
|
||||
<string name="error_enter_correct_facebook_page">Indtast en gyldig Facebook-webadresse, -konto eller -sidenavn</string>
|
||||
<string name="connection_failure">Forbindelsesfejl</string>
|
||||
<string name="error_enter_correct_twitter_page">Indtast et gyldigt Twitter-brugernavn eller en webadresse</string>
|
||||
<string name="share_bookmarks_email_body">Hej! \n \nVedhæftet er mine bogmærker; åbn dem venligst i CoMaps. Hvis du ikke har den installeret, kan du downloade den her: https://www.comaps.app/download/\n \nGod rejse med CoMaps!</string>
|
||||
<string name="share_bookmarks_email_body">Hej! \n \nVedhæftet er mine favoritter; åbn dem i CoMaps. Hvis du ikke har den installeret, kan du downloade den her: https://www.comaps.app/download/\n \nGod rejse med CoMaps!</string>
|
||||
<string name="delete_place_empty_comment_error">Angiv begrundelsen for at slette stedet</string>
|
||||
<string name="disk_error_title">Diskfejl</string>
|
||||
<string name="error_enter_correct_instagram_page">Indtast et gyldigt Instagram-brugernavn eller en webadresse</string>
|
||||
@@ -817,7 +817,7 @@
|
||||
<string name="error_enter_correct_bluesky_page">Indtast et gyldigt Bluesky-brugernavn eller en webadresse</string>
|
||||
<string name="editor_level">Etage (0 er stueetage)</string>
|
||||
<string name="pref_backup_now_summary_ok">Sikkerhedskopiering fuldført</string>
|
||||
<string name="pref_backup_now_summary_empty_lists">Ingen bogmærker og spor at lave sikkerhedskopi af</string>
|
||||
<string name="pref_backup_now_summary_empty_lists">Ingen steder og spor at lave sikkerhedskopi af</string>
|
||||
<string name="pref_backup_now_summary_failed">Sikkerhedskopiering mislykkedes</string>
|
||||
<string name="pref_backup_now_summary_folder_unavailable">Mappen til sikkerhedskopiering er ikke tilgængelig</string>
|
||||
<string name="pref_backup_status_summary_success">Sidste vellykkede sikkerhedskopiering</string>
|
||||
@@ -832,7 +832,7 @@
|
||||
<string name="editor_building_levels">Etager (inkl. stueetage, ekskl. tag)</string>
|
||||
<string name="error_enter_correct_level">Indtast et gyldigt etagenummer</string>
|
||||
<string name="pref_left_button_title">Indstilling af venstre knap</string>
|
||||
<string name="pref_backup_title">Sikkerhedskopi af bogmærker og spor</string>
|
||||
<string name="pref_backup_title">Sikkerhedskopi af favoritter</string>
|
||||
<string name="pref_backup_now_title">Sikkerhedskopiér nu</string>
|
||||
<string name="pref_backup_now_summary">Opret en sikkerhedskopi straks</string>
|
||||
<string name="clear">Ryd</string>
|
||||
@@ -841,7 +841,7 @@
|
||||
<string name="pedestrian">Fodgænger</string>
|
||||
<string name="bicycle">Cykel</string>
|
||||
<string name="ruler">Lineal</string>
|
||||
<string name="bookmark_color">Bogmærkefarve</string>
|
||||
<string name="bookmark_color">Favoritfarve</string>
|
||||
<string name="pref_backup_summary">Automatisk sikkerhedskopiering til en mappe på din enhed</string>
|
||||
<string name="pref_backup_now_summary_progress">Sikkerhedskopiering i gang…</string>
|
||||
<string name="pref_backup_location_title">Placering af sikkerhedskopi</string>
|
||||
@@ -907,4 +907,5 @@
|
||||
<string name="download_resources_custom_url_message">Tilsidesæt den som standard anvendte server til download af kort. Lad feltet være tomt for at bruge CoMaps\' standardserver.</string>
|
||||
<string name="download_resources_custom_url_summary_none">Ikke indstillet</string>
|
||||
<string name="download_resources_custom_url_error_scheme">Indtast en URL, der starter med http:// eller https://</string>
|
||||
<string name="pref_maplanguage_local">Lokalt sprog</string>
|
||||
</resources>
|
||||
|
||||
@@ -68,9 +68,9 @@
|
||||
<!-- Add Bookmark list dialog - hint when the list name is empty -->
|
||||
<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 -->
|
||||
@@ -146,10 +146,10 @@
|
||||
<!-- Notes field in Bookmarks view -->
|
||||
<string name="description">Σημειώσεις</string>
|
||||
<!-- Email Subject when sharing bookmark list -->
|
||||
<string name="share_bookmarks_email_subject">Κοινοποιήθηκαν τα αγαπημένα από το CoMaps σε εσάς</string>
|
||||
<string name="share_bookmarks_email_body">Γειa! \n \nΣου επισυνάπτω τα αγαπημένα μου. Παρακαλώ άνοιξέ τα με το CoMaps. Αν δεν το έχεις εγκαταστήσει, μπορείς να το κατεβάσεις από εδώ: https://www.comaps.app/download/ \n \nΚαλή διασκέδαση ταξιδεύοντας με το CoMaps!</string>
|
||||
<string name="share_bookmarks_email_subject">Τα Αγαπημένα μου στο CoMaps</string>
|
||||
<string name="share_bookmarks_email_body">Γειά σου! \n \nΣου επισυνάπτω τα αγαπημένα μου. Παρακαλώ άνοιξε τα με το CoMaps. Αν δεν το έχεις εγκατεστημένο, μπορείς να το κατεβάσεις από εδώ: https://www.comaps.app/download/ \n \nΚαλή διασκέδαση ταξιδεύοντας με το CoMaps!</string>
|
||||
<!-- message title of loading file -->
|
||||
<string name="load_kmz_title">Φορτώνονται τα αγαπημένα</string>
|
||||
<string name="load_kmz_title">Φορτώνονται τα Αγαπημένα</string>
|
||||
<!-- Kmz file successful loading -->
|
||||
<string name="load_kmz_successful">Τα αγαπημένα φορτώθηκαν με επιτυχία! Μπορείτε να τα βρείτε στο χάρτη ή στην οθόνη Διαχείρισης αγαπημένων.</string>
|
||||
<!-- Kml file loading failed -->
|
||||
@@ -163,9 +163,9 @@
|
||||
<!-- Warning message when doing search around current position -->
|
||||
<string name="unknown_current_position">Η τοποθεσία σας δεν έχει προσδιοριστεί ακόμη</string>
|
||||
<!-- Alert message that we can't run Map Storage settings due to some reasons. -->
|
||||
<string name="cant_change_this_setting">Λυπούμαστε, οι ρυθμίσεις αποθήκευσης χαρτών είναι προς το παρόν απενεργοποιημένες.</string>
|
||||
<string name="cant_change_this_setting">Λυπούμαστε, οι ρυθμίσεις αποθήκευσης χαρτών είναι προς το παρόν απενεργοποιημένες</string>
|
||||
<!-- Alert message that downloading is in progress. -->
|
||||
<string name="downloading_is_active">Λήψη χάρτη βρίσκεται σε εξέλιξη.</string>
|
||||
<string name="downloading_is_active">Η λήψη χάρτη βρίσκεται σε εξέλιξη</string>
|
||||
<!-- Share my position using SMS, %1$@ contains om:// and %2$@ https://comaps.app link WITHOUT NAME. @NOTE non-ascii symbols in the link will result in max 70 characters SMS instead of 140. -->
|
||||
<string name="my_position_share_sms">Δες την τρέχουσα τοποθεσία μου στο CoMaps! %1$s ή %2$s Αν δεν έχεις τους χάρτες εκτός σύνδεσης, μπορείς να τους κατεβάσεις εδώ: https://www.comaps.app/download/</string>
|
||||
<!-- Subject for emailed bookmark -->
|
||||
@@ -185,7 +185,7 @@
|
||||
<!-- Data version in «About» screen, %@ is replaced by a local, human readable date. -->
|
||||
<string name="data_version">Δεδομένα OpenStreetMap: %s</string>
|
||||
<!-- Title for tracks category in bookmarks manager -->
|
||||
<string name="tracks_title">Διαδρομές</string>
|
||||
<string name="tracks_title">Ίχνη</string>
|
||||
<!-- Length of track in cell that describes route -->
|
||||
<string name="length">Μήκος</string>
|
||||
<string name="share_my_location">Κοινοποίηση της τοποθεσίας μου</string>
|
||||
@@ -269,7 +269,7 @@
|
||||
<string name="downloader_download_all_button">Λήψη όλων</string>
|
||||
<string name="downloader_downloading">Γίνεται λήψη:</string>
|
||||
<!-- Displayed in a dialog that appears when a user tries to delete a map while the app is in the follow route mode -->
|
||||
<string name="downloader_delete_map_while_routing_dialog">Για να διαγράψετε το χάρτη, σταματήστε την πλοήγηση.</string>
|
||||
<string name="downloader_delete_map_while_routing_dialog">Για να διαγράψετε το χάρτη, σταματήστε την πλοήγηση</string>
|
||||
<!-- PointsInDifferentMWM -->
|
||||
<string name="routing_failed_cross_mwm_building">Μπορούν να δημιουργηθούν μόνο διαδρομές που περιέχονται πλήρως μέσα σε ένα χάρτη σε μια ενιαία περιοχή.</string>
|
||||
<!-- Context menu item for downloader. -->
|
||||
@@ -295,7 +295,7 @@
|
||||
<!-- location service disabled -->
|
||||
<string name="enable_location_services">Ενεργοποιήστε τις υπηρεσίες εντοπισμού τοποθεσίας</string>
|
||||
<string name="save">Αποθήκευση</string>
|
||||
<string name="create">δημιουργήστε</string>
|
||||
<string name="create">Δημιουργία</string>
|
||||
<!-- red color -->
|
||||
<string name="red">Κόκκινο</string>
|
||||
<!-- yellow color -->
|
||||
@@ -341,18 +341,18 @@
|
||||
<string name="dialog_routing_location_turn_on">Ενεργοποιήστε τις υπηρεσίες εντοπισμού τοποθεσίας</string>
|
||||
<string name="dialog_routing_location_unknown_turn_on">Δεν είναι δυνατός ο εντοπισμός των τρεχουσών συντεταγμένων GPS. Ενεργοποιήστε τις υπηρεσίες εντοπισμού τοποθεσίας για τον υπολογισμό της διαδρομής.</string>
|
||||
<string name="dialog_routing_unable_locate_route">Δε μπορεί να εντοπιστεί η διαδρομή</string>
|
||||
<string name="dialog_routing_cant_build_route">Δε μπορεί να δημιουργηθεί η διαδρομή.</string>
|
||||
<string name="dialog_routing_cant_build_route">Δε μπορεί να δημιουργηθεί η διαδρομή</string>
|
||||
<string name="dialog_routing_change_start_or_end">Ρυθμίστε το σημείο εκκίνησης ή τον προορισμό σας.</string>
|
||||
<string name="dialog_routing_change_start">Ρυθμίστε το σημείο εκκίνησης</string>
|
||||
<string name="dialog_routing_start_not_determined">Η διαδρομή δεν δημιουργήθηκε. Δεν είναι δυνατός ο εντοπισμός του σημείου εκκίνησης.</string>
|
||||
<string name="dialog_routing_select_closer_start">Επιλέξτε σημείο εκκίνησης πιο κοντά σε κάποιο δρόμο.</string>
|
||||
<string name="dialog_routing_change_end">Ρύθμιση προορισμού</string>
|
||||
<string name="dialog_routing_end_not_determined">Η διαδρομή δεν δημιουργήθηκε. Δεν είναι δυνατός ο εντοπισμός του προορισμού.</string>
|
||||
<string name="dialog_routing_select_closer_end">Επιλέξτε ένα σημείο προορισμού πιο κοντά σε κάποιο δρόμο.</string>
|
||||
<string name="dialog_routing_change_intermediate">Δεν είναι δυνατός ο εντοπισμός ενδιάμεσου σημείου.</string>
|
||||
<string name="dialog_routing_intermediate_not_determined">Ρυθμίστε το ενδιάμεσο σημείο.</string>
|
||||
<string name="dialog_routing_select_closer_end">Επιλέξτε ένα σημείο προορισμού πιο κοντά σε κάποιο δρόμο</string>
|
||||
<string name="dialog_routing_change_intermediate">Δεν είναι δυνατός ο εντοπισμός ενδιάμεσου σημείου</string>
|
||||
<string name="dialog_routing_intermediate_not_determined">Προσαρμόστε το ενδιάμεσο σημείο</string>
|
||||
<string name="dialog_routing_system_error">Σφάλμα συστήματος</string>
|
||||
<string name="dialog_routing_application_error">Δεν είναι δυνατή η δημιουργία διαδρομής λόγω σφάλματος της εφαρμογής.</string>
|
||||
<string name="dialog_routing_application_error">Δεν είναι δυνατή η δημιουργία διαδρομής λόγω σφάλματος της εφαρμογής</string>
|
||||
<string name="dialog_routing_try_again">Προσπαθήστε ξανά</string>
|
||||
<string name="not_now">Όχι τώρα</string>
|
||||
<string name="dialog_routing_download_and_build_cross_route">Θέλετε να κατεβάσετε το χάρτη και να δημιουργήσετε μια πιο βέλτιστη διαδρομή που εκτείνεται σε περισσότερους από έναν χάρτες;</string>
|
||||
@@ -366,11 +366,11 @@
|
||||
<string name="hide">Απόκρυψη</string>
|
||||
<string name="categories">Κατηγορίες</string>
|
||||
<string name="history">Ιστορικό</string>
|
||||
<string name="search_not_found">Ωχ, δε βρέθηκαν αποτελέσματα.</string>
|
||||
<string name="search_not_found">Ωχ, δε βρέθηκαν αποτελέσματα</string>
|
||||
<!-- The message when user did not find anything in the search. -->
|
||||
<string name="search_not_found_query">Κατεβάστε την περιοχή στην οποία ψάχνετε ή δοκιμάστε να προσθέσετε το όνομα μιας κοντινής πόλης/χωριού.</string>
|
||||
<string name="search_history_title">Ιστορικό αναζητήσεων</string>
|
||||
<string name="search_history_text">Προβολή πρόσφατων αναζητήσεων.</string>
|
||||
<string name="search_history_text">Προβολή πρόσφατων αναζητήσεων</string>
|
||||
<string name="clear_search">Εκκαθάριση ιστορικού αναζητήσεων</string>
|
||||
<!-- Place Page link to Wikipedia article (if map object has it). -->
|
||||
<string name="read_in_wikipedia">Βικιπέδια</string>
|
||||
@@ -378,7 +378,7 @@
|
||||
<string name="p2p_start">Έναρξη</string>
|
||||
<string name="p2p_from_here">Διαδρομή από</string>
|
||||
<string name="p2p_to_here">Διαδρομή προς</string>
|
||||
<string name="p2p_only_from_current">Η πλοήγηση είναι διαθέσιμη μόνο από την τρέχουσα τοποθεσία σας.</string>
|
||||
<string name="p2p_only_from_current">Η πλοήγηση είναι διαθέσιμη μόνο από την τρέχουσα τοποθεσία σας</string>
|
||||
<string name="p2p_reroute_from_current">Θέλετε να σχεδιαστεί μια διαδρομή από την τρέχουσα τοποθεσία σας;</string>
|
||||
<!-- Edit open hours/set time and minutes dialog -->
|
||||
<string name="next_button">Επόμενο</string>
|
||||
@@ -443,11 +443,11 @@
|
||||
<!-- login text field -->
|
||||
<string name="editor_add_phone">Προσθήκη Τηλεφώνου</string>
|
||||
<string name="level">Όροφος</string>
|
||||
<string name="downloader_delete_map_dialog">Όλες οι αλλαγές που έχετε κάνει στο χάρτη θα διαγραφούν μαζί με το χάρτη.</string>
|
||||
<string name="downloader_delete_map_dialog">Όλες οι αλλαγές που έχετε κάνει στο χάρτη θα διαγραφούν μαζί με το χάρτη</string>
|
||||
<string name="downloader_update_maps">Ενημέρωση χαρτών</string>
|
||||
<string name="downloader_mwm_migration_dialog">Για να δημιουργήσετε μια διαδρομή, πρέπει να ενημερώσετε όλους τους χάρτες και στη συνέχεια να σχεδιάσετε τη διαδρομή ξανά.</string>
|
||||
<string name="downloader_search_field_hint">Εύρεση χάρτη</string>
|
||||
<string name="common_check_internet_connection_dialog">Βεβαιωθείτε ότι η συσκευή σας είναι συνδεδεμένη στο Internet.</string>
|
||||
<string name="common_check_internet_connection_dialog">Βεβαιωθείτε ότι η συσκευή σας είναι συνδεδεμένη στο Διαδίκτυο</string>
|
||||
<string name="downloader_no_space_title">Δεν υπάρχει αρκετός χώρος</string>
|
||||
<string name="downloader_no_space_message">Διαγράψτε μη απαραίτητα δεδομένα</string>
|
||||
<string name="editor_login_error_dialog">Σφάλμα σύνδεσης</string>
|
||||
@@ -492,11 +492,11 @@
|
||||
<string name="editor_category_unsuitable_text">Οι CoMaps επιτρέπουν την προσθήκη απλών κατηγοριών σημείων μόνο, δηλαδή όχι πόλεων, δρόμων, λιμνών, περιγραμμάτων κτιρίων κ.λπ. Παρακαλούμε προσθέστε τέτοιες κατηγορίες απευθείας στο <a href="https://www.openstreetmap.org">OpenStreetMap.org</a>. Ελέγξτε τον <a href="https://www.comaps.app/support/advanced-map-editing/">οδηγό μας</a> για λεπτομερείς οδηγίες βήμα προς βήμα.</string>
|
||||
<string name="downloader_no_downloaded_maps_title">Δεν έχετε κατεβάσει χάρτες</string>
|
||||
<string name="downloader_no_downloaded_maps_message">Κατεβάστε χάρτες για να κάνετε αναζήτηση και να πλοηγηθείτε χωρίς σύνδεση</string>
|
||||
<string name="current_location_unknown_error_title">Η τρέχουσα τοποθεσία είναι άγνωστη.</string>
|
||||
<string name="current_location_unknown_error_title">Η τρέχουσα τοποθεσία είναι άγνωστη</string>
|
||||
<!-- abbreviation for kilometers per hour -->
|
||||
<string name="kilometers_per_hour">χμ/ω</string>
|
||||
<string name="placepage_more_button">Περισσότερα</string>
|
||||
<string name="placepage_edit_bookmark_button">Επεξεργασία αγαπημένου</string>
|
||||
<string name="placepage_edit_bookmark_button">Επεξεργασία αγαπημένων μερών</string>
|
||||
<string name="placepage_personal_notes_hint">Προσωπικές σημειώσεις (κείμενο ή html)</string>
|
||||
<string name="editor_reset_edits_message">Απόρριψη όλων των τοπικών αλλαγών;</string>
|
||||
<string name="editor_reset_edits_button">Απόρριψη αλλαγών</string>
|
||||
@@ -520,9 +520,9 @@
|
||||
<!-- Dialog before publishing the modifications to the public map. -->
|
||||
<string name="editor_share_to_all_dialog_message_1">Βεβαιωθείτε ότι δεν έχετε εισάγει προσωπικά δεδομένα.</string>
|
||||
<string name="editor_share_to_all_dialog_message_2">Οι συντάκτες του OpenStreetMap θα ελέγξουν τις αλλαγές και θα επικοινωνήσουν μαζί σας εάν έχουν απορίες.</string>
|
||||
<string name="navigation_stop_button">τέλος</string>
|
||||
<string name="navigation_stop_button">Τέλος</string>
|
||||
<!-- Shown as toast when starting the recent track recording -->
|
||||
<string name="track_recording">Καταγραφή της διαδρομής</string>
|
||||
<string name="track_recording">Καταγραφή του ίχνους</string>
|
||||
<!-- For the first routing -->
|
||||
<string name="accept">Συμφωνώ</string>
|
||||
<!-- For the first routing -->
|
||||
@@ -530,13 +530,13 @@
|
||||
<string name="mobile_data_dialog">Θέλετε να χρησιμοποιήσετε το δίκτυο κινητής τηλεφωνίας για να εμφανίσετε αναλυτικές πληροφορίες;</string>
|
||||
<string name="mobile_data_option_always">Να χρησιμοποιείται πάντα</string>
|
||||
<string name="mobile_data_option_today">Μόνο σήμερα</string>
|
||||
<string name="mobile_data_option_not_today">Να Μην χρησιμοποιηθεί σήμερα</string>
|
||||
<string name="mobile_data_option_not_today">Να μην χρησιμοποιηθεί σήμερα</string>
|
||||
<string name="mobile_data">Ίντερνετ μέσω δικτύου κινητής</string>
|
||||
<!-- NOTE to translators: please synchronize your translation with the English one. -->
|
||||
<string name="mobile_data_description">Απαιτείται πρόσβαση στο ίντερνετ μέσω δικτύου κινητής για την εμφάνιση αναλυτικών πληροφοριών για τις τοποθεσίες, όπως φωτογραφίες, τιμές και κριτικές.</string>
|
||||
<string name="mobile_data_option_never">Να μην χρησιμοποιείται ποτέ</string>
|
||||
<string name="mobile_data_option_ask">Να γίνεται πάντα ερώτηση</string>
|
||||
<string name="traffic_update_maps_text">Για να εμφανιστούν πληροφορίες για την κίνηση, πρέπει να ενημερωθούν οι χάρτες.</string>
|
||||
<string name="traffic_update_maps_text">Για να εμφανιστούν πληροφορίες για την κίνηση, πρέπει να ενημερωθούν οι χάρτες</string>
|
||||
<string name="big_font">Αύξηση μεγέθους γραμματοσειράς στο χάρτη</string>
|
||||
<string name="traffic_update_app">Κάντε ενημέρωση του CoMaps</string>
|
||||
<!-- "traffic" as in "road congestion" -->
|
||||
@@ -546,7 +546,7 @@
|
||||
<string name="feedback_general">Αποστολή γνώμης</string>
|
||||
<string name="prefs_languages_information">Χρησιμοποιούμε το σύστημα TTS για τις φωνητικές οδηγίες. Αρκετές συσκευές Android χρησιμοποιούν το Google TTS, μπορείτε να το κατεβάσετε ή να το ενημερώσετε από το Google Play (https://play.google.com/store/apps/details?id=com.google.android.tts)</string>
|
||||
<string name="prefs_languages_information_off">Για μερικές γλώσσες θα χρειαστεί να εγκαταστήσετε συνθεσάιζερ ομιλίας ή κάποιο συμπληρωματικό πακέτο γλώσσας από το app store (Google Play, Galaxy Store, App Gallery, FDroid). \nΑνοίξτε τις Ρυθμίσεις της συσκευής σας → Γλώσσα και εισαγωγή → Ομιλία → Μετατροπή κειμένου σε ομιλία. \nΕδώ μπορείτε να διαχειριστείτε τις ρυθμίσεις της σύνθεσης ομιλίας (για παράδειγμα, μπορείτε να κατεβάσετε πακέτο γλώσσας για χρήση εκτός σύνδεσης) και να επιλέξετε άλλη μηχανή μετατροπής κειμένου σε ομιλία.</string>
|
||||
<string name="prefs_languages_information_off_link">Για περισσότερες πληροφορίες δείτε αυτό τον οδηγό.</string>
|
||||
<string name="prefs_languages_information_off_link">Για περισσότερες πληροφορίες δείτε αυτό τον οδηγό</string>
|
||||
<string name="transliteration_title">Μεταγραφή στο λατινικό αλφάβητο</string>
|
||||
<string name="learn_more">Μάθετε περισσότερα</string>
|
||||
<!-- User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". -->
|
||||
@@ -561,17 +561,17 @@
|
||||
<string name="dialog_error_storage_message">Ο εξωτερικός απθηκευτικός χώρος δεν είναι διαθέσιμος, πιθανότατα έχει αφαιρεθεί η κάρτα SD, είναι κατεστραμμένη ή το σύστημα αρχείων είναι μόνο για ανάγνωση. Ελέγξτε το και επικοινωνήστε μαζί μας στη διεύθυνση support@comaps.app</string>
|
||||
<string name="setting_emulate_bad_storage">Εξομείωση κακού αποθηκευτικού χώρου</string>
|
||||
<string name="error_enter_correct_name">Εισάγετε ένα σωστό όνομα</string>
|
||||
<string name="bookmark_lists">Λίστες</string>
|
||||
<string name="bookmark_lists">Λίστες αγαπημένων</string>
|
||||
<!-- Do not display all bookmark lists on the map -->
|
||||
<string name="bookmark_lists_hide_all">Απόκρυψη όλων</string>
|
||||
<string name="bookmark_lists_show_all">Εμφάνιση όλων</string>
|
||||
<plurals name="bookmarks_places">
|
||||
<item quantity="one">%d αγαπημένο</item>
|
||||
<item quantity="other">%d αγαπημένα</item>
|
||||
<item quantity="one">%d αγαπημένο μέρος</item>
|
||||
<item quantity="other">%d αγαπημένα μέρη</item>
|
||||
</plurals>
|
||||
<string name="bookmarks_create_new_group">Δημιουργία νέας λίστας</string>
|
||||
<!-- Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files -->
|
||||
<string name="bookmarks_import">Εισαγωγή σελιδοδεικτών και διαδρομών</string>
|
||||
<string name="bookmarks_import">Εισαγωγή Αγαπημένων</string>
|
||||
<string name="bookmarks_error_message_share_general">Αδυναμία κοινοποίησης λόγω σφάλματος εφαρμογής</string>
|
||||
<string name="bookmarks_error_title_share_empty">Σφάλμα κατά την κοινοποίηση</string>
|
||||
<string name="bookmarks_error_message_share_empty">Δεν είναι δυνατή η κοινή χρήση μιας κενής λίστας</string>
|
||||
@@ -589,8 +589,8 @@
|
||||
</plurals>
|
||||
<string name="restore">Επαναφορά</string>
|
||||
<plurals name="tracks">
|
||||
<item quantity="one">%d διαδρομή</item>
|
||||
<item quantity="other">%d διαδρομές</item>
|
||||
<item quantity="one">%d ίχνος</item>
|
||||
<item quantity="other">%d ίχνη</item>
|
||||
</plurals>
|
||||
<!-- Settings privacy group in settings screen -->
|
||||
<string name="privacy">Απόρρητο</string>
|
||||
@@ -600,12 +600,12 @@
|
||||
<string name="subway">Μετρό</string>
|
||||
<string name="layers_title">Στυλ χάρτη και επίπεδα</string>
|
||||
<string name="bookmarks_empty_list_title">Η λίστα είναι άδεια</string>
|
||||
<string name="bookmarks_empty_list_message">Για να προσθέσετε σελιδοδείκτη, πατήστε ένα μέρος στο χάρτη και μετά πατήστε το αστεράκι</string>
|
||||
<string name="bookmarks_empty_list_message">Για να αποθηκεύσετε ένα μέρος, πατήστε μια τοποθεσία στο χάρτη και μετά πατήστε το αστεράκι</string>
|
||||
<string name="category_desc_more">…περισσότερα</string>
|
||||
<string name="export_file">Εξαγωγή KMZ</string>
|
||||
<string name="export_file_gpx">Εξαγωγή GPX</string>
|
||||
<string name="delete_list">Διαγραφή λίστας</string>
|
||||
<string name="speedcams_alert_title">Κάμερες Ταχύτητας</string>
|
||||
<string name="speedcams_alert_title">Κάμερες ταχύτητας</string>
|
||||
<string name="place_description_title">Περιγραφή μέρους</string>
|
||||
<!-- this text will be shown in application notification preferences opposite checkbox which enable/disable downloader notifications. Devices on Android 8+ are affected. -->
|
||||
<string name="notification_channel_downloader">Κατέβασμα χαρτών</string>
|
||||
@@ -616,9 +616,9 @@
|
||||
<!-- Speed camera settings menu option - Never warn (about speedcams) -->
|
||||
<string name="pref_tts_speedcams_never">Να μην ειδοποιούμαι ποτέ</string>
|
||||
<string name="power_managment_title">Λειτουργία εξοικονόμησης ενέργειας</string>
|
||||
<string name="power_managment_description">Θα γίνεται προσπάθεια εξοικονόμησης ενέργειας εις βάρος κάποιον λειτουργιών.</string>
|
||||
<string name="power_managment_description">Θα γίνεται προσπάθεια εξοικονόμησης ενέργειας εις βάρος κάποιων λειτουργιών</string>
|
||||
<string name="power_managment_setting_never">Ποτέ</string>
|
||||
<string name="power_managment_setting_auto">Αυτόματα</string>
|
||||
<string name="power_managment_setting_auto">Όταν η μπαταρία είναι χαμηλή</string>
|
||||
<string name="power_managment_setting_manual_max">Πάντα</string>
|
||||
<string name="enable_logging_warning_message">Αυτή η λειτουργία είναι ενεργοποιημένη για την καταγραφή ενεργειών για διαγνωστικούς σκοπούς. Αυτό βοηθά την ομάδα να εντοπίζει προβλήματα με την εφαρμογή. Να ενεργοποιείτε τη λειτουργία μόνο κατόπιν αιτήματος της υποστήριξης του CoMaps.</string>
|
||||
<string name="driving_options_title">Ρυθμίσεις δρομολόγησης</string>
|
||||
@@ -641,9 +641,9 @@
|
||||
<!-- A generic "No" button in dialogs -->
|
||||
<string name="no">Όχι</string>
|
||||
<!-- E.g. "WiFi:Yes" -->
|
||||
<string name="yes_available">Ενεργ.</string>
|
||||
<string name="yes_available">Ναι</string>
|
||||
<!-- E.g. "WiFi:No" -->
|
||||
<string name="no_available">Απενεργ.</string>
|
||||
<string name="no_available">Όχι</string>
|
||||
<!-- To indicate the capacity of car parkings, bicycle parkings, electric vehicle charging stations... -->
|
||||
<string name="capacity">Χωρητικότητα: %s</string>
|
||||
<!-- To indicate the network of ATMs, bicycle rentals, electric vehicle charging stations... -->
|
||||
@@ -653,7 +653,7 @@
|
||||
<!-- max. 10 symbols, both iOS and Android -->
|
||||
<string name="sort">Ταξινόμηση…</string>
|
||||
<!-- Android, title, max 20-22 symbols -->
|
||||
<string name="sort_bookmarks">Ταξινόμηση σελιδ/κτών</string>
|
||||
<string name="sort_bookmarks">Ταξινόμηση αγαπημένων</string>
|
||||
<!-- Android -->
|
||||
<string name="by_default">Προεπιλογή</string>
|
||||
<!-- Android -->
|
||||
@@ -769,7 +769,7 @@
|
||||
<string name="browser_not_available">Δεν είναι διαθέσιμος ο περιηγητής</string>
|
||||
<string name="volume">Ένταση ήχου</string>
|
||||
<!-- Bookmark categories screen, button that opens share dialog to export all bookmarks and tracks -->
|
||||
<string name="bookmarks_export">Εξαγωγή όλων των σελιδοδεικτών και των διαδρομών</string>
|
||||
<string name="bookmarks_export">Εξαγωγή όλων των Μερών και Ιχνών</string>
|
||||
<!-- button in (app) TTS settings, to open the system TTS settings. -->
|
||||
<string name="pref_tts_open_system_settings">Ρυθμίσεις συστήματος σύνθεσης ομιλίας</string>
|
||||
<!-- toast displayed when pressing the "Speech synthesis system settings" button, and the system settings aren't found. -->
|
||||
@@ -793,21 +793,21 @@
|
||||
<!-- Disclaimer summary shown when Power Saving Mode is enabled -->
|
||||
<string name="power_save_dialog_summary">Για την πιο ακριβή πλοήγηση, συνιστούμε να απενεργοποιήσετε τη λειτουργία εξοικονόμησης ενέργειας στις ρυθμίσεις μπαταρίας του τηλεφώνου.</string>
|
||||
<!-- Prompt to start recording a track. -->
|
||||
<string name="start_track_recording">Εγγραφή διαδρομής</string>
|
||||
<string name="start_track_recording">Εγγραφή ίχνους</string>
|
||||
<!-- Prompt for stopping a track recording. -->
|
||||
<string name="stop_track_recording">Σταματήστε την εγγραφή διαδρομής</string>
|
||||
<string name="stop_track_recording">Σταματήστε την εγγραφή ίχνους</string>
|
||||
<!-- Title for the "Stop Without Saving" action for the alert when saving a track recording. -->
|
||||
<string name="stop_without_saving">Σταματήστε χωρίς αποθήκευση</string>
|
||||
<!-- Title for the "Stop Without Saving" action for the alert when saving a track recording. -->
|
||||
<string name="continue_recording">Συνέχεια εγγραφής</string>
|
||||
<!-- Title for the alert when saving a track recording. -->
|
||||
<string name="track_recording_alert_title">Αποθήκευση στα Αγαπημένα και Διαδρομές;</string>
|
||||
<string name="track_recording_alert_title">Αποθήκευση στα Αγαπημένα;</string>
|
||||
<!-- Message for the toast when saving the track recording is finished but nothing to save. -->
|
||||
<string name="track_recording_toast_nothing_to_save">Η διαδρομή είναι άδεια - δεν υπάρχει τίποτα να αποθηκεύσετε</string>
|
||||
<string name="track_recording_toast_nothing_to_save">Το ίχνος είναι άδειο - δεν υπάρχει τίποτα να αποθηκεύσετε</string>
|
||||
<!-- Error message when there are no File Manager apps installed to select a folder when importing Bookmarks and Tracks -->
|
||||
<string name="error_no_file_manager_app">Δεν είναι δυνατή η εμφάνιση του διαλόγου επιλογής φακέλου επειδή δεν είναι εγκατεστημένη η κατάλληλη εφαρμογή στη συσκευή σας. Εγκαταστήστε μια εφαρμογή διαχείρισης αρχείων και δοκιμάστε ξανά.</string>
|
||||
<string name="choose_color">Επιλέξτε χρώμα</string>
|
||||
<string name="edit_track">Επεξεργασία διαδρομής</string>
|
||||
<string name="edit_track">Επεξεργασία ίχνους</string>
|
||||
<string name="uri_open_location_failed">Δεν υπάρχει εγκατεστημένη εφαρμογή που να μπορεί να ανοίξει την τοποθεσία</string>
|
||||
<!-- preference string for using auto theme only in navigation mode -->
|
||||
<string name="nav_auto">Αυτόματη πλοήγηση</string>
|
||||
@@ -816,10 +816,10 @@
|
||||
<string name="translated_om_site_url">https://comaps.app/</string>
|
||||
<string name="tts_info_link">https://www.comaps.app/support/tts-configuration-guide-for-android/</string>
|
||||
<string name="level_value_generic">Όροφος: %s</string>
|
||||
<string name="miles_per_hour">mph</string>
|
||||
<string name="minute">λπτ</string>
|
||||
<string name="day">Μέρα</string>
|
||||
<string name="hour">Ωρα</string>
|
||||
<string name="miles_per_hour">μλ/ώ</string>
|
||||
<string name="minute">λεπ</string>
|
||||
<string name="day">μέρ</string>
|
||||
<string name="hour">ώ</string>
|
||||
<string name="telegram_url">https://t.me/CoMapsApp/</string>
|
||||
<string name="instagram_url">https://www.instagram.com/comaps.app/</string>
|
||||
<string name="panoramax">εικόνα Panoramax</string>
|
||||
@@ -836,4 +836,38 @@
|
||||
<string name="hours_confirmed_time_ago">Επιβεβαιώθηκε %s</string>
|
||||
<string name="existence_confirmed_time_ago">Ύπαρξη επιβεβαιώθηκε %s</string>
|
||||
<string name="editor_building_levels">Όροφοι (με το ισόγειο, χωρίς την ταράτσα)</string>
|
||||
<string name="about_headline">Ανοιχτό έργο με την υποστήριξη της κοινότητας</string>
|
||||
<string name="offline_explanation_text">Χρειάζεται να ληφθεί ένας χάρτης για να δείτε και να πλοηγηθείτε την περιοχή.\nΚατεβάστε χάρτες για τις περιοχές που θέλετε να ταξιδέψετε.</string>
|
||||
<string name="pref_left_button_disable">Απενεργοποίηση</string>
|
||||
<string name="avoid_steps">Αποφυγή σκαλοπατιών</string>
|
||||
<string name="avoid_paved">Αποφυγή στρωμένων δρόμων</string>
|
||||
<string name="unknown_power_output">άγνωστο</string>
|
||||
<string name="unknown_count">άγνωστο</string>
|
||||
<string name="advanced">Προχωρημένο</string>
|
||||
<string name="charge_socket_count">Πλήθος</string>
|
||||
<string name="ruler">Χάρακας</string>
|
||||
<string name="clear">Εκκαθάριση</string>
|
||||
<string name="route_type">Είδος διαδρομής</string>
|
||||
<string name="vehicle">Όχημα</string>
|
||||
<string name="pedestrian">Πεζός</string>
|
||||
<string name="bicycle">Ποδήλατο</string>
|
||||
<string name="bookmark_color">Χρώμα για Αγαπημένο</string>
|
||||
<string name="about_help">Σχετικά & Βοήθεια</string>
|
||||
<string name="open_now">Ανοιχτό τώρα</string>
|
||||
<string name="closed_now">Κλειστό τώρα</string>
|
||||
<string name="at">στις %s</string>
|
||||
<string name="share_track">Κοινοποίηση Ίχνους</string>
|
||||
<string name="delete_track_dialog_title">Διαγραφή %s;</string>
|
||||
<string name="place_page_app_too_old_description">Τα τρέχοντα δεδομένα χάρτη σας είναι πολύ παλιά, παρακαλούμε ενημερώστε την εφαρμογή CoMaps.</string>
|
||||
<string name="editor_level">Όροφος (το 0 είναι το ισόγειο)</string>
|
||||
<string name="error_enter_correct_level">Εισάγετε έναν έγκυρο αριθμό ορόφου</string>
|
||||
<string name="editor_business_vacant_button">Η επιχείρηση είναι κενή</string>
|
||||
<string name="editor_mark_business_vacant_title">Σήμανση επιχείρησης ως κενή</string>
|
||||
<string name="place_page_update_too_old_map">Ενημέρωση χάρτη περιοχής</string>
|
||||
<string name="place_page_too_old_to_edit">Η επεξεργασία του OpenStreetMap είναι απενεργοποιημένη επειδή τα δεδομένα χάρτη είναι πολύ παλιά.</string>
|
||||
<string name="osm_note_hint">Ή, εναλλακτικά, αφήστε μια σημείωση στην κοινότητα του OpenStreetMap ώστε κάποιος άλλος να προσθέσει ή να διορθώσει την τοποθεσία εδώ.</string>
|
||||
<string name="osm_note_toast">Η σημείωση θα αποσταλεί στο OpenStreetMap</string>
|
||||
<string name="error_enter_correct_fediverse_page">Εισάγετε ένα έγκυρο όνομα χρήστη ή διεύθυνση Mastodon</string>
|
||||
<string name="error_enter_correct_bluesky_page">Εισάγετε ένα έγκυρο όνομα χρήστη ή διεύθυνση Bluesky</string>
|
||||
<string name="power_management">Διαχείριση ενέργειας</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
</resources>
|
||||
<string name="search">Search</string>
|
||||
<string name="bookmarks_and_tracks">Favourites</string>
|
||||
</resources>
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
<!-- Search category for cafes, bars, restaurants; any changes should be duplicated in categories.txt @category_eat! -->
|
||||
<string name="category_eat">Dónde comer</string>
|
||||
<!-- Search category for grocery stores; any changes should be duplicated in categories.txt @category_food! -->
|
||||
<string name="category_food">Tienda de comestibles</string>
|
||||
<string name="category_food">Provisiones</string>
|
||||
<!-- 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! -->
|
||||
@@ -848,7 +848,7 @@
|
||||
<string name="bookmark_color">Color del favorito</string>
|
||||
<string name="pref_backup_title">Respaldar favoritos</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_title">Crear respaldo 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>
|
||||
|
||||
@@ -68,11 +68,11 @@
|
||||
<!-- "Add new bookmark list" dialog title -->
|
||||
<string name="add_new_set">Créer une nouvelle liste</string>
|
||||
<!-- Add Bookmark list dialog - hint when the list name is empty -->
|
||||
<string name="bookmark_set_name">Nom du groupe de signets</string>
|
||||
<string name="bookmark_set_name">Nom de la liste</string>
|
||||
<!-- Should be used in the bookmarks-only context, see bookmarks_and_tracks if tracks are also implied. -->
|
||||
<string name="bookmarks">Lieux</string>
|
||||
<!-- "Bookmarks and Tracks" dialog title, also sync it with iphone/plist.txt -->
|
||||
<string name="bookmarks_and_tracks">Signets et traces</string>
|
||||
<string name="bookmarks_and_tracks">Favoris</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 -->
|
||||
@@ -503,7 +503,7 @@
|
||||
<string name="minute">min</string>
|
||||
<string name="day">j</string>
|
||||
<string name="placepage_more_button">Plus</string>
|
||||
<string name="placepage_edit_bookmark_button">Modifier le signet</string>
|
||||
<string name="placepage_edit_bookmark_button">Modifier l\'emplacement enregistré</string>
|
||||
<string name="placepage_personal_notes_hint">Notes personnelles (texte ou html)</string>
|
||||
<string name="editor_reset_edits_message">Abandonner toutes les modifications locales ?</string>
|
||||
<string name="editor_reset_edits_button">Annuler les modifications</string>
|
||||
@@ -572,13 +572,13 @@
|
||||
<string name="bookmark_lists_hide_all">Tout masquer</string>
|
||||
<string name="bookmark_lists_show_all">Tout afficher</string>
|
||||
<plurals name="bookmarks_places">
|
||||
<item quantity="one">%d signet</item>
|
||||
<item quantity="many">%d signets</item>
|
||||
<item quantity="other">%d signets</item>
|
||||
<item quantity="one">%d emplacement enregistré</item>
|
||||
<item quantity="many">%d emplacements enregistrés</item>
|
||||
<item quantity="other">%d emplacements enregistrés</item>
|
||||
</plurals>
|
||||
<string name="bookmarks_create_new_group">Créer une nouvelle liste</string>
|
||||
<!-- Bookmark categories screen, button that opens folder selection dialog to import KML/KMZ/GPX/KMB files -->
|
||||
<string name="bookmarks_import">Importer des signets et des parcours</string>
|
||||
<string name="bookmarks_import">Importer des favoris</string>
|
||||
<string name="bookmarks_error_message_share_general">Impossible de partager en raison d’une erreur d’application</string>
|
||||
<string name="bookmarks_error_title_share_empty">Erreur de partage</string>
|
||||
<string name="bookmarks_error_message_share_empty">Impossible de partager une liste vide</string>
|
||||
@@ -609,7 +609,7 @@
|
||||
<string name="subway">Métro</string>
|
||||
<string name="layers_title">Styles et couches de cartes</string>
|
||||
<string name="bookmarks_empty_list_title">Cette liste est vide</string>
|
||||
<string name="bookmarks_empty_list_message">Pour ajouter un signet, appuyez sur un lieu sur la carte, puis appuyez sur l’icône étoile</string>
|
||||
<string name="bookmarks_empty_list_message">Pour enregistrer un lieu, appuyez sur un lieu sur la carte, puis sur l\'icône en forme d\'étoile</string>
|
||||
<string name="category_desc_more">…plus</string>
|
||||
<string name="export_file">Exporter en KMZ</string>
|
||||
<string name="export_file_gpx">Exporter en GPX</string>
|
||||
@@ -662,7 +662,7 @@
|
||||
<!-- max. 10 symbols, both iOS and Android -->
|
||||
<string name="sort">Trier…</string>
|
||||
<!-- Android, title, max 20-22 symbols -->
|
||||
<string name="sort_bookmarks">Trier les signets</string>
|
||||
<string name="sort_bookmarks">Trier les favoris</string>
|
||||
<!-- Android -->
|
||||
<string name="by_default">Par défaut</string>
|
||||
<!-- Android -->
|
||||
@@ -780,7 +780,7 @@
|
||||
<string name="browser_not_available">Le navigateur Web n’est pas disponible</string>
|
||||
<string name="volume">Volume</string>
|
||||
<!-- Bookmark categories screen, button that opens share dialog to export all bookmarks and tracks -->
|
||||
<string name="bookmarks_export">Exporter tous les signets et toutes les traces</string>
|
||||
<string name="bookmarks_export">Exporter tous les lieux et toutes les traces</string>
|
||||
<!-- button in (app) TTS settings, to open the system TTS settings. -->
|
||||
<string name="pref_tts_open_system_settings">Paramètres du système de synthèse vocale</string>
|
||||
<!-- toast displayed when pressing the "Speech synthesis system settings" button, and the system settings aren't found. -->
|
||||
@@ -812,7 +812,7 @@
|
||||
<!-- Title for the "Stop Without Saving" action for the alert when saving a track recording. -->
|
||||
<string name="continue_recording">Continuer l’enregistrement</string>
|
||||
<!-- Title for the alert when saving a track recording. -->
|
||||
<string name="track_recording_alert_title">Enregistrer dans les signets et traces ?</string>
|
||||
<string name="track_recording_alert_title">Enregistrer dans les favoris ?</string>
|
||||
<!-- Message for the toast when saving the track recording is finished but nothing to save. -->
|
||||
<string name="track_recording_toast_nothing_to_save">L’itinéraire est vide - il n’y a rien à enregistrer</string>
|
||||
<!-- Error message when there are no File Manager apps installed to select a folder when importing Bookmarks and Tracks -->
|
||||
@@ -854,13 +854,13 @@
|
||||
<string name="backup_interval_every_week">Hebdomadaire</string>
|
||||
<string name="pref_backup_location_title">Emplacement des enregistrements</string>
|
||||
<string name="pref_backup_location_summary_initial">Veuillez d’abord sélectionner un dossier puis accorder l’autorisation</string>
|
||||
<string name="pref_backup_now_summary_empty_lists">Ni signet ni trace à enregistrer</string>
|
||||
<string name="pref_backup_now_summary_empty_lists">Aucun lieu ni piste à sauvegarder</string>
|
||||
<string name="pref_backup_interval_title">Enregistrement automatique</string>
|
||||
<string name="pref_backup_status_summary_success">Dernier enregistrement réussi</string>
|
||||
<string name="pref_backup_now_summary_ok">L’enregistrement s’est déroulé avec succès</string>
|
||||
<string name="pref_backup_history_title">Nombre d’enregistrements à conserver</string>
|
||||
<string name="pref_backup_now_summary_folder_unavailable">L’emplacement pour enregistrer n’est pas disponible</string>
|
||||
<string name="pref_backup_title">Enregistrement des signets et des traces</string>
|
||||
<string name="pref_backup_title">Sauvegarder les favoris</string>
|
||||
<string name="backup_interval_manual_only">Désactivé (manuel uniquement)</string>
|
||||
<string name="pref_backup_summary">Enregistrement automatique dans un dossier de votre appareil</string>
|
||||
<string name="about_help">À propos & aide</string>
|
||||
|
||||
3
android/app/src/main/res/values-ga/strings.xml
Normal file
3
android/app/src/main/res/values-ga/strings.xml
Normal file
@@ -0,0 +1,3 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
</resources>
|
||||
@@ -144,7 +144,7 @@
|
||||
<!-- Email Subject when sharing bookmark list -->
|
||||
<string name="share_bookmarks_email_subject">Bagikan penanda CoMaps</string>
|
||||
<!-- message title of loading file -->
|
||||
<string name="load_kmz_title">Memuat Penanda</string>
|
||||
<string name="load_kmz_title">Memuat Tempat Favorit</string>
|
||||
<!-- Kmz file successful loading -->
|
||||
<string name="load_kmz_successful">Penanda berhasil dimuat! Anda dapat menemukannya pada peta atau pada layar Pengelola Penanda Lokasi.</string>
|
||||
<!-- Kml file loading failed -->
|
||||
@@ -525,7 +525,7 @@
|
||||
<string name="feedback_general">Umpan Balik Umum</string>
|
||||
<string name="prefs_languages_information">Kami menggunakan TTS sistem untuk petunjuk suara. Banyak perangkat Android menggunakan Google TTS, Anda dapat mengunduhnya dari Google Play (https://play.google.com/store/apps/details?id=com.google.android.tts)</string>
|
||||
<string name="prefs_languages_information_off">Untuk beberapa bahasa, Anda perlu menginstal synthesizer suara atau paket bahasa tambahan dari toko aplikasi (Google Play, Galaxy Store, App Gallery, FDroid). \nBuka pengaturan perangkat Anda → Language and input (Bahasa dan input) → Speech (Suara) → Text to speech (Teks ke suara). \nDi sini, Anda dapat mengelola pengaturan untuk sintesis suara (contohnya, mengunduh paket bahasa untuk penggunaan tanpa internet) dan memilih mesin tekske suara lain.</string>
|
||||
<string name="prefs_languages_information_off_link">Untuk informasi selengkapnya, bacalah panduan ini.</string>
|
||||
<string name="prefs_languages_information_off_link">Untuk informasi selengkapnya, bacalah panduan ini</string>
|
||||
<string name="transliteration_title">Transliterasi ke dalam bahasa Latin</string>
|
||||
<string name="learn_more">Pelajari selengkapnya</string>
|
||||
<!-- User selected the destination by pressing Route To, but the current position is unknown. User needs to select a starting point of a route using search or by tapping on the map and then pressing "Route From". -->
|
||||
|
||||
@@ -332,7 +332,7 @@
|
||||
<string name="zoom_in">Moghhe</string>
|
||||
<string name="zoom_out">Lehe</string>
|
||||
<string name="website_menu">Kevren Rol Voos</string>
|
||||
<string name="view_menu">Vu Rol Voos</string>
|
||||
<string name="view_menu">Gweles Rol Voos</string>
|
||||
<string name="open_in_app">Ygeri yn Aral App</string>
|
||||
<string name="select_option">Dewis dewis</string>
|
||||
<string name="outdoor_seating">Esedhow yn-mes</string>
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
|
||||
#include <functional>
|
||||
#include <memory>
|
||||
#include <unordered_map>
|
||||
#include <vector>
|
||||
|
||||
namespace
|
||||
@@ -52,7 +53,7 @@ struct TBatchedData
|
||||
jobject g_countryChangedListener = nullptr;
|
||||
|
||||
DECLARE_THREAD_CHECKER(g_batchingThreadChecker);
|
||||
ankerl::unordered_dense::map<jobject, std::vector<TBatchedData>> g_batchedCallbackData;
|
||||
std::unordered_map<jobject, std::vector<TBatchedData>> g_batchedCallbackData;
|
||||
bool g_isBatched;
|
||||
|
||||
storage::Storage & GetStorage()
|
||||
@@ -588,9 +589,8 @@ JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeG
|
||||
}
|
||||
|
||||
// static native boolean nativeIsMapTooOldToEdit(String countryId);
|
||||
JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeIsMapTooOldToEdit(JNIEnv * env,
|
||||
jclass clazz,
|
||||
jstring country_id)
|
||||
JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeIsMapTooOldToEdit(JNIEnv *env, jclass clazz,
|
||||
jstring country_id)
|
||||
{
|
||||
return GetStorage().IsMapTooOldToEdit(jni::ToNativeString(env, country_id));
|
||||
}
|
||||
|
||||
@@ -580,8 +580,7 @@ JNIEXPORT jint JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeGetMapObject
|
||||
return static_cast<jint>(osm::Editor::Instance().GetFeatureStatus(g_editableMapObject.GetID()));
|
||||
}
|
||||
|
||||
JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeAreSomeFeatureChangesUploaded(JNIEnv * env,
|
||||
jclass clazz)
|
||||
JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeAreSomeFeatureChangesUploaded(JNIEnv * env, jclass clazz)
|
||||
{
|
||||
return osm::Editor::Instance().AreSomeFeatureChangesUploaded(g_editableMapObject.GetID().m_mwmId,
|
||||
g_editableMapObject.GetID().m_index);
|
||||
|
||||
@@ -320,7 +320,7 @@ JNIEXPORT jobject JNICALL Java_app_organicmaps_sdk_editor_OpeningHours_nativeCur
|
||||
jclass ohStateClass = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/editor/OhState");
|
||||
jclass ruleStateClass = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/editor/OhState$State");
|
||||
|
||||
static ankerl::unordered_dense::map<RuleState, char const *> const ruleState = {
|
||||
static std::unordered_map<RuleState, char const *> const ruleState = {
|
||||
{RuleState::Open, "Open"}, {RuleState::Closed, "Closed"}, {RuleState::Unknown, "Unknown"}};
|
||||
|
||||
jfieldID stateField =
|
||||
|
||||
@@ -35,8 +35,7 @@ SOFTWARE.
|
||||
|
||||
#include <iterator>
|
||||
#include <string>
|
||||
|
||||
#include "3party/ankerl/unordered_dense.h"
|
||||
#include <unordered_map>
|
||||
|
||||
DECLARE_EXCEPTION(JniException, RootException);
|
||||
|
||||
@@ -152,7 +151,7 @@ public:
|
||||
}
|
||||
|
||||
private:
|
||||
ankerl::unordered_dense::map<std::string, jfieldID> m_fieldIds;
|
||||
std::unordered_map<std::string, jfieldID> m_fieldIds;
|
||||
};
|
||||
} // namespace
|
||||
|
||||
|
||||
@@ -2,10 +2,12 @@ package app.organicmaps.sdk;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Bitmap;
|
||||
|
||||
import androidx.annotation.Keep;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.Size;
|
||||
|
||||
import app.organicmaps.sdk.api.ParsedRoutingData;
|
||||
import app.organicmaps.sdk.api.ParsedSearchRequest;
|
||||
import app.organicmaps.sdk.api.RequestType;
|
||||
@@ -24,6 +26,7 @@ import app.organicmaps.sdk.routing.RoutingRecommendationListener;
|
||||
import app.organicmaps.sdk.routing.TransitRouteInfo;
|
||||
import app.organicmaps.sdk.settings.SpeedCameraMode;
|
||||
import app.organicmaps.sdk.util.Constants;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
|
||||
@@ -2,11 +2,13 @@ package app.organicmaps.sdk;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.lifecycle.DefaultLifecycleObserver;
|
||||
import androidx.lifecycle.LifecycleOwner;
|
||||
import androidx.lifecycle.ProcessLifecycleOwner;
|
||||
import androidx.preference.PreferenceManager;
|
||||
|
||||
import app.organicmaps.sdk.bookmarks.data.BookmarkManager;
|
||||
import app.organicmaps.sdk.bookmarks.data.Icon;
|
||||
import app.organicmaps.sdk.downloader.Android7RootCertificateWorkaround;
|
||||
@@ -26,6 +28,7 @@ import app.organicmaps.sdk.util.SharedPropertiesUtils;
|
||||
import app.organicmaps.sdk.util.StorageUtils;
|
||||
import app.organicmaps.sdk.util.log.Logger;
|
||||
import app.organicmaps.sdk.util.log.LogsManager;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public final class OrganicMaps implements DefaultLifecycleObserver
|
||||
|
||||
@@ -4,30 +4,28 @@ package app.organicmaps.sdk.bookmarks.data;
|
||||
* represents the details of the socket available on a particular charging station
|
||||
*
|
||||
*/
|
||||
public record ChargeSocketDescriptor(String type, int count, double power)
|
||||
{
|
||||
/**
|
||||
* Some charge sockets have the same visuals as other sockets, even though they are different and are tagged
|
||||
* differently in OSM. This method returns the 'visual' type that should be used for the socket.
|
||||
*
|
||||
* @return the 'equivalent' visual style that should be used for this socket
|
||||
*/
|
||||
public String visualType()
|
||||
{
|
||||
if (type.equals("typee"))
|
||||
{
|
||||
return "schuko";
|
||||
}
|
||||
return type;
|
||||
}
|
||||
public record ChargeSocketDescriptor(String type, int count, double power) {
|
||||
|
||||
/**
|
||||
* Some charge sockets have the same visuals as other sockets, even though they are different and are tagged
|
||||
* differently in OSM. This method returns the 'visual' type that should be used for the socket.
|
||||
*
|
||||
* @return the 'equivalent' visual style that should be used for this socket
|
||||
*/
|
||||
public String visualType() {
|
||||
if (type.equals("typee")) {
|
||||
return "schuko";
|
||||
}
|
||||
return type;
|
||||
}
|
||||
|
||||
/**
|
||||
* For some sockets (eg, domestic sockets), the power is usually not provided, as it is 'implicit'
|
||||
*
|
||||
* @return true if this socket type does not require displaying the power
|
||||
*/
|
||||
public Boolean ignorePower() {
|
||||
return type.equals("typee") || type.equals("schuko");
|
||||
}
|
||||
|
||||
/**
|
||||
* For some sockets (eg, domestic sockets), the power is usually not provided, as it is 'implicit'
|
||||
*
|
||||
* @return true if this socket type does not require displaying the power
|
||||
*/
|
||||
public Boolean ignorePower()
|
||||
{
|
||||
return type.equals("typee") || type.equals("schuko");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package app.organicmaps.sdk.editor;
|
||||
import androidx.annotation.IntRange;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import app.organicmaps.sdk.editor.data.Timespan;
|
||||
import app.organicmaps.sdk.editor.data.Timetable;
|
||||
|
||||
|
||||
@@ -2,14 +2,16 @@ package app.organicmaps.sdk.util;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
|
||||
import androidx.annotation.Keep;
|
||||
import androidx.annotation.NonNull;
|
||||
import app.organicmaps.sdk.R;
|
||||
import java.text.DateFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Locale;
|
||||
|
||||
import app.organicmaps.sdk.R;
|
||||
|
||||
public final class DateUtils
|
||||
{
|
||||
private DateUtils() {}
|
||||
@@ -42,7 +44,7 @@ public final class DateUtils
|
||||
if (days == 1)
|
||||
return resources.getString(R.string.yesterday).toLowerCase();
|
||||
if (days < 7)
|
||||
return resources.getString(R.string.days_ago, Integer.toString(days));
|
||||
return resources.getString(R.string.days_ago, Integer.toString(days));
|
||||
if (days < 30)
|
||||
return resources.getString(days < 14 ? R.string.week_ago : R.string.weeks_ago, Integer.toString(days / 7));
|
||||
if (days < 365)
|
||||
|
||||
@@ -52,8 +52,8 @@
|
||||
<string name="type.leisure.adult_gaming_centre">Centar za igru odraslih</string>
|
||||
<string name="type.leisure.amusement_arcade">Igraonica za odrasle</string>
|
||||
<string name="type.amenity.charging_station">Stanica za punjenje EV</string>
|
||||
<string name="type.amenity.charging_station.bicycle">Stanica za punjenje bicikala</string>
|
||||
<string name="type.amenity.charging_station.motorcar">Stanica za punjenje automobila</string>
|
||||
<string name="type.amenity.charging_station.bicycle">Bicikli</string>
|
||||
<string name="type.amenity.charging_station.motorcar">Auta</string>
|
||||
<string name="type.amenity.childcare">Vrtić</string>
|
||||
<string name="type.amenity.cinema">Bioskop</string>
|
||||
<string name="type.amenity.studio">Medijski studio</string>
|
||||
@@ -1411,4 +1411,8 @@
|
||||
<string name="type.xmas.tree">Božićna jelka</string>
|
||||
<string name="type.railway.disused.bridge">Napušteni železnički most</string>
|
||||
<string name="type.railway.disused.tunnel">Napušteni železnički tunel</string>
|
||||
<string name="type.amenity.charging_station.motorcycle">Motocikli</string>
|
||||
<string name="type.amenity.charging_station.small">Ograničen kapacitet</string>
|
||||
<string name="type.emergency.disaster_help_point">Tačka za pomoć u hitnim slučajevima</string>
|
||||
<string name="type.emergency.access_point.address">Adresa za hitno spašavanje</string>
|
||||
</resources>
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
<string name="maps_storage_external">বহিরাগত শেয়ার্ড স্টোরেজ</string>
|
||||
<string name="category_wifi">ওয়াইফাই</string>
|
||||
<string name="maps_storage_shared">অভ্যন্তরীণ শেয়ার্ড স্টোরেজ</string>
|
||||
<string name="postal_code">ডাক কোড</string>
|
||||
<string name="postal_code">ডাক কোড|পিন কোড</string>
|
||||
<string name="today">আজকে</string>
|
||||
<string name="km">কিমি</string>
|
||||
<string name="yesterday">গতকাল</string>
|
||||
|
||||
@@ -6,34 +6,34 @@
|
||||
<string name="type.building.guardhouse">সিকিউরিটি বুথ</string>
|
||||
<string name="type.power.portal">পাওয়ার পোর্টাল</string>
|
||||
<string name="type.amenity.ferry_terminal">ফেরি</string>
|
||||
<string name="type.amenity.fire_station">দমকল স্টেশন</string>
|
||||
<string name="type.amenity.fire_station">4দমকল স্টেশন</string>
|
||||
<string name="type.amenity.food_court">ফুড কোর্ট</string>
|
||||
<string name="type.amenity.fountain">ফাউন্টেন</string>
|
||||
<string name="type.amenity.fuel">গ্যাস স্টেশন</string>
|
||||
<string name="type.amenity.fountain">ফাউন্টেন|ফোয়ারা</string>
|
||||
<string name="type.amenity.fuel">গ্যাস স্টেশন|5পেট্রোল পাম্প</string>
|
||||
<string name="type.amenity.grave_yard">কবরস্থান</string>
|
||||
<string name="type.amenity.grave_yard.christian">খ্রিস্টান কবরস্থান</string>
|
||||
<string name="type.amenity.hospital">হাসপাতাল</string>
|
||||
<string name="type.amenity.ice_cream">আইসক্রিম</string>
|
||||
<string name="type.amenity.internet_cafe">ইন্টারনেট ক্যাফে</string>
|
||||
<string name="type.amenity.kindergarten">কিন্ডারগার্টেন</string>
|
||||
<string name="type.amenity.library">গ্রন্থাগার</string>
|
||||
<string name="type.amenity.marketplace">বাজার</string>
|
||||
<string name="type.amenity.motorcycle_parking">বাইক পার্কিং</string>
|
||||
<string name="type.amenity.library">গ্রন্থাগার|লাইব্রেরি</string>
|
||||
<string name="type.amenity.marketplace">বাজার|মার্কেট</string>
|
||||
<string name="type.amenity.motorcycle_parking">বাইক পার্কিং|9মোটরসাইকেল পার্কিং</string>
|
||||
<string name="type.amenity.nightclub">নাইটক্লাব</string>
|
||||
<string name="type.amenity.nursing_home">নার্সিংহোম</string>
|
||||
<string name="type.amenity.parking">পার্কিং</string>
|
||||
<string name="type.amenity.parking.fee">পার্কিং</string>
|
||||
<string name="type.amenity.parking.multi.storey">বহুতল পার্কিং</string>
|
||||
<string name="type.amenity.parking.multi.storey.fee">বহুতল পার্কিং</string>
|
||||
<string name="type.amenity.parking.no.access">ব্যক্তিগত পার্কিং</string>
|
||||
<string name="type.amenity.parking.permissive">প্রাইভেট পার্কিং</string>
|
||||
<string name="type.amenity.parking.private">প্রাইভেট পার্কিং</string>
|
||||
<string name="type.amenity.parking.underground">আন্ডারগ্রাউন্ড পার্কিং</string>
|
||||
<string name="type.amenity.parking.underground.fee">আন্ডারগ্রাউন্ড পার্কিং</string>
|
||||
<string name="type.amenity.parking.no.access">ব্যক্তিগত পার্কিং|প্রাইভেট পার্কিং</string>
|
||||
<string name="type.amenity.parking.permissive">ব্যক্তিগত পার্কিং|প্রাইভেট পার্কিং</string>
|
||||
<string name="type.amenity.parking.private">ব্যক্তিগত পার্কিং|প্রাইভেট পার্কিং</string>
|
||||
<string name="type.amenity.parking.underground">আন্ডারগ্রাউন্ড পার্কিং|ভূগর্ভস্থ পার্কিং</string>
|
||||
<string name="type.amenity.parking.underground.fee">আন্ডারগ্রাউন্ড পার্কিং|ভূগর্ভস্থ পার্কিং</string>
|
||||
<string name="type.amenity.parking.street_side">রোড-পার্শ্ববর্তী পার্কিং</string>
|
||||
<string name="type.amenity.parking.street_side.private">ব্যক্তিগত সড়ক-পার্শ্ববর্তী পার্কিং</string>
|
||||
<string name="type.amenity.parking.lane">লেন পার্কিং</string>
|
||||
<string name="type.amenity.parking.underground.private">ব্যক্তিগত আন্ডারগ্রাউন্ড পার্কিং</string>
|
||||
<string name="type.amenity.parking.underground.private">ব্যক্তিগত আন্ডারগ্রাউন্ড পার্কিং|প্রাইভেট আন্ডারগ্রাউন্ড পার্কিং|ব্যক্তিগত ভূগর্ভস্থ পার্কিং|প্রাইভেট ভূগর্ভস্থ পার্কিং</string>
|
||||
<string name="type.aeroway.aerodrome">বিমানবন্দর</string>
|
||||
<string name="type.aeroway.aerodrome.international">আন্তর্জাতিক বিমানবন্দর</string>
|
||||
<string name="type.amenity.drinking_water">পানীয় জল</string>
|
||||
@@ -44,10 +44,10 @@
|
||||
<string name="type.natural.volcano">আগ্নেয়গিরি</string>
|
||||
<string name="type.natural.desert">মরুভূমি</string>
|
||||
<string name="type.natural.coastline">উপকূলরেখা</string>
|
||||
<string name="type.amenity.college">কলেজ</string>
|
||||
<string name="type.amenity.college">কলেজ|মহাবিদ্যালয়</string>
|
||||
<string name="type.amenity.music_school">গানের স্কুল</string>
|
||||
<string name="type.amenity.place_of_worship.muslim">মসজিদ</string>
|
||||
<string name="type.amenity.place_of_worship.hindu">হিন্দু মন্দির</string>
|
||||
<string name="type.amenity.place_of_worship.hindu">হিন্দু মন্দির|মন্দির</string>
|
||||
<string name="type.amenity.prison">কারাগার</string>
|
||||
<string name="type.barrier.fence">বেড়া</string>
|
||||
<string name="type.waterway.waterfall">ঝর্ণা</string>
|
||||
@@ -75,7 +75,7 @@
|
||||
<string name="type.sport.chess">দাবা</string>
|
||||
<string name="type.sport.basketball">বাস্কেটবল</string>
|
||||
<string name="type.sport.badminton">ব্যাডমিন্টন</string>
|
||||
<string name="type.sport">ক্রীড়া</string>
|
||||
<string name="type.sport">ক্রীড়া|স্পোর্টস</string>
|
||||
<string name="type.sport.multi">বিভিন্ন ক্রীড়া</string>
|
||||
<string name="type.amenity.toilets">শৌচালয়</string>
|
||||
<string name="type.shop.watches">ঘড়ির দোকান</string>
|
||||
@@ -86,13 +86,13 @@
|
||||
<string name="type.man_made.water_tower">জলের ট্যাঙ্ক</string>
|
||||
<string name="type.amenity.bench">বেঞ্চ</string>
|
||||
<string name="type.amenity.bus_station">বাস স্টেশন</string>
|
||||
<string name="type.amenity.courthouse">আদালত</string>
|
||||
<string name="type.amenity.courthouse">আদালত|কোর্ট</string>
|
||||
<string name="type.amenity.dentist">দাঁতের ডাক্তার</string>
|
||||
<string name="type.amenity.doctors">ডাক্তার</string>
|
||||
<string name="type.amenity.pharmacy">ওষুধ দোকান</string>
|
||||
<string name="type.amenity.place_of_worship.christian">গির্জা</string>
|
||||
<string name="type.amenity.doctors">ডাক্তার|4চিকিৎসক</string>
|
||||
<string name="type.amenity.pharmacy">4ওষুধ দোকান|ফার্মেসি</string>
|
||||
<string name="type.amenity.place_of_worship.christian">গির্জা|চার্চ</string>
|
||||
<string name="type.amenity.school">স্কুল</string>
|
||||
<string name="type.amenity.telephone">টেলিফোন</string>
|
||||
<string name="type.amenity.telephone">টেলিফোন|ফোন</string>
|
||||
<string name="type.amenity.university">বিশ্ববিদ্যালয়</string>
|
||||
<string name="type.amenity.vending_machine.fuel">পেট্রোল পাম্প</string>
|
||||
<string name="type.barrier">বাঁধা</string>
|
||||
@@ -111,7 +111,7 @@
|
||||
<string name="type.natural">প্রকৃতি</string>
|
||||
<string name="type.amenity.atm">এটিএম</string>
|
||||
<string name="type.amenity.bank">ব্যাঙ্ক</string>
|
||||
<string name="type.amenity.police">পুলিশ</string>
|
||||
<string name="type.amenity.police">পুলিশ|থানা</string>
|
||||
<string name="type.building">বিল্ডিং</string>
|
||||
<string name="type.building.address">ঠিকানা</string>
|
||||
<string name="type.cuisine.croatian">ক্রোয়েসীয়</string>
|
||||
@@ -148,7 +148,7 @@
|
||||
<string name="type.amenity.bicycle_parking.covered">আচ্ছাদিত সাইকেল পার্কিং</string>
|
||||
<string name="type.amenity.boat_rental">নৌকা ভাড়া</string>
|
||||
<string name="type.amenity.bicycle_rental">সাইকেল ভাড়া</string>
|
||||
<string name="type.man_made.telescope">দূরবিক্ষণ</string>
|
||||
<string name="type.man_made.telescope">দূরবিক্ষণ|দূরবীণ</string>
|
||||
<string name="type.man_made.telescope.optical">দূরবিক্ষণ (আলোক রশ্মি)</string>
|
||||
<string name="type.man_made.telescope.radio">দূরবিক্ষণ (রেডিও রশ্মি)</string>
|
||||
<string name="type.man_made.telescope.gamma">দূরবিক্ষণ (গামা রশ্মি)</string>
|
||||
@@ -157,7 +157,7 @@
|
||||
<string name="type.amenity.motorcycle_rental">মোটরসাইকেল ভাড়া</string>
|
||||
<string name="type.amenity.cinema">সিনেমা</string>
|
||||
<string name="type.amenity.shelter.public_transport">আশ্রয়</string>
|
||||
<string name="type.amenity.post_office">পোস্ট অফিস</string>
|
||||
<string name="type.amenity.post_office">পোস্ট অফিস|ডাক ঘর</string>
|
||||
<string name="type.amenity.restaurant">রেস্টুরেন্ট</string>
|
||||
<string name="type.amenity.taxi">ট্যাক্সি স্ট্যান্ড</string>
|
||||
<string name="type.shop.mobile_phone">মোবাইল ফোনের দোকান</string>
|
||||
@@ -174,4 +174,64 @@
|
||||
<string name="type.waterway.drain">ড্রেন</string>
|
||||
<string name="type.amenity.bar">বার</string>
|
||||
<string name="type.amenity.bicycle_parking">সাইকেল পার্কিং</string>
|
||||
<string name="type.amenity.post_box">মেল বাক্স|ডাক বাক্স</string>
|
||||
<string name="type.recycling.batteries">ব্যাটারি</string>
|
||||
<string name="type.recycling.clothes">4জামাকাপড়</string>
|
||||
<string name="type.recycling.glass_bottles">কাঁচের বোতল</string>
|
||||
<string name="type.recycling.paper">কাগজ</string>
|
||||
<string name="type.recycling.plastic">প্লাস্টিক</string>
|
||||
<string name="type.recycling.plastic_bottles">প্লাস্টিক বোতল</string>
|
||||
<string name="type.recycling.small_appliances">ইলেকট্রনিক বর্জ্য</string>
|
||||
<string name="type.recycling.cardboard">কার্ডবোর্ড</string>
|
||||
<string name="type.recycling.cans">ক্যান</string>
|
||||
<string name="type.recycling.shoes">জুতো</string>
|
||||
<string name="type.recycling.green_waste">5আনাজ খোলা</string>
|
||||
<string name="type.recycling.cartons">কার্টন|কার্ডবোর্ডের বাক্স</string>
|
||||
<string name="type.toilets.yes">শৌচালয়</string>
|
||||
<string name="type.amenity.vehicle_inspection">ধোঁয়া পরীক্ষা</string>
|
||||
<string name="type.amenity.veterinary">গরুর ডাক্তার|পশুচিকিৎসক</string>
|
||||
<string name="type.barrier.chain">চেন</string>
|
||||
<string name="type.barrier.toll_booth">টোল বুথ</string>
|
||||
<string name="type.barrier.wall">দেয়াল</string>
|
||||
<string name="type.boundary">4সীমান্ত</string>
|
||||
<string name="type.boundary.administrative">প্রশাসনিক সীমান্ত</string>
|
||||
<string name="type.boundary.administrative.2">জাতীয় সীমান্ত</string>
|
||||
<string name="type.boundary.administrative.3">আঞ্চলিক সীমান্ত</string>
|
||||
<string name="type.boundary.administrative.4">আঞ্চলিক সীমান্ত</string>
|
||||
<string name="type.boundary.national_park">জাতীয় উদ্যান</string>
|
||||
<string name="type.boundary.aboriginal_lands">আদিবাসী ভূমি</string>
|
||||
<string name="type.boundary.protected_area">সংরক্ষিত এলাকা</string>
|
||||
<string name="type.boundary.protected_area.1">সংরক্ষিত এলাকা</string>
|
||||
<string name="type.boundary.protected_area.2">সংরক্ষিত এলাকা</string>
|
||||
<string name="type.boundary.protected_area.3">সংরক্ষিত এলাকা</string>
|
||||
<string name="type.boundary.protected_area.4">সংরক্ষিত এলাকা</string>
|
||||
<string name="type.boundary.protected_area.5">সংরক্ষিত এলাকা</string>
|
||||
<string name="type.boundary.protected_area.6">সংরক্ষিত এলাকা</string>
|
||||
<string name="type.cemetery.grave">কবর</string>
|
||||
<string name="type.craft.blacksmith">কামার</string>
|
||||
<string name="type.craft.carpenter">কাঠমিস্ত্রি</string>
|
||||
<string name="type.craft.confectionery">ময়ড়া</string>
|
||||
<string name="type.craft.electrician">ইলেকট্রিক মিস্ত্রি</string>
|
||||
<string name="type.craft.gardener">মালী</string>
|
||||
<string name="type.craft.painter">রংমিস্ত্রি</string>
|
||||
<string name="type.craft.photographer">ফটোগ্রাফার</string>
|
||||
<string name="type.shop.camera">ক্যামেরার দোকান</string>
|
||||
<string name="type.craft.plumber">কলের মিস্ত্রি</string>
|
||||
<string name="type.cuisine.american">মার্কিন|আমেরিকান</string>
|
||||
<string name="type.cuisine.cake">কেক</string>
|
||||
<string name="type.cuisine.chicken">চিকেন|মুরগি</string>
|
||||
<string name="type.cuisine.burger">বার্গার</string>
|
||||
<string name="type.cuisine.fish">মাছ</string>
|
||||
<string name="type.cuisine.coffee_shop">কফি</string>
|
||||
<string name="type.cuisine.chinese">চীনা|চাইনিজ</string>
|
||||
<string name="type.cuisine.indian">ভারতীয়</string>
|
||||
<string name="type.cuisine.international">আন্তর্জাতিক</string>
|
||||
<string name="type.cuisine.local">স্থানীয়|লোকাল</string>
|
||||
<string name="type.cuisine.pizza">পিজ্জা</string>
|
||||
<string name="type.cuisine.regional">আঞ্চলিক</string>
|
||||
<string name="type.amenity.parking.lane.private">প্রাইভেট লেন পার্কিং</string>
|
||||
<string name="type.building.has_parts">বিল্ডিং</string>
|
||||
<string name="type.building_part">বিল্ডিং</string>
|
||||
<string name="type.cuisine.spanish">স্পেনীয়</string>
|
||||
<string name="type.cuisine.vietnamese">ভিয়েতনামীয়</string>
|
||||
</resources>
|
||||
|
||||
@@ -29,8 +29,8 @@
|
||||
<string name="type.leisure.adult_gaming_centre">Herní centrum pro dospělé</string>
|
||||
<string name="type.leisure.amusement_arcade">Pasáž</string>
|
||||
<string name="type.amenity.charging_station">Nabíjecí stanice</string>
|
||||
<string name="type.amenity.charging_station.bicycle">Nabíjecí stanice pro jízdní kola</string>
|
||||
<string name="type.amenity.charging_station.motorcar">Nabíjecí stanice pro automobily</string>
|
||||
<string name="type.amenity.charging_station.bicycle">Jízdní kola</string>
|
||||
<string name="type.amenity.charging_station.motorcar">Auta</string>
|
||||
<string name="type.amenity.childcare">Jesle</string>
|
||||
<string name="type.amenity.cinema">Kino</string>
|
||||
<string name="type.leisure.bowling_alley">Bowlingová dráha</string>
|
||||
@@ -1393,7 +1393,7 @@
|
||||
<string name="type.office.security">Strážnice</string>
|
||||
<string name="type.building.guardhouse">Vrátnice</string>
|
||||
<string name="type.shop.lighting">Obchod s osvětlením</string>
|
||||
<string name="type.amenity.bench.backless">Lavička bez opěradla</string>
|
||||
<string name="type.amenity.bench.backless">Bez opěradla</string>
|
||||
<string name="type.leisure.bandstand">Otevřený altán</string>
|
||||
<string name="type.leisure.sports_centre.sport.multi">Sportovní centrum</string>
|
||||
<string name="type.leisure.sports_centre.sport.american_football">Sportovní centrum</string>
|
||||
@@ -1502,4 +1502,8 @@
|
||||
<string name="type.railway.turntable">Železniční točna</string>
|
||||
<string name="type.railway.disused.bridge">Nepoužívaný železniční most</string>
|
||||
<string name="type.railway.disused.tunnel">Nepoužívaný železniční tunel</string>
|
||||
<string name="type.amenity.charging_station.motorcycle">Motocykly</string>
|
||||
<string name="type.amenity.charging_station.small">Omezená kapacita</string>
|
||||
<string name="type.emergency.disaster_help_point">Nouzové centrum pomoci při katastrofách</string>
|
||||
<string name="type.emergency.access_point.address">Nouzová adresa záchrany</string>
|
||||
</resources>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<string name="type.amenity.bank">Bankfiliale</string>
|
||||
<string name="type.amenity.bbq">Grillstelle</string>
|
||||
<string name="type.amenity.bench">Sitzbank</string>
|
||||
<string name="type.amenity.bench.backless">Sitzbank ohne Rückenlehne</string>
|
||||
<string name="type.amenity.bench.backless">Ohne Rückenlehne</string>
|
||||
<string name="type.amenity.bicycle_parking">Fahrradständer</string>
|
||||
<string name="type.amenity.boat_rental">Bootsverleih</string>
|
||||
<string name="type.amenity.bicycle_rental">Fahrradverleih</string>
|
||||
|
||||
@@ -12,16 +12,16 @@
|
||||
<string name="type.aerialway.mixed_lift">Τελεφερίκ</string>
|
||||
<string name="type.aerialway.station">Σταθμός τελεφερίκ</string>
|
||||
<string name="type.aeroway.aerodrome">Αεροδρόμιο</string>
|
||||
<string name="type.aeroway.aerodrome.international">Αεροδρόμιο</string>
|
||||
<string name="type.aeroway.aerodrome.international">Διεθνές αεροδρόμιο</string>
|
||||
<string name="type.aeroway.helipad">Ελικοδρόμιο</string>
|
||||
<string name="type.amenity">Εγκαταστάσεις υποδομής</string>
|
||||
<string name="type.amenity">Υποδομές</string>
|
||||
<string name="type.amenity.arts_centre">Κέντρο καλών τεχνών</string>
|
||||
<string name="type.amenity.bank">Τράπεζα</string>
|
||||
<string name="type.amenity.bar">Μπαρ</string>
|
||||
<string name="type.amenity.bbq">Ψησταριά μπάρμπεκιου</string>
|
||||
<string name="type.amenity.bench">Παγκάκι</string>
|
||||
<string name="type.amenity.bicycle_parking">Χώρος στάθμευσης ποδηλάτων</string>
|
||||
<string name="type.amenity.bicycle_rental">Ενοικιάσεις ποδηλάτων</string>
|
||||
<string name="type.amenity.bicycle_rental">Ενοικίαση ποδηλάτων</string>
|
||||
<string name="type.amenity.biergarten">Μπυραρία</string>
|
||||
<string name="type.amenity.brothel">Πορνείο</string>
|
||||
<string name="type.amenity.bureau_de_change">Συνάλλαγμα</string>
|
||||
@@ -30,14 +30,14 @@
|
||||
<string name="type.amenity.car_rental">Ενοικίαση αυτοκινήτου</string>
|
||||
<string name="type.amenity.motorcycle_rental">Ενοικίαση μοτοσικλέτας</string>
|
||||
<string name="type.amenity.car_sharing">Παραχώρηση αυτοκινήτου</string>
|
||||
<string name="type.amenity.car_wash">Καθαρισμός αυτοκινήτων</string>
|
||||
<string name="type.amenity.car_wash">Πλύσιμο αυτοκινήτου</string>
|
||||
<string name="type.amenity.casino">Καζίνο</string>
|
||||
<string name="type.amenity.gambling">ΤΥΧΕΡΑ ΠΑΙΧΝΙΔΙΑ</string>
|
||||
<string name="type.amenity.gambling">Τυχερά παιχνίδια</string>
|
||||
<string name="type.leisure.adult_gaming_centre">Κέντρο παιχνιδιών ενηλίκων</string>
|
||||
<string name="type.leisure.amusement_arcade">Στοά</string>
|
||||
<string name="type.leisure.amusement_arcade">Ηλεκτρονικά παιχνίδια</string>
|
||||
<string name="type.amenity.charging_station">Σταθμός φόρτισης</string>
|
||||
<string name="type.amenity.charging_station.bicycle">Σταθμός φόρτισης ποδηλάτων</string>
|
||||
<string name="type.amenity.charging_station.motorcar">Σταθμός φόρτισης αυτοκινήτων</string>
|
||||
<string name="type.amenity.charging_station.bicycle">Ποδήλατα</string>
|
||||
<string name="type.amenity.charging_station.motorcar">Αυτοκίνητα</string>
|
||||
<string name="type.amenity.childcare">Βρεφικός σταθμός</string>
|
||||
<string name="type.amenity.cinema">Κινηματογράφος</string>
|
||||
<string name="type.leisure.bowling_alley">Αίθουσα σφαιρίσεως</string>
|
||||
@@ -65,11 +65,11 @@
|
||||
<!-- In most (European) countries, сemeteries are usually independent of places of worship (e.g. military cemeteries), while grave yards are usually the yard of a place of worship. -->
|
||||
<string name="type.amenity.grave_yard">Νεκροταφείο</string>
|
||||
<!-- In most (European) countries, сemeteries are usually independent of places of worship (e.g. military cemeteries), while grave yards are usually the yard of a place of worship. -->
|
||||
<string name="type.amenity.grave_yard.christian">Νεκροταφείο</string>
|
||||
<string name="type.amenity.grave_yard.christian">Χριστιανικό νεκροταφείο</string>
|
||||
<string name="type.amenity.hospital">Νοσοκομείο</string>
|
||||
<string name="type.amenity.hunting_stand">Βάση σκόπευσης</string>
|
||||
<string name="type.amenity.ice_cream">Παγωτατζίδικο</string>
|
||||
<string name="type.amenity.internet_cafe">Καφετέρια με Ίντερνετ</string>
|
||||
<string name="type.amenity.internet_cafe">Ίντερνετ καφέ</string>
|
||||
<string name="type.amenity.kindergarten">Νηπιαγωγείο</string>
|
||||
<string name="type.amenity.library">Βιβλιοθήκη</string>
|
||||
<string name="type.amenity.loading_dock">Αποβάθρα φόρτωσης</string>
|
||||
@@ -117,7 +117,7 @@
|
||||
<string name="type.amenity.police">Αστυνομία</string>
|
||||
<string name="type.amenity.post_box">Ταχυδρομική θυρίδα</string>
|
||||
<string name="type.amenity.post_office">Ταχυδρομείο</string>
|
||||
<string name="type.amenity.prison">φυλακή</string>
|
||||
<string name="type.amenity.prison">Φυλακή</string>
|
||||
<string name="type.amenity.pub">Παμπ</string>
|
||||
<string name="type.amenity.public_bookcase">Ανταλλαγή βιβλίων</string>
|
||||
<!-- SECTION: Types: Recycling -->
|
||||
@@ -125,10 +125,10 @@
|
||||
<string name="type.amenity.recycling">Κάδος ανακύκλωσης</string>
|
||||
<string name="type.amenity.recycling.container">Κάδος ανακύκλωσης</string>
|
||||
<string name="type.recycling.batteries">Μπαταρίες</string>
|
||||
<string name="type.recycling.clothes">Παλιά ρούχα</string>
|
||||
<string name="type.recycling.clothes">Ρούχα</string>
|
||||
<string name="type.recycling.glass_bottles">Γυάλινα μπουκάλια</string>
|
||||
<string name="type.recycling.paper">Απορρίμματα χαρτιού</string>
|
||||
<string name="type.recycling.plastic">Πλαστικά απορρίμματα</string>
|
||||
<string name="type.recycling.paper">Χαρτί</string>
|
||||
<string name="type.recycling.plastic">Πλαστικό</string>
|
||||
<string name="type.recycling.plastic_bottles">Πλαστικά μπουκάλια</string>
|
||||
<string name="type.recycling.scrap_metal">Παλιοσίδερα</string>
|
||||
<string name="type.recycling.small_appliances">Ηλεκτρονικά απορρίμματα</string>
|
||||
@@ -153,7 +153,7 @@
|
||||
<string name="type.amenity.vending_machine.cigarettes">Αυτόματος πωλητής τσιγάρων</string>
|
||||
<string name="type.amenity.vending_machine.drinks">Αυτόματος πωλητής ποτών</string>
|
||||
<string name="type.amenity.vending_machine.parking_tickets">Εισιτήρια στάθμευσης</string>
|
||||
<string name="type.amenity.vending_machine.public_transport_tickets">Μηχάνημα αυτόματης πώλησης εισιτηρίων για τα μέσα μαζικής μεταφοράς</string>
|
||||
<string name="type.amenity.vending_machine.public_transport_tickets">Μηχάνημα αυτόματης πώλησης εισιτηρίων για δημόσια συγκοινωνία</string>
|
||||
<string name="type.amenity.vehicle_inspection">Έλεγχος οχήματος</string>
|
||||
<string name="type.amenity.veterinary">Κτηνίατρος</string>
|
||||
<string name="type.amenity.waste_basket">Κάδος απορριμμάτων</string>
|
||||
@@ -314,7 +314,7 @@
|
||||
<string name="type.entrance">Είσοδος</string>
|
||||
<!-- This is for main/primary entrances, for secondary entrances see type.entrance -->
|
||||
<string name="type.entrance.main">Κύρια είσοδος</string>
|
||||
<string name="type.entrance.exit">Έξοδος</string>
|
||||
<string name="type.entrance.exit">Έξοδος (μόνο)</string>
|
||||
<string name="type.fee.no">Δωρεάν</string>
|
||||
<string name="type.healthcare.laboratory">Ιατρικό Εργαστήριο</string>
|
||||
<string name="type.healthcare.physiotherapist">Φυσικοθεραπευτής</string>
|
||||
@@ -367,7 +367,7 @@
|
||||
<string name="type.highway.motorway_link.bridge">Γέφυρα</string>
|
||||
<!-- These translations are used for all type.highway.*.tunnel. -->
|
||||
<string name="type.highway.motorway_link.tunnel">Σήραγγα</string>
|
||||
<string name="type.highway.path">Διαδρομή</string>
|
||||
<string name="type.highway.path">Μονοπάτι</string>
|
||||
<!-- Hiking trail tagged as sac_scale=demanding_mountain_hiking (3 of 6) or trail_visibility=bad. -->
|
||||
<string name="type.highway.path.difficult">Δύσκολη ή ελάχιστα ορατή διαδρομή</string>
|
||||
<!-- Hiking trail tagged as sac_scale=alpine_hiking (4+ of 6) or trail_visibility=horrible or more extreme. -->
|
||||
@@ -379,20 +379,19 @@
|
||||
<string name="type.highway.path.horse">Διαδρομή</string>
|
||||
<!-- These translations are used for all type.highway.*.tunnel. -->
|
||||
<string name="type.highway.path.tunnel">Σήραγγα</string>
|
||||
<string name="type.highway.pedestrian">Οδός</string>
|
||||
<string name="type.highway.pedestrian">Πεζόδρομος</string>
|
||||
<string name="type.highway.pedestrian.area">Οδός</string>
|
||||
<!-- These translations are used for all type.highway.*.bridge. -->
|
||||
<string name="type.highway.pedestrian.bridge">Γέφυρα</string>
|
||||
|
||||
<string name="type.highway.pedestrian.square">Πλατεία</string>
|
||||
<!-- These translations are used for all type.highway.*.tunnel. -->
|
||||
<string name="type.highway.pedestrian.tunnel">Σήραγγα</string>
|
||||
<string name="type.highway.primary">Οδός</string>
|
||||
<string name="type.highway.primary">Πρωτεύων δρόμος</string>
|
||||
<!-- These translations are used for all type.highway.*.bridge. -->
|
||||
<string name="type.highway.primary.bridge">Γέφυρα</string>
|
||||
<!-- These translations are used for all type.highway.*.tunnel. -->
|
||||
<string name="type.highway.primary.tunnel">Σήραγγα</string>
|
||||
<string name="type.highway.primary_link">Οδός</string>
|
||||
<string name="type.highway.primary_link">Ράμπα πρωτεύοντος δρόμου</string>
|
||||
<!-- These translations are used for all type.highway.*.bridge. -->
|
||||
<string name="type.highway.primary_link.bridge">Γέφυρα</string>
|
||||
<!-- These translations are used for all type.highway.*.tunnel. -->
|
||||
@@ -412,36 +411,36 @@
|
||||
<string name="type.man_made.bridge">Γέφυρα</string>
|
||||
<!-- These translations are used for all type.highway.*.tunnel. -->
|
||||
<string name="type.highway.road.tunnel">Σήραγγα</string>
|
||||
<string name="type.highway.secondary">Οδός</string>
|
||||
<string name="type.highway.secondary">Δευτερεύων δρόμος</string>
|
||||
<!-- These translations are used for all type.highway.*.bridge. -->
|
||||
<string name="type.highway.secondary.bridge">Γέφυρα</string>
|
||||
<!-- These translations are used for all type.highway.*.tunnel. -->
|
||||
<string name="type.highway.secondary.tunnel">Σήραγγα</string>
|
||||
<string name="type.highway.secondary_link">Οδός</string>
|
||||
<string name="type.highway.secondary_link">Ράμπα δευτερεύοντος δρόμου</string>
|
||||
<!-- These translations are used for all type.highway.*.bridge. -->
|
||||
<string name="type.highway.secondary_link.bridge">Γέφυρα</string>
|
||||
<!-- These translations are used for all type.highway.*.tunnel. -->
|
||||
<string name="type.highway.secondary_link.tunnel">Σήραγγα</string>
|
||||
<string name="type.highway.service">Οδός</string>
|
||||
<string name="type.highway.service.area">Οδός</string>
|
||||
<string name="type.highway.service">Δρόμος υπηρεσίας</string>
|
||||
<string name="type.highway.service.area">Δρόμος υπηρεσίας</string>
|
||||
<!-- These translations are used for all type.highway.*.bridge. -->
|
||||
<string name="type.highway.service.bridge">Γέφυρα</string>
|
||||
<string name="type.highway.service.driveway">Οδός</string>
|
||||
<string name="type.highway.service.parking_aisle">Οδός</string>
|
||||
<string name="type.highway.service.parking_aisle">Διάδρομος πάρκινγκ</string>
|
||||
<!-- These translations are used for all type.highway.*.tunnel. -->
|
||||
<string name="type.highway.service.tunnel">Σήραγγα</string>
|
||||
<string name="type.highway.speed_camera">Κάμερα ταχύτητας</string>
|
||||
<string name="type.highway.steps">Διαδρομή</string>
|
||||
<string name="type.highway.steps">Σκαλοπάτια</string>
|
||||
<!-- These translations are used for all type.highway.*.bridge. -->
|
||||
<string name="type.highway.steps.bridge">Γέφυρα</string>
|
||||
<!-- These translations are used for all type.highway.*.tunnel. -->
|
||||
<string name="type.highway.steps.tunnel">Σήραγγα</string>
|
||||
<string name="type.highway.tertiary">Οδός</string>
|
||||
<string name="type.highway.tertiary">Τριτεύων δρόμος</string>
|
||||
<!-- These translations are used for all type.highway.*.bridge. -->
|
||||
<string name="type.highway.tertiary.bridge">Γέφυρα</string>
|
||||
<!-- These translations are used for all type.highway.*.tunnel. -->
|
||||
<string name="type.highway.tertiary.tunnel">Σήραγγα</string>
|
||||
<string name="type.highway.tertiary_link">Οδός</string>
|
||||
<string name="type.highway.tertiary_link">Ράμπα τριτεύοντος δρόμου</string>
|
||||
<!-- These translations are used for all type.highway.*.bridge. -->
|
||||
<string name="type.highway.tertiary_link.bridge">Γέφυρα</string>
|
||||
<!-- These translations are used for all type.highway.*.tunnel. -->
|
||||
@@ -471,26 +470,26 @@
|
||||
<string name="type.highway.unclassified.bridge">Γέφυρα</string>
|
||||
<!-- These translations are used for all type.highway.*.tunnel. -->
|
||||
<string name="type.highway.unclassified.tunnel">Σήραγγα</string>
|
||||
<string name="type.area_highway.footway">Διαδρομή</string>
|
||||
<string name="type.area_highway.footway">Μονοπάτι πεζών</string>
|
||||
<string name="type.area_highway.living_street">Οδός</string>
|
||||
<string name="type.area_highway.motorway">Οδός</string>
|
||||
<string name="type.area_highway.path">Διαδρομή</string>
|
||||
<string name="type.area_highway.pedestrian">Οδός</string>
|
||||
<string name="type.area_highway.primary">Οδός</string>
|
||||
<string name="type.area_highway.path">Μονοπάτι</string>
|
||||
<string name="type.area_highway.pedestrian">Πεζόδρομος</string>
|
||||
<string name="type.area_highway.primary">Πρωτεύων δρόμος</string>
|
||||
<string name="type.area_highway.residential">Οδός</string>
|
||||
<string name="type.area_highway.secondary">Οδός</string>
|
||||
<string name="type.area_highway.service">Οδός</string>
|
||||
<string name="type.area_highway.tertiary">Οδός</string>
|
||||
<string name="type.area_highway.steps">Διαδρομή</string>
|
||||
<string name="type.area_highway.secondary">Δευτερεύων δρόμος</string>
|
||||
<string name="type.area_highway.service">Δρόμος υπηρεσίας</string>
|
||||
<string name="type.area_highway.tertiary">Τριτεύων δρόμος</string>
|
||||
<string name="type.area_highway.steps">Σκαλοπάτια</string>
|
||||
<string name="type.area_highway.track">Οδός</string>
|
||||
<string name="type.area_highway.trunk">Οδός</string>
|
||||
<string name="type.area_highway.unclassified">Οδός</string>
|
||||
<!-- SECTION: Types: Historic -->
|
||||
<string name="type.historic">Ιστορικό αντικείμενο</string>
|
||||
<string name="type.historic.aircraft">Ιστορικό αεροσκάφος</string>
|
||||
<string name="type.historic.anchor">Ιστορική Άγκυρα</string>
|
||||
<string name="type.historic.anchor">Ιστορική άγκυρα</string>
|
||||
<string name="type.historic.archaeological_site">Αρχαιολογικός χώρος</string>
|
||||
<string name="type.historic.battlefield">Πεδίο μάχης</string>
|
||||
<string name="type.historic.battlefield">Ιστορικό πεδίο μάχης</string>
|
||||
<string name="type.historic.boundary_stone">Οριακή πέτρα</string>
|
||||
<string name="type.historic.cannon">Κανόνι</string>
|
||||
<string name="type.historic.castle">Κάστρο</string>
|
||||
@@ -557,17 +556,17 @@
|
||||
<string name="type.leisure.nature_reserve">Φυσικό απόθεμα</string>
|
||||
<string name="type.leisure.outdoor_seating">Καθίσματα εξωτερικού χώρου</string>
|
||||
<string name="type.leisure.park">Πάρκο</string>
|
||||
<string name="type.leisure.park.no.access">Πάρκο</string>
|
||||
<string name="type.leisure.park.no.access">Ιδιωτικό πάρκο</string>
|
||||
<string name="type.leisure.park.permissive">Πάρκο</string>
|
||||
<string name="type.leisure.park.private">Πάρκο</string>
|
||||
<string name="type.leisure.park.private">Ιδιωτικό πάρκο</string>
|
||||
<string name="type.leisure.picnic_table">Τραπέζι πικ-νικ</string>
|
||||
<string name="type.leisure.pitch">Γήπεδο αθλοπαιδιών</string>
|
||||
<string name="type.leisure.pitch">Γήπεδο άθλησης</string>
|
||||
<string name="type.leisure.playground">Παιδική χαρά</string>
|
||||
<string name="type.leisure.sauna">Σάουνα</string>
|
||||
<string name="type.leisure.sports_centre">Αθλητικό κέντρο</string>
|
||||
<string name="type.sport.climbing">Κέντρο αναρρίχησης</string>
|
||||
<string name="type.sport.yoga">Στούντιο γιόγκα</string>
|
||||
<string name="type.leisure.stadium">Γήπεδο</string>
|
||||
<string name="type.sport.climbing">Αναρρίχηση</string>
|
||||
<string name="type.sport.yoga">Γιόγκα</string>
|
||||
<string name="type.leisure.stadium">Στάδιο</string>
|
||||
<string name="type.leisure.swimming_pool">Πισίνα</string>
|
||||
<string name="type.leisure.swimming_pool.private">Πισίνα</string>
|
||||
<string name="type.leisure.water_park">Υδάτινο πάρκο</string>
|
||||
@@ -1104,7 +1103,7 @@
|
||||
<string name="type.sport.volleyball">Πετοσφαίριση</string>
|
||||
<string name="type.sport.10pin">Μπόουλινγκ</string>
|
||||
<string name="type.sport.9pin">Μπόουλινγκ</string>
|
||||
<string name="type.sport.padel">Padel</string>
|
||||
<string name="type.sport.padel">Πάντελ</string>
|
||||
<string name="type.sport.futsal">Futsal</string>
|
||||
<string name="type.sport.ice_hockey">Χόκεϊ στον παγο</string>
|
||||
<string name="type.sport.field_hockey">Χόκεϊ επί χόρτου</string>
|
||||
@@ -1181,7 +1180,7 @@
|
||||
<string name="type.self_service.partially">Μερική αυτοεξυπηρέτηση</string>
|
||||
<string name="type.self_service.no">Δεν υπάρχει αυτοεξυπηρέτηση</string>
|
||||
<!-- https://wiki.openstreetmap.org/wiki/Key:social_facility -->
|
||||
<string name="type.amenity.social_facility">Κοινωνική διευκόλυνση</string>
|
||||
<string name="type.amenity.social_facility">Κοινωνική δομή</string>
|
||||
<!-- https://wiki.openstreetmap.org/wiki/Tag:emergency=emergency_ward_entrance -->
|
||||
<string name="type.emergency.emergency_ward_entrance">Είσοδος θαλάμου έκτακτης ανάγκης</string>
|
||||
<!-- https://wiki.openstreetmap.org/wiki/Tag:amenity=dojo -->
|
||||
@@ -1201,7 +1200,7 @@
|
||||
<string name="type.man_made.utility_pole">Πόλος κοινής ωφέλειας</string>
|
||||
<string name="type.railway.narrow_gauge.bridge">Σιδηροδρομική γέφυρα στενού εύρους</string>
|
||||
<string name="type.aeroway">Υποδομή εναέριου χώρου</string>
|
||||
<string name="type.aeroway.apron">Ποδιά</string>
|
||||
<string name="type.aeroway.apron">Χώρος στάθμευσης αεροσκαφών</string>
|
||||
<string name="type.aeroway.runway">Αεροδιάδρομος</string>
|
||||
<string name="type.aeroway.taxiway">Τροχόδρομος</string>
|
||||
<string name="type.aeroway.terminal">Τερματικός σταθμός</string>
|
||||
@@ -1246,7 +1245,7 @@
|
||||
<string name="type.boundary.administrative.3">Περιφερειακά όρια</string>
|
||||
<string name="type.boundary.administrative.4">Περιφερειακά όρια</string>
|
||||
<string name="type.building.warehouse">Αποθήκη</string>
|
||||
<string name="type.area_highway.cycleway">Ποδηλατόδρομος</string>
|
||||
<string name="type.area_highway.cycleway">Μονοπάτι ποδηλάτων</string>
|
||||
<string name="type.aeroway.gate">Πύλη</string>
|
||||
<string name="type.amenity.atm">ATM</string>
|
||||
<string name="type.railway.platform">Σιδηροδρομική πλατφόρμα</string>
|
||||
@@ -1263,4 +1262,61 @@
|
||||
<string name="type.attraction.bumper_car">Συγκρουόμενα</string>
|
||||
<string name="type.landuse">Χρήσης γης</string>
|
||||
<string name="type.junction.roundabout">Κυκλικός κόμβος</string>
|
||||
<string name="type.amenity.animal_shelter">Καταφύγιο ζώων</string>
|
||||
<string name="type.cardinal.east">Ανατολή</string>
|
||||
<string name="type.cardinal.north">Βορράς</string>
|
||||
<string name="type.cardinal.south">Νότος</string>
|
||||
<string name="type.cardinal.west">Δύση</string>
|
||||
<string name="type.entrance.entry">Είσοδος (μόνο)</string>
|
||||
<string name="type.entrance.emergency">Έξοδος κινδύνου</string>
|
||||
<string name="type.fee.yes">€</string>
|
||||
<string name="type.entrance.house">Είσοδος σπιτιού</string>
|
||||
<string name="type.entrance.garage">Είσοδος γκαράζ</string>
|
||||
<string name="type.entrance.service">Είσοδος υπηρεσίας</string>
|
||||
<string name="type.disusedbusiness">Κενή επιχείρηση</string>
|
||||
<string name="type.shop.lighting">Κατάστημα φωτιστικών</string>
|
||||
<string name="type.xmas.tree">Χριστουγεννιάτικο δέντρο</string>
|
||||
<string name="type.leisure.track">Πίστα</string>
|
||||
<string name="type.leisure.track.area">Πίστα</string>
|
||||
<string name="type.leisure.sports_centre.sport.multi">Αθλητικό κέντρο</string>
|
||||
<string name="type.leisure.sports_centre.sport.american_football">Αθλητικό κέντρο</string>
|
||||
<string name="type.leisure.sports_centre.sport.archery">Αθλητικό κέντρο</string>
|
||||
<string name="type.leisure.sports_centre.sport.athletics">Αθλητικό κέντρο</string>
|
||||
<string name="type.leisure.sports_centre.sport.australian_football">Αθλητικό κέντρο</string>
|
||||
<string name="type.leisure.sports_centre.sport.badminton">Αθλητικό κέντρο</string>
|
||||
<string name="type.leisure.sports_centre.sport.baseball">Αθλητικό κέντρο</string>
|
||||
<string name="type.leisure.sports_centre.sport.basketball">Αθλητικό κέντρο</string>
|
||||
<string name="type.leisure.sports_centre.sport.beachvolleyball">Αθλητικό κέντρο</string>
|
||||
<string name="type.leisure.sports_centre.sport.bowls">Αθλητικό κέντρο</string>
|
||||
<string name="type.leisure.sports_centre.sport.climbing">Αθλητικό κέντρο</string>
|
||||
<string name="type.leisure.sports_centre.sport.cricket">Αθλητικό κέντρο</string>
|
||||
<string name="type.leisure.sports_centre.sport.curling">Αθλητικό κέντρο</string>
|
||||
<string name="type.leisure.sports_centre.sport.equestrian">Αθλητικό κέντρο</string>
|
||||
<string name="type.leisure.sports_centre.sport.field_hockey">Αθλητικό κέντρο</string>
|
||||
<string name="type.leisure.sports_centre.sport.futsal">Αθλητικό κέντρο</string>
|
||||
<string name="type.leisure.sports_centre.sport.golf">Αθλητικό κέντρο</string>
|
||||
<string name="type.leisure.sports_centre.sport.gymnastics">Αθλητικό κέντρο</string>
|
||||
<string name="type.leisure.sports_centre.sport.handball">Αθλητικό κέντρο</string>
|
||||
<string name="type.leisure.sports_centre.sport.ice_hockey">Αθλητικό κέντρο</string>
|
||||
<string name="type.leisure.sports_centre.sport.padel">Αθλητικό κέντρο</string>
|
||||
<string name="type.leisure.sports_centre.sport.pelota">Αθλητικό κέντρο</string>
|
||||
<string name="type.leisure.sports_centre.sport.scuba_diving">Αθλητικό κέντρο</string>
|
||||
<string name="type.leisure.sports_centre.sport.shooting">Αθλητικό κέντρο</string>
|
||||
<string name="type.leisure.sports_centre.sport.skateboard">Αθλητικό κέντρο</string>
|
||||
<string name="type.leisure.sports_centre.sport.skiing">Αθλητικό κέντρο</string>
|
||||
<string name="type.leisure.sports_centre.sport.soccer">Αθλητικό κέντρο</string>
|
||||
<string name="type.leisure.sports_centre.sport.swimming">Κέντρο κολύμβησης</string>
|
||||
<string name="type.leisure.sports_centre.sport.table_tennis">Αθλητικό κέντρο</string>
|
||||
<string name="type.leisure.sports_centre.sport.tennis">Αθλητικό κέντρο</string>
|
||||
<string name="type.leisure.sports_centre.sport.volleyball">Αθλητικό κέντρο</string>
|
||||
<string name="type.leisure.sports_centre.sport.yoga">Αθλητικό κέντρο</string>
|
||||
<string name="type.leisure.fitness_centre.sport.yoga">Στούντιο γιόγκα</string>
|
||||
<string name="type.leisure.hackerspace">Hackerspace</string>
|
||||
<string name="type.leisure">Αναψυχή</string>
|
||||
<string name="type.leisure.common">Δημόσια γη</string>
|
||||
<string name="type.landuse.military">Στρατιωτική περιοχή</string>
|
||||
<string name="type.landuse.industrial">Βιομηχανική περιοχή</string>
|
||||
<string name="type.amenity.bench.backless">Παγκάκι χωρίς πλάτη</string>
|
||||
<string name="type.amenity.boat_rental">Ενοικίαση σκαφών</string>
|
||||
<string name="type.amenity.flight_school">Σχολή πιλότων</string>
|
||||
</resources>
|
||||
|
||||
@@ -49,4 +49,5 @@
|
||||
<string name="type.shop.lottery">Lotto</string>
|
||||
<string name="type.sport.australian_football">AFL</string>
|
||||
<string name="type.sport.table_tennis">Ping Pong</string>
|
||||
<string name="type.amenity.ice_cream">Ice Cream Shop</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,3 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
</resources>
|
||||
<string name="type.amenity.arts_centre">Arts Centre</string>
|
||||
<string name="type.amenity.conference_centre">Conference Centre</string>
|
||||
<string name="type.amenity.exhibition_centre">Exhibition Centre</string>
|
||||
<string name="type.amenity.recycling.centre">Recycling Centre</string>
|
||||
<string name="type.amenity.toilets">Washroom</string>
|
||||
<string name="type.barrier.guard_rail">Guardrail</string>
|
||||
<string name="type.highway.motorway">Freeway</string>
|
||||
<string name="type.highway.motorway.bridge">Freeway Bridge</string>
|
||||
<string name="type.highway.motorway.tunnel">Freeway Tunnel</string>
|
||||
<string name="type.highway.motorway_link">Freeway Ramp</string>
|
||||
<string name="type.leisure.sports_centre">Sports Centre</string>
|
||||
<string name="type.shop.tyres">Tire Shop</string>
|
||||
<string name="type.traffic_calming.bump">Road Bump</string>
|
||||
<string name="type.traffic_calming.hump">Road Bump</string>
|
||||
</resources>
|
||||
|
||||
3
android/sdk/src/main/res/values-en-rUS/types_strings.xml
Normal file
3
android/sdk/src/main/res/values-en-rUS/types_strings.xml
Normal file
@@ -0,0 +1,3 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
</resources>
|
||||
@@ -68,9 +68,9 @@
|
||||
<string name="type.amenity.fast_food">Comida rápida</string>
|
||||
<string name="type.amenity.ferry_terminal">Transbordador de ferry</string>
|
||||
<string name="type.amenity.fire_station">Estación de bomberos</string>
|
||||
<string name="type.amenity.food_court">Zona de comidas</string>
|
||||
<string name="type.amenity.food_court">Plaza de comidas</string>
|
||||
<string name="type.amenity.fountain">Fuente</string>
|
||||
<string name="type.amenity.fuel">Gasolinera</string>
|
||||
<string name="type.amenity.fuel">Estación de servicio</string>
|
||||
<!-- In most (European) countries, сemeteries are usually independent of places of worship (e.g. military cemeteries), while grave yards are usually the yard of a place of worship. -->
|
||||
<string name="type.amenity.grave_yard">Cementerio</string>
|
||||
<!-- In most (European) countries, сemeteries are usually independent of places of worship (e.g. military cemeteries), while grave yards are usually the yard of a place of worship. -->
|
||||
@@ -79,7 +79,7 @@
|
||||
<string name="type.amenity.hunting_stand">Puesto de caza</string>
|
||||
<string name="type.amenity.ice_cream">Heladería</string>
|
||||
<string name="type.amenity.internet_cafe">Cibercafé</string>
|
||||
<string name="type.amenity.kindergarten">Guardería</string>
|
||||
<string name="type.amenity.kindergarten">Jardín de infantes</string>
|
||||
<string name="type.amenity.library">Biblioteca</string>
|
||||
<string name="type.amenity.loading_dock">Muelle de carga</string>
|
||||
<string name="type.amenity.marketplace">Mercado</string>
|
||||
@@ -88,7 +88,7 @@
|
||||
<string name="type.amenity.nursing_home">Residencia de ancianos</string>
|
||||
<string name="type.amenity.parking">Aparcamiento</string>
|
||||
<string name="type.amenity.parking.fee">Aparcamiento</string>
|
||||
<string name="type.amenity.parking.multi.storey">Edificio de aparcamiento</string>
|
||||
<string name="type.amenity.parking.multi.storey">Aparcamiento multinivel</string>
|
||||
<string name="type.amenity.parking.multi.storey.fee">Edificio de aparcamiento</string>
|
||||
<string name="type.amenity.parking.no.access">Aparcamiento privado</string>
|
||||
<string name="type.amenity.parking.permissive">Aparcamiento privado</string>
|
||||
@@ -168,16 +168,16 @@
|
||||
<string name="type.amenity.townhall">Ayuntamiento</string>
|
||||
<string name="type.amenity.university">Universidad</string>
|
||||
<string name="type.amenity.vending_machine">Máquina expendedora</string>
|
||||
<string name="type.amenity.vending_machine.cigarettes">Máquina expendedora de tabaco</string>
|
||||
<string name="type.amenity.vending_machine.coffee">Máquina expendedora de café</string>
|
||||
<string name="type.amenity.vending_machine.condoms">Máquina expendedora de condones</string>
|
||||
<string name="type.amenity.vending_machine.drinks">Máquina expendedora de bebidas</string>
|
||||
<string name="type.amenity.vending_machine.food">Máquina expendedora de comida</string>
|
||||
<string name="type.amenity.vending_machine.newspapers">Máquina expendedora de periódicos</string>
|
||||
<string name="type.amenity.vending_machine.cigarettes">Expendedora de tabaco</string>
|
||||
<string name="type.amenity.vending_machine.coffee">Expendedora de café</string>
|
||||
<string name="type.amenity.vending_machine.condoms">Expendedora de condones</string>
|
||||
<string name="type.amenity.vending_machine.drinks">Expendedora de bebidas</string>
|
||||
<string name="type.amenity.vending_machine.food">Expendedora de comida</string>
|
||||
<string name="type.amenity.vending_machine.newspapers">Expendedora de periódicos</string>
|
||||
<string name="type.amenity.vending_machine.parking_tickets">Parquímetro</string>
|
||||
<string name="type.amenity.vending_machine.public_transport_tickets">Máquina expendedora de billetes de transporte público</string>
|
||||
<string name="type.amenity.vending_machine.sweets">Máquina expendedora de dulces</string>
|
||||
<string name="type.amenity.vending_machine.excrement_bags">Maquina expendedora de bolsas para excrementos</string>
|
||||
<string name="type.amenity.vending_machine.public_transport_tickets">Expendedora de billetes de transporte público</string>
|
||||
<string name="type.amenity.vending_machine.sweets">Expendedora de dulces</string>
|
||||
<string name="type.amenity.vending_machine.excrement_bags">Dispensador de bolsas para excrementos</string>
|
||||
<string name="type.amenity.parcel_locker">Taquilla de paquetes</string>
|
||||
<string name="type.amenity.vehicle_inspection">Inspección de vehículos</string>
|
||||
<string name="type.amenity.vending_machine.fuel">Surtidor de combustible</string>
|
||||
@@ -257,7 +257,7 @@
|
||||
<string name="type.craft.photographer">Fotógrafo</string>
|
||||
<string name="type.shop.camera">Tienda de fotografía</string>
|
||||
<string name="type.craft.plumber">Fontanero</string>
|
||||
<string name="type.craft.sawmill">Serrería</string>
|
||||
<string name="type.craft.sawmill">Aserradero</string>
|
||||
<string name="type.craft.shoemaker">Zapatero</string>
|
||||
<string name="type.craft.winery">Bodega vinícola</string>
|
||||
<string name="type.craft.tailor">Sastre</string>
|
||||
@@ -335,7 +335,7 @@
|
||||
<string name="type.cuisine.sandwich">Sándwiches</string>
|
||||
<string name="type.cuisine.sausage">Salchichas</string>
|
||||
<string name="type.cuisine.savory_pancakes">Tortitas saladas</string>
|
||||
<string name="type.cuisine.seafood">del mar</string>
|
||||
<string name="type.cuisine.seafood">Marina</string>
|
||||
<string name="type.cuisine.soba">Soba</string>
|
||||
<string name="type.cuisine.spanish">Española</string>
|
||||
<string name="type.cuisine.steak_house">Asador</string>
|
||||
@@ -350,7 +350,7 @@
|
||||
<string name="type.emergency">Emergencia</string>
|
||||
<string name="type.emergency.assembly_point">Punto de reunión de emergencia</string>
|
||||
<string name="type.emergency.defibrillator">Desfibrilador</string>
|
||||
<string name="type.emergency.fire_hydrant">Boca de incendio</string>
|
||||
<string name="type.emergency.fire_hydrant">Hidrante de incendio</string>
|
||||
<string name="type.amenity.hydrant">Boca de riego</string>
|
||||
<string name="type.emergency.phone">Teléfono de emergencias</string>
|
||||
<!-- A place where a lifeguard is on duty. -->
|
||||
@@ -499,12 +499,12 @@
|
||||
<string name="type.highway.tertiary_link.bridge">Puente</string>
|
||||
<!-- These translations are used for all type.highway.*.tunnel. -->
|
||||
<string name="type.highway.tertiary_link.tunnel">Túnel</string>
|
||||
<string name="type.highway.track">Pista</string>
|
||||
<string name="type.highway.track.area">Pista</string>
|
||||
<string name="type.highway.track">Camino</string>
|
||||
<string name="type.highway.track.area">Camino</string>
|
||||
<!-- These translations are used for all type.highway.*.bridge. -->
|
||||
<string name="type.highway.track.bridge">Puente</string>
|
||||
<string name="type.highway.track.grade1">Pista</string>
|
||||
<string name="type.highway.track.no.access">Pista</string>
|
||||
<string name="type.highway.track.grade1">Camino</string>
|
||||
<string name="type.highway.track.no.access">Camino</string>
|
||||
<!-- These translations are used for all type.highway.*.tunnel. -->
|
||||
<string name="type.highway.track.tunnel">Túnel</string>
|
||||
<string name="type.highway.traffic_signals">Semáforo</string>
|
||||
@@ -536,7 +536,7 @@
|
||||
<string name="type.area_highway.service">Vía de servicio</string>
|
||||
<string name="type.area_highway.tertiary">Carretera terciaria</string>
|
||||
<string name="type.area_highway.steps">Escaleras</string>
|
||||
<string name="type.area_highway.track">Pista</string>
|
||||
<string name="type.area_highway.track">Camino</string>
|
||||
<string name="type.area_highway.trunk">Vía troncal</string>
|
||||
<string name="type.area_highway.unclassified">Carretera menor</string>
|
||||
<!-- SECTION: Types: Historic -->
|
||||
@@ -737,7 +737,7 @@
|
||||
<string name="type.natural.tree_row">Fila de árboles</string>
|
||||
<string name="type.natural.vineyard">Viña</string>
|
||||
<string name="type.natural.volcano">Volcán</string>
|
||||
<string name="type.natural.water">Cuerpo de agua</string>
|
||||
<string name="type.natural.water">Agua</string>
|
||||
<string name="type.natural.wetland">Terreno pantanoso</string>
|
||||
<string name="type.natural.wetland.bog">Turbera</string>
|
||||
<string name="type.natural.wetland.marsh">Ciénaga</string>
|
||||
@@ -1107,7 +1107,7 @@
|
||||
<string name="type.shop.car_repair.tyres">Reparación de neumáticos</string>
|
||||
<string name="type.shop.caravan">Concesionario de caravanas</string>
|
||||
<string name="type.shop.carpet">Tienda de alfombras</string>
|
||||
<string name="type.shop.chemist">Droguería</string>
|
||||
<string name="type.shop.chemist">Parafarmacia</string>
|
||||
<string name="type.shop.chocolate">Chocolatería</string>
|
||||
<string name="type.shop.clothes">Tienda de ropa</string>
|
||||
<string name="type.shop.coffee">Tienda de café</string>
|
||||
@@ -1370,7 +1370,7 @@
|
||||
<string name="type.fee.yes">$</string>
|
||||
<string name="type.railway.narrow_gauge.tunnel">Túnel de vía férrea estrecha</string>
|
||||
<string name="type.railway.light_rail.bridge">Puente de tren ligero</string>
|
||||
<string name="type.highway.ladder">Escalera</string>
|
||||
<string name="type.highway.ladder">Escalerilla</string>
|
||||
<string name="type.amenity.studio">Estudio multimedia</string>
|
||||
<string name="type.landuse.plant_nursery">Vivero de plantas</string>
|
||||
<string name="type.barrier.guard_rail">Guardarraíl</string>
|
||||
@@ -1383,7 +1383,7 @@
|
||||
<string name="type.natural.wetland.tidalflat">Llanura mareal</string>
|
||||
<string name="type.natural.wetland.swamp">Pantano</string>
|
||||
<string name="type.amenity.ranger_station">Estación de guardabosques</string>
|
||||
<string name="type.amenity.luggage_locker">Casillero de maletas</string>
|
||||
<string name="type.amenity.luggage_locker">Consigna de equipaje</string>
|
||||
<string name="type.natural.wetland.mangrove">Manglares</string>
|
||||
<string name="type.landuse.religious">Terrenos religiosos</string>
|
||||
<string name="type.natural.wetland.saltmarsh">Marisma salina</string>
|
||||
@@ -1410,7 +1410,7 @@
|
||||
<string name="type.leisure.sports_centre.sport.basketball">Centro deportivo</string>
|
||||
<string name="type.leisure.sports_centre.sport.beachvolleyball">Centro deportivo</string>
|
||||
<string name="type.leisure.sports_centre.sport.bowls">Centro deportivo</string>
|
||||
<string name="type.leisure.sports_centre.sport.climbing">Centro deportivo</string>
|
||||
<string name="type.leisure.sports_centre.sport.climbing">Rocódromo</string>
|
||||
<string name="type.leisure.sports_centre.sport.cricket">Centro deportivo</string>
|
||||
<string name="type.leisure.sports_centre.sport.curling">Centro deportivo</string>
|
||||
<string name="type.leisure.sports_centre.sport.equestrian">Centro deportivo</string>
|
||||
@@ -1508,4 +1508,5 @@
|
||||
<string name="type.railway.miniature.tunnel">Túnel de ferrocarril miniatura</string>
|
||||
<string name="type.railway.turntable">Plataforma giratoria ferroviaria</string>
|
||||
<string name="type.tourism.information.tactile_map">Mapa táctil</string>
|
||||
<string name="type.emergency.disaster_help_point">Punto de ayuda para emergencias y desastres</string>
|
||||
</resources>
|
||||
|
||||
@@ -44,8 +44,8 @@
|
||||
<string name="type.leisure.adult_gaming_centre">Hasartmängusaal</string>
|
||||
<string name="type.leisure.amusement_arcade">Videomängusaal</string>
|
||||
<string name="type.amenity.charging_station">Laadimisjaam</string>
|
||||
<string name="type.amenity.charging_station.bicycle">Jalgratta laadimisjaam</string>
|
||||
<string name="type.amenity.charging_station.motorcar">Autode laadimisjaam</string>
|
||||
<string name="type.amenity.charging_station.bicycle">Jalgrattad</string>
|
||||
<string name="type.amenity.charging_station.motorcar">Autod</string>
|
||||
<string name="type.amenity.childcare">Lastehoid</string>
|
||||
<string name="type.amenity.cinema">Kino</string>
|
||||
<string name="type.leisure.bowling_alley">Bowlingusaal</string>
|
||||
@@ -1505,4 +1505,7 @@
|
||||
<string name="type.tourism.information.tactile_map">Kombatav kaart</string>
|
||||
<string name="type.railway.disused.bridge">Kasutuselt eemaldatud raudteesild</string>
|
||||
<string name="type.railway.disused.tunnel">Kasutuselt eemaldatud raudteetunnel</string>
|
||||
<string name="type.amenity.charging_station.motorcycle">Mootorrattad</string>
|
||||
<string name="type.amenity.charging_station.small">Väike laadimisjaam</string>
|
||||
<string name="type.emergency.disaster_help_point">Katastroofiabi teenused</string>
|
||||
</resources>
|
||||
|
||||
@@ -1191,7 +1191,7 @@
|
||||
<string name="type.sport.handball">Handball</string>
|
||||
<string name="type.sport.multi">Sports multiples</string>
|
||||
<!-- Used to tag a scuba diving site. -->
|
||||
<string name="type.sport.scuba_diving">Site de plongée sous-marine</string>
|
||||
<string name="type.sport.scuba_diving">Plongée sous-marine</string>
|
||||
<string name="type.sport.shooting">Tir sportif</string>
|
||||
<string name="type.sport.skateboard">Skateboard</string>
|
||||
<string name="type.sport.skiing">Ski</string>
|
||||
@@ -1484,8 +1484,8 @@
|
||||
<string name="type.spherical_buoy.special_purpose">Bouée sphérique, marque spéciale</string>
|
||||
<string name="type.lateral.port">Bâbord</string>
|
||||
<string name="type.lateral.starboard">Tribord</string>
|
||||
<string name="type.cardinal.east">Est</string>
|
||||
<string name="type.cardinal.north">Nord</string>
|
||||
<string name="type.cardinal.east">Est :</string>
|
||||
<string name="type.cardinal.north">Nord :</string>
|
||||
<string name="type.cardinal.south">Sud</string>
|
||||
<string name="type.cardinal.west">Ouest</string>
|
||||
<string name="type.entrance.house">Entrée de la maison</string>
|
||||
@@ -1507,4 +1507,6 @@
|
||||
<string name="type.tourism.information.tactile_map">Carte tactile</string>
|
||||
<string name="type.railway.miniature">Chemin de fer miniature</string>
|
||||
<string name="type.railway.turntable">Rotonde de chemin de fer</string>
|
||||
<string name="type.emergency.access_point.address">Adresse de secours en cas d\'urgence</string>
|
||||
<string name="type.emergency.disaster_help_point">Point d\'assistance d\'urgence en cas de catastrophe</string>
|
||||
</resources>
|
||||
|
||||
3
android/sdk/src/main/res/values-ga/strings.xml
Normal file
3
android/sdk/src/main/res/values-ga/strings.xml
Normal file
@@ -0,0 +1,3 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
</resources>
|
||||
3
android/sdk/src/main/res/values-ga/types_strings.xml
Normal file
3
android/sdk/src/main/res/values-ga/types_strings.xml
Normal file
@@ -0,0 +1,3 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
</resources>
|
||||
3
android/sdk/src/main/res/values-ia/strings.xml
Normal file
3
android/sdk/src/main/res/values-ia/strings.xml
Normal file
@@ -0,0 +1,3 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
</resources>
|
||||
@@ -1181,4 +1181,6 @@
|
||||
<string name="type.man_made.observatory">Observatorium</string>
|
||||
<string name="type.aeroway.runway">Landasan Pacu</string>
|
||||
<string name="type.emergency">Darurat</string>
|
||||
<string name="type.office.security">Kantor Satpam</string>
|
||||
<string name="type.building.guardhouse">Pos Satpam</string>
|
||||
</resources>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<resources>
|
||||
<!-- SECTION: Types -->
|
||||
<string name="type.amenity.motorcycle_rental">Motociklu noma</string>
|
||||
<string name="type.amenity.charging_station.bicycle">Velosipēdu uzlāde</string>
|
||||
<string name="type.amenity.charging_station.bicycle">Divriteņi</string>
|
||||
<!-- SECTION: Types: Recycling -->
|
||||
<!-- A place where a lifeguard is on duty. -->
|
||||
<string name="type.emergency.lifeguard">Glābējs</string>
|
||||
@@ -42,7 +42,7 @@
|
||||
<string name="type.amenity.car_wash">Automazgātuve</string>
|
||||
<string name="type.amenity.casino">Kazino</string>
|
||||
<string name="type.amenity.charging_station">Uzlādes stacija</string>
|
||||
<string name="type.amenity.charging_station.motorcar">Auto uzlādes stacija</string>
|
||||
<string name="type.amenity.charging_station.motorcar">Mašīnas</string>
|
||||
<string name="type.amenity.cinema">Kinoteātris</string>
|
||||
<string name="type.amenity.clinic">Poliklīnika</string>
|
||||
<string name="type.amenity.college">Koledža</string>
|
||||
@@ -184,4 +184,6 @@
|
||||
<string name="type.railway.disused.tunnel">Neizmantots dzelzceļa tunelis</string>
|
||||
<string name="type.railway.funicular">Funikulieris</string>
|
||||
<string name="type.railway.disused.bridge">Neizmantots dzelzceļa tilts</string>
|
||||
<string name="type.amenity.charging_station.small">Ierobežots vietu skaits</string>
|
||||
<string name="type.amenity.charging_station.motorcycle">Motocikli</string>
|
||||
</resources>
|
||||
|
||||
@@ -1011,7 +1011,7 @@
|
||||
<string name="type.shop.health_food">Helsekostbutikk</string>
|
||||
<string name="type.shop.hearing_aids">Høreapparatbutikk</string>
|
||||
<string name="type.shop.herbalist">Urtebutikk</string>
|
||||
<string name="type.shop.hifi">HiFi lyd</string>
|
||||
<string name="type.shop.hifi">HiFi-butikk</string>
|
||||
<string name="type.shop.houseware">Husholdningsbutikk</string>
|
||||
<string name="type.shop.jewelry">Gullsmed</string>
|
||||
<string name="type.shop.kiosk">Kiosk</string>
|
||||
|
||||
@@ -44,8 +44,8 @@
|
||||
<string name="type.leisure.adult_gaming_centre">Gamingcentrum voor volwassenen</string>
|
||||
<string name="type.leisure.amusement_arcade">Speelhal</string>
|
||||
<string name="type.amenity.charging_station">Oplaadstation</string>
|
||||
<string name="type.amenity.charging_station.bicycle">Oplaadstation voor fietsen</string>
|
||||
<string name="type.amenity.charging_station.motorcar">Oplaadstation voor auto\'s</string>
|
||||
<string name="type.amenity.charging_station.bicycle">Fietsen</string>
|
||||
<string name="type.amenity.charging_station.motorcar">Auto\'s</string>
|
||||
<string name="type.amenity.childcare">Crèche</string>
|
||||
<string name="type.amenity.cinema">Bioscoop</string>
|
||||
<string name="type.leisure.bowling_alley">Bowlingbaan</string>
|
||||
@@ -1505,4 +1505,8 @@
|
||||
<string name="type.tourism.information.tactile_map">Reliëfkaart</string>
|
||||
<string name="type.railway.disused.bridge">Niet meer gebruikte spoorbrug</string>
|
||||
<string name="type.railway.disused.tunnel">Niet meer gebruikte spoortunnel</string>
|
||||
<string name="type.amenity.charging_station.motorcycle">Motorfietsen</string>
|
||||
<string name="type.amenity.charging_station.small">Beperkte capaciteit</string>
|
||||
<string name="type.emergency.disaster_help_point">Hulppunt voor noodrampen</string>
|
||||
<string name="type.emergency.access_point.address">Noodreddingsadres</string>
|
||||
</resources>
|
||||
|
||||
@@ -1084,4 +1084,253 @@
|
||||
<string name="type.railway.subway_entrance.amsterdam">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.ankara">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.athens">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.baku">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.bangkok">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.barcelona">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.beijing">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.bengalore">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.berlin">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.bilbao">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.brasilia">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.brescia">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.brussels">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.bucharest">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.budapest">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.buenos_aires">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.bursa">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.cairo">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.caracas">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.catania">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.changchun">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.chengdu">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.chicago">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.chongqing">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.dalian">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.delhi">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.dnepro">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.dubai">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.ekb">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.fukuoka">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.glasgow">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.guangzhou">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.hamburg">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.helsinki">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.hiroshima">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.hongkong">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.isfahan">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.istanbul">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.izmir">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.kazan">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.kharkiv">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.kiev">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.kobe">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.kolkata">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.kunming">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.kyoto">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.la">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.lausanne">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.lille">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.lima">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.lisboa">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.london">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.lyon">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.madrid">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.malaga">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.manila">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.maracaibo">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.mashhad">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.mecca">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.medellin">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.mexico">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.milan">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.minsk">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.montreal">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.moscow">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.munchen">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.nagoya">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.newyork">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.nnov">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.novosibirsk">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.osaka">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.oslo">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.palma">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.panama">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.paris">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.philadelphia">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.pyongyang">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.rennes">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.rio">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.roma">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.rotterdam">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.samara">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.santiago">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.santo_domingo">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.saopaulo">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.sapporo">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.sendai">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.sf">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.shanghai">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.shenzhen">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.shiraz">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.singapore">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.sofia">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.spb">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.stockholm">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.tabriz">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.taipei">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.taoyuan">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.tashkent">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.tbilisi">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.tehran">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.tianjin">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.tokyo">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.valencia">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.vienna">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.warszawa">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.washington">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.wuhan">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.yerevan">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.subway_entrance.yokohama">Vhod v podzemno železnico</string>
|
||||
<string name="type.railway.tram">Tramvaj</string>
|
||||
<string name="type.railway.tram.bridge">Most tramvaja</string>
|
||||
<string name="type.railway.tram.tunnel">Predor tramvaja</string>
|
||||
<string name="type.railway.tram_stop">Postaja tramvaja</string>
|
||||
<string name="type.route">Trasa</string>
|
||||
<string name="type.route.ferry">Trajektna povezava</string>
|
||||
<string name="type.shop">Trgovina</string>
|
||||
<string name="type.shop.alcohol">Trgovina z alkoholom</string>
|
||||
<string name="type.shop.bakery">Pekarna</string>
|
||||
<string name="type.shop.bathroom_furnishing">Trgovina s kopalniško opremo</string>
|
||||
<string name="type.shop.beauty">Lepotni salon</string>
|
||||
<string name="type.shop.beauty.nails">Salon za nohte</string>
|
||||
<string name="type.shop.beverages">Pivnica</string>
|
||||
<string name="type.shop.bicycle">Kolesarska trgovina</string>
|
||||
<string name="type.shop.bookmaker">Kgnjigoveznica</string>
|
||||
<string name="type.shop.books">Knjigarna</string>
|
||||
<string name="type.shop.butcher">Mesarija</string>
|
||||
<string name="type.shop.cannabis">Trgovina s konopljo</string>
|
||||
<string name="type.shop.car">Trgovina z rabljenimi avtomobili</string>
|
||||
<string name="type.shop.car_parts">Trgovina z avtomobilskimi deli</string>
|
||||
<string name="type.shop.car_repair">Avtomehanična delavnica</string>
|
||||
<string name="type.shop.car_repair.tyres">Vulkanizer</string>
|
||||
<string name="type.shop.caravan">Prodaja avtodomov</string>
|
||||
<string name="type.shop.carpet">Trgovina s preprogami</string>
|
||||
<string name="type.shop.chemist">Drogerija</string>
|
||||
<string name="type.shop.chocolate">Čokoladnica</string>
|
||||
<string name="type.shop.clothes">Trgovina z oblačili</string>
|
||||
<string name="type.shop.coffee">Trgovina s kavo</string>
|
||||
<string name="type.shop.computer">Računalniška trgovina</string>
|
||||
<string name="type.shop.confectionery">Slaščičarna</string>
|
||||
<string name="type.shop.convenience">Trgovina z mešanim blagom</string>
|
||||
<string name="type.shop.copyshop">Kopirnica</string>
|
||||
<string name="type.shop.cosmetics">Kozmetična trgovina</string>
|
||||
<string name="type.shop.curtain">Trgovina z zavesami</string>
|
||||
<string name="type.shop.deli">Delikatesa</string>
|
||||
<string name="type.shop.department_store">Veleblagovnica</string>
|
||||
<string name="type.shop.dry_cleaning">Kemična čistilnica</string>
|
||||
<string name="type.shop.electronics">Trgovina z električno opremo</string>
|
||||
<string name="type.shop.erotic">Erotična trgovina</string>
|
||||
<string name="type.shop.fabric">Trgovina z blagom</string>
|
||||
<string name="type.shop.fashion_accessories">Trgovina z modnimi dodatki</string>
|
||||
<string name="type.shop.florist">Cvetličarstvo</string>
|
||||
<string name="type.shop.funeral_directors">Pogrebna služba</string>
|
||||
<string name="type.shop.furniture">Trgovina s pohištvom</string>
|
||||
<string name="type.shop.garden_centre">Vrtni center</string>
|
||||
<string name="type.shop.gas">Trgovina s plinom</string>
|
||||
<string name="type.shop.gift">Trgovina z darili</string>
|
||||
<string name="type.shop.greengrocer">Trgovina s sadjem in zelenjavo</string>
|
||||
<string name="type.shop.grocery">Špecarija</string>
|
||||
<string name="type.shop.hairdresser">Frizer</string>
|
||||
<string name="type.shop.hardware">Trgovina z računalniško opemo</string>
|
||||
<string name="type.shop.health_food">Trgovina z zdravo hrano</string>
|
||||
<string name="type.shop.hearing_aids">Trgovina s slušnimi pripomočki</string>
|
||||
<string name="type.shop.herbalist">Zeliščarstvo</string>
|
||||
<string name="type.shop.hifi">HiFi Audio</string>
|
||||
<string name="type.shop.jewelry">Trgovina z nakitom</string>
|
||||
<string name="type.shop.kiosk">Trafika</string>
|
||||
<string name="type.shop.kitchen">Trgovina kuhinj</string>
|
||||
<string name="type.shop.laundry">Pralnica</string>
|
||||
<string name="type.shop.massage">Masažni salon</string>
|
||||
<string name="type.shop.mobile_phone">Trgovina s pametnimi telefoni</string>
|
||||
<string name="type.shop.motorcycle">Trgovina z motorji</string>
|
||||
<string name="type.shop.motorcycle_repair">Servis motorjev</string>
|
||||
<string name="type.shop.toys">Trgovina z igračami</string>
|
||||
<string name="type.shop.travel_agency">Potovalno posredništvo</string>
|
||||
<string name="type.shop.tyres">Trgovina s pnevmatikami</string>
|
||||
<string name="type.shop.video_games">Trgovina z videoigricami</string>
|
||||
<string name="type.shop.wine">Trgovina vina</string>
|
||||
<string name="type.shop.agrarian">Kmetijska trgovina</string>
|
||||
<string name="type.shop.antiques">Starinarnica</string>
|
||||
<string name="type.shop.art">Trgovina z umetninami</string>
|
||||
<string name="type.shop.baby_goods">Otroška trgovina</string>
|
||||
<string name="type.shop.bag">Trgovina s torbami</string>
|
||||
<string name="type.shop.bed">Trgovina s posteljami</string>
|
||||
<string name="type.shop.boutique">Butik</string>
|
||||
<string name="type.shop.cheese">Trgovina s sirom</string>
|
||||
<string name="type.shop.watches">Trgovina z urami</string>
|
||||
<string name="type.shop.lighting">Trgovina s svetili</string>
|
||||
<string name="type.disusedbusiness">Opuščeno podjetje</string>
|
||||
<string name="type.sport">Šport</string>
|
||||
<string name="type.sport.badminton">Badminton</string>
|
||||
<string name="type.sport.bowls">Balinišče</string>
|
||||
<string name="type.sport.diving">Višinski skoki v vodo</string>
|
||||
<string name="type.sport.equestrian">Jahalni športi</string>
|
||||
<string name="type.sport.shooting">Streljanje</string>
|
||||
<string name="type.sport.tennis">Igrišče za tenis</string>
|
||||
<string name="type.tourism.aquarium">Akvarij</string>
|
||||
<string name="type.tourism.alpine_hut">Gorska koča</string>
|
||||
<string name="type.tourism.apartment">Počitniški apartma</string>
|
||||
<string name="type.tourism.artwork">Umetnina</string>
|
||||
<string name="type.tourism.artwork.architecture">Arhitekturna umetnina</string>
|
||||
<string name="type.tourism.artwork.painting">Slika</string>
|
||||
<string name="type.tourism.artwork.sculpture">Skulptura</string>
|
||||
<string name="type.attraction.animal">Ograda z živalmi</string>
|
||||
<string name="type.leisure.resort">Letovišče</string>
|
||||
<string name="type.tourism.wilderness_hut">Koča v divjini</string>
|
||||
<string name="type.waterway.dock">Pristaniški dok</string>
|
||||
<string name="type.waterway.drain">Odvodni jarek</string>
|
||||
<string name="type.natural.water.drain">Odtočni jarek</string>
|
||||
<string name="type.emergency.disaster_help_point">Točka za pomoč ob nesrečah</string>
|
||||
<string name="type.leisure.hackerspace">Hackerspace</string>
|
||||
<string name="type.natural.wetland.mangrove">Mangrove</string>
|
||||
<string name="type.shop.farm">Prodajalna domačih pridelkov</string>
|
||||
<string name="type.shop.mall">Nakupovalno središče</string>
|
||||
<string name="type.shop.money_lender">Posojilnica</string>
|
||||
<string name="type.shop.music">Glasbena trgovina</string>
|
||||
<string name="type.shop.musical_instrument">Trgovina z glasbili</string>
|
||||
<string name="type.shop.newsagent">Prodajalna časopisov</string>
|
||||
<string name="type.shop.optician">Optika</string>
|
||||
<string name="type.shop.seafood">Ribarnica</string>
|
||||
<string name="type.shop.second_hand">Trgovina z rabljenimi oblačili</string>
|
||||
<string name="type.shop.shoes">Trgovina s čevlji</string>
|
||||
<string name="type.shop.sports">Športna trgovina</string>
|
||||
<string name="type.shop.stationery">Papirnica</string>
|
||||
<string name="type.shop.supermarket">Supermarket</string>
|
||||
<string name="type.shop.tattoo">Tetovatorski salon</string>
|
||||
<string name="type.shop.tea">Trgovina s čajem</string>
|
||||
<string name="type.shop.telecommunication">Trgovina za telekomunikacije</string>
|
||||
<string name="type.shop.ticket">Prodajalna vstopnic</string>
|
||||
<string name="type.shop.dairy">Trgovina z mlečnimi izdelki</string>
|
||||
<string name="type.shop.electrical">Trgovina z elektroniko</string>
|
||||
<string name="type.shop.fishing">Ribarska trgovina</string>
|
||||
<string name="type.shop.interior_decoration">Trgovina z notranjo opremo</string>
|
||||
<string name="type.shop.lottery">Loterijski listki</string>
|
||||
<string name="type.shop.medical_supply">Trgovina z zdravstveno opremo</string>
|
||||
<string name="type.shop.nutrition_supplements">Trgovina s prehranskimi dopolnili</string>
|
||||
<string name="type.shop.paint">Trgovina z barvami</string>
|
||||
<string name="type.shop.perfumery">Trgovina z dišavami</string>
|
||||
<string name="type.shop.sewing">Šiviljska trgovina</string>
|
||||
<string name="type.shop.storage_rental">Najem skladiščnih prostorov</string>
|
||||
<string name="type.tourism.hostel">Gostišče</string>
|
||||
<string name="type.tourism.hotel">Hotel</string>
|
||||
<string name="type.tourism.information">Turistične informacije</string>
|
||||
<string name="type.tourism.information.board">Informacijska tabla</string>
|
||||
<string name="type.tourism.information.guidepost">Kažipot</string>
|
||||
<string name="type.tourism.information.office">Turistična pisarna</string>
|
||||
<string name="type.wheelchair.limited">Omejen dostop za invalidske vozičke</string>
|
||||
<string name="type.wheelchair.no">Nedostopno za invalidske vozičke</string>
|
||||
<string name="type.wheelchair.yes">Polna dostopnost za invalidske vozičke</string>
|
||||
<string name="type.aerialway.j.bar">Sidra</string>
|
||||
<string name="type.aerialway.magic_carpet">Preproge</string>
|
||||
<string name="type.aerialway.platter">Krožniki</string>
|
||||
</resources>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -27,7 +27,7 @@
|
||||
<string name="type.amenity.bar">Bar</string>
|
||||
<string name="type.amenity.bbq">Barbecue Grill</string>
|
||||
<string name="type.amenity.bench">Bench</string>
|
||||
<string name="type.amenity.bench.backless">Backless Bench</string>
|
||||
<string name="type.amenity.bench.backless">Without Backrest</string>
|
||||
<string name="type.amenity.bicycle_parking">Bicycle Parking</string>
|
||||
<string name="type.amenity.bicycle_parking.covered">Covered Bicycle Parking</string>
|
||||
<string name="type.amenity.boat_rental">Boat Rental</string>
|
||||
|
||||
@@ -116,7 +116,7 @@
|
||||
"historic-wayside_cross": "صليب مسيحي",
|
||||
"historic-wayside_shrine": "ضريح",
|
||||
"leisure-garden": "بستان|مناظر|سياحة|حديقة",
|
||||
"amenity-bench|amenity-bench-backless": "مقعد طويل|مصطبة",
|
||||
"amenity-bench": "مقعد طويل|مصطبة",
|
||||
"amenity-bicycle_rental": "تأجير دراجات",
|
||||
"amenity-bicycle_repair_station": "تصليح الدراجات|اصلاح الدراجات|صيانة الدراجات|تصليح عجل|اصلاح عجل",
|
||||
"amenity-car_sharing": "مشاركة السيارة|تقاسم السيارة",
|
||||
|
||||
@@ -116,7 +116,7 @@
|
||||
"historic-wayside_shrine": "Крайпътно светилище",
|
||||
"leisure-dog_park": "Кучешка зона|домашни любимци",
|
||||
"leisure-garden": "3Градина",
|
||||
"amenity-bench|amenity-bench-backless": "Пейка|скамейка",
|
||||
"amenity-bench": "Пейка|скамейка",
|
||||
"amenity-bicycle_rental": "велосипеди|колелета|под наем",
|
||||
"amenity-car_sharing": "Споделяне|автомобил|кола|превоз",
|
||||
"amenity-car_rental": "Кола|под наем|рент а кар|автопаркинг",
|
||||
|
||||
@@ -117,7 +117,7 @@
|
||||
"historic-wayside_shrine": "Drobná sakrální památka",
|
||||
"leisure-dog_park": "3Psí hřiště",
|
||||
"leisure-garden": "2Zahrada|zajímavost",
|
||||
"amenity-bench|amenity-bench-backless": "Lavička",
|
||||
"amenity-bench": "Lavička",
|
||||
"amenity-bicycle_rental": "2Půjčovna kol|4jízdní kolo|3kolo|3pronájem|3nájemné",
|
||||
"amenity-bicycle_repair_station": "Oprava jízdních kol|4jízdní kolo|3kolo|Oprava",
|
||||
"amenity-car_sharing": "Sdílení aut",
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
"historic-wayside_cross": "Kors ved vejsiden",
|
||||
"historic-wayside_shrine": "Skrin ved vejsiden",
|
||||
"leisure-garden": "2Have",
|
||||
"amenity-bench|amenity-bench-backless": "Bænk",
|
||||
"amenity-bench": "Bænk",
|
||||
"amenity-bicycle_rental": "4Cykeludlejning|udlejning|cykel",
|
||||
"amenity-bicycle_repair_station": "4Cykel reparation",
|
||||
"amenity-car_sharing": "Delebiler",
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
"historic-wayside_shrine": "4Bildstock|4Marterl|4Wegstock|4Helgenstöckli",
|
||||
"leisure-dog_park": "4Hundezone|4Hundeauslaufzone|4Hundeauslauffläche|5Hunde|5Hundepark|U+1F436|U+1F415|U+1F9AE|U+1F429",
|
||||
"leisure-garden": "2Garten",
|
||||
"amenity-bench|amenity-bench-backless": "4Sitzbank|4Parkbank",
|
||||
"amenity-bench": "4Sitzbank|4Parkbank",
|
||||
"amenity-bicycle_rental": "4Fahrradverleih|4Fahrrad|4Fahrradvermietung|4Radfahren|4Radverleih|3Velo|3Veloverleih|3Velovermietung|5Verleih|5Vermietung|U+1F6B2|U+1F510|U+1F6B4|U+1F6B5",
|
||||
"amenity-bicycle_repair_station": "4Fahrradreparatur|4Radservicestation|4Radreparatur|Velomechaniker|Veloreparatur|U+1F6B2|U+1F527|U+1F529|U+26D3|U+1FA9B|U+1F6DE",
|
||||
"amenity-car_sharing": "4Carsharing|4Car-Sharing|4Carsharing-Dienste|5Auto teilen|4Auto|5Fahrgemeinschaft|4Mitfahrzentrale|U+1F690|U+1F697|U+1F698|U+1F699|U+1F6FB|U+1F46B|U+1F465",
|
||||
|
||||
@@ -116,7 +116,7 @@
|
||||
"historic-wayside_cross": "Σταυρός στην άκρη του δρόμου",
|
||||
"historic-wayside_shrine": "Εικονοστάσιο στην άκρη του δρόμου",
|
||||
"leisure-garden": "Κήπος αναψυχής|αξιοθέατα",
|
||||
"amenity-bench|amenity-bench-backless": "Παγκάκι",
|
||||
"amenity-bench": "Παγκάκι",
|
||||
"amenity-bicycle_rental": "Ενοικιάσεις ποδηλάτων|δίκυκλο|ποδήλατο|ενοικιάσεις",
|
||||
"amenity-car_sharing": "Παραχώρηση αυτοκινήτου",
|
||||
"amenity-car_rental": "Ενοικίαση αυτοκινήτου|αυτοκίνητο|ενοικιάσεις|κοινή χρήση",
|
||||
|
||||
@@ -132,7 +132,7 @@
|
||||
"leisure-dance|@category_entertainment": "4Dance|Dancing school",
|
||||
"leisure-garden": "3Garden",
|
||||
"leisure-firepit": "5Firepit",
|
||||
"amenity-bench|amenity-bench-backless": "Bench",
|
||||
"amenity-bench": "Bench",
|
||||
"amenity-boat_rental": "4Boat rental|boat|boats|3Rental",
|
||||
"amenity-bicycle_rental": "4Bicycle rental|cycling|cycle|bike|3Rental|U+1F6B2|U+1F6B4|U+1F6B5|bicycle hire|bike rental",
|
||||
"amenity-bicycle_repair_station": "4Bicycle repair station|cycle|bike|4repair of bicycles",
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user