Compare commits
1 Commits
test/2025.
...
2025.06.25
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fdd37edb46 |
@@ -8,8 +8,6 @@ CoMaps contributors:
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
clover sage
|
||||
Harry Bond <me@hbond.xyz>
|
||||
vikiawv
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
Organic Maps (formerly OMaps) contributors:
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
OpenStreetMap verilerine dayanan ve şeffaflık, gizlilik ve kar amacı gütmeyen olma taahhüdüyle güçlendirilen, topluluk tarafından yönetilen ücretsiz ve açık kaynaklı bir harita uygulaması.
|
||||
|
||||
Topluluğa katılın ve en iyi harita uygulamasını oluşturmaya yardımcı olun
|
||||
• Uygulamayı kullanın ve bunu herkese duyurun
|
||||
• Geri bildirimde bulunun ve sorunları bildirin
|
||||
• Harita verilerini uygulamada veya OpenStreetMap web sitesinde güncelleyin
|
||||
|
||||
<i>Geri bildirimleriniz ve 5 yıldızlı yorumlarınız bizim için en iyi destektir!</i>
|
||||
|
||||
‣ <b>Basit ve Cilalı</b>: sadece işe yarayan, kullanımı kolay temel özellikler.
|
||||
‣ <b>Çevrim dışı odaklı</b>: Cep telefonu hizmetine ihtiyaç duymadan yurtdışı seyahatinizi planlayın ve gezinin, uzun bir yürüyüş sırasında rota noktalarını arayın, vb. Tüm uygulama işlevleri çevrimdışı çalışmak üzere tasarlanmıştır.
|
||||
‣ <b>Gizliliğe Saygı</b>: Uygulama gizlilik düşünülerek tasarlanmıştır; kişileri tanımlamaz, takip etmez ve kişisel bilgi toplamaz. Reklamsız.
|
||||
‣ <b>Pilinizden ve Alanınızdan Tasarruf Edin</b>: Diğer navigasyon uygulamaları gibi pilinizi tüketmez. Kompakt haritalar telefonunuzda değerli alan tasarrufu sağlar.
|
||||
‣ <b>Ücretsiz ve Topluluk Tarafından Oluşturuldu</b>: Sizin gibi insanlar, OpenStreetMap'e yerler ekleyerek, özellikleri test ederek ve geri bildirimde bulunarak ve geliştirme becerilerinizi ve paranızı katkıda bulunarak uygulamanın oluşturulmasına yardımcı oldunuz..
|
||||
‣ <b>Açık ve Şeffaf Karar Alma ve Finansman, Kar Amacı Gütmeyen ve Tamamen Açık Kaynak.</b>
|
||||
|
||||
<b>Ana Özellikleri</b>:
|
||||
• Google Haritalar'da bulunmayan yerleri içeren indirilebilir detaylı haritalar
|
||||
• Vurgulanan yürüyüş parkurları, kamp alanları, su kaynakları, zirveler, kontur çizgileriyle açık hava modu gibi
|
||||
• Yürüyüş yolları ve bisiklet yolları
|
||||
• Restoranlar, benzin istasyonları, oteller, mağazalar, turistik yerler gibi ilgi çekici noktalar ve daha fazlası
|
||||
• İsme veya adrese göre veya ilgi noktası kategorisine göre arama yapın
|
||||
• Yürüyerek, bisikletle veya araçla seyahat edenler için sesli duyurularla navigasyon
|
||||
• Favori yerlerinizi tek bir dokunuşla yer imlerine ekleyin
|
||||
• Çevrim dışı Wikipedia makaleleri
|
||||
• Metro geçiş katmanı ve yönleri
|
||||
• Rota kaydı
|
||||
• Yer imlerini ve parkurları KML, KMZ, GPX formatlarında dışa ve içe aktarın
|
||||
• Geceleri kullanmak için karanlık mod
|
||||
• Temel bir yerleşik düzenleyici kullanarak herkes için harita verilerini iyileştirin
|
||||
• Android Auto desteği
|
||||
|
||||
Lütfen uygulama sorunlarını bildirin, fikir önerin ve <b><i>comaps.app</i></b> web sitesinde topluluğumuza katılın.
|
||||
|
||||
<b>Özgürlük Burada</b>
|
||||
Yolculuğunuzu keşfedin, gizlilik ve topluluk ön planda tutularak dünyayı keşfedin!
|
||||
@@ -44,7 +44,6 @@ import androidx.fragment.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentTransaction;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
import app.organicmaps.api.Const;
|
||||
import app.organicmaps.backup.PeriodicBackupRunner;
|
||||
import app.organicmaps.base.BaseMwmFragmentActivity;
|
||||
import app.organicmaps.base.OnBackPressListener;
|
||||
import app.organicmaps.bookmarks.BookmarkCategoriesActivity;
|
||||
@@ -140,7 +139,6 @@ import static app.organicmaps.leftbutton.LeftButtonsHolder.BUTTON_HELP_CODE;
|
||||
import static app.organicmaps.leftbutton.LeftButtonsHolder.BUTTON_RECORD_TRACK_CODE;
|
||||
import static app.organicmaps.leftbutton.LeftButtonsHolder.BUTTON_SETTINGS_CODE;
|
||||
import static app.organicmaps.util.PowerManagment.POWER_MANAGEMENT_TAG;
|
||||
import static app.organicmaps.util.concurrency.UiThread.runLater;
|
||||
|
||||
public class MwmActivity extends BaseMwmFragmentActivity
|
||||
implements PlacePageActivationListener,
|
||||
@@ -255,8 +253,6 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
||||
@NonNull
|
||||
private DisplayManager mDisplayManager;
|
||||
|
||||
private PeriodicBackupRunner backupRunner;
|
||||
|
||||
ManageRouteBottomSheet mManageRouteBottomSheet;
|
||||
|
||||
private boolean mRemoveDisplayListener = true;
|
||||
@@ -611,8 +607,6 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
||||
*/
|
||||
if (Map.isEngineCreated())
|
||||
onRenderingInitializationFinished();
|
||||
|
||||
backupRunner = new PeriodicBackupRunner(this);
|
||||
}
|
||||
|
||||
private void onSettingsResult(ActivityResult activityResult)
|
||||
@@ -844,7 +838,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
||||
@Override
|
||||
public String getPrefsName()
|
||||
{
|
||||
return getString(R.string.about_help);
|
||||
return getString(R.string.help);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1358,11 +1352,6 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
||||
final String backUrl = Framework.nativeGetParsedBackUrl();
|
||||
if (!TextUtils.isEmpty(backUrl))
|
||||
Utils.openUri(this, Uri.parse(backUrl), null);
|
||||
|
||||
if (backupRunner != null && !backupRunner.isAlreadyChecked() && backupRunner.isTimeToBackup())
|
||||
{
|
||||
backupRunner.doBackup();
|
||||
}
|
||||
}
|
||||
|
||||
@CallSuper
|
||||
@@ -2595,28 +2584,20 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
||||
{
|
||||
if (id.equals(MAIN_MENU_ID))
|
||||
{
|
||||
final String activeLeftButton = buttonsHolder.getActiveButtonCode();
|
||||
ArrayList<MenuBottomSheetItem> items = new ArrayList<>();
|
||||
|
||||
if (!BUTTON_ADD_PLACE_CODE.equals(activeLeftButton))
|
||||
items.add(new MenuBottomSheetItem(R.string.placepage_add_place_button, R.drawable.ic_plus, this::onAddPlaceOptionSelected));
|
||||
|
||||
items.add(new MenuBottomSheetItem(R.string.download_maps, R.drawable.ic_download, getDownloadMapsCounter(), this::onDownloadMapsOptionSelected));
|
||||
|
||||
if (!Config.getDonateUrl(getApplicationContext()).isEmpty())
|
||||
items.add(new MenuBottomSheetItem(R.string.placepage_add_place_button, R.drawable.ic_plus, this::onAddPlaceOptionSelected));
|
||||
items.add(new MenuBottomSheetItem(
|
||||
R.string.download_maps,
|
||||
R.drawable.ic_download,
|
||||
getDownloadMapsCounter(),
|
||||
this::onDownloadMapsOptionSelected
|
||||
));
|
||||
mDonatesUrl = Config.getDonateUrl(getApplicationContext());
|
||||
if (!TextUtils.isEmpty(mDonatesUrl))
|
||||
items.add(new MenuBottomSheetItem(R.string.donate, R.drawable.ic_donate, this::onDonateOptionSelected));
|
||||
|
||||
if (!BUTTON_SETTINGS_CODE.equals(activeLeftButton))
|
||||
items.add(new MenuBottomSheetItem(R.string.settings, R.drawable.ic_settings, this::onSettingsOptionSelected));
|
||||
|
||||
if (!BUTTON_RECORD_TRACK_CODE.equals(activeLeftButton))
|
||||
items.add(new MenuBottomSheetItem(R.string.start_track_recording, R.drawable.ic_track_recording_off, -1, this::onTrackRecordingOptionSelected));
|
||||
|
||||
items.add(new MenuBottomSheetItem(R.string.settings, R.drawable.ic_settings, this::onSettingsOptionSelected));
|
||||
items.add(new MenuBottomSheetItem(R.string.start_track_recording, R.drawable.ic_track_recording_off, -1, this::onTrackRecordingOptionSelected));
|
||||
items.add(new MenuBottomSheetItem(R.string.share_my_location, R.drawable.ic_share, this::onShareLocationOptionSelected));
|
||||
|
||||
if (!BUTTON_HELP_CODE.equals(activeLeftButton))
|
||||
items.add(new MenuBottomSheetItem(R.string.about_help, R.drawable.ic_question_mark, this::showHelp));
|
||||
|
||||
return items;
|
||||
}
|
||||
return null;
|
||||
|
||||
@@ -1,114 +0,0 @@
|
||||
package app.organicmaps.backup;
|
||||
|
||||
import static app.organicmaps.settings.BackupSettingsFragment.MAX_BACKUPS_DEFAULT_COUNT;
|
||||
import static app.organicmaps.settings.BackupSettingsFragment.MAX_BACKUPS_KEY;
|
||||
import static app.organicmaps.util.StorageUtils.isFolderWritable;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.net.Uri;
|
||||
import android.provider.DocumentsContract;
|
||||
import android.text.SpannableStringBuilder;
|
||||
import android.text.Spanned;
|
||||
import android.text.TextUtils;
|
||||
import android.text.style.AbsoluteSizeSpan;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.documentfile.provider.DocumentFile;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import app.organicmaps.R;
|
||||
import app.organicmaps.util.UiUtils;
|
||||
import app.organicmaps.util.log.Logger;
|
||||
|
||||
public class BackupUtils
|
||||
{
|
||||
private static final String BACKUP_PREFIX = "backup_";
|
||||
private static final String BACKUP_EXTENSION = ".kmz";
|
||||
private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd_HH-mm-ss").withLocale(Locale.US);
|
||||
private static final String TAG = BackupUtils.class.getSimpleName();
|
||||
|
||||
public static CharSequence formatReadableFolderPath(Context context, @NonNull Uri uri)
|
||||
{
|
||||
String docId = DocumentsContract.getTreeDocumentId(uri);
|
||||
String volumeId;
|
||||
String subPath = "";
|
||||
|
||||
int colonIndex = docId.indexOf(':');
|
||||
if (colonIndex >= 0)
|
||||
{
|
||||
volumeId = docId.substring(0, colonIndex);
|
||||
subPath = docId.substring(colonIndex + 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
volumeId = docId;
|
||||
}
|
||||
|
||||
String volumeName;
|
||||
if ("primary".equalsIgnoreCase(volumeId))
|
||||
volumeName = context.getString(R.string.maps_storage_shared);
|
||||
else
|
||||
volumeName = context.getString(R.string.maps_storage_removable);
|
||||
|
||||
SpannableStringBuilder sb = new SpannableStringBuilder();
|
||||
sb.append(volumeName + ": \n", new AbsoluteSizeSpan(UiUtils.dimen(context, R.dimen.text_size_body_3)), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
sb.append("/" + subPath, new AbsoluteSizeSpan(UiUtils.dimen(context, R.dimen.text_size_body_4)), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
return sb;
|
||||
}
|
||||
|
||||
public static int getMaxBackups(SharedPreferences prefs)
|
||||
{
|
||||
String rawValue = prefs.getString(MAX_BACKUPS_KEY, String.valueOf(MAX_BACKUPS_DEFAULT_COUNT));
|
||||
try
|
||||
{
|
||||
return Integer.parseInt(rawValue);
|
||||
} catch (NumberFormatException e)
|
||||
{
|
||||
Logger.e(TAG, "Failed to parse max backups count, raw value: " + rawValue + " set to default: " + MAX_BACKUPS_DEFAULT_COUNT, e);
|
||||
prefs.edit()
|
||||
.putString(MAX_BACKUPS_KEY, String.valueOf(MAX_BACKUPS_DEFAULT_COUNT))
|
||||
.apply();
|
||||
return MAX_BACKUPS_DEFAULT_COUNT;
|
||||
}
|
||||
}
|
||||
|
||||
public static DocumentFile createUniqueBackupFolder(@NonNull DocumentFile parentDir, LocalDateTime backupTime)
|
||||
{
|
||||
String folderName = BACKUP_PREFIX + backupTime.format(DATE_FORMATTER);
|
||||
return parentDir.createDirectory(folderName);
|
||||
}
|
||||
|
||||
public static String getBackupName(LocalDateTime backupTime)
|
||||
{
|
||||
String formattedBackupTime = backupTime.format(DATE_FORMATTER);
|
||||
return BACKUP_PREFIX + formattedBackupTime + BACKUP_EXTENSION;
|
||||
}
|
||||
|
||||
public static DocumentFile[] getBackupFolders(DocumentFile parentDir)
|
||||
{
|
||||
List<DocumentFile> backupFolders = new ArrayList<>();
|
||||
for (DocumentFile file : parentDir.listFiles())
|
||||
{
|
||||
if (file.isDirectory() && file.getName() != null && file.getName().startsWith(BACKUP_PREFIX))
|
||||
backupFolders.add(file);
|
||||
}
|
||||
return backupFolders.toArray(new DocumentFile[0]);
|
||||
}
|
||||
|
||||
public static boolean isBackupFolderAvailable(Context context, String storedFolderPath)
|
||||
{
|
||||
return !TextUtils.isEmpty(storedFolderPath) && isFolderWritable(context, storedFolderPath);
|
||||
}
|
||||
}
|
||||
@@ -1,189 +0,0 @@
|
||||
package app.organicmaps.backup;
|
||||
|
||||
import static app.organicmaps.backup.BackupUtils.getBackupName;
|
||||
import static app.organicmaps.backup.BackupUtils.getBackupFolders;
|
||||
import static app.organicmaps.util.StorageUtils.copyFileToDocumentFile;
|
||||
import static app.organicmaps.util.StorageUtils.deleteDirectoryRecursive;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.net.Uri;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.documentfile.provider.DocumentFile;
|
||||
|
||||
import java.io.File;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
import app.organicmaps.bookmarks.data.BookmarkCategory;
|
||||
import app.organicmaps.bookmarks.data.BookmarkManager;
|
||||
import app.organicmaps.bookmarks.data.BookmarkSharingResult;
|
||||
import app.organicmaps.bookmarks.data.KmlFileType;
|
||||
import app.organicmaps.util.concurrency.ThreadPool;
|
||||
import app.organicmaps.util.concurrency.UiThread;
|
||||
import app.organicmaps.util.log.Logger;
|
||||
|
||||
public class LocalBackupManager implements BookmarkManager.BookmarksSharingListener
|
||||
{
|
||||
public static final String TAG = LocalBackupManager.class.getSimpleName();
|
||||
|
||||
private final Activity activity;
|
||||
private final String backupFolderPath;
|
||||
private final int maxBackups;
|
||||
private Listener listener;
|
||||
|
||||
public LocalBackupManager(@NonNull Activity activity, @NonNull String backupFolderPath, int maxBackups)
|
||||
{
|
||||
this.activity = activity;
|
||||
this.backupFolderPath = backupFolderPath;
|
||||
this.maxBackups = maxBackups;
|
||||
}
|
||||
|
||||
public void doBackup()
|
||||
{
|
||||
BookmarkManager.INSTANCE.addSharingListener(this);
|
||||
|
||||
prepareBookmarkCategoriesForSharing();
|
||||
|
||||
if (listener != null)
|
||||
listener.onBackupStarted();
|
||||
}
|
||||
|
||||
public void setListener(@NonNull Listener listener)
|
||||
{
|
||||
this.listener = listener;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPreparedFileForSharing(@NonNull BookmarkSharingResult result)
|
||||
{
|
||||
BookmarkManager.INSTANCE.removeSharingListener(this);
|
||||
|
||||
ThreadPool.getWorker().execute(() -> {
|
||||
ErrorCode errorCode = null;
|
||||
switch (result.getCode())
|
||||
{
|
||||
case BookmarkSharingResult.SUCCESS ->
|
||||
{
|
||||
if (!saveBackup(result))
|
||||
{
|
||||
Logger.e(TAG, "Failed to save backup. See system log above");
|
||||
errorCode = ErrorCode.FILE_ERROR;
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.i(TAG, "Backup was created and saved successfully");
|
||||
}
|
||||
}
|
||||
case BookmarkSharingResult.EMPTY_CATEGORY ->
|
||||
{
|
||||
errorCode = ErrorCode.EMPTY_CATEGORY;
|
||||
Logger.e(TAG, "Failed to create backup. Category is empty");
|
||||
}
|
||||
case BookmarkSharingResult.ARCHIVE_ERROR ->
|
||||
{
|
||||
errorCode = ErrorCode.ARCHIVE_ERROR;
|
||||
Logger.e(TAG, "Failed to create archive of bookmarks");
|
||||
}
|
||||
case BookmarkSharingResult.FILE_ERROR ->
|
||||
{
|
||||
errorCode = ErrorCode.FILE_ERROR;
|
||||
Logger.e(TAG, "Failed create file for archive");
|
||||
}
|
||||
default ->
|
||||
{
|
||||
errorCode = ErrorCode.UNSUPPORTED;
|
||||
Logger.e(TAG, "Failed to create backup. Unknown error");
|
||||
}
|
||||
}
|
||||
|
||||
ErrorCode finalErrorCode = errorCode;
|
||||
UiThread.run(() -> {
|
||||
if (listener != null)
|
||||
{
|
||||
if (finalErrorCode == null)
|
||||
listener.onBackupFinished();
|
||||
else
|
||||
listener.onBackupFailed(finalErrorCode);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
private boolean saveBackup(@NonNull BookmarkSharingResult result)
|
||||
{
|
||||
boolean isSuccess = false;
|
||||
Uri folderUri = Uri.parse(backupFolderPath);
|
||||
try
|
||||
{
|
||||
DocumentFile parentFolder = DocumentFile.fromTreeUri(activity, folderUri);
|
||||
if (parentFolder != null && parentFolder.canWrite())
|
||||
{
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
DocumentFile backupFolder = BackupUtils.createUniqueBackupFolder(parentFolder, now);
|
||||
if (backupFolder != null)
|
||||
{
|
||||
String backupName = getBackupName(now);
|
||||
DocumentFile backupFile = backupFolder.createFile(result.getMimeType(), backupName);
|
||||
if (backupFile != null && copyFileToDocumentFile(activity, new File(result.getSharingPath()), backupFile))
|
||||
{
|
||||
Logger.i(TAG, "Backup saved to " + backupFile.getUri());
|
||||
isSuccess = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.e(TAG, "Failed to create backup folder");
|
||||
}
|
||||
}
|
||||
cleanOldBackups(parentFolder);
|
||||
|
||||
} catch (Exception e)
|
||||
{
|
||||
Logger.e(TAG, "Failed to save backup", e);
|
||||
}
|
||||
return isSuccess;
|
||||
}
|
||||
|
||||
public void cleanOldBackups(DocumentFile parentDir)
|
||||
{
|
||||
DocumentFile[] backupFolders = getBackupFolders(parentDir);
|
||||
if (backupFolders.length > maxBackups)
|
||||
{
|
||||
Arrays.sort(backupFolders, Comparator.comparing(DocumentFile::getName));
|
||||
for (int i = 0; i < backupFolders.length - maxBackups; i++)
|
||||
{
|
||||
Logger.i(TAG, "Delete old backup " + backupFolders[i].getUri());
|
||||
deleteDirectoryRecursive(backupFolders[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void prepareBookmarkCategoriesForSharing()
|
||||
{
|
||||
List<BookmarkCategory> categories = BookmarkManager.INSTANCE.getCategories();
|
||||
long[] categoryIds = new long[categories.size()];
|
||||
for (int i = 0; i < categories.size(); i++)
|
||||
categoryIds[i] = categories.get(i).getId();
|
||||
BookmarkManager.INSTANCE.prepareCategoriesForSharing(categoryIds, KmlFileType.Text);
|
||||
}
|
||||
|
||||
public interface Listener
|
||||
{
|
||||
void onBackupStarted();
|
||||
|
||||
void onBackupFinished();
|
||||
|
||||
void onBackupFailed(ErrorCode errorCode);
|
||||
}
|
||||
|
||||
public enum ErrorCode
|
||||
{
|
||||
EMPTY_CATEGORY,
|
||||
ARCHIVE_ERROR,
|
||||
FILE_ERROR,
|
||||
UNSUPPORTED,
|
||||
}
|
||||
}
|
||||
@@ -1,104 +0,0 @@
|
||||
package app.organicmaps.backup;
|
||||
|
||||
import static app.organicmaps.backup.BackupUtils.getMaxBackups;
|
||||
import static app.organicmaps.backup.BackupUtils.isBackupFolderAvailable;
|
||||
import static app.organicmaps.settings.BackupSettingsFragment.BACKUP_FOLDER_PATH_KEY;
|
||||
import static app.organicmaps.settings.BackupSettingsFragment.BACKUP_INTERVAL_KEY;
|
||||
import static app.organicmaps.settings.BackupSettingsFragment.LAST_BACKUP_TIME_KEY;
|
||||
import static app.organicmaps.util.StorageUtils.isFolderWritable;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.SharedPreferences;
|
||||
|
||||
import androidx.preference.PreferenceManager;
|
||||
|
||||
import app.organicmaps.util.log.Logger;
|
||||
|
||||
public class PeriodicBackupRunner
|
||||
{
|
||||
private final Activity activity;
|
||||
private static final String TAG = PeriodicBackupRunner.class.getSimpleName();
|
||||
private final SharedPreferences prefs;
|
||||
private boolean alreadyChecked = false;
|
||||
|
||||
public PeriodicBackupRunner(Activity activity)
|
||||
{
|
||||
this.activity = activity;
|
||||
this.prefs = PreferenceManager.getDefaultSharedPreferences(activity);
|
||||
}
|
||||
|
||||
public boolean isAlreadyChecked()
|
||||
{
|
||||
return alreadyChecked;
|
||||
}
|
||||
|
||||
public boolean isTimeToBackup()
|
||||
{
|
||||
long intervalMs = getBackupIntervalMs();
|
||||
|
||||
if (intervalMs <= 0)
|
||||
return false;
|
||||
|
||||
long lastBackupTime = prefs.getLong(LAST_BACKUP_TIME_KEY, 0);
|
||||
long now = System.currentTimeMillis();
|
||||
|
||||
alreadyChecked = true;
|
||||
|
||||
return (now - lastBackupTime) >= intervalMs;
|
||||
}
|
||||
|
||||
public void doBackup()
|
||||
{
|
||||
String storedFolderPath = prefs.getString(BACKUP_FOLDER_PATH_KEY, null);
|
||||
|
||||
if (isBackupFolderAvailable(activity, storedFolderPath))
|
||||
{
|
||||
Logger.i(TAG, "Performing periodic backup");
|
||||
performBackup(storedFolderPath, getMaxBackups(prefs));
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.w(TAG, "Backup folder is not writable, passed path: " + storedFolderPath);
|
||||
}
|
||||
}
|
||||
|
||||
private long getBackupIntervalMs()
|
||||
{
|
||||
String defaultValue = "0";
|
||||
try
|
||||
{
|
||||
return Long.parseLong(prefs.getString(BACKUP_INTERVAL_KEY, defaultValue));
|
||||
} catch (NumberFormatException e)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
private void performBackup(String backupFolderPath, int maxBackups)
|
||||
{
|
||||
LocalBackupManager backupManager = new LocalBackupManager(activity, backupFolderPath, maxBackups);
|
||||
backupManager.setListener(new LocalBackupManager.Listener()
|
||||
{
|
||||
@Override
|
||||
public void onBackupStarted()
|
||||
{
|
||||
Logger.i(TAG, "Periodic backup started");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackupFinished()
|
||||
{
|
||||
prefs.edit().putLong(LAST_BACKUP_TIME_KEY, System.currentTimeMillis()).apply();
|
||||
Logger.i(TAG, "Periodic backup finished");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackupFailed(LocalBackupManager.ErrorCode errorCode)
|
||||
{
|
||||
Logger.e(TAG, "Periodic backup was failed with code: " + errorCode);
|
||||
}
|
||||
});
|
||||
|
||||
backupManager.doBackup();
|
||||
}
|
||||
}
|
||||
@@ -69,8 +69,7 @@ public class Metadata implements Parcelable
|
||||
FMD_OUTDOOR_SEATING(48),
|
||||
FMD_NETWORK(49),
|
||||
FMD_CONTACT_FEDIVERSE(50),
|
||||
FMD_CONTACT_BLUESKY(51),
|
||||
FMD_PANORAMAX(52);
|
||||
FMD_CONTACT_BLUESKY(51);
|
||||
private final int mMetaType;
|
||||
|
||||
MetadataType(int metadataType)
|
||||
|
||||
@@ -41,7 +41,7 @@ public class HelpScreen extends BaseMapScreen
|
||||
{
|
||||
final Header.Builder builder = new Header.Builder();
|
||||
builder.setStartHeaderAction(Action.BACK);
|
||||
builder.setTitle(getCarContext().getString(R.string.about_help));
|
||||
builder.setTitle(getCarContext().getString(R.string.help));
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
|
||||
@@ -109,7 +109,7 @@ public class SettingsScreen extends BaseMapScreen
|
||||
private Item createHelpItem()
|
||||
{
|
||||
final Row.Builder builder = new Row.Builder();
|
||||
builder.setTitle(getCarContext().getString(R.string.about_help));
|
||||
builder.setTitle(getCarContext().getString(R.string.help));
|
||||
builder.setOnClickListener(() -> getScreenManager().push(new HelpScreen(getCarContext(), getSurfaceRenderer())));
|
||||
builder.setBrowsable(true);
|
||||
return builder.build();
|
||||
|
||||
@@ -11,6 +11,7 @@ import android.text.style.StyleSpan;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.LayoutRes;
|
||||
import androidx.annotation.NonNull;
|
||||
@@ -27,7 +28,6 @@ import app.organicmaps.util.UiUtils;
|
||||
import app.organicmaps.util.bottomsheet.MenuBottomSheetFragment;
|
||||
import app.organicmaps.util.bottomsheet.MenuBottomSheetItem;
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
import com.google.android.material.textview.MaterialTextView;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
@@ -362,10 +362,10 @@ class DownloaderAdapter extends RecyclerView.Adapter<DownloaderAdapter.ViewHolde
|
||||
private class ItemViewHolder extends BaseInnerViewHolder<CountryItem>
|
||||
{
|
||||
private final DownloaderStatusIcon mStatusIcon;
|
||||
private final MaterialTextView mName;
|
||||
private final MaterialTextView mSubtitle;
|
||||
private final MaterialTextView mFoundName;
|
||||
private final MaterialTextView mSize;
|
||||
private final TextView mName;
|
||||
private final TextView mSubtitle;
|
||||
private final TextView mFoundName;
|
||||
private final TextView mSize;
|
||||
|
||||
private void processClick(boolean clickOnStatus)
|
||||
{
|
||||
@@ -510,7 +510,7 @@ class DownloaderAdapter extends RecyclerView.Adapter<DownloaderAdapter.ViewHolde
|
||||
static class HeaderViewHolder extends BaseInnerViewHolder<String>
|
||||
{
|
||||
@NonNull
|
||||
private final MaterialTextView mTitle;
|
||||
private final TextView mTitle;
|
||||
|
||||
HeaderViewHolder(@NonNull View frame)
|
||||
{
|
||||
|
||||
@@ -2,12 +2,11 @@ package app.organicmaps.downloader;
|
||||
|
||||
import android.util.SparseIntArray;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import androidx.annotation.AttrRes;
|
||||
import androidx.annotation.DrawableRes;
|
||||
|
||||
import com.google.android.material.imageview.ShapeableImageView;
|
||||
|
||||
import app.organicmaps.R;
|
||||
import app.organicmaps.widget.WheelProgressView;
|
||||
import app.organicmaps.util.ThemeUtils;
|
||||
@@ -16,7 +15,7 @@ import app.organicmaps.util.UiUtils;
|
||||
public class DownloaderStatusIcon
|
||||
{
|
||||
private final View mFrame;
|
||||
protected final ShapeableImageView mIcon;
|
||||
protected final ImageView mIcon;
|
||||
private final WheelProgressView mProgress;
|
||||
|
||||
private static final SparseIntArray sIconsCache = new SparseIntArray();
|
||||
|
||||
@@ -43,7 +43,7 @@ public class CopyrightFragment extends BaseMwmFragment
|
||||
{
|
||||
if (!mDelegate.onBackPressed())
|
||||
{
|
||||
((HelpActivity) requireActivity()).stackFragment(HelpFragment.class, getString(R.string.about_help), null);
|
||||
((HelpActivity) requireActivity()).stackFragment(HelpFragment.class, getString(R.string.help), null);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
@@ -43,21 +43,15 @@ public class LeftButtonsHolder
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public String getActiveButtonCode()
|
||||
public LeftButton getActiveButton()
|
||||
{
|
||||
String activeButtonCode = prefs.getString(leftButtonPreferenceKey, DEFAULT_BUTTON_CODE);
|
||||
if (!TextUtils.isEmpty(activeButtonCode))
|
||||
return activeButtonCode;
|
||||
return availableButtons.get(activeButtonCode);
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public LeftButton getActiveButton()
|
||||
{
|
||||
return availableButtons.get(getActiveButtonCode());
|
||||
}
|
||||
|
||||
public Collection<LeftButton> getAllButtons()
|
||||
{
|
||||
return availableButtons.values();
|
||||
|
||||
@@ -213,7 +213,7 @@ public class MapButtonsController extends Fragment
|
||||
)
|
||||
{
|
||||
leftButtonView.setImageResource(R.drawable.ic_christmas_tree);
|
||||
leftButtonView.setContentDescription(getString(R.string.about_help));
|
||||
leftButtonView.setContentDescription(getString(R.string.help));
|
||||
leftButtonView.setOnClickListener((v) -> mMapButtonClickListener.onMapButtonClick(MapButtons.help));
|
||||
}
|
||||
else
|
||||
|
||||
@@ -266,8 +266,7 @@ public class NavigationController implements TrafficManager.TrafficCallback,
|
||||
mSpeedLimit.setSpeedLimit(0, false);
|
||||
return;
|
||||
}
|
||||
final int fSpeedLimit = StringUtils.nativeFormatSpeed(info.speedLimitMps);
|
||||
final boolean speedLimitExceeded = fSpeedLimit < StringUtils.nativeFormatSpeed(location.getSpeed());
|
||||
mSpeedLimit.setSpeedLimit(fSpeedLimit, speedLimitExceeded);
|
||||
final boolean speedLimitExceeded = info.speedLimitMps < location.getSpeed();
|
||||
mSpeedLimit.setSpeedLimit(StringUtils.nativeFormatSpeed(info.speedLimitMps), speedLimitExceeded);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,384 +0,0 @@
|
||||
package app.organicmaps.settings;
|
||||
|
||||
import static app.organicmaps.backup.BackupUtils.formatReadableFolderPath;
|
||||
import static app.organicmaps.backup.BackupUtils.getMaxBackups;
|
||||
import static app.organicmaps.backup.BackupUtils.isBackupFolderAvailable;
|
||||
import static app.organicmaps.util.StorageUtils.isFolderWritable;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import androidx.activity.result.ActivityResultLauncher;
|
||||
import androidx.activity.result.contract.ActivityResultContracts;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.preference.ListPreference;
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceManager;
|
||||
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
|
||||
import java.text.DateFormat;
|
||||
|
||||
import app.organicmaps.R;
|
||||
import app.organicmaps.backup.LocalBackupManager;
|
||||
import app.organicmaps.util.log.Logger;
|
||||
|
||||
|
||||
public class BackupSettingsFragment
|
||||
extends BaseXmlSettingsFragment
|
||||
{
|
||||
private ActivityResultLauncher<Intent> folderPickerLauncher;
|
||||
|
||||
private static final String TAG = LocalBackupManager.class.getSimpleName();
|
||||
public static final String BACKUP_FOLDER_PATH_KEY = "backup_location";
|
||||
public static final String LAST_BACKUP_TIME_KEY = "last_backup_time";
|
||||
private static final String BACKUP_NOW_KEY = "backup_now";
|
||||
public static final String BACKUP_INTERVAL_KEY = "backup_history_interval";
|
||||
public static final String MAX_BACKUPS_KEY = "backup_history_count";
|
||||
public static final int MAX_BACKUPS_DEFAULT_COUNT = 10;
|
||||
public static final String DEFAULT_BACKUP_INTERVAL = "86400000"; // 24 hours in ms
|
||||
|
||||
private LocalBackupManager mBackupManager;
|
||||
private SharedPreferences prefs;
|
||||
|
||||
@Override
|
||||
protected int getXmlResources()
|
||||
{
|
||||
return R.xml.prefs_backup;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@SuppressWarnings("NotNullFieldNotInitialized")
|
||||
Preference backupLocationOption;
|
||||
@NonNull
|
||||
@SuppressWarnings("NotNullFieldNotInitialized")
|
||||
ListPreference backupIntervalOption;
|
||||
@NonNull
|
||||
@SuppressWarnings("NotNullFieldNotInitialized")
|
||||
Preference maxBackupsOption;
|
||||
@NonNull
|
||||
@SuppressWarnings("NotNullFieldNotInitialized")
|
||||
Preference backupNowOption;
|
||||
@NonNull
|
||||
@SuppressWarnings("NotNullFieldNotInitialized")
|
||||
Preference advancedCategory;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
folderPickerLauncher = registerForActivityResult(
|
||||
new ActivityResultContracts.StartActivityForResult(),
|
||||
result -> {
|
||||
boolean isSuccess = false;
|
||||
|
||||
String lastFolderPath = prefs.getString(BACKUP_FOLDER_PATH_KEY, null);
|
||||
|
||||
if (result.getResultCode() == Activity.RESULT_OK)
|
||||
{
|
||||
Intent data = result.getData();
|
||||
Logger.i(TAG, "Folder selection result: " + data);
|
||||
if (data == null)
|
||||
return;
|
||||
|
||||
Uri uri = data.getData();
|
||||
if (uri != null)
|
||||
{
|
||||
takePersistableUriPermission(uri);
|
||||
Logger.i(TAG, "Backup location changed to " + uri);
|
||||
prefs.edit().putString(BACKUP_FOLDER_PATH_KEY, uri.toString()).apply();
|
||||
setFormattedBackupPath(uri);
|
||||
|
||||
runBackup();
|
||||
|
||||
isSuccess = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.w(TAG, "Folder selection result is null");
|
||||
}
|
||||
}
|
||||
else if (result.getResultCode() == Activity.RESULT_CANCELED)
|
||||
{
|
||||
Logger.w(TAG, "User canceled folder selection");
|
||||
if (TextUtils.isEmpty(lastFolderPath))
|
||||
{
|
||||
prefs.edit().putString(BACKUP_FOLDER_PATH_KEY, null).apply();
|
||||
Logger.i(TAG, "Backup settings reset");
|
||||
initBackupLocationOption();
|
||||
}
|
||||
else if (isFolderWritable(requireActivity(), lastFolderPath))
|
||||
{
|
||||
Logger.i(TAG, "Backup location not changed, using previous value " + lastFolderPath);
|
||||
isSuccess = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.e(TAG, "Backup location not changed, but last folder is not writable: " + lastFolderPath);
|
||||
}
|
||||
}
|
||||
|
||||
resetLastBackupTime();
|
||||
updateStatusSummaryOption();
|
||||
|
||||
Logger.i(TAG, "Folder selection result: " + isSuccess);
|
||||
applyAdvancedSettings(isSuccess);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreatePreferences(Bundle savedInstanceState, String rootKey)
|
||||
{
|
||||
super.onCreatePreferences(savedInstanceState, rootKey);
|
||||
|
||||
prefs = PreferenceManager.getDefaultSharedPreferences(requireContext());
|
||||
backupLocationOption = findPreference(BACKUP_FOLDER_PATH_KEY);
|
||||
backupIntervalOption = findPreference(BACKUP_INTERVAL_KEY);
|
||||
maxBackupsOption = findPreference(MAX_BACKUPS_KEY);
|
||||
backupNowOption = findPreference(BACKUP_NOW_KEY);
|
||||
|
||||
initBackupLocationOption();
|
||||
initBackupIntervalOption();
|
||||
initMaxBackupsOption();
|
||||
initBackupNowOption();
|
||||
}
|
||||
|
||||
|
||||
private void initBackupLocationOption()
|
||||
{
|
||||
String storedFolderPath = prefs.getString(BACKUP_FOLDER_PATH_KEY, null);
|
||||
boolean isEnabled = false;
|
||||
if (!TextUtils.isEmpty(storedFolderPath))
|
||||
{
|
||||
if (isFolderWritable(requireContext(), storedFolderPath))
|
||||
{
|
||||
setFormattedBackupPath(Uri.parse(storedFolderPath));
|
||||
isEnabled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.e(TAG, "Backup location is not available, path: " + storedFolderPath);
|
||||
showBackupErrorAlertDialog(requireContext().getString(R.string.dialog_report_error_missing_folder));
|
||||
backupLocationOption.setSummary(requireContext().getString(R.string.pref_backup_now_summary_folder_unavailable));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
backupLocationOption.setSummary(requireContext().getString(R.string.pref_backup_location_summary_initial));
|
||||
}
|
||||
|
||||
applyAdvancedSettings(isEnabled);
|
||||
|
||||
backupLocationOption.setOnPreferenceClickListener(preference -> {
|
||||
launchFolderPicker();
|
||||
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
private void setFormattedBackupPath(@NonNull Uri uri)
|
||||
{
|
||||
backupLocationOption.setSummary(formatReadableFolderPath(requireContext(), uri));
|
||||
}
|
||||
|
||||
private void initBackupIntervalOption()
|
||||
{
|
||||
String backupInterval = prefs.getString(BACKUP_INTERVAL_KEY, DEFAULT_BACKUP_INTERVAL);
|
||||
|
||||
CharSequence entry = getEntryForValue(backupIntervalOption, backupInterval);
|
||||
if (entry != null)
|
||||
backupIntervalOption.setSummary(entry);
|
||||
|
||||
backupIntervalOption.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
CharSequence newEntry = getEntryForValue(backupIntervalOption, newValue.toString());
|
||||
Logger.i(TAG, "auto backup interval changed to " + newEntry);
|
||||
if (newEntry != null)
|
||||
backupIntervalOption.setSummary(newEntry);
|
||||
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
private void initMaxBackupsOption()
|
||||
{
|
||||
maxBackupsOption.setSummary(String.valueOf(getMaxBackups(prefs)));
|
||||
|
||||
maxBackupsOption.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
maxBackupsOption.setSummary(newValue.toString());
|
||||
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
private void initBackupNowOption()
|
||||
{
|
||||
updateStatusSummaryOption();
|
||||
backupNowOption.setOnPreferenceClickListener(preference -> {
|
||||
runBackup();
|
||||
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
private void updateStatusSummaryOption()
|
||||
{
|
||||
long lastBackupTime = prefs.getLong(LAST_BACKUP_TIME_KEY, 0L);
|
||||
|
||||
String summary;
|
||||
if (lastBackupTime > 0)
|
||||
{
|
||||
String time = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT).format(lastBackupTime);
|
||||
summary = requireContext().getString(R.string.pref_backup_status_summary_success) + ": " + time;
|
||||
}
|
||||
else
|
||||
{
|
||||
summary = requireContext().getString(R.string.pref_backup_now_summary);
|
||||
}
|
||||
|
||||
backupNowOption.setSummary(summary);
|
||||
}
|
||||
|
||||
private void resetLastBackupTime()
|
||||
{
|
||||
prefs.edit().remove(LAST_BACKUP_TIME_KEY).apply();
|
||||
}
|
||||
|
||||
private void applyAdvancedSettings(boolean isBackupEnabled)
|
||||
{
|
||||
backupIntervalOption.setVisible(isBackupEnabled);
|
||||
maxBackupsOption.setVisible(isBackupEnabled);
|
||||
backupNowOption.setVisible(isBackupEnabled);
|
||||
}
|
||||
|
||||
|
||||
private void runBackup()
|
||||
{
|
||||
String currentFolderPath = prefs.getString(BACKUP_FOLDER_PATH_KEY, null);
|
||||
if (!TextUtils.isEmpty(currentFolderPath))
|
||||
{
|
||||
if (isFolderWritable(requireContext(), currentFolderPath))
|
||||
{
|
||||
mBackupManager = new LocalBackupManager(requireActivity(), currentFolderPath, getMaxBackups(prefs));
|
||||
mBackupManager.setListener(new LocalBackupManager.Listener()
|
||||
{
|
||||
@Override
|
||||
public void onBackupStarted()
|
||||
{
|
||||
Logger.i(TAG, "Manual backup started");
|
||||
|
||||
backupNowOption.setEnabled(false);
|
||||
backupNowOption.setSummary(R.string.pref_backup_now_summary_progress);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackupFinished()
|
||||
{
|
||||
Logger.i(TAG, "Manual backup successful");
|
||||
|
||||
backupNowOption.setEnabled(true);
|
||||
backupNowOption.setSummary(R.string.pref_backup_now_summary_ok);
|
||||
|
||||
prefs.edit().putLong(LAST_BACKUP_TIME_KEY, System.currentTimeMillis()).apply();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackupFailed(LocalBackupManager.ErrorCode errorCode)
|
||||
{
|
||||
String errorMessage = switch (errorCode)
|
||||
{
|
||||
case EMPTY_CATEGORY -> requireContext().getString(R.string.pref_backup_now_summary_empty_lists);
|
||||
default -> requireContext().getString(R.string.pref_backup_now_summary_failed);
|
||||
};
|
||||
|
||||
Logger.e(TAG, "Manual backup was failed with code: " + errorCode);
|
||||
|
||||
backupNowOption.setEnabled(true);
|
||||
backupNowOption.setSummary(errorMessage);
|
||||
|
||||
showBackupErrorAlertDialog(requireContext().getString(R.string.dialog_report_error_with_logs));
|
||||
}
|
||||
});
|
||||
|
||||
mBackupManager.doBackup();
|
||||
}
|
||||
else
|
||||
{
|
||||
backupNowOption.setSummary(R.string.pref_backup_now_summary_folder_unavailable);
|
||||
showBackupErrorAlertDialog(requireContext().getString(R.string.dialog_report_error_missing_folder));
|
||||
Logger.e(TAG, "Manual backup error: folder " + currentFolderPath + " unavailable");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
backupNowOption.setSummary(R.string.pref_backup_now_summary_folder_unavailable);
|
||||
Logger.e(TAG, "Manual backup error: no folder selected");
|
||||
}
|
||||
}
|
||||
|
||||
private void launchFolderPicker()
|
||||
{
|
||||
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
|
||||
intent.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
|
||||
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
|
||||
intent.putExtra("android.content.extra.SHOW_ADVANCED", true);
|
||||
|
||||
PackageManager packageManager = requireActivity().getPackageManager();
|
||||
if (intent.resolveActivity(packageManager) != null)
|
||||
folderPickerLauncher.launch(intent);
|
||||
else
|
||||
showNoFileManagerError();
|
||||
}
|
||||
|
||||
private void showNoFileManagerError()
|
||||
{
|
||||
new MaterialAlertDialogBuilder(requireActivity())
|
||||
.setMessage(R.string.error_no_file_manager_app)
|
||||
.setPositiveButton(android.R.string.ok, (dialog, which) -> dialog.dismiss())
|
||||
.show();
|
||||
}
|
||||
|
||||
private void showBackupErrorAlertDialog(String message)
|
||||
{
|
||||
requireActivity().runOnUiThread(() -> {
|
||||
new MaterialAlertDialogBuilder(requireActivity())
|
||||
.setTitle(R.string.pref_backup_now_summary_failed)
|
||||
.setMessage(message)
|
||||
.setPositiveButton(android.R.string.ok, (dialog, which) -> dialog.dismiss())
|
||||
.show();
|
||||
});
|
||||
}
|
||||
|
||||
private void takePersistableUriPermission(Uri uri)
|
||||
{
|
||||
requireContext().getContentResolver().takePersistableUriPermission(
|
||||
uri,
|
||||
Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION
|
||||
);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static CharSequence getEntryForValue(@NonNull ListPreference listPref, @NonNull CharSequence value)
|
||||
{
|
||||
CharSequence[] entryValues = listPref.getEntryValues();
|
||||
CharSequence[] entries = listPref.getEntries();
|
||||
|
||||
if (entryValues == null || entries == null)
|
||||
return null;
|
||||
|
||||
for (int i = 0; i < entryValues.length; i++)
|
||||
{
|
||||
if (entryValues[i].equals(value))
|
||||
return entries[i];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -184,15 +184,15 @@ public class SettingsPrefsFragment extends BaseXmlSettingsFragment implements La
|
||||
{
|
||||
getSettingsActivity().stackFragment(VoiceInstructionsSettingsFragment.class, getString(R.string.pref_tts_enable_title), null);
|
||||
}
|
||||
else if (key.equals(getString(R.string.pref_help)))
|
||||
{
|
||||
startActivity(new Intent(requireActivity(), HelpActivity.class));
|
||||
}
|
||||
else if (key.equals(getString(R.string.pref_map_locale)))
|
||||
{
|
||||
LanguagesFragment langFragment = (LanguagesFragment)getSettingsActivity().stackFragment(LanguagesFragment.class, getString(R.string.change_map_locale), null);
|
||||
langFragment.setListener(this);
|
||||
}
|
||||
else if (key.equals(getString(R.string.pref_backup)))
|
||||
{
|
||||
getSettingsActivity().stackFragment(BackupSettingsFragment.class, getString(R.string.pref_backup_title), null);
|
||||
}
|
||||
}
|
||||
return super.onPreferenceTreeClick(preference);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package app.organicmaps.util;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
@@ -11,13 +10,10 @@ import android.provider.DocumentsContract;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.core.content.FileProvider;
|
||||
import androidx.documentfile.provider.DocumentFile;
|
||||
|
||||
import app.organicmaps.BuildConfig;
|
||||
import app.organicmaps.util.log.Logger;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.FilenameFilter;
|
||||
import java.io.IOException;
|
||||
@@ -327,76 +323,4 @@ public class StorageUtils
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean copyFileToDocumentFile(
|
||||
@NonNull Activity activity,
|
||||
@NonNull File sourceFile,
|
||||
@NonNull DocumentFile targetFile
|
||||
)
|
||||
{
|
||||
try (
|
||||
InputStream in = new FileInputStream(sourceFile);
|
||||
OutputStream out = activity.getContentResolver().openOutputStream(targetFile.getUri())
|
||||
)
|
||||
{
|
||||
if (out == null)
|
||||
{
|
||||
Logger.e(TAG, "Failed to open output stream for " + targetFile.getUri());
|
||||
return false;
|
||||
}
|
||||
|
||||
byte[] buffer = new byte[8192];
|
||||
int length;
|
||||
|
||||
while ((length = in.read(buffer)) > 0)
|
||||
out.write(buffer, 0, length);
|
||||
|
||||
out.flush();
|
||||
return true;
|
||||
} catch (IOException e)
|
||||
{
|
||||
Logger.e(TAG, "Failed to copy file from " + sourceFile.getAbsolutePath() + " to " + targetFile.getUri(), e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static void deleteDirectoryRecursive(@NonNull DocumentFile dir)
|
||||
{
|
||||
try
|
||||
{
|
||||
for (DocumentFile file : dir.listFiles())
|
||||
{
|
||||
if (file.isDirectory())
|
||||
deleteDirectoryRecursive(file);
|
||||
else
|
||||
file.delete();
|
||||
}
|
||||
dir.delete();
|
||||
} catch (Exception e)
|
||||
{
|
||||
Logger.e(TAG, "Failed to delete directory: " + dir.getUri(), e);
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isFolderWritable(Context context, String folderPath)
|
||||
{
|
||||
try
|
||||
{
|
||||
Uri folderUri = Uri.parse(folderPath);
|
||||
DocumentFile folder = DocumentFile.fromTreeUri(context, folderUri);
|
||||
if (folder != null && folder.canWrite())
|
||||
{
|
||||
DocumentFile tempFile = folder.createFile("application/octet-stream", "temp_file");
|
||||
if (tempFile != null)
|
||||
{
|
||||
tempFile.delete();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} catch (Exception e)
|
||||
{
|
||||
Logger.e(TAG, "Failed to check if folder is writable: " + folderPath, e);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,9 +56,6 @@ public class PlacePageLinksFragment extends Fragment implements Observer<MapObje
|
||||
private View mWikimedia;
|
||||
private TextView mTvWikimedia;
|
||||
|
||||
private View mPanoramax;
|
||||
private TextView mTvPanoramax;
|
||||
|
||||
private PlacePageViewModel mViewModel;
|
||||
private MapObject mMapObject;
|
||||
|
||||
@@ -166,11 +163,6 @@ public class PlacePageLinksFragment extends Fragment implements Observer<MapObje
|
||||
mTvLinePage = mFrame.findViewById(R.id.tv__place_line_page);
|
||||
mLinePage.setOnClickListener((v) -> openUrl(Metadata.MetadataType.FMD_CONTACT_LINE));
|
||||
mLinePage.setOnLongClickListener((v) -> copyUrl(mLinePage, Metadata.MetadataType.FMD_CONTACT_LINE));
|
||||
|
||||
mPanoramax = mFrame.findViewById(R.id.ll__place_panoramax);
|
||||
mTvPanoramax = mFrame.findViewById(R.id.tv__place_panoramax);
|
||||
mPanoramax.setOnClickListener((v) -> openUrl(Metadata.MetadataType.FMD_PANORAMAX));
|
||||
mTvPanoramax.setOnLongClickListener((v) -> copyUrl(mPanoramax, Metadata.MetadataType.FMD_PANORAMAX));
|
||||
}
|
||||
|
||||
private void openUrl(Metadata.MetadataType type)
|
||||
@@ -234,9 +226,6 @@ public class PlacePageLinksFragment extends Fragment implements Observer<MapObje
|
||||
|
||||
final String line = mMapObject.getMetadata(Metadata.MetadataType.FMD_CONTACT_LINE);
|
||||
refreshMetadataOrHide(line, mLinePage, mTvLinePage);
|
||||
|
||||
final String panoramax = mMapObject.getMetadata(Metadata.MetadataType.FMD_PANORAMAX);
|
||||
refreshMetadataOrHide(panoramax, mPanoramax, mTvPanoramax);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<include
|
||||
layout="@layout/toolbar_extended"/>
|
||||
|
||||
<com.google.android.material.card.MaterialCardView
|
||||
<androidx.cardview.widget.CardView
|
||||
android:layout_width="@dimen/settings_width"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginTop="?actionBarSize"
|
||||
@@ -18,6 +18,6 @@
|
||||
style="@style/MwmWidget.FrameLayout.Elevation"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"/>
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
</androidx.cardview.widget.CardView>
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
android:layout_marginEnd="@dimen/margin_base"
|
||||
android:layout_centerVertical="true"/>
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
<TextView
|
||||
android:id="@+id/size"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
@@ -37,7 +37,7 @@
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_toEndOf="@id/downloader_status_frame"
|
||||
android:layout_toStartOf="@id/size">
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
<TextView
|
||||
android:id="@+id/found_name"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
@@ -46,7 +46,7 @@
|
||||
tools:text="Крымск"
|
||||
tools:background="#60FF00FF"/>
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
<TextView
|
||||
android:id="@+id/name"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
@@ -54,7 +54,7 @@
|
||||
tools:text="Донецкая область"
|
||||
tools:background="#40FF0000"/>
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
<TextView
|
||||
android:id="@+id/subtitle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
tools:background="#400000FF">
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
<TextView
|
||||
android:id="@+id/title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
wheel:wheelSecondaryColor="?dividerHorizontal"
|
||||
wheel:wheelThickness="@dimen/margin_eighth"/>
|
||||
|
||||
<com.google.android.material.imageview.ShapeableImageView
|
||||
<ImageView
|
||||
android:id="@+id/downloader_status"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
|
||||
@@ -21,5 +21,4 @@
|
||||
<include layout="@layout/place_page_line" />
|
||||
<include layout="@layout/place_page_bluesky" />
|
||||
<include layout="@layout/place_page_wikimedia" />
|
||||
<include layout="@layout/place_page_panoramax" />
|
||||
</LinearLayout>
|
||||
@@ -1,25 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/ll__place_panoramax"
|
||||
style="@style/PlacePageItemFrame"
|
||||
android:tag="website"
|
||||
tools:background="#20FF0000"
|
||||
tools:visibility="visible">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv__place_panoramax"
|
||||
style="@style/PlacePageMetadataIcon"
|
||||
app:srcCompat="@drawable/ic_panoramax"
|
||||
app:tint="?colorAccent"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv__place_panoramax"
|
||||
android:textAlignment="viewStart"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAppearance="@style/MwmTextAppearance.PlacePage.Accent"
|
||||
tools:text="@string/panoramax"/>
|
||||
</LinearLayout>
|
||||
@@ -503,7 +503,7 @@
|
||||
<!-- Text in About and OSM Login screens. First %@ is replaced by a local, human readable date. -->
|
||||
<string name="osm_presentation">بيانات OpenStreetMap التي أنشأها المجتمع اعتبارًا من %s. تعرف على المزيد حول كيفية تعديل الخريطة وتحديثها على OpenStreetMap.org</string>
|
||||
<!-- OSM explanation on Android login screen -->
|
||||
<string name="login_osm_presentation">OpenStreetMap.org (OSM) هو مشروع مجتمعي لبناء خريطة مجانية ومفتوحة. إنه المصدر الرئيسي لبيانات الخرائط في CoMaps ويعمل على غرار ويكيبيديا. يمكنك إضافة الأماكن أو تعديلها وتصبح متاحة لملايين المستخدمين في جميع أنحاء العالم.\nنضم إلى المجتمع وساعد في إنشاء خريطة أفضل للجميع!</string>
|
||||
<string name="login_osm_presentation">OpenStreetMap.org (OSM) هو مشروع مجتمعي لبناء خريطة مجانية ومفتوحة. إنه المصدر الرئيسي لبيانات الخرائط في الخرائط العضوية ويعمل على غرار ويكيبيديا. يمكنك إضافة الأماكن أو تعديلها وتصبح متاحة لملايين المستخدمين في جميع أنحاء العالم. نضم إلى المجتمع وساعد في إنشاء خريطة أفضل للجميع!</string>
|
||||
<string name="login_to_make_edits_visible">أنشئ حساباً على OpenStreetMap أو سجّل الدخول لنشر تعديلاتك على الخريطة للعالم.</string>
|
||||
<!-- Downloaded 10 **of** 20 <- it is that "of" -->
|
||||
<string name="downloader_of">%1$d من%2$d</string>
|
||||
@@ -519,7 +519,7 @@
|
||||
<!-- Title for OSM note section in the editor -->
|
||||
<string name="editor_other_info">ملاحظة لمتطوعي OpenStreetMap (اختياري)</string>
|
||||
<!-- Hint of the input field in the OSM note section of the editor -->
|
||||
<string name="editor_note_hint">وصف الأخطاء على الخريطة أو الأشياء التي لا يمكن تحريرها باستخدام CoMaps</string>
|
||||
<string name="editor_note_hint">وصف الأخطاء على الخريطة أو الأشياء التي لا يمكن تحريرها باستخدام الخرائط العضوية</string>
|
||||
<!-- Information about OSM at the top of the editing page -->
|
||||
<string name="editor_about_osm">يتم تحميل تعديلاتك على قاعدة البيانات العامة <a href="https://wiki.openstreetmap.org/wiki/Ar:About_OpenStreetMap">OpenStreetMap</a>. يرجى عدم إضافة معلومات شخصية أو محمية بحقوق الطبع والنشر.</string>
|
||||
<string name="editor_more_about_osm">المزيد عن خريطة الشارع المفتوحة</string>
|
||||
@@ -890,5 +890,4 @@
|
||||
<string name="telegram_url">https://t.me/CoMapsApp</string>
|
||||
<string name="tts_info_link">https://www.comaps.app/support/tts-configuration-guide-for-android</string>
|
||||
<string name="instagram_url">https://www.instagram.com/comapscommunity</string>
|
||||
<string name="wikimedia_commons">ويكيميديا كومنز</string>
|
||||
</resources>
|
||||
|
||||
@@ -181,5 +181,4 @@
|
||||
<string name="osm_wiki_about_url">https://wiki.openstreetmap.org/wiki/About_OpenStreetMap</string>
|
||||
<string name="tts_info_link">https://www.comaps.app/support/tts-configuration-guide-for-android/</string>
|
||||
<string name="instagram_url">https://www.instagram.com/comapscommunity</string>
|
||||
<string name="wikimedia_commons">Wikimedia Commons</string>
|
||||
</resources>
|
||||
|
||||
@@ -671,7 +671,7 @@
|
||||
<string name="power_managment_setting_never">Heç vaxt</string>
|
||||
<string name="power_managment_setting_auto">Avtomatik</string>
|
||||
<string name="power_managment_setting_manual_max">Maksimum enerji qənaəti</string>
|
||||
<string name="enable_logging_warning_message">Yardım dialoq qutusunda “Problemi bildir” istifadə etməklə probleminizlə bağlı ətraflı diaqnostik jurnalları qeyd etmək və bizə göndərmək üçün bu seçimi müvəqqəti aktivləşdirin. Qeydlərə məkan məlumatı daxil ola bilər.</string>
|
||||
<string name="enable_logging_warning_message">Yardım dialoq qutusunda “Problemi bildir” istifadə etməklə probleminizlə bağlı ətraflı diaqnostik jurnalları qeyd etmək və bizə göndərmək üçün bu seçimi müvəqqəti aktivləşdirin. Qeydlərə məkan məlumatı daxil ola bilər</string>
|
||||
<string name="access_rules_author_only">Onlayn redaktə</string>
|
||||
<string name="driving_options_title">Marşrutlaşdırma seçimləri</string>
|
||||
<!-- Recommended length for CarPlay and Android Auto is around 25-27 characters -->
|
||||
@@ -682,7 +682,7 @@
|
||||
<string name="avoid_ferry">Bərə keçidlərindən çəkinin</string>
|
||||
<string name="avoid_motorways">Magistral yoldan çəkinin</string>
|
||||
<string name="unable_to_calc_alert_title">Marşrutu hesablamaq mümkün deyil</string>
|
||||
<string name="unable_to_calc_alert_subtitle">Təəssüf ki, seçdiyiniz seçimlərə görə marşrut tapa bilmədik. Seçimləri dəyişdirin və yenidən cəhd edin.</string>
|
||||
<string name="unable_to_calc_alert_subtitle">Təəssüf ki, seçdiyiniz seçimlərə görə marşrut tapa bilmədik. Seçimləri dəyişdirin və yenidən cəhd edin</string>
|
||||
<string name="define_to_avoid_btn">Qarşısını almaq üçün yolları müəyyənləşdirin</string>
|
||||
<string name="change_driving_options_btn">Sürmə seçimləri aktiv edildi</string>
|
||||
<string name="toll_road">Ücrətli yol</string>
|
||||
@@ -843,5 +843,4 @@
|
||||
<string name="telegram_url">https://t.me/CoMapsApp/</string>
|
||||
<string name="tts_info_link">https://www.comaps.app/support/tts-configuration-guide-for-android/</string>
|
||||
<string name="instagram_url">https://www.instagram.com/comapscommunity</string>
|
||||
<string name="wikimedia_commons">Vikianbar</string>
|
||||
</resources>
|
||||
|
||||
@@ -880,7 +880,7 @@
|
||||
<item quantity="other">Знойдзена %d файлаў. Вы можаце ўбачыць іх пасля пераўтварэння.</item>
|
||||
</plurals>
|
||||
<string name="error_enter_correct_vk_page">Увядзіце сапраўднае імя карыстальніка або спасылку VK</string>
|
||||
<string name="wikimedia_commons">Вікісховішча</string>
|
||||
<string name="wikimedia_commons">Wikimedia Commons</string>
|
||||
<string name="comma_separated_pair">%1$s, %2$s</string>
|
||||
<string name="osm_wiki_about_url">https://wiki.openstreetmap.org/wiki/RU:О_проекте</string>
|
||||
<string name="instagram_url">https://www.instagram.com/comapscommunity</string>
|
||||
|
||||
@@ -838,5 +838,4 @@
|
||||
<string name="trip_finished">Пристигнахте!</string>
|
||||
<string name="instagram">Instagram</string>
|
||||
<string name="downloader_loading_ios">Изтегляне</string>
|
||||
<string name="wikimedia_commons">Общомедия</string>
|
||||
</resources>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<string name="search">অনুসন্ধান</string>
|
||||
<string name="download_has_failed">ডাউনলোড ব্যর্থ। আবার চেষ্টা করতে টিপ দাও।</string>
|
||||
<string name="mb">এমবি</string>
|
||||
<string name="search_map">ম্যাপ অনুসন্ধান</string>
|
||||
<string name="search_map">মানচিত্র অনুসন্ধান</string>
|
||||
<string name="gb">জিবি</string>
|
||||
<string name="kilometres">কিলোমিটার</string>
|
||||
<string name="downloading">ডাউনলোডরত…</string>
|
||||
@@ -19,21 +19,4 @@
|
||||
<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="instagram_url">https://www.instagram.com/comapscommunity</string>
|
||||
<string name="app_site_url">https://comaps.app/</string>
|
||||
<string name="location_is_disabled_long_text">আপনার ডিভাইস বা অ্যাপ এর সব লোকেশন পরিষেবা বন্ধ করা আছে। দয়া করে সেটিংস থেকে চালু করুন।</string>
|
||||
<string name="close">বন্ধ</string>
|
||||
<string name="download">ডাউনলোড</string>
|
||||
<string name="limited_accuracy">সীমিত সঠিকতা</string>
|
||||
<string name="precise_location_is_disabled_long_text">সঠিক ন্যাভিগেশনের জন্য সেটিংস থেকে নিখুঁত লোকেশন অন করুন।</string>
|
||||
<string name="zoom_to_country">ম্যাপে দেখান</string>
|
||||
<string name="country_status_download_failed">ডাউনলোড ব্যর্থ হল</string>
|
||||
<string name="try_again">আবার চেষ্টা করুন</string>
|
||||
<string name="about_menu_title">CoMaps এর ব্যাপারে</string>
|
||||
<string name="about_headline">উন্মুক্ত প্রকল্প, তার সমাজ দ্বারা চলিত</string>
|
||||
<string name="location_settings">লোকেশন সেটিংস</string>
|
||||
<string name="about_proposition_1">• ব্যবহার করা সহজ এবং দেখতে সুন্দর</string>
|
||||
<string name="about_proposition_2">• গোপনীয়তা বান্ধব এবং বিজ্ঞাপন মুক্ত</string>
|
||||
<string name="about_proposition_3">• অফলাইন, দ্রুত এবং ছোট সাইজ</string>
|
||||
<string name="about_developed_by_enthusiasts">পুরোপুরি ওপেন সোর্স, অলাভজনক, প্রকাশ্য সিদ্ধান্ত করণ এবং অর্থায়ন।</string>
|
||||
<string name="wikimedia_commons">উইকিমিডিয়া কমন্স</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
||||
@@ -960,6 +960,4 @@
|
||||
<string name="type.place.suburb">Suburbi</string>
|
||||
<string name="type.place.state.USA">Estat</string>
|
||||
<string name="type.power.line">Línia elèctrica</string>
|
||||
<string name="type.amenity.studio">Estudi</string>
|
||||
<string name="type.barrier.guard_rail">Barrera de seguretat</string>
|
||||
</resources>
|
||||
|
||||
@@ -886,11 +886,9 @@
|
||||
<string name="editor_level">Podlaží (0 je přízemí)</string>
|
||||
<string name="route_type">Typ trasy</string>
|
||||
<string name="vehicle">Vozidlo</string>
|
||||
<string name="pedestrian">Pěší zóna</string>
|
||||
<string name="bicycle">Jízdní kolo</string>
|
||||
<string name="ruler">Pravítko</string>
|
||||
<string name="pedestrian">Pěší</string>
|
||||
<string name="bicycle">Kolo</string>
|
||||
<string name="ruler">Měření</string>
|
||||
<string name="bookmark_color">Barva záložky</string>
|
||||
<string name="clear">Vymazat</string>
|
||||
<string name="panoramax">Obrázek Panoramax</string>
|
||||
<string name="about_help">O aplikaci a nápověda</string>
|
||||
</resources>
|
||||
|
||||
@@ -893,11 +893,4 @@
|
||||
<string name="editor_building_levels">Etagen (inkl. Erdgeschoss, ohne Dach)</string>
|
||||
<string name="error_enter_correct_level">Geben Sie eine gültige Etagen Nummer ein</string>
|
||||
<string name="editor_level">Etage (0 ist Erdgeschoss)</string>
|
||||
<string name="clear">Löschen</string>
|
||||
<string name="vehicle">Fahrzeug</string>
|
||||
<string name="bicycle">Fahrrad</string>
|
||||
<string name="ruler">Lineal</string>
|
||||
<string name="route_type">Routentyp</string>
|
||||
<string name="pedestrian">Fußgänger</string>
|
||||
<string name="bookmark_color">Lesezeichenfarbe</string>
|
||||
</resources>
|
||||
|
||||
@@ -888,8 +888,8 @@
|
||||
<string name="saved">Guardado</string>
|
||||
<string name="codeberg">Codeberg</string>
|
||||
<string name="error_enter_correct_fediverse_page">Introduce un nombre de usuario o una dirección web de Mastodon válidos</string>
|
||||
<string name="instagram_url">https://www.instagram.com/comapscommunity/</string>
|
||||
<string name="app_site_url">https://comaps.app/es/</string>
|
||||
<string name="instagram_url">https://www.instagram.com/comapscommunity</string>
|
||||
<string name="app_site_url">https://comaps.app/</string>
|
||||
<string name="bluesky">Bluesky</string>
|
||||
<string name="error_enter_correct_bluesky_page">Introduce un nombre de usuario o una dirección web de Bluesky válidos</string>
|
||||
<string name="telegram_url">https://t.me/CoMapsApp/</string>
|
||||
@@ -898,8 +898,4 @@
|
||||
<string name="editor_level">Planta (0 es la planta baja)</string>
|
||||
<string name="editor_building_levels">Plantas (incl. planta baja, excl. tejado)</string>
|
||||
<string name="error_enter_correct_level">Introduce un número de planta válido</string>
|
||||
<string name="route_type">Tipo de ruta</string>
|
||||
<string name="vehicle">Vehículo</string>
|
||||
<string name="pedestrian">Peatonal</string>
|
||||
<string name="bicycle">Bicicleta</string>
|
||||
</resources>
|
||||
|
||||
@@ -895,6 +895,4 @@
|
||||
<string name="pedestrian">Jalakäija</string>
|
||||
<string name="ruler">Joonlaud</string>
|
||||
<string name="bookmark_color">Järjehoidja värv</string>
|
||||
<string name="panoramax">Panoramaxi pilt</string>
|
||||
<string name="about_help">Rakenduse teave ja abiteave</string>
|
||||
</resources>
|
||||
|
||||
@@ -395,7 +395,7 @@
|
||||
<string name="editor_example_values">مقادیر پیش فرض</string>
|
||||
<string name="editor_correct_mistake">تصحیح خطا</string>
|
||||
<string name="editor_add_select_location">مکان را انتخاب کنید</string>
|
||||
<string name="editor_report_problem_desription_1">لطفا مشکلتان را با جزئیات توضیح دهید بطوری که انجمن OpenStreetMap بتوانند آن را برطرف کنند.</string>
|
||||
<string name="editor_report_problem_desription_1">لطفا مشکلتان را با جزئیات توضیح دهید بطوری که انجمن OSM بتوانند آن را برطرف کنند.</string>
|
||||
<string name="editor_report_problem_desription_2">یا خودتان آن را انجام دهید در وبسایت https://www.openstreetmap.org/</string>
|
||||
<string name="editor_report_problem_send_button">ارسال</string>
|
||||
<string name="editor_report_problem_title">مشکل</string>
|
||||
@@ -463,7 +463,7 @@
|
||||
<!-- Text in About and OSM Login screens. First %@ is replaced by a local, human readable date. -->
|
||||
<string name="osm_presentation">داده های OpenStreetMap ایجاد شده توسط انجمن از %s. درباره نحوه ویرایش و به روز رسانی نقشه در OpenStreetMap.org بیشتر بیاموزید</string>
|
||||
<!-- OSM explanation on Android login screen -->
|
||||
<string name="login_osm_presentation">OpenStreetMap.org (OSM) یک پروژه اجتماعی برای ساخت یک نقشه رایگان و باز است. این منبع اصلی داده های نقشه در CoMaps است و مشابه ویکی پدیا کار می کند. می توانید مکان ها را اضافه یا ویرایش کنید تا در دسترس میلیون ها کاربر در سراسر جهان قرار گیرند. \nبه انجمن بپیوندید و به ایجاد نقشه بهتر برای همه کمک کنید!</string>
|
||||
<string name="login_osm_presentation">OpenStreetMap.org (OSM) یک پروژه اجتماعی برای ساخت یک نقشه رایگان و باز است. این منبع اصلی داده های نقشه در نقشه های ارگانیک است و مشابه ویکی پدیا کار می کند. میu200cتوانید مکانu200cها را اضافه یا ویرایش کنید تا در دسترس میلیونu200cها کاربر در سراسر جهان قرار گیرند. \nبه انجمن بپیوندید و به ایجاد نقشه بهتر برای همه کمک کنید!</string>
|
||||
<string name="login_to_make_edits_visible">یک حساب OpenStreetMap ایجاد کنید یا وارد شوید تا ویرایش های نقشه خود را در جهان منتشر کنید.</string>
|
||||
<!-- Downloaded 10 **of** 20 <- it is that "of" -->
|
||||
<string name="downloader_of">%1$d از %2$d</string>
|
||||
@@ -479,7 +479,7 @@
|
||||
<!-- Title for OSM note section in the editor -->
|
||||
<string name="editor_other_info">توجه به داوطلبان OpenStreetMap (اختیاری)</string>
|
||||
<!-- Hint of the input field in the OSM note section of the editor -->
|
||||
<string name="editor_note_hint">خطاهای موجود در نقشه یا مواردی که با استفاده از CoMaps قابل ویرایش نیستند را شرح دهید</string>
|
||||
<string name="editor_note_hint">خطاهای موجود در نقشه یا مواردی که با استفاده از نقشه های ارگانیک قابل ویرایش نیستند را شرح دهید</string>
|
||||
<!-- Information about OSM at the top of the editing page -->
|
||||
<string name="editor_about_osm">ویرایش های شما در پایگاه داده عمومی <a href="https://wiki.openstreetmap.org/wiki/Fa:About_OpenStreetMap">OpenStreetMap</a> آپلود می شود. لطفا اطلاعات شخصی یا دارای حق چاپ را اضافه نکنید.</string>
|
||||
<string name="editor_more_about_osm">در مورد OpenStreetMap بیشتر بدانید</string>
|
||||
@@ -489,7 +489,7 @@
|
||||
<!-- To indicate the operator of ATMs, bicycle rentals, electric vehicle charging stations... -->
|
||||
<string name="operator">اپراتور: %s</string>
|
||||
<string name="editor_category_unsuitable_title">آیا نمی توانید یک دسته بندی مناسب پیدا کنید؟</string>
|
||||
<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="editor_category_unsuitable_text">CoMaps اجازه میu200cدهد فقط دستهu200cهای نقطهu200cای ساده را اضافه کند، یعنی هیچ شهر، جاده، دریاچه، طرح کلی ساختمان و غیره وجود ندارد. لطفاً این دستهu200cها را مستقیماً به <a href="https://www.openstreetmap.org">OpenStreetMap.org</a> اضافه کنید. برای دستورالعملu200cهای گام به گام، <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>
|
||||
@@ -551,7 +551,7 @@
|
||||
<!-- Settings: "Send general feedback" button -->
|
||||
<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">برای بعضی از زبانها، شما باید speech synthesizer یا یک بسته زبان دیگر را از فروشگاه برنامه (Google Play, Galaxy Store, App Gallery, FDroid) نصب کنید. \n تنظیمات دستگاه خود را باز کنید. → زبان و ورودی → گفتار → خروجی متن به گفتار. می توانید تنظیمات برای ترکیب گفتار (به عنوان مثال، بستههای زبان را برای استفاده آفلاین دانلود کنید) را مدیریت کنید و یک موتور دیگر متن به گفتار را انتخاب کنید.</string>
|
||||
<string name="prefs_languages_information_off">برای برخی از زبانها، باید یک سینت سایزر گفتار یا بسته زبان دیگری را از فروشگاه برنامه (Google Play، Galaxy Store، AppGallery، F-Droid) نصب کنید.\nتنظیمات → زبان و ورودی → گفتار → خروجی متن به گفتار دستگاه خود را باز کنید.\nمیتوانید تنظیمات مربوط به سینت سایزر گفتار را مدیریت کنید (به عنوان مثال، بستههای زبانی را برای استفاده آفلاین دانلود کنید) و یک موتور متن به گفتار متفاوت انتخاب کنید.</string>
|
||||
<string name="prefs_languages_information_off_link">برای اطلاعات بیشتر لطفا این راهنما را بررسی کنید.</string>
|
||||
<string name="transliteration_title">ترجمه به لاتین</string>
|
||||
<string name="learn_more">بیشتر بدانید</string>
|
||||
@@ -582,7 +582,7 @@
|
||||
</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">وارد کردن نشانکu200cها و آهنگu200cها</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>
|
||||
@@ -793,7 +793,7 @@
|
||||
<!-- To indicate if restaurant or other place has outdoor seating -->
|
||||
<string name="outdoor_seating">نشستن در فضای باز</string>
|
||||
<!-- Disclaimer summary shown when Power Saving Mode is enabled -->
|
||||
<string name="power_save_dialog_summary">برای دقیق ترین ناوبری، توصیه می کنیم حالت صرفه جویی در مصرف انرژی را در تنظیمات باتری گوشی غیرفعال کنید.</string>
|
||||
<string name="power_save_dialog_summary">برای دقیقu200cترین ناوبری، توصیه میu200cکنیم حالت صرفهu200cجویی در مصرف انرژی را در تنظیمات باتری گوشی غیرفعال کنید.</string>
|
||||
<!-- Prompt to start recording a track. -->
|
||||
<string name="start_track_recording">ضبط مسیر</string>
|
||||
<!-- Prompt for stopping a track recording. -->
|
||||
@@ -817,5 +817,4 @@
|
||||
<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="instagram_url">https://www.instagram.com/comapscommunity</string>
|
||||
<string name="wikimedia_commons">ویکیانبار</string>
|
||||
</resources>
|
||||
|
||||
@@ -893,13 +893,4 @@
|
||||
<string name="error_enter_correct_level">Syötä kerrosnumero</string>
|
||||
<string name="editor_building_levels">Kerrokset (sis. pohjakerroksen, jätä pois katto)</string>
|
||||
<string name="editor_level">Kerros (0 on pohjakerros)</string>
|
||||
<string name="clear">Tyhjennä</string>
|
||||
<string name="route_type">Reitin tyyppi</string>
|
||||
<string name="vehicle">Ajoneuvo</string>
|
||||
<string name="pedestrian">Jalankulkija</string>
|
||||
<string name="bicycle">Polkupyörä</string>
|
||||
<string name="ruler">Viivoitin</string>
|
||||
<string name="bookmark_color">Kirjanmerkin väri</string>
|
||||
<string name="about_help">Tietoja ja ohje</string>
|
||||
<string name="panoramax">Panoramax-kuva</string>
|
||||
</resources>
|
||||
|
||||
@@ -599,5 +599,4 @@
|
||||
<string name="instagram_url">https://www.instagram.com/comapscommunity</string>
|
||||
<string name="tts_info_link">https://www.comaps.app/support/tts-configuration-guide-for-android/</string>
|
||||
<string name="osm_wiki_about_url">https://wiki.openstreetmap.org/wiki/About_OpenStreetMap</string>
|
||||
<string name="wikimedia_commons">विकिमीडिया कॉमन्स</string>
|
||||
</resources>
|
||||
|
||||
@@ -148,5 +148,4 @@
|
||||
<string name="osm_wiki_about_url">https://wiki.openstreetmap.org/wiki/About_OpenStreetMap</string>
|
||||
<string name="tts_info_link">https://www.comaps.app/support/tts-configuration-guide-for-android/</string>
|
||||
<string name="instagram_url">https://www.instagram.com/comapscommunity</string>
|
||||
<string name="wikimedia_commons">Zajednički poslužitelj</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
||||
@@ -838,7 +838,7 @@
|
||||
<string name="nav_auto">Automatikus navigáció</string>
|
||||
<string name="telegram">Telegram</string>
|
||||
<string name="instagram">Instagram</string>
|
||||
<string name="wikimedia_commons">Wikimédia Commons</string>
|
||||
<string name="wikimedia_commons">Wikimedia Commons</string>
|
||||
<string name="editor_line_social_network">LINE</string>
|
||||
<string name="empty_street_name_error">Adjon meg egy utcanevet</string>
|
||||
<string name="vk">VKontakte</string>
|
||||
|
||||
@@ -4,5 +4,4 @@
|
||||
<string name="osm_wiki_about_url">https://wiki.openstreetmap.org/wiki/About_OpenStreetMap</string>
|
||||
<string name="tts_info_link">https://www.comaps.app/support/tts-configuration-guide-for-android/</string>
|
||||
<string name="instagram_url">https://www.instagram.com/comapscommunity</string>
|
||||
<string name="wikimedia_commons">Wikimedia Commons</string>
|
||||
</resources>
|
||||
|
||||
@@ -862,5 +862,4 @@
|
||||
<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="instagram_url">https://www.instagram.com/comapscommunity</string>
|
||||
<string name="wikimedia_commons">ויקישיתוף</string>
|
||||
</resources>
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
<string name="type.amenity.bicycle_parking">חניית אופניים</string>
|
||||
<string name="type.amenity.bicycle_rental">השכרת אופניים</string>
|
||||
<string name="type.amenity.bicycle_repair_station">תחנת תיקון אופניים</string>
|
||||
<string name="type.amenity.biergarten">גן בירה</string>
|
||||
<string name="type.amenity.biergarten">ביר גרדן</string>
|
||||
<string name="type.amenity.brothel">בית בושת</string>
|
||||
<string name="type.amenity.bureau_de_change">המרת מטבע חוץ</string>
|
||||
<string name="type.amenity.bus_station">תחנת אוטובוס</string>
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
||||
@@ -822,5 +822,4 @@
|
||||
<string name="openstreetmap">OpenStreetMap</string>
|
||||
<string name="tts_info_link">https://www.comaps.app/support/tts-configuration-guide-for-android/</string>
|
||||
<string name="instagram_url">https://www.instagram.com/comapscommunity</string>
|
||||
<string name="wikimedia_commons">위키미디어 공용</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
||||
@@ -837,5 +837,4 @@
|
||||
<string name="tts_info_link">https://www.comaps.app/support/tts-configuration-guide-for-android/</string>
|
||||
<string name="instagram_url">https://www.instagram.com/comapscommunity</string>
|
||||
<string name="osm_wiki_about_url">https://wiki.openstreetmap.org/wiki/About_OpenStreetMap</string>
|
||||
<string name="wikimedia_commons">विकिमीडिया कॉमन्स</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
||||
@@ -888,7 +888,7 @@
|
||||
<string name="twitter">X (Twitter)</string>
|
||||
<string name="openstreetmap">OpenStreetMap</string>
|
||||
<string name="instagram">Instagram</string>
|
||||
<string name="wikimedia_commons">Викисклад</string>
|
||||
<string name="wikimedia_commons">Wikimedia Commons</string>
|
||||
<string name="editor_line_social_network">LINE</string>
|
||||
<string name="vk">VK</string>
|
||||
<string name="instagram_url">https://www.instagram.com/comapscommunity/</string>
|
||||
@@ -904,29 +904,4 @@
|
||||
<string name="editor_building_levels">Этажей (вкл. подвалы искл. крышу)</string>
|
||||
<string name="editor_level">Этаж (0 это первый этаж)</string>
|
||||
<string name="error_enter_correct_level">Введите правильный номер этажа</string>
|
||||
<!-- Settings "Backup" category: "Backup" title -->
|
||||
<string name="pref_backup_title">Резервное копирование меток и треков</string>
|
||||
<string name="pref_backup_summary">Автоматически сохранять в папку на устройстве</string>
|
||||
<string name="pref_backup_now_title">Создать резервную копию</string>
|
||||
<string name="pref_backup_now_summary">Запустить резервное копирование вручную</string>
|
||||
<string name="pref_backup_now_summary_progress">Идёт резервное копирование…</string>
|
||||
<string name="pref_backup_now_summary_ok">Копирование успешно завершено</string>
|
||||
<string name="pref_backup_now_summary_empty_lists">Нет данных для копирования</string>
|
||||
<string name="pref_backup_now_summary_failed">Ошибка при копировании</string>
|
||||
<string name="pref_backup_now_summary_folder_unavailable">Папка для копий недоступна</string>
|
||||
<string name="pref_backup_status_summary_success">Последнее успешное копирование</string>
|
||||
<string name="pref_backup_location_title">Папка для резервных копий</string>
|
||||
<string name="pref_backup_location_summary_initial">Сначала выберите папку и дайте доступ</string>
|
||||
<string name="pref_backup_history_title">Хранить количество копий</string>
|
||||
<string name="pref_backup_interval_title">Автозапуск</string>
|
||||
<string name="backup_interval_every_day">Каждый день</string>
|
||||
<string name="backup_interval_every_week">Каждую неделю</string>
|
||||
<string name="backup_interval_manual_only">Выключено (только вручную)</string>
|
||||
<string name="dialog_report_error_missing_folder">Выбранная папка для резервного копирования недоступна или нет права записи в неё. Пожалуйста, выберите другую папку</string>
|
||||
<string name="dialog_report_error_with_logs">Пожалуйста, отправьте нам отчет об ошибке:\n
|
||||
- Включите \"Запись логов\" в настройках\n
|
||||
- воспроизведите проблему\n
|
||||
- на экране \"Справка\" нажмите кнопку \"Сообщить о проблеме\" и отправьте нам отчет по почте или в чат\n
|
||||
- отключите логирование
|
||||
</string>
|
||||
</resources>
|
||||
|
||||
@@ -4,5 +4,4 @@
|
||||
<string name="tts_info_link">https://www.comaps.app/support/tts-configuration-guide-for-android/</string>
|
||||
<string name="instagram_url">https://www.instagram.com/comapscommunity</string>
|
||||
<string name="translated_om_site_url">https://comaps.app/</string>
|
||||
<string name="wikimedia_commons">Wikimedia Commons</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
||||
@@ -27,7 +27,7 @@
|
||||
<!-- Location services are disabled by user alert - message -->
|
||||
<string name="location_is_disabled_long_text">Тренутно су сви локацијски сервиси на овом уређају или апликацији искључени. Потребно је да их укључите у Подешавањима.</string>
|
||||
<!-- View and button titles for accessibility -->
|
||||
<string name="zoom_to_country">Прикажи мапу</string>
|
||||
<string name="zoom_to_country">Прикажи на мапи</string>
|
||||
<!-- Message to display at the center of the screen when the country download has failed -->
|
||||
<string name="country_status_download_failed">Преузимање није успело</string>
|
||||
<!-- Button text for the button under the country_status_download_failed message -->
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<string name="type.aeroway.aerodrome">Flygplats</string>
|
||||
<string name="type.aeroway.aerodrome.international">Flygplats</string>
|
||||
<string name="type.aeroway.helipad">Helikopterplatta</string>
|
||||
<string name="type.amenity">Infrastruktur</string>
|
||||
<string name="type.amenity">Infrastrukturen</string>
|
||||
<string name="type.amenity.arts_centre">Kulturcenter</string>
|
||||
<string name="type.amenity.atm">Bankomat</string>
|
||||
<string name="type.amenity.bbq">Grill för barbecue</string>
|
||||
@@ -181,7 +181,7 @@
|
||||
<string name="type.building.address">Adress</string>
|
||||
<string name="type.building.has_parts">Byggnad</string>
|
||||
<string name="type.building_part">Byggnad</string>
|
||||
<string name="type.building.train_station">Stationsbyggnad</string>
|
||||
<string name="type.building.train_station">Stationsbyggnaden</string>
|
||||
<string name="type.cemetery.grave">Grav</string>
|
||||
<string name="type.craft">Hantverk</string>
|
||||
<string name="type.craft.beekeeper">Biodlare</string>
|
||||
@@ -346,7 +346,7 @@
|
||||
<string name="type.highway.living_street.bridge">Bro</string>
|
||||
<!-- These translations are used for all type.highway.*.tunnel. -->
|
||||
<string name="type.highway.living_street.tunnel">Tunnel</string>
|
||||
<string name="type.highway.motorway">Motorväg</string>
|
||||
<string name="type.highway.motorway">Gata</string>
|
||||
<!-- These translations are used for all type.highway.*.bridge. -->
|
||||
<string name="type.highway.motorway.bridge">Bro</string>
|
||||
<!-- These translations are used for all type.highway.*.tunnel. -->
|
||||
@@ -419,7 +419,7 @@
|
||||
<!-- These translations are used for all type.highway.*.tunnel. -->
|
||||
<string name="type.highway.service.tunnel">Tunnel</string>
|
||||
<string name="type.highway.speed_camera">Hastighetskamera</string>
|
||||
<string name="type.highway.steps">Trappa</string>
|
||||
<string name="type.highway.steps">Gångväg</string>
|
||||
<!-- These translations are used for all type.highway.*.bridge. -->
|
||||
<string name="type.highway.steps.bridge">Bro</string>
|
||||
<!-- These translations are used for all type.highway.*.tunnel. -->
|
||||
@@ -469,7 +469,7 @@
|
||||
<string name="type.area_highway.secondary">Gata</string>
|
||||
<string name="type.area_highway.service">Gata</string>
|
||||
<string name="type.area_highway.tertiary">Gata</string>
|
||||
<string name="type.area_highway.steps">Trappa</string>
|
||||
<string name="type.area_highway.steps">Gångväg</string>
|
||||
<string name="type.area_highway.track">Gata</string>
|
||||
<string name="type.area_highway.trunk">Gata</string>
|
||||
<string name="type.area_highway.unclassified">Gata</string>
|
||||
@@ -530,11 +530,11 @@
|
||||
<string name="type.landuse.forest.coniferous">Skog</string>
|
||||
<string name="type.landuse.forest.deciduous">Skog</string>
|
||||
<string name="type.landuse.forest.mixed">Skog</string>
|
||||
<string name="type.landuse.grass">Gräsmatta</string>
|
||||
<string name="type.landuse.landfill">Soptipp</string>
|
||||
<string name="type.landuse.grass">Gräsmattan</string>
|
||||
<string name="type.landuse.landfill">Soptippen</string>
|
||||
<string name="type.landuse.railway">Järnvägsfaciliteter</string>
|
||||
<string name="type.landuse.reservoir">Vatten</string>
|
||||
<string name="type.leisure.dog_park">Hundpark</string>
|
||||
<string name="type.leisure.dog_park">Hundparken</string>
|
||||
<string name="type.leisure.fitness_centre">Gym</string>
|
||||
<string name="type.leisure.fitness_station">Fitnesstation</string>
|
||||
<string name="type.leisure.dance">Danshall</string>
|
||||
@@ -544,10 +544,10 @@
|
||||
<string name="type.leisure.miniature_golf">Minigolf</string>
|
||||
<string name="type.leisure.nature_reserve">Naturreservat</string>
|
||||
<string name="type.leisure.outdoor_seating">Sittplatser utomhus</string>
|
||||
<string name="type.leisure.park">Park</string>
|
||||
<string name="type.leisure.park.no.access">Privat park</string>
|
||||
<string name="type.leisure.park.permissive">Park</string>
|
||||
<string name="type.leisure.park.private">Privat park</string>
|
||||
<string name="type.leisure.park">Parken</string>
|
||||
<string name="type.leisure.park.no.access">Parken</string>
|
||||
<string name="type.leisure.park.permissive">Parken</string>
|
||||
<string name="type.leisure.park.private">Parken</string>
|
||||
<string name="type.leisure.picnic_table">Picknickbord</string>
|
||||
<string name="type.leisure.pitch">Idrottsplats</string>
|
||||
<string name="type.leisure.playground">Lekplats</string>
|
||||
@@ -586,7 +586,7 @@
|
||||
<string name="type.natural.scree">Stenig rasbrant</string>
|
||||
<string name="type.natural.bay">Bukt</string>
|
||||
<string name="type.natural.beach">Strand</string>
|
||||
<string name="type.natural.beach.sand">Sandstrand</string>
|
||||
<string name="type.natural.beach.sand">Sandig strand</string>
|
||||
<string name="type.natural.beach.gravel">Grusstrand</string>
|
||||
<string name="type.natural.cape">Udde</string>
|
||||
<string name="type.natural.cave_entrance">Grotta</string>
|
||||
@@ -611,7 +611,7 @@
|
||||
<string name="type.natural.peak">Bergstopp</string>
|
||||
<string name="type.natural.saddle">Fjällsadel</string>
|
||||
<string name="type.natural.rock">Bergart</string>
|
||||
<string name="type.natural.scrub">Rugge</string>
|
||||
<string name="type.natural.scrub">Ruggen</string>
|
||||
<string name="type.natural.spring">Vattenkälla</string>
|
||||
<string name="type.natural.spring.drinking_water_no">Vattenkälla</string>
|
||||
<string name="type.natural.strait">Sund</string>
|
||||
@@ -1148,10 +1148,10 @@
|
||||
<string name="type.wheelchair.limited">Delvis utrustad för handikappade</string>
|
||||
<string name="type.wheelchair.no">Ej utrustad för handikappade</string>
|
||||
<string name="type.wheelchair.yes">Utrustad för handikappade</string>
|
||||
<string name="type.piste_type.snow_park">Snöpark</string>
|
||||
<string name="type.piste_type.snow_park">Snöparken</string>
|
||||
<string name="type.piste_type.hike">Vandringsled i snö</string>
|
||||
<string name="type.piste_type.connection">Piste Anslutning</string>
|
||||
<string name="type.piste_type.skitour">Skitourled</string>
|
||||
<string name="type.piste_type.skitour">Skitourleden</string>
|
||||
<string name="type.amenity.events_venue">Evenemangslokal</string>
|
||||
<string name="type.shop.auction">Auktion</string>
|
||||
<string name="type.shop.collector">Samlingsföremål</string>
|
||||
@@ -1341,7 +1341,4 @@
|
||||
<string name="type.leisure.hackerspace">Hackerspace</string>
|
||||
<string name="type.shop.kiosk">Kiosk</string>
|
||||
<string name="type.tourism.museum">Museum</string>
|
||||
<string name="type.amenity.waste_transfer_station">Återvinningscentral</string>
|
||||
<string name="type.barrier.guard_rail">Vägräcke</string>
|
||||
<string name="type.highway.ladder">Stege</string>
|
||||
</resources>
|
||||
|
||||
@@ -219,7 +219,7 @@
|
||||
<!-- Speed camera settings menu option - Never warn (about speedcams) -->
|
||||
<string name="pref_tts_speedcams_never">Kamwe usionye</string>
|
||||
<string name="power_managment_title">Mtindo wa kuokoa nishati</string>
|
||||
<string name="power_managment_description">Pindi mtindo wa kiotomatiki unapochaguliwa programu tumizi inaanza kuzima sifa za kumaliza betri kulingana na kiwango cha chaji cha sasa cha betri.</string>
|
||||
<string name="power_managment_description">Pindi mtindo wa kiotomatiki unapochaguliwa programu tumizi inaanza kuzima sifa za kumaliza betri kulingana na kiwango cha chaji cha sasa cha betri</string>
|
||||
<string name="power_managment_setting_never">Kamwe</string>
|
||||
<string name="power_managment_setting_auto">Kiotomatiki</string>
|
||||
<string name="power_managment_setting_manual_max">Upeo wa kuhifadhi nishati</string>
|
||||
|
||||
@@ -468,7 +468,7 @@
|
||||
<!-- Text in About and OSM Login screens. First %@ is replaced by a local, human readable date. -->
|
||||
<string name="osm_presentation">ข้อมูล OpenStreetMap ที่สร้างโดยชุมชน ณ %s เรียนรู้เพิ่มเติมเกี่ยวกับวิธีแก้ไขและอัปเดตแผนที่ได้ที่ OpenStreetMap.org</string>
|
||||
<!-- OSM explanation on Android login screen -->
|
||||
<string name="login_osm_presentation">OpenStreetMap.org (OSM) เป็นโครงการชุมชนเพื่อสร้างแผนที่แบบเปิดและเสรี เป็นแหล่งข้อมูลแผนที่หลักในCoMapsและทำงานคล้ายกับวิกิพีเดีย คุณสามารถเพิ่มหรือแก้ไขสถานที่ได้ และสถานที่เหล่านั้นจะพร้อมให้บริการแก่ผู้ใช้หลายล้านคนทั่วโลก \nเข้าร่วมชุมชนและช่วยสร้างแผนที่ที่ดีขึ้นสำหรับทุกคน!</string>
|
||||
<string name="login_osm_presentation">OpenStreetMap.org (OSM) เป็นโครงการชุมชนเพื่อสร้างแผนที่แบบเปิดและเสรี เป็นแหล่งข้อมูลแผนที่หลักในแผนที่ทั่วไปและทำงานคล้ายกับวิกิพีเดีย คุณสามารถเพิ่มหรือแก้ไขสถานที่ได้ และสถานที่เหล่านั้นจะพร้อมให้บริการแก่ผู้ใช้หลายล้านคนทั่วโลก \nเข้าร่วมชุมชนและช่วยสร้างแผนที่ที่ดีขึ้นสำหรับทุกคน!</string>
|
||||
<string name="login_to_make_edits_visible">สร้างบัญชี OpenStreetMap หรือเข้าสู่ระบบเพื่อเผยแพร่การแก้ไขแผนที่ของคุณไปทั่วโลก</string>
|
||||
<!-- Downloaded 10 **of** 20 <- it is that "of" -->
|
||||
<string name="downloader_of">%1$d จาก %2$d</string>
|
||||
@@ -819,5 +819,4 @@
|
||||
<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="instagram_url">https://www.instagram.com/comapscommunity</string>
|
||||
<string name="wikimedia_commons">วิกิมีเดียคอมมอนส์</string>
|
||||
</resources>
|
||||
|
||||
@@ -885,7 +885,7 @@
|
||||
<string name="instagram">Instagram</string>
|
||||
<string name="level_value_generic">Поверх: %s</string>
|
||||
<string name="tts_info_link">https://www.comaps.app/support/tts-configuration-guide-for-android/</string>
|
||||
<string name="wikimedia_commons">Вікісховище</string>
|
||||
<string name="wikimedia_commons">Wikimedia Commons</string>
|
||||
<string name="editor_add_phone">Додати телефон</string>
|
||||
<string name="comma_separated_pair">%1$s, %2$s</string>
|
||||
<string name="telegram_url">https://t.me/CoMapsApp/</string>
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
<string name="pref_enable_logging" translatable="false">EnableLogging</string>
|
||||
<string name="pref_emulate_bad_external_storage" translatable="false">EmulateBadExternalStorage</string>
|
||||
<string name="pref_about" translatable="false">AboutOrganicMaps</string>
|
||||
<string name="pref_help" translatable="false">Help</string>
|
||||
<string name="pref_file_name" translatable="false">OrganicMapsPrefs</string>
|
||||
<string name="pref_map_style" translatable="false">MapStyle</string>
|
||||
<string name="pref_tts_screen" translatable="false">TtsScreen</string>
|
||||
@@ -40,7 +41,6 @@
|
||||
<string name="pref_keep_screen_on" translatable="false">KeepScreenOn</string>
|
||||
<string name="pref_show_on_lock_screen" translatable="false">ShowOnLockScreen</string>
|
||||
<string name="pref_map_locale" translatable="false">MapLanguage</string>
|
||||
<string name="pref_backup" translatable="false">Backup</string>
|
||||
<string name="pref_left_button" translatable="false">LeftButton</string>
|
||||
|
||||
<string name="notification_ticker_ltr" translatable="false">%1$s: %2$s</string>
|
||||
|
||||
@@ -23,29 +23,7 @@
|
||||
<item>0</item>
|
||||
<item>1</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="backup_interval_entries">
|
||||
<item>@string/backup_interval_every_day</item>
|
||||
<item>@string/backup_interval_every_week</item>
|
||||
<item>@string/backup_interval_manual_only</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="backup_interval_values">
|
||||
<item>86400000</item> <!-- Every day -->
|
||||
<item>604800000</item> <!-- Every week -->
|
||||
<item>0</item> <!-- Manual only -->
|
||||
</string-array>
|
||||
|
||||
<string-array name="backup_history_entries">
|
||||
<item>3</item>
|
||||
<item>10</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="backup_history_values">
|
||||
<item>3</item>
|
||||
<item>10</item>
|
||||
</string-array>
|
||||
|
||||
|
||||
<string-array name="map_style">
|
||||
<item>@string/off</item>
|
||||
<item>@string/on</item>
|
||||
|
||||
@@ -291,8 +291,6 @@
|
||||
<string name="vk">VK</string>
|
||||
<!-- Text in menu -->
|
||||
<string name="bluesky">Bluesky</string>
|
||||
<!-- Text on the place page -->
|
||||
<string name="panoramax">Panoramax Picture</string>
|
||||
<!-- Text in the editor -->
|
||||
<string name="editor_line_social_network">LINE</string>
|
||||
<!-- Text in menu -->
|
||||
@@ -936,32 +934,6 @@
|
||||
<string name="codeberg">Codeberg</string>
|
||||
<string name="pref_left_button_title">Left button setup</string>
|
||||
<string name="pref_left_button_disable">Disable</string>
|
||||
|
||||
<!-- Settings "Backup" category: "Backup" title -->
|
||||
<string name="pref_backup_title">Bookmarks and tracks backup</string>
|
||||
<string name="pref_backup_summary">Automatically backup to a folder on your device</string>
|
||||
<string name="pref_backup_now_title">Backup now</string>
|
||||
<string name="pref_backup_now_summary">Create a backup immediately</string>
|
||||
<string name="pref_backup_now_summary_progress">Backup in progress…</string>
|
||||
<string name="pref_backup_now_summary_ok">Backup completed successfully</string>
|
||||
<string name="pref_backup_now_summary_empty_lists">Nothing to back up</string>
|
||||
<string name="pref_backup_now_summary_failed">Backup failed</string>
|
||||
<string name="pref_backup_now_summary_folder_unavailable">The backup folder is not available</string>
|
||||
<string name="pref_backup_status_summary_success">Last successful backup</string>
|
||||
<string name="pref_backup_location_title">Backup location</string>
|
||||
<string name="pref_backup_location_summary_initial">Please select a folder first and grant permission</string>
|
||||
<string name="pref_backup_history_title">Number of backups to keep</string>
|
||||
<string name="pref_backup_interval_title">Automatic backup</string>
|
||||
<string name="backup_interval_every_day">Daily</string>
|
||||
<string name="backup_interval_every_week">Weekly</string>
|
||||
<string name="backup_interval_manual_only">Off (manual only)</string>
|
||||
<string name="dialog_report_error_missing_folder">The selected backup location is not available or writable. Select a different location, please.</string>
|
||||
<string name="dialog_report_error_with_logs">Please send us an error report:\n
|
||||
- \"Enable logging\" in the settings\n
|
||||
- reproduce the problem\n
|
||||
- in the \"Help/About\" screen press a \"Report a bug\" button and send it to us via email or chat\n
|
||||
- disable logging
|
||||
</string>
|
||||
<string name="clear">Clear</string>
|
||||
<string name="route_type">Route type</string>
|
||||
<string name="vehicle">Vehicle</string>
|
||||
@@ -969,5 +941,4 @@
|
||||
<string name="bicycle">Bicycle</string>
|
||||
<string name="ruler">Ruler</string>
|
||||
<string name="bookmark_color">Bookmark color</string>
|
||||
<string name="about_help">About & Help</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<Preference
|
||||
android:key="backup_location"
|
||||
android:summary="@string/pref_backup_location_summary_initial"
|
||||
android:title="@string/pref_backup_location_title" />
|
||||
<Preference
|
||||
android:key="backup_now"
|
||||
android:summary="@string/pref_backup_now_summary"
|
||||
android:title="@string/pref_backup_now_title" />
|
||||
<ListPreference
|
||||
android:defaultValue="86400000"
|
||||
android:entries="@array/backup_interval_entries"
|
||||
android:entryValues="@array/backup_interval_values"
|
||||
android:key="backup_history_interval"
|
||||
android:title="@string/pref_backup_interval_title" />
|
||||
<ListPreference
|
||||
android:defaultValue="10"
|
||||
android:entries="@array/backup_history_entries"
|
||||
android:entryValues="@array/backup_history_values"
|
||||
android:key="backup_history_count"
|
||||
android:title="@string/pref_backup_history_title" />
|
||||
|
||||
</PreferenceScreen>
|
||||
@@ -112,13 +112,6 @@
|
||||
app:singleLineTitle="false"
|
||||
android:persistent="false"
|
||||
android:order="18"/>
|
||||
<Preference
|
||||
android:key="@string/pref_backup"
|
||||
android:title="@string/pref_backup_title"
|
||||
android:summary="@string/pref_backup_summary"
|
||||
app:singleLineTitle="false"
|
||||
android:persistent="false"
|
||||
android:order="19"/>
|
||||
</androidx.preference.PreferenceCategory>
|
||||
|
||||
<androidx.preference.PreferenceCategory
|
||||
@@ -178,4 +171,15 @@
|
||||
android:defaultValue="true"
|
||||
android:order="2"/>
|
||||
</androidx.preference.PreferenceCategory>
|
||||
<androidx.preference.PreferenceCategory
|
||||
android:key="@string/pref_information"
|
||||
android:title="@string/prefs_group_information"
|
||||
android:order="7">
|
||||
<Preference
|
||||
android:key="@string/pref_help"
|
||||
android:title="@string/help"
|
||||
app:singleLineTitle="false"
|
||||
android:order="1">
|
||||
</Preference>
|
||||
</androidx.preference.PreferenceCategory>
|
||||
</androidx.preference.PreferenceScreen>
|
||||
|
||||
@@ -410,7 +410,7 @@ pl:4Atrakcje turystyczne|Osobliwości miasta|Turystyka|zwiedzanie
|
||||
pt:4Atrações turísticas|3Turismo|Miradouros
|
||||
pt-BR:4Atraçãos|3Turismo
|
||||
ro:5Obiective turistice|4Turism
|
||||
es:5Atracciones turísticas|4Turismo
|
||||
es:4Turismo
|
||||
et:Vaatamisväärsused
|
||||
eu:4Turismoa
|
||||
sr:5Туристичка атракција|5Атракција|5Атракције|6Знаменитости|5Туризам|5Turistička atrakcija|5Atrakcija|5Atrakcije|6Znamenitosti|5Turizam
|
||||
|
||||
@@ -307,6 +307,7 @@
|
||||
16119285
|
||||
16169823
|
||||
16173957
|
||||
16248287
|
||||
16372627
|
||||
16391736
|
||||
16431936
|
||||
@@ -314,7 +315,6 @@
|
||||
16440736
|
||||
16445666
|
||||
16557154
|
||||
16577252
|
||||
16579778
|
||||
16579836
|
||||
16728450
|
||||
@@ -340,15 +340,10 @@
|
||||
16777215
|
||||
221978645
|
||||
222898459
|
||||
223036995
|
||||
223300167
|
||||
233867264
|
||||
234004016
|
||||
234879733
|
||||
234881023
|
||||
307054404
|
||||
318765813
|
||||
318767103
|
||||
436602368
|
||||
437326080
|
||||
438572045
|
||||
@@ -375,6 +370,8 @@
|
||||
452983541
|
||||
452984574
|
||||
452984831
|
||||
575358531
|
||||
587201269
|
||||
609045837
|
||||
654706176
|
||||
655629312
|
||||
|
||||
@@ -275,8 +275,6 @@
|
||||
<li>Code2000 Font<br>
|
||||
© 1998–2003 James Kass; Shareware</li>
|
||||
</ul>
|
||||
<li><a href="https://upload.wikimedia.org/wikipedia/commons/a/a9/Panoramax.svg">Panoramax</a><br>
|
||||
© 2023 Adrien Pavie; <a href="license" class="license">CC BY 4.0 License</a></li>
|
||||
|
||||
<p id="icons">We also use these icons on the map:</p>
|
||||
|
||||
|
||||
@@ -23166,7 +23166,7 @@ cont {
|
||||
scale: 15
|
||||
lines {
|
||||
width: 1.5
|
||||
color: 441140803
|
||||
color: 575358531
|
||||
dashdot {
|
||||
dd: 5.0
|
||||
dd: 1.5
|
||||
@@ -23187,7 +23187,7 @@ cont {
|
||||
scale: 16
|
||||
lines {
|
||||
width: 2.0
|
||||
color: 223036995
|
||||
color: 575358531
|
||||
dashdot {
|
||||
dd: 5.0
|
||||
dd: 1.5
|
||||
@@ -23207,7 +23207,7 @@ cont {
|
||||
scale: 17
|
||||
lines {
|
||||
width: 2.4
|
||||
color: 223036995
|
||||
color: 575358531
|
||||
dashdot {
|
||||
dd: 6.0
|
||||
dd: 1.8
|
||||
@@ -23297,7 +23297,7 @@ cont {
|
||||
scale: 15
|
||||
lines {
|
||||
width: 1.5
|
||||
color: 441140803
|
||||
color: 575358531
|
||||
dashdot {
|
||||
dd: 5.0
|
||||
dd: 1.5
|
||||
@@ -23322,7 +23322,7 @@ cont {
|
||||
scale: 16
|
||||
lines {
|
||||
width: 2.0
|
||||
color: 223036995
|
||||
color: 575358531
|
||||
dashdot {
|
||||
dd: 5.0
|
||||
dd: 1.5
|
||||
@@ -23346,7 +23346,7 @@ cont {
|
||||
scale: 17
|
||||
lines {
|
||||
width: 2.4
|
||||
color: 223036995
|
||||
color: 575358531
|
||||
dashdot {
|
||||
dd: 6.0
|
||||
dd: 1.8
|
||||
@@ -23606,7 +23606,7 @@ cont {
|
||||
}
|
||||
lines {
|
||||
width: 1.5
|
||||
color: 441140803
|
||||
color: 575358531
|
||||
dashdot {
|
||||
dd: 5.0
|
||||
dd: 1.5
|
||||
@@ -23633,7 +23633,7 @@ cont {
|
||||
}
|
||||
lines {
|
||||
width: 2.0
|
||||
color: 223036995
|
||||
color: 575358531
|
||||
dashdot {
|
||||
dd: 5.0
|
||||
dd: 1.5
|
||||
@@ -23665,7 +23665,7 @@ cont {
|
||||
}
|
||||
lines {
|
||||
width: 2.4
|
||||
color: 223036995
|
||||
color: 575358531
|
||||
dashdot {
|
||||
dd: 6.0
|
||||
dd: 1.8
|
||||
@@ -23784,7 +23784,7 @@ cont {
|
||||
scale: 16
|
||||
lines {
|
||||
width: 2.0
|
||||
color: 223036995
|
||||
color: 575358531
|
||||
dashdot {
|
||||
dd: 5.0
|
||||
dd: 1.5
|
||||
@@ -23796,7 +23796,7 @@ cont {
|
||||
scale: 17
|
||||
lines {
|
||||
width: 2.4
|
||||
color: 223036995
|
||||
color: 575358531
|
||||
dashdot {
|
||||
dd: 6.0
|
||||
dd: 1.8
|
||||
@@ -23847,7 +23847,7 @@ cont {
|
||||
scale: 16
|
||||
lines {
|
||||
width: 2.0
|
||||
color: 223036995
|
||||
color: 575358531
|
||||
dashdot {
|
||||
dd: 5.0
|
||||
dd: 1.5
|
||||
@@ -23859,7 +23859,7 @@ cont {
|
||||
scale: 17
|
||||
lines {
|
||||
width: 2.4
|
||||
color: 223036995
|
||||
color: 575358531
|
||||
dashdot {
|
||||
dd: 6.0
|
||||
dd: 1.8
|
||||
@@ -23910,7 +23910,7 @@ cont {
|
||||
scale: 15
|
||||
lines {
|
||||
width: 1.5
|
||||
color: 441140803
|
||||
color: 575358531
|
||||
dashdot {
|
||||
dd: 5.0
|
||||
dd: 1.5
|
||||
@@ -23931,7 +23931,7 @@ cont {
|
||||
scale: 16
|
||||
lines {
|
||||
width: 2.0
|
||||
color: 223036995
|
||||
color: 575358531
|
||||
dashdot {
|
||||
dd: 5.0
|
||||
dd: 1.5
|
||||
@@ -23951,7 +23951,7 @@ cont {
|
||||
scale: 17
|
||||
lines {
|
||||
width: 2.4
|
||||
color: 223036995
|
||||
color: 575358531
|
||||
dashdot {
|
||||
dd: 6.0
|
||||
dd: 1.8
|
||||
@@ -24137,7 +24137,7 @@ cont {
|
||||
scale: 16
|
||||
lines {
|
||||
width: 2.4
|
||||
color: 307054404
|
||||
color: 441272132
|
||||
dashdot {
|
||||
dd: 8.0
|
||||
dd: 1.5
|
||||
@@ -24161,7 +24161,7 @@ cont {
|
||||
scale: 17
|
||||
lines {
|
||||
width: 3.0
|
||||
color: 307054404
|
||||
color: 441272132
|
||||
dashdot {
|
||||
dd: 9.0
|
||||
dd: 1.8
|
||||
@@ -26904,6 +26904,19 @@ cont {
|
||||
}
|
||||
cont {
|
||||
name: "highway-path"
|
||||
element {
|
||||
scale: 14
|
||||
lines {
|
||||
width: 0.9
|
||||
color: 1720994322
|
||||
dashdot {
|
||||
dd: 3.5
|
||||
dd: 2.0
|
||||
}
|
||||
priority: 180
|
||||
cap: BUTTCAP
|
||||
}
|
||||
}
|
||||
element {
|
||||
scale: 15
|
||||
lines {
|
||||
@@ -27036,6 +27049,16 @@ cont {
|
||||
priority: 219
|
||||
cap: BUTTCAP
|
||||
}
|
||||
lines {
|
||||
width: 0.9
|
||||
color: 1720994322
|
||||
dashdot {
|
||||
dd: 3.5
|
||||
dd: 2.7
|
||||
}
|
||||
priority: 220
|
||||
cap: BUTTCAP
|
||||
}
|
||||
}
|
||||
element {
|
||||
scale: 15
|
||||
@@ -27192,6 +27215,19 @@ cont {
|
||||
}
|
||||
cont {
|
||||
name: "highway-path-bridge"
|
||||
element {
|
||||
scale: 14
|
||||
lines {
|
||||
width: 0.9
|
||||
color: 1720994322
|
||||
dashdot {
|
||||
dd: 3.5
|
||||
dd: 2.0
|
||||
}
|
||||
priority: 155
|
||||
cap: BUTTCAP
|
||||
}
|
||||
}
|
||||
element {
|
||||
scale: 15
|
||||
lines {
|
||||
@@ -27376,6 +27412,19 @@ cont {
|
||||
}
|
||||
cont {
|
||||
name: "highway-path-difficult"
|
||||
element {
|
||||
scale: 14
|
||||
lines {
|
||||
width: 0.9
|
||||
color: 1720994322
|
||||
dashdot {
|
||||
dd: 1.0
|
||||
dd: 2.0
|
||||
}
|
||||
priority: 180
|
||||
cap: BUTTCAP
|
||||
}
|
||||
}
|
||||
element {
|
||||
scale: 15
|
||||
lines {
|
||||
@@ -27500,6 +27549,19 @@ cont {
|
||||
}
|
||||
cont {
|
||||
name: "highway-path-expert"
|
||||
element {
|
||||
scale: 14
|
||||
lines {
|
||||
width: 0.9
|
||||
color: 1716665907
|
||||
dashdot {
|
||||
dd: 1.0
|
||||
dd: 4.0
|
||||
}
|
||||
priority: 180
|
||||
cap: BUTTCAP
|
||||
}
|
||||
}
|
||||
element {
|
||||
scale: 15
|
||||
lines {
|
||||
@@ -27624,6 +27686,19 @@ cont {
|
||||
}
|
||||
cont {
|
||||
name: "highway-path-horse"
|
||||
element {
|
||||
scale: 14
|
||||
lines {
|
||||
width: 0.9
|
||||
color: 1720994322
|
||||
dashdot {
|
||||
dd: 3.5
|
||||
dd: 2.0
|
||||
}
|
||||
priority: 155
|
||||
cap: BUTTCAP
|
||||
}
|
||||
}
|
||||
element {
|
||||
scale: 15
|
||||
lines {
|
||||
@@ -27748,6 +27823,19 @@ cont {
|
||||
}
|
||||
cont {
|
||||
name: "highway-path-tunnel"
|
||||
element {
|
||||
scale: 14
|
||||
lines {
|
||||
width: 0.9
|
||||
color: 1720994322
|
||||
dashdot {
|
||||
dd: 3.5
|
||||
dd: 2.0
|
||||
}
|
||||
priority: 155
|
||||
cap: BUTTCAP
|
||||
}
|
||||
}
|
||||
element {
|
||||
scale: 15
|
||||
lines {
|
||||
@@ -27995,7 +28083,7 @@ cont {
|
||||
scale: 16
|
||||
lines {
|
||||
width: 2.4
|
||||
color: 307054404
|
||||
color: 441272132
|
||||
dashdot {
|
||||
dd: 8.0
|
||||
dd: 1.5
|
||||
@@ -28015,7 +28103,7 @@ cont {
|
||||
scale: 17
|
||||
lines {
|
||||
width: 3.0
|
||||
color: 307054404
|
||||
color: 441272132
|
||||
dashdot {
|
||||
dd: 9.0
|
||||
dd: 1.8
|
||||
@@ -28161,7 +28249,7 @@ cont {
|
||||
scale: 16
|
||||
lines {
|
||||
width: 2.4
|
||||
color: 307054404
|
||||
color: 441272132
|
||||
dashdot {
|
||||
dd: 8.0
|
||||
dd: 1.5
|
||||
@@ -28185,7 +28273,7 @@ cont {
|
||||
scale: 17
|
||||
lines {
|
||||
width: 3.0
|
||||
color: 307054404
|
||||
color: 441272132
|
||||
dashdot {
|
||||
dd: 9.0
|
||||
dd: 1.8
|
||||
@@ -28381,7 +28469,7 @@ cont {
|
||||
}
|
||||
lines {
|
||||
width: 2.4
|
||||
color: 307054404
|
||||
color: 441272132
|
||||
dashdot {
|
||||
dd: 8.0
|
||||
dd: 1.5
|
||||
@@ -28413,7 +28501,7 @@ cont {
|
||||
}
|
||||
lines {
|
||||
width: 3.0
|
||||
color: 307054404
|
||||
color: 441272132
|
||||
dashdot {
|
||||
dd: 9.0
|
||||
dd: 1.8
|
||||
@@ -34241,7 +34329,7 @@ cont {
|
||||
scale: 15
|
||||
lines {
|
||||
width: 2.4
|
||||
color: 4933187
|
||||
color: 441140803
|
||||
dashdot {
|
||||
dd: 1.5
|
||||
dd: 1.3
|
||||
@@ -34254,7 +34342,7 @@ cont {
|
||||
scale: 16
|
||||
lines {
|
||||
width: 4.0
|
||||
color: 4933187
|
||||
color: 441140803
|
||||
dashdot {
|
||||
dd: 1.8
|
||||
dd: 1.6
|
||||
@@ -34363,7 +34451,7 @@ cont {
|
||||
}
|
||||
lines {
|
||||
width: 2.4
|
||||
color: 4933187
|
||||
color: 441140803
|
||||
dashdot {
|
||||
dd: 1.5
|
||||
dd: 1.3
|
||||
@@ -34382,7 +34470,7 @@ cont {
|
||||
}
|
||||
lines {
|
||||
width: 4.0
|
||||
color: 4933187
|
||||
color: 441140803
|
||||
dashdot {
|
||||
dd: 1.8
|
||||
dd: 1.6
|
||||
@@ -34533,7 +34621,7 @@ cont {
|
||||
scale: 15
|
||||
lines {
|
||||
width: 2.4
|
||||
color: 4933187
|
||||
color: 441140803
|
||||
dashdot {
|
||||
dd: 1.5
|
||||
dd: 1.3
|
||||
@@ -34546,7 +34634,7 @@ cont {
|
||||
scale: 16
|
||||
lines {
|
||||
width: 4.0
|
||||
color: 4933187
|
||||
color: 441140803
|
||||
dashdot {
|
||||
dd: 1.8
|
||||
dd: 1.6
|
||||
@@ -35886,6 +35974,19 @@ cont {
|
||||
}
|
||||
cont {
|
||||
name: "highway-track"
|
||||
element {
|
||||
scale: 14
|
||||
lines {
|
||||
width: 1.1
|
||||
color: 1717523245
|
||||
dashdot {
|
||||
dd: 6.0
|
||||
dd: 2.5
|
||||
}
|
||||
priority: 180
|
||||
cap: BUTTCAP
|
||||
}
|
||||
}
|
||||
element {
|
||||
scale: 15
|
||||
lines {
|
||||
@@ -36010,6 +36111,19 @@ cont {
|
||||
}
|
||||
cont {
|
||||
name: "highway-track-area"
|
||||
element {
|
||||
scale: 14
|
||||
lines {
|
||||
width: 1.1
|
||||
color: 1717523245
|
||||
dashdot {
|
||||
dd: 6.0
|
||||
dd: 2.5
|
||||
}
|
||||
priority: 180
|
||||
cap: BUTTCAP
|
||||
}
|
||||
}
|
||||
element {
|
||||
scale: 15
|
||||
lines {
|
||||
@@ -36134,6 +36248,19 @@ cont {
|
||||
}
|
||||
cont {
|
||||
name: "highway-track-bridge"
|
||||
element {
|
||||
scale: 14
|
||||
lines {
|
||||
width: 1.1
|
||||
color: 1717523245
|
||||
dashdot {
|
||||
dd: 6.0
|
||||
dd: 2.5
|
||||
}
|
||||
priority: 180
|
||||
cap: BUTTCAP
|
||||
}
|
||||
}
|
||||
element {
|
||||
scale: 15
|
||||
lines {
|
||||
@@ -36318,6 +36445,19 @@ cont {
|
||||
}
|
||||
cont {
|
||||
name: "highway-track-no-access"
|
||||
element {
|
||||
scale: 14
|
||||
lines {
|
||||
width: 1.1
|
||||
color: 1717523245
|
||||
dashdot {
|
||||
dd: 6.0
|
||||
dd: 2.5
|
||||
}
|
||||
priority: 180
|
||||
cap: BUTTCAP
|
||||
}
|
||||
}
|
||||
element {
|
||||
scale: 15
|
||||
lines {
|
||||
@@ -36442,6 +36582,19 @@ cont {
|
||||
}
|
||||
cont {
|
||||
name: "highway-track-tunnel"
|
||||
element {
|
||||
scale: 14
|
||||
lines {
|
||||
width: 1.1
|
||||
color: 1717523245
|
||||
dashdot {
|
||||
dd: 6.0
|
||||
dd: 2.5
|
||||
}
|
||||
priority: 180
|
||||
cap: BUTTCAP
|
||||
}
|
||||
}
|
||||
element {
|
||||
scale: 15
|
||||
lines {
|
||||
@@ -63251,6 +63404,19 @@ cont {
|
||||
}
|
||||
cont {
|
||||
name: "piste:type-hike"
|
||||
element {
|
||||
scale: 14
|
||||
lines {
|
||||
width: 0.9
|
||||
color: 2573352319
|
||||
dashdot {
|
||||
dd: 3.5
|
||||
dd: 2.0
|
||||
}
|
||||
priority: 120
|
||||
cap: BUTTCAP
|
||||
}
|
||||
}
|
||||
element {
|
||||
scale: 15
|
||||
lines {
|
||||
|
||||
@@ -25613,7 +25613,7 @@ cont {
|
||||
scale: 16
|
||||
lines {
|
||||
width: 2.4
|
||||
color: 307054404
|
||||
color: 441272132
|
||||
dashdot {
|
||||
dd: 8.0
|
||||
dd: 1.5
|
||||
@@ -25637,7 +25637,7 @@ cont {
|
||||
scale: 17
|
||||
lines {
|
||||
width: 3.0
|
||||
color: 307054404
|
||||
color: 441272132
|
||||
dashdot {
|
||||
dd: 9.0
|
||||
dd: 1.8
|
||||
@@ -29978,7 +29978,7 @@ cont {
|
||||
scale: 16
|
||||
lines {
|
||||
width: 2.4
|
||||
color: 307054404
|
||||
color: 441272132
|
||||
dashdot {
|
||||
dd: 8.0
|
||||
dd: 1.5
|
||||
@@ -29998,7 +29998,7 @@ cont {
|
||||
scale: 17
|
||||
lines {
|
||||
width: 3.0
|
||||
color: 307054404
|
||||
color: 441272132
|
||||
dashdot {
|
||||
dd: 9.0
|
||||
dd: 1.8
|
||||
@@ -30144,7 +30144,7 @@ cont {
|
||||
scale: 16
|
||||
lines {
|
||||
width: 2.4
|
||||
color: 307054404
|
||||
color: 441272132
|
||||
dashdot {
|
||||
dd: 8.0
|
||||
dd: 1.5
|
||||
@@ -30168,7 +30168,7 @@ cont {
|
||||
scale: 17
|
||||
lines {
|
||||
width: 3.0
|
||||
color: 307054404
|
||||
color: 441272132
|
||||
dashdot {
|
||||
dd: 9.0
|
||||
dd: 1.8
|
||||
@@ -30364,7 +30364,7 @@ cont {
|
||||
}
|
||||
lines {
|
||||
width: 2.4
|
||||
color: 307054404
|
||||
color: 441272132
|
||||
dashdot {
|
||||
dd: 8.0
|
||||
dd: 1.5
|
||||
@@ -30396,7 +30396,7 @@ cont {
|
||||
}
|
||||
lines {
|
||||
width: 3.0
|
||||
color: 307054404
|
||||
color: 441272132
|
||||
dashdot {
|
||||
dd: 9.0
|
||||
dd: 1.8
|
||||
|
||||
@@ -1,55 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
version="1.1"
|
||||
viewBox="0 0 24 24"
|
||||
width="18"
|
||||
height="18"
|
||||
id="svg1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<title
|
||||
id="title1">train-m</title>
|
||||
<g
|
||||
id="Page-2:-Night"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
opacity="1">
|
||||
<g
|
||||
id="train-m"
|
||||
fill-rule="nonzero">
|
||||
<rect
|
||||
id="Rectangle"
|
||||
width="24"
|
||||
height="24"
|
||||
rx="2.5"
|
||||
fill="#000"
|
||||
opacity=".6" />
|
||||
<rect
|
||||
id="rect1"
|
||||
x="1"
|
||||
y="1"
|
||||
width="22"
|
||||
height="22"
|
||||
rx="2"
|
||||
fill="#2F6499" />
|
||||
<path
|
||||
id="train-m-a"
|
||||
d="m 9.033318,18 0.66667,-1 h -1.7 l -2,3 h 0.62963 c 0.66871,0 1.2932,-0.3342 1.6641,-0.8906 L 8.366652,19 h 7.2667 l 0.07293,0.1094 c 0.37093,0.5564 0.99539,0.8906 1.6641,0.8906 h 0.62963 l -2,-3 h -1.7 l 0.66667,1 h -5.9333 z m 0.3535,-14 h 5.2263 c 1.612,0 2.9358,1.2739 2.9978,2.8847 l 0.30917,8.0384 c 0.04245,1.1038 -0.8179,2.0329 -1.9217,2.0754 C 15.972778,16.999485 15.947148,17 15.921518,17 h -7.8432 c -1.1046,0 -2,-0.89543 -2,-2 0,-0.02563 4.926e-4,-0.05126 0.00148,-0.07687 l 0.30917,-8.0384003 c 0.061954,-1.6108 1.3858,-2.8847 2.9978,-2.8847 z m -0.46364,2.5 c -0.52136,0 -0.95524,0.40055 -0.99682,0.92025 l -0.24,3 c -0.00212,0.02653 -0.00318,0.05313 -0.00318,0.07975 0,0.55228 0.44772,1 1,1 h 6.6336 c 0.02661,0 0.05322,-0.0011 0.07974,-0.0032 0.55053,-0.04404 0.96111,-0.52603 0.91707,-1.0766 l -0.24,-3 c -0.04158,-0.5197 -0.47545,-0.92025 -0.99682,-0.92025 h -6.1536 z M 8.999983,15 c 0.55228,0 1,-0.44772 1,-1 0,-0.55228 -0.44772,-1 -1,-1 -0.55228,0 -1,0.44772 -1,1 0,0.55228 0.44772,1 1,1 z m 6,0 c 0.55228,0 1,-0.44772 1,-1 0,-0.55228 -0.44772,-1 -1,-1 -0.55228,0 -1,0.44772 -1,1 0,0.55228 0.44772,1 1,1 z m -4.75,-10 c -0.13807,0 -0.25,0.11193 -0.25,0.25 0,0.13807 0.11193,0.25 0.25,0.25 h 3.5 c 0.13807,0 0.25,-0.11193 0.25,-0.25 0,-0.13807 -0.11193,-0.25 -0.25,-0.25 z"
|
||||
style="fill:#000000;fill-opacity:1" />
|
||||
</g>
|
||||
<svg version="1.1" viewBox="0 0 24 24" width="18" height="18" xmlns="http://www.w3.org/2000/svg">
|
||||
<title>train-m</title>
|
||||
<g id="Page-2:-Night" fill="none" fill-rule="evenodd" opacity="1">
|
||||
<g id="train-m" fill-rule="nonzero">
|
||||
<rect id="Rectangle" width="24" height="24" rx="2.5" fill="#000" opacity=".6"/>
|
||||
<rect id="Rectangle" x="1" y="1" width="22" height="22" rx="2" fill="#2F6499"/>
|
||||
<path id="Shape" d="m11.895 5c-2.9474 0-5.8947 0.36842-5.8947 2.9474v7c0 1.4221 1.1568 2.5789 2.5789 2.5789l-1.1053 1.1053v0.36842h1.6432l1.4737-1.4737h2.7779l1.4737 1.4737h1.4737v-0.36842l-1.1053-1.1053c1.4221 0 2.5789-1.1568 2.5789-2.5789v-7c0-2.5789-2.6379-2.9474-5.8947-2.9474zm-3.3158 11.053c-0.61158 0-1.1053-0.49368-1.1053-1.1053 0-0.61158 0.49368-1.1053 1.1053-1.1053s1.1053 0.49368 1.1053 1.1053c0 0.61158-0.49368 1.1053-1.1053 1.1053zm2.5789-5.1579h-3.6842v-2.9474h3.6842v2.9474zm1.4737 0v-2.9474h3.6842v2.9474h-3.6842zm2.5789 5.1579c-0.61158 0-1.1053-0.49368-1.1053-1.1053 0-0.61158 0.49368-1.1053 1.1053-1.1053 0.61158 0 1.1053 0.49368 1.1053 1.1053 0 0.61158-0.49368 1.1053-1.1053 1.1053z" fill="#000"/>
|
||||
</g>
|
||||
<metadata
|
||||
id="metadata1">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:title>train-m</dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 1.1 KiB |
@@ -1,55 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
version="1.1"
|
||||
viewBox="0 0 16 16"
|
||||
width="12"
|
||||
height="12"
|
||||
id="svg1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<title
|
||||
id="title1">train-s</title>
|
||||
<g
|
||||
id="Page-2:-Night"
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
opacity="1">
|
||||
<g
|
||||
id="train-s"
|
||||
fill-rule="nonzero">
|
||||
<rect
|
||||
id="Rectangle"
|
||||
width="16"
|
||||
height="16"
|
||||
rx="2.5"
|
||||
fill="#000"
|
||||
opacity=".6" />
|
||||
<rect
|
||||
id="rect1"
|
||||
x=".66667"
|
||||
y=".66667"
|
||||
width="14.667"
|
||||
height="14.667"
|
||||
rx="2"
|
||||
fill="#2F6499" />
|
||||
<path
|
||||
id="train-m-a"
|
||||
d="M 6.0222132,12 6.4666598,11.333333 H 5.3333265 l -1.333333,2 h 0.419753 c 0.445807,0 0.862133,-0.2228 1.1094,-0.593733 l 0.04862,-0.07293 h 4.8444665 l 0.04862,0.07293 c 0.247287,0.370933 0.663593,0.593733 1.1094,0.593733 h 0.419753 l -1.333333,-2 H 9.5333398 L 9.9777865,12 H 6.0222532 Z M 6.2578798,2.6666669 h 3.4842001 c 1.0746661,0 1.9572001,0.8492666 1.9985331,1.9231332 l 0.206113,5.3589334 C 11.975026,10.6846 11.40146,11.304 10.665593,11.332333 c -0.01707,6.57e-4 -0.03416,10e-4 -0.05125,10e-4 H 5.3855465 c -0.7364,0 -1.333333,-0.596953 -1.333333,-1.333333 0,-0.017087 3.28e-4,-0.034173 0.001,-0.051247 l 0.206113,-5.3589336 c 0.0413,-1.0738667 0.923867,-1.9231333 1.998533,-1.9231333 z M 5.9487865,4.3333334 c -0.347573,0 -0.636827,0.2670334 -0.664547,0.6135 l -0.16,2 c -0.0014,0.017687 -0.0021,0.03542 -0.0021,0.053167 0,0.3681867 0.29848,0.6666667 0.666667,0.6666667 h 4.4223995 c 0.01774,0 0.03548,-7.334e-4 0.05316,-0.00213 0.36702,-0.02936 0.64074,-0.3506866 0.61138,-0.7177333 l -0.16,-2 c -0.02775,-0.3464704 -0.317,-0.6135037 -0.66458,-0.6135037 H 5.9487665 Z M 5.9999935,10 c 0.3681863,0 0.6666663,-0.2984798 0.6666663,-0.6666665 0,-0.3681866 -0.29848,-0.6666666 -0.6666663,-0.6666666 -0.368187,0 -0.666667,0.29848 -0.666667,0.6666666 C 5.3333265,9.7015202 5.6318065,10 5.9999935,10 Z m 3.9999997,0 C 10.36818,10 10.66666,9.7015202 10.66666,9.3333335 c 0,-0.3681866 -0.29848,-0.6666666 -0.6666668,-0.6666666 -0.3681868,0 -0.6666667,0.29848 -0.6666667,0.6666666 C 9.3333265,9.7015202 9.6318064,10 9.9999932,10 Z M 6.8333265,3.3333334 c -0.092047,0 -0.1666667,0.07462 -0.1666667,0.1666667 0,0.092047 0.07462,0.1666667 0.1666667,0.1666667 h 2.3333333 c 0.092047,0 0.1666667,-0.07462 0.1666667,-0.1666667 0,-0.092047 -0.07462,-0.1666667 -0.1666667,-0.1666667 z"
|
||||
style="fill:#000000;fill-opacity:1;stroke-width:0.666667" />
|
||||
</g>
|
||||
<svg version="1.1" viewBox="0 0 16 16" width="12" height="12" xmlns="http://www.w3.org/2000/svg">
|
||||
<title>train-s</title>
|
||||
<g id="Page-2:-Night" fill="none" fill-rule="evenodd" opacity="1">
|
||||
<g id="train-s" fill-rule="nonzero">
|
||||
<rect id="Rectangle" width="16" height="16" rx="2.5" fill="#000" opacity=".6"/>
|
||||
<rect id="Rectangle" x=".66667" y=".66667" width="14.667" height="14.667" rx="2" fill="#2F6499"/>
|
||||
<path id="Shape" d="m7.9298 3.3333c-1.9649 0-3.9298 0.24561-3.9298 1.9649v4.6667c0 0.94807 0.77123 1.7193 1.7193 1.7193l-0.73684 0.73684v0.24561h1.0954l0.98246-0.98246h1.8519l0.98246 0.98246h0.98246v-0.24561l-0.73684-0.73684c0.94807 0 1.7193-0.77123 1.7193-1.7193v-4.6667c0-1.7193-1.7586-1.9649-3.9298-1.9649zm-2.2105 7.3684c-0.40772 0-0.73684-0.32912-0.73684-0.73684 0-0.40772 0.32912-0.73684 0.73684-0.73684 0.40772 0 0.73684 0.32912 0.73684 0.73684 0 0.40772-0.32912 0.73684-0.73684 0.73684zm1.7193-3.4386h-2.4561v-1.9649h2.4561v1.9649zm0.98246 0v-1.9649h2.4561v1.9649h-2.4561zm1.7193 3.4386c-0.40772 0-0.73684-0.32912-0.73684-0.73684 0-0.40772 0.32912-0.73684 0.73684-0.73684 0.40772 0 0.73684 0.32912 0.73684 0.73684 0 0.40772-0.32912 0.73684-0.73684 0.73684z" fill="#000"/>
|
||||
</g>
|
||||
<metadata
|
||||
id="metadata1">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:title>train-s</dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 1.2 KiB |
@@ -683,9 +683,6 @@ line|z19-[highway=busway],
|
||||
line|z13-[highway=pedestrian],
|
||||
line|z13-[highway=ford]
|
||||
{color: @pedestrian;opacity: 0.9;}
|
||||
line|z16-[highway=pedestrian],
|
||||
line|z16-[highway=ford],
|
||||
{opacity: 0.93;}
|
||||
|
||||
line|z13-[highway=cycleway],
|
||||
line|z14-[highway=path][bicycle=designated]::cycleline,
|
||||
@@ -714,7 +711,7 @@ line|z17-[highway=steps][bridge?]::bridgeblack,
|
||||
line|z16-[highway=road][bridge?]::bridgeblack,
|
||||
line|z16-[highway=service][bridge?]::bridgeblack
|
||||
{casing-linecap: butt;casing-color:@bridge_casing;casing-opacity: 0.7;}
|
||||
line|z15-[highway=track],
|
||||
line|z14-[highway=track],
|
||||
{color: @track;opacity: 0.6;}
|
||||
line|z14-[highway=raceway],
|
||||
{color: @track;opacity: 0.7;}
|
||||
@@ -723,16 +720,14 @@ line|z15-[leisure=track][!area],
|
||||
line|z14-[highway=bridleway]
|
||||
{color: @bridleway;opacity: 0.6;}
|
||||
line|z15-[highway=footway],
|
||||
{color: @footway;opacity: 0.9;}
|
||||
line|z16-[highway=footway],
|
||||
{opacity: 0.95;}
|
||||
{color: @footway;opacity: 0.87;}
|
||||
line|z15-[highway=steps],
|
||||
{color: @residential;opacity: 1;}
|
||||
line|z15-[highway=path],
|
||||
{color: @footway;opacity: 0.9;}
|
||||
line|z14-[highway=path],
|
||||
{color: @path;opacity: 0.6;}
|
||||
line|z15-[highway=path][_path_grade=expert],
|
||||
line|z14-[highway=path][_path_grade=expert],
|
||||
{color: @path_expert; opacity: 0.6;}
|
||||
line|z15-[piste:type=hike],
|
||||
line|z14-[piste:type=hike],
|
||||
{color: @piste; opacity: 0.4;}
|
||||
line|z17-[highway=footway][tunnel?]::tunnelBackground,
|
||||
line|z17-[highway=cycleway][tunnel?]::tunnelBackground,
|
||||
@@ -916,6 +911,8 @@ line|z19-[highway=raceway],
|
||||
line|z19-[leisure=track][!area]
|
||||
{width:4; opacity: 0.8;}
|
||||
|
||||
line|z14[highway=track],
|
||||
{width: 1.1; dashes: 6,2.5;}
|
||||
line|z15[highway=track],
|
||||
{width: 1.4; dashes: 6,2.5;}
|
||||
line|z16[highway=track],
|
||||
@@ -927,6 +924,9 @@ line|z18[highway=track],
|
||||
line|z19-[highway=track],
|
||||
{width: 4.2; dashes: 12,3.5; opacity: 0.8;}
|
||||
|
||||
line|z14[highway=path],
|
||||
line|z14[piste:type=hike],
|
||||
{width: 0.9; dashes: 3.5,2;}
|
||||
line|z15[highway=path],
|
||||
line|z15[piste:type=hike],
|
||||
{width: 1.1; dashes: 3.5,2;}
|
||||
@@ -941,6 +941,8 @@ line|z18[highway=path],
|
||||
line|z19-[highway=path],
|
||||
{width: 3.7; dashes: 8,4.5; opacity: 0.8;}
|
||||
|
||||
line|z14[highway=path][bicycle=designated],
|
||||
{width: 0.9; dashes: 3.5,2.7;}
|
||||
line|z15[highway=path][bicycle=designated],
|
||||
{width: 1.1; dashes: 3.5,2.7;}
|
||||
line|z16[highway=path][bicycle=designated],
|
||||
@@ -952,6 +954,8 @@ line|z18[highway=path][bicycle=designated],
|
||||
line|z19-[highway=path][bicycle=designated],
|
||||
{width: 3.7; dashes: 8,6.2; opacity: 0.8;}
|
||||
|
||||
line|z14[highway=path][_path_grade=difficult],
|
||||
{width: 0.9; dashes: 1,2;}
|
||||
line|z15[highway=path][_path_grade=difficult],
|
||||
{width: 1.1; dashes: 1,2;}
|
||||
line|z16[highway=path][_path_grade=difficult],
|
||||
@@ -961,6 +965,8 @@ line|z17[highway=path][_path_grade=difficult],
|
||||
line|z18-[highway=path][_path_grade=difficult],
|
||||
{width: 2.8; dashes: 2.8,3.5;}
|
||||
|
||||
line|z14[highway=path][_path_grade=expert],
|
||||
{width: 0.9; dashes: 1,4;}
|
||||
line|z15[highway=path][_path_grade=expert],
|
||||
{width: 1.1; dashes: 1,4;}
|
||||
line|z16[highway=path][_path_grade=expert],
|
||||
|
||||
@@ -224,11 +224,11 @@ railway-subway-bridge::dash # line::dash z16- (also has
|
||||
=== 221
|
||||
|
||||
highway-footway-bicycle # line z15- (also has line::cycleline z15-, pathtext z15-)
|
||||
highway-path-bicycle # line z15- (also has line::cycleline z14-, pathtext z15-)
|
||||
highway-path-bicycle # line z14- (also has line::cycleline z14-, pathtext z15-)
|
||||
=== 220
|
||||
|
||||
highway-footway-bicycle::cycleline # line::cycleline z15- (also has line z15-, pathtext z15-)
|
||||
highway-path-bicycle::cycleline # line::cycleline z14- (also has line z15-, pathtext z15-)
|
||||
highway-path-bicycle::cycleline # line::cycleline z14- (also has line z14-, pathtext z15-)
|
||||
=== 219
|
||||
|
||||
highway-cycleway # line z13- (also has pathtext z15-)
|
||||
@@ -276,15 +276,15 @@ highway-bridleway-tunnel # line z14- (also has line::
|
||||
highway-footway # line z15- (also has pathtext z15-)
|
||||
highway-footway-area # line z15- and area z14- (also has pathtext z15-)
|
||||
highway-footway-crossing # line z16-
|
||||
highway-path # line z15- (also has pathtext z15-)
|
||||
highway-path-difficult # line z15- (also has pathtext z15-)
|
||||
highway-path-expert # line z15- (also has pathtext z15-)
|
||||
highway-path # line z14- (also has pathtext z15-)
|
||||
highway-path-difficult # line z14- (also has pathtext z15-)
|
||||
highway-path-expert # line z14- (also has pathtext z15-)
|
||||
highway-raceway # line z14- (also has pathtext z16-)
|
||||
highway-track # line z15- (also has pathtext z15-)
|
||||
highway-track-area # line z15- (also has pathtext z15-)
|
||||
highway-track-bridge # line z15- (also has line::bridgeblack z17-, line::bridgewhite z15-, pathtext z15-)
|
||||
highway-track-no-access # line z15- (also has pathtext z15-)
|
||||
highway-track-tunnel # line z15- (also has line::tunnelBackground z17-, line::tunnelCasing z17-, pathtext z15-)
|
||||
highway-track # line z14- (also has pathtext z15-)
|
||||
highway-track-area # line z14- (also has pathtext z15-)
|
||||
highway-track-bridge # line z14- (also has line::bridgeblack z17-, line::bridgewhite z15-, pathtext z15-)
|
||||
highway-track-no-access # line z14- (also has pathtext z15-)
|
||||
highway-track-tunnel # line z14- (also has line::tunnelBackground z17-, line::tunnelCasing z17-, pathtext z15-)
|
||||
=== 180
|
||||
|
||||
highway-construction # line z13- (also has pathtext z15-)
|
||||
@@ -302,25 +302,25 @@ railway-preserved-tunnel # line z15-
|
||||
highway-footway-bridge # line z15- (also has line::bridgeblack z17-, line::bridgewhite z15-, pathtext z15-)
|
||||
highway-footway-sidewalk # line z16-
|
||||
highway-footway-tunnel # line z15- (also has line::tunnelBackground z17-, line::tunnelCasing z17-, pathtext z15-)
|
||||
highway-path-bridge # line z15- (also has line::bridgeblack z17-, line::bridgewhite z15-, pathtext z15-)
|
||||
highway-path-horse # line z15- (also has pathtext z15-)
|
||||
highway-path-tunnel # line z15- (also has line::tunnelBackground z17-, line::tunnelCasing z17-, pathtext z15-)
|
||||
highway-path-bridge # line z14- (also has line::bridgeblack z17-, line::bridgewhite z15-, pathtext z15-)
|
||||
highway-path-horse # line z14- (also has pathtext z15-)
|
||||
highway-path-tunnel # line z14- (also has line::tunnelBackground z17-, line::tunnelCasing z17-, pathtext z15-)
|
||||
=== 155
|
||||
|
||||
highway-bridleway-tunnel::tunnelBackground # line::tunnelBackground z17- (also has line z14-, line::tunnelCasing z17-, pathtext z15-)
|
||||
highway-cycleway-tunnel::tunnelBackground # line::tunnelBackground z17- (also has line z13-, line::tunnelCasing z17-, pathtext z15-)
|
||||
highway-footway-tunnel::tunnelBackground # line::tunnelBackground z17- (also has line z15-, line::tunnelCasing z17-, pathtext z15-)
|
||||
highway-path-tunnel::tunnelBackground # line::tunnelBackground z17- (also has line z15-, line::tunnelCasing z17-, pathtext z15-)
|
||||
highway-path-tunnel::tunnelBackground # line::tunnelBackground z17- (also has line z14-, line::tunnelCasing z17-, pathtext z15-)
|
||||
highway-steps-tunnel::tunnelBackground # line::tunnelBackground z17- (also has line z15-, line::tunnelCasing z17-, pathtext z16-)
|
||||
highway-track-tunnel::tunnelBackground # line::tunnelBackground z17- (also has line z15-, line::tunnelCasing z17-, pathtext z15-)
|
||||
highway-track-tunnel::tunnelBackground # line::tunnelBackground z17- (also has line z14-, line::tunnelCasing z17-, pathtext z15-)
|
||||
=== 154
|
||||
|
||||
highway-bridleway-tunnel::tunnelCasing # line::tunnelCasing z17- (also has line z14-, line::tunnelBackground z17-, pathtext z15-)
|
||||
highway-cycleway-tunnel::tunnelCasing # line::tunnelCasing z17- (also has line z13-, line::tunnelBackground z17-, pathtext z15-)
|
||||
highway-footway-tunnel::tunnelCasing # line::tunnelCasing z17- (also has line z15-, line::tunnelBackground z17-, pathtext z15-)
|
||||
highway-path-tunnel::tunnelCasing # line::tunnelCasing z17- (also has line z15-, line::tunnelBackground z17-, pathtext z15-)
|
||||
highway-path-tunnel::tunnelCasing # line::tunnelCasing z17- (also has line z14-, line::tunnelBackground z17-, pathtext z15-)
|
||||
highway-steps-tunnel::tunnelCasing # line::tunnelCasing z17- (also has line z15-, line::tunnelBackground z17-, pathtext z16-)
|
||||
highway-track-tunnel::tunnelCasing # line::tunnelCasing z17- (also has line z15-, line::tunnelBackground z17-, pathtext z15-)
|
||||
highway-track-tunnel::tunnelCasing # line::tunnelCasing z17- (also has line z14-, line::tunnelBackground z17-, pathtext z15-)
|
||||
=== 153
|
||||
|
||||
highway-bridleway-bridge::bridgewhite # line::bridgewhite z15- (also has line z14-, line::bridgeblack z17-, pathtext z15-)
|
||||
@@ -328,7 +328,7 @@ highway-cycleway-bridge::bridgewhite # line::bridgewhite z15- (al
|
||||
highway-footway-bridge::bridgewhite # line::bridgewhite z15- (also has line z15-, line::bridgeblack z17-, pathtext z15-)
|
||||
highway-motorway-bridge::bridgewhite # line::bridgewhite z13- (also has line z6-, line::bridgeblack z13-, pathtext z10-, shield::shield z10-)
|
||||
highway-motorway_link-bridge::bridgewhite # line::bridgewhite z14- (also has line z10-, line::bridgeblack z14-, pathtext z10-, shield::shield z10-)
|
||||
highway-path-bridge::bridgewhite # line::bridgewhite z15- (also has line z15-, line::bridgeblack z17-, pathtext z15-)
|
||||
highway-path-bridge::bridgewhite # line::bridgewhite z15- (also has line z14-, line::bridgeblack z17-, pathtext z15-)
|
||||
highway-pedestrian-bridge::bridgewhite # line::bridgewhite z13- (also has line z13-, line::bridgeblack z14-, pathtext z14-)
|
||||
highway-primary-bridge::bridgewhite # line::bridgewhite z14- (also has line z8-, line::bridgeblack z14-, pathtext z10-, shield::shield z10-)
|
||||
highway-primary_link-bridge::bridgewhite # line::bridgewhite z14- (also has line z11-, line::bridgeblack z14-, pathtext z11-, shield::shield z11-)
|
||||
@@ -340,7 +340,7 @@ highway-service-bridge::bridgewhite # line::bridgewhite z16- (al
|
||||
highway-steps-bridge::bridgewhite # line::bridgewhite z15- (also has line z15-, line::bridgeblack z17-, pathtext z16-)
|
||||
highway-tertiary-bridge::bridgewhite # line::bridgewhite z14- (also has line z11-, line::bridgeblack z14-, pathtext z12-, shield::shield z13-)
|
||||
highway-tertiary_link-bridge::bridgewhite # line::bridgewhite z14- (also has line z14-, line::bridgeblack z14-, pathtext z18-)
|
||||
highway-track-bridge::bridgewhite # line::bridgewhite z15- (also has line z15-, line::bridgeblack z17-, pathtext z15-)
|
||||
highway-track-bridge::bridgewhite # line::bridgewhite z15- (also has line z14-, line::bridgeblack z17-, pathtext z15-)
|
||||
highway-trunk-bridge::bridgewhite # line::bridgewhite z13- (also has line z6-, line::bridgeblack z13-, pathtext z10-, shield::shield z10-)
|
||||
highway-trunk_link-bridge::bridgewhite # line::bridgewhite z14- (also has line z10-, line::bridgeblack z14-, pathtext z10-, shield::shield z10-)
|
||||
highway-unclassified-bridge::bridgewhite # line::bridgewhite z14- (also has line z11-, line::bridgeblack z14-, pathtext z13-)
|
||||
@@ -363,7 +363,7 @@ highway-cycleway-bridge::bridgeblack # line::bridgeblack z17- (al
|
||||
highway-footway-bridge::bridgeblack # line::bridgeblack z17- (also has line z15-, line::bridgewhite z15-, pathtext z15-)
|
||||
highway-motorway-bridge::bridgeblack # line::bridgeblack z13- (also has line z6-, line::bridgewhite z13-, pathtext z10-, shield::shield z10-)
|
||||
highway-motorway_link-bridge::bridgeblack # line::bridgeblack z14- (also has line z10-, line::bridgewhite z14-, pathtext z10-, shield::shield z10-)
|
||||
highway-path-bridge::bridgeblack # line::bridgeblack z17- (also has line z15-, line::bridgewhite z15-, pathtext z15-)
|
||||
highway-path-bridge::bridgeblack # line::bridgeblack z17- (also has line z14-, line::bridgewhite z15-, pathtext z15-)
|
||||
highway-pedestrian-bridge::bridgeblack # line::bridgeblack z14- (also has line z13-, line::bridgewhite z13-, pathtext z14-)
|
||||
highway-primary-bridge::bridgeblack # line::bridgeblack z14- (also has line z8-, line::bridgewhite z14-, pathtext z10-, shield::shield z10-)
|
||||
highway-primary_link-bridge::bridgeblack # line::bridgeblack z14- (also has line z11-, line::bridgewhite z14-, pathtext z11-, shield::shield z11-)
|
||||
@@ -375,7 +375,7 @@ highway-service-bridge::bridgeblack # line::bridgeblack z16- (al
|
||||
highway-steps-bridge::bridgeblack # line::bridgeblack z17- (also has line z15-, line::bridgewhite z15-, pathtext z16-)
|
||||
highway-tertiary-bridge::bridgeblack # line::bridgeblack z14- (also has line z11-, line::bridgewhite z14-, pathtext z12-, shield::shield z13-)
|
||||
highway-tertiary_link-bridge::bridgeblack # line::bridgeblack z14- (also has line z14-, line::bridgewhite z14-, pathtext z18-)
|
||||
highway-track-bridge::bridgeblack # line::bridgeblack z17- (also has line z15-, line::bridgewhite z15-, pathtext z15-)
|
||||
highway-track-bridge::bridgeblack # line::bridgeblack z17- (also has line z14-, line::bridgewhite z15-, pathtext z15-)
|
||||
highway-trunk-bridge::bridgeblack # line::bridgeblack z13- (also has line z6-, line::bridgewhite z13-, pathtext z10-, shield::shield z10-)
|
||||
highway-trunk_link-bridge::bridgeblack # line::bridgeblack z14- (also has line z10-, line::bridgewhite z14-, pathtext z10-, shield::shield z10-)
|
||||
highway-unclassified-bridge::bridgeblack # line::bridgeblack z14- (also has line z11-, line::bridgewhite z14-, pathtext z13-)
|
||||
@@ -407,7 +407,7 @@ piste:type-downhill-expert # line z14- (also has pathte
|
||||
piste:type-downhill-freeride # line z14- (also has pathtext z15-)
|
||||
piste:type-downhill-intermediate # line z14- (also has pathtext z15-)
|
||||
piste:type-downhill-novice # line z14- (also has pathtext z15-)
|
||||
piste:type-hike # line z15- (also has pathtext z15-)
|
||||
piste:type-hike # line z14- (also has pathtext z15-)
|
||||
piste:type-nordic # line z14- (also has pathtext z15-)
|
||||
piste:type-skitour # line z14- (also has pathtext z15-)
|
||||
piste:type-sled # line z14- (also has pathtext z15-)
|
||||
|
||||
@@ -705,13 +705,13 @@ natural-rock # icon z17- (also has captio
|
||||
highway-bridleway # pathtext z15- (also has line z14-)
|
||||
highway-bridleway-bridge # pathtext z15- (also has line z14-, line::bridgeblack z17-, line::bridgewhite z15-)
|
||||
highway-bridleway-tunnel # pathtext z15- (also has line z14-, line::tunnelBackground z17-, line::tunnelCasing z17-)
|
||||
highway-path # pathtext z15- (also has line z15-)
|
||||
highway-path-bicycle # pathtext z15- (also has line z15-, line::cycleline z14-)
|
||||
highway-path-bridge # pathtext z15- (also has line z15-, line::bridgeblack z17-, line::bridgewhite z15-)
|
||||
highway-path-difficult # pathtext z15- (also has line z15-)
|
||||
highway-path-expert # pathtext z15- (also has line z15-)
|
||||
highway-path-horse # pathtext z15- (also has line z15-)
|
||||
highway-path-tunnel # pathtext z15- (also has line z15-, line::tunnelBackground z17-, line::tunnelCasing z17-)
|
||||
highway-path # pathtext z15- (also has line z14-)
|
||||
highway-path-bicycle # pathtext z15- (also has line z14-, line::cycleline z14-)
|
||||
highway-path-bridge # pathtext z15- (also has line z14-, line::bridgeblack z17-, line::bridgewhite z15-)
|
||||
highway-path-difficult # pathtext z15- (also has line z14-)
|
||||
highway-path-expert # pathtext z15- (also has line z14-)
|
||||
highway-path-horse # pathtext z15- (also has line z14-)
|
||||
highway-path-tunnel # pathtext z15- (also has line z14-, line::tunnelBackground z17-, line::tunnelCasing z17-)
|
||||
=== 2820
|
||||
|
||||
highway-steps # pathtext z16- (also has line z15-)
|
||||
@@ -719,11 +719,11 @@ highway-steps-bridge # pathtext z16- (also has li
|
||||
highway-steps-tunnel # pathtext z16- (also has line z15-, line::tunnelBackground z17-, line::tunnelCasing z17-)
|
||||
=== 2810
|
||||
|
||||
highway-track # pathtext z15- (also has line z15-)
|
||||
highway-track-area # pathtext z15- (also has line z15-)
|
||||
highway-track-bridge # pathtext z15- (also has line z15-, line::bridgeblack z17-, line::bridgewhite z15-)
|
||||
highway-track-no-access # pathtext z15- (also has line z15-)
|
||||
highway-track-tunnel # pathtext z15- (also has line z15-, line::tunnelBackground z17-, line::tunnelCasing z17-)
|
||||
highway-track # pathtext z15- (also has line z14-)
|
||||
highway-track-area # pathtext z15- (also has line z14-)
|
||||
highway-track-bridge # pathtext z15- (also has line z14-, line::bridgeblack z17-, line::bridgewhite z15-)
|
||||
highway-track-no-access # pathtext z15- (also has line z14-)
|
||||
highway-track-tunnel # pathtext z15- (also has line z14-, line::tunnelBackground z17-, line::tunnelCasing z17-)
|
||||
=== 2780
|
||||
|
||||
highway-service # pathtext z16- (also has line z15-)
|
||||
@@ -739,7 +739,7 @@ piste:type-downhill-expert # pathtext z15- (also has li
|
||||
piste:type-downhill-freeride # pathtext z15- (also has line z14-)
|
||||
piste:type-downhill-intermediate # pathtext z15- (also has line z14-)
|
||||
piste:type-downhill-novice # pathtext z15- (also has line z14-)
|
||||
piste:type-hike # pathtext z15- (also has line z15-)
|
||||
piste:type-hike # pathtext z15- (also has line z14-)
|
||||
piste:type-nordic # pathtext z15- (also has line z14-)
|
||||
piste:type-skitour # pathtext z15- (also has line z14-)
|
||||
piste:type-sled # pathtext z15- (also has line z14-)
|
||||
|
||||
@@ -65,8 +65,8 @@
|
||||
/* 4.LANDUSE */
|
||||
/*4.1 Main landuse*/
|
||||
|
||||
@pedestrian_area: #FAF0E2;
|
||||
@pedestrian_area_light: #FCF2E4;
|
||||
@pedestrian_area: #F7EDDF;
|
||||
@pedestrian_area_light: #FAF0E2;
|
||||
@railway_platform: #ECE3D6;
|
||||
@university: #F5DFBC;
|
||||
@hospital: #FFDAD6;
|
||||
|
||||
@@ -1,58 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
version="1.1"
|
||||
viewBox="0 0 24 24"
|
||||
width="18"
|
||||
height="18"
|
||||
id="svg1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<title
|
||||
id="title1">train-m</title>
|
||||
<g
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
id="g1"
|
||||
transform="matrix(-1,0,0,1,24,0)">
|
||||
<g
|
||||
id="train-m"
|
||||
fill-rule="nonzero">
|
||||
<rect
|
||||
id="Rectangle"
|
||||
width="24"
|
||||
height="24"
|
||||
rx="2.5"
|
||||
fill="#ffffff"
|
||||
opacity="0.6"
|
||||
x="0"
|
||||
y="0" />
|
||||
<rect
|
||||
id="rect1"
|
||||
x="1"
|
||||
y="1"
|
||||
width="22"
|
||||
height="22"
|
||||
rx="2"
|
||||
fill="#2f6499" />
|
||||
<path
|
||||
id="train-m-a"
|
||||
d="m 3.0333,14 0.66667,-1 h -1.7 l -2,3 H 0.6296 c 0.66871,0 1.2932,-0.3342 1.6641,-0.8906 L 2.366634,15 h 7.2667 l 0.072934,0.1094 c 0.37093,0.5564 0.99539,0.8906 1.6641,0.8906 h 0.62963 l -2,-3 h -1.7 l 0.66667,1 h -5.9333 z M 3.3868,0 h 5.2263 c 1.612,0 2.9358,1.2739 2.9978,2.8847 l 0.30917,8.0384 c 0.04245,1.1038 -0.8179,2.0329 -1.9217,2.0754 C 9.97276,12.999485 9.947133,13 9.921504,13 h -7.8432 c -1.1046,0 -2,-0.89543 -2,-2 0,-0.02563 4.9264e-4,-0.05126 0.0014777,-0.07687 l 0.30917,-8.0384003 c 0.061954,-1.6108 1.3858,-2.8847 2.9978,-2.8847 z M 2.92316,2.5 C 2.4018,2.5 1.96792,2.90055 1.92634,3.42025 l -0.24,3 C 1.68422,6.446779 1.68316,6.473382 1.68316,6.499995 c 0,0.55228 0.44772,1 1,1 h 6.6336 c 0.026614,0 0.053216,-0.00106 0.079745,-0.00318 0.55053,-0.044042 0.96111,-0.52603 0.91707,-1.0766 l -0.24,-3 c -0.04158,-0.5197 -0.47545,-0.92025 -0.99682,-0.92025 h -6.1536 z M 2.999965,11 c 0.55228,0 1,-0.44772 1,-1 0,-0.55228 -0.44772,-1 -1,-1 -0.55228,0 -1,0.44772 -1,1 0,0.55228 0.44772,1 1,1 z m 6,0 c 0.55228,0 1,-0.44772 1,-1 0,-0.55228 -0.44772,-1 -1,-1 -0.55228,0 -1,0.44772 -1,1 0,0.55228 0.44772,1 1,1 z m -4.75,-10 c -0.13807,0 -0.25,0.11193 -0.25,0.25 0,0.13807 0.11193,0.25 0.25,0.25 h 3.5 c 0.13807,0 0.25,-0.11193 0.25,-0.25 0,-0.13807 -0.11193,-0.25 -0.25,-0.25 z"
|
||||
transform="matrix(-1,0,0,1,17.999984,4)"
|
||||
style="fill:#ffffff;fill-opacity:1" />
|
||||
</g>
|
||||
<svg version="1.1" viewBox="0 0 24 24" width="18" height="18" xmlns="http://www.w3.org/2000/svg">
|
||||
<title>train-m</title>
|
||||
<g fill="none" fill-rule="evenodd">
|
||||
<g id="train-m" fill-rule="nonzero">
|
||||
<rect id="Rectangle" width="24" height="24" rx="2.5" fill="#fff" opacity=".6"/>
|
||||
<rect id="Rectangle" x="1" y="1" width="22" height="22" rx="2" fill="#2F6499"/>
|
||||
<path id="Shape" d="m11.895 5c-2.9474 0-5.8947 0.36842-5.8947 2.9474v7c0 1.4221 1.1568 2.5789 2.5789 2.5789l-1.1053 1.1053v0.36842h1.6432l1.4737-1.4737h2.7779l1.4737 1.4737h1.4737v-0.36842l-1.1053-1.1053c1.4221 0 2.5789-1.1568 2.5789-2.5789v-7c0-2.5789-2.6379-2.9474-5.8947-2.9474zm-3.3158 11.053c-0.61158 0-1.1053-0.49368-1.1053-1.1053 0-0.61158 0.49368-1.1053 1.1053-1.1053s1.1053 0.49368 1.1053 1.1053c0 0.61158-0.49368 1.1053-1.1053 1.1053zm2.5789-5.1579h-3.6842v-2.9474h3.6842v2.9474zm1.4737 0v-2.9474h3.6842v2.9474h-3.6842zm2.5789 5.1579c-0.61158 0-1.1053-0.49368-1.1053-1.1053 0-0.61158 0.49368-1.1053 1.1053-1.1053 0.61158 0 1.1053 0.49368 1.1053 1.1053 0 0.61158-0.49368 1.1053-1.1053 1.1053z" fill="#fff"/>
|
||||
</g>
|
||||
<metadata
|
||||
id="metadata1">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:title>train-m</dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 1.1 KiB |
@@ -1,55 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
version="1.1"
|
||||
viewBox="0 0 16 16"
|
||||
width="12"
|
||||
height="12"
|
||||
id="svg1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<title
|
||||
id="title1">train-s</title>
|
||||
<g
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
id="g1">
|
||||
<g
|
||||
id="train-s"
|
||||
fill-rule="nonzero">
|
||||
<rect
|
||||
id="Rectangle"
|
||||
width="16"
|
||||
height="16"
|
||||
rx="2.5"
|
||||
fill="#fff"
|
||||
opacity=".6" />
|
||||
<rect
|
||||
id="rect1"
|
||||
x=".66667"
|
||||
y=".66667"
|
||||
width="14.667"
|
||||
height="14.667"
|
||||
rx="2"
|
||||
fill="#2F6499" />
|
||||
<path
|
||||
id="train-m-a-8"
|
||||
d="m 3.0333,14 0.66667,-1 h -1.7 l -2,3 H 0.6296 c 0.66871,0 1.2932,-0.3342 1.6641,-0.8906 L 2.366634,15 h 7.2667 l 0.072934,0.1094 c 0.37093,0.5564 0.99539,0.8906 1.6641,0.8906 h 0.62963 l -2,-3 h -1.7 l 0.66667,1 h -5.9333 z M 3.3868,0 h 5.2263 c 1.612,0 2.9358,1.2739 2.9978,2.8847 l 0.30917,8.0384 c 0.04245,1.1038 -0.8179,2.0329 -1.9217,2.0754 C 9.97276,12.999485 9.947133,13 9.921504,13 h -7.8432 c -1.1046,0 -2,-0.89543 -2,-2 0,-0.02563 4.9264e-4,-0.05126 0.0014777,-0.07687 l 0.30917,-8.0384003 c 0.061954,-1.6108 1.3858,-2.8847 2.9978,-2.8847 z M 2.92316,2.5 C 2.4018,2.5 1.96792,2.90055 1.92634,3.42025 l -0.24,3 C 1.68422,6.446779 1.68316,6.473382 1.68316,6.499995 c 0,0.55228 0.44772,1 1,1 h 6.6336 c 0.026614,0 0.053216,-0.00106 0.079745,-0.00318 0.55053,-0.044042 0.96111,-0.52603 0.91707,-1.0766 l -0.24,-3 c -0.04158,-0.5197 -0.47545,-0.92025 -0.99682,-0.92025 h -6.1536 z M 2.999965,11 c 0.55228,0 1,-0.44772 1,-1 0,-0.55228 -0.44772,-1 -1,-1 -0.55228,0 -1,0.44772 -1,1 0,0.55228 0.44772,1 1,1 z m 6,0 c 0.55228,0 1,-0.44772 1,-1 0,-0.55228 -0.44772,-1 -1,-1 -0.55228,0 -1,0.44772 -1,1 0,0.55228 0.44772,1 1,1 z m -4.75,-10 c -0.13807,0 -0.25,0.11193 -0.25,0.25 0,0.13807 0.11193,0.25 0.25,0.25 h 3.5 c 0.13807,0 0.25,-0.11193 0.25,-0.25 0,-0.13807 -0.11193,-0.25 -0.25,-0.25 z"
|
||||
transform="matrix(0.66666667,0,0,0.66666667,4.0001807,2.6668367)"
|
||||
style="fill:#ffffff;fill-opacity:1" />
|
||||
</g>
|
||||
<svg version="1.1" viewBox="0 0 16 16" width="12" height="12" xmlns="http://www.w3.org/2000/svg">
|
||||
<title>train-s</title>
|
||||
<g fill="none" fill-rule="evenodd">
|
||||
<g id="train-s" fill-rule="nonzero">
|
||||
<rect id="Rectangle" width="16" height="16" rx="2.5" fill="#fff" opacity=".6"/>
|
||||
<rect id="Rectangle" x=".66667" y=".66667" width="14.667" height="14.667" rx="2" fill="#2F6499"/>
|
||||
<path id="Shape" d="m7.9298 3.3333c-1.9649 0-3.9298 0.24561-3.9298 1.9649v4.6667c0 0.94807 0.77123 1.7193 1.7193 1.7193l-0.73684 0.73684v0.24561h1.0954l0.98246-0.98246h1.8519l0.98246 0.98246h0.98246v-0.24561l-0.73684-0.73684c0.94807 0 1.7193-0.77123 1.7193-1.7193v-4.6667c0-1.7193-1.7586-1.9649-3.9298-1.9649zm-2.2105 7.3684c-0.40772 0-0.73684-0.32912-0.73684-0.73684 0-0.40772 0.32912-0.73684 0.73684-0.73684 0.40772 0 0.73684 0.32912 0.73684 0.73684 0 0.40772-0.32912 0.73684-0.73684 0.73684zm1.7193-3.4386h-2.4561v-1.9649h2.4561v1.9649zm0.98246 0v-1.9649h2.4561v1.9649h-2.4561zm1.7193 3.4386c-0.40772 0-0.73684-0.32912-0.73684-0.73684 0-0.40772 0.32912-0.73684 0.73684-0.73684 0.40772 0 0.73684 0.32912 0.73684 0.73684 0 0.40772-0.32912 0.73684-0.73684 0.73684z" fill="#fff"/>
|
||||
</g>
|
||||
<metadata
|
||||
id="metadata1">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:title>train-s</dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 1.2 KiB |
@@ -270,7 +270,6 @@ public:
|
||||
string const opening_hours(meta.Get(feature::Metadata::FMD_OPEN_HOURS));
|
||||
string const wikipedia(meta.Get(feature::Metadata::FMD_WIKIPEDIA));
|
||||
string const wikimedia_commons(meta.Get(feature::Metadata::FMD_WIKIMEDIA_COMMONS));
|
||||
string const panoramax(meta.Get(feature::Metadata::FMD_PANORAMAX));
|
||||
string const floor(meta.Get(feature::Metadata::FMD_LEVEL));
|
||||
string const fee = category.ends_with("-fee") ? "yes" : "";
|
||||
string const atm = HasAtm(f) ? "yes" : "";
|
||||
@@ -279,7 +278,7 @@ public:
|
||||
osmId, uid, lat, lon, mwmName, category, name, std::string(city),
|
||||
addrStreet, addrHouse, phone, website, stars, std::string(metaOperator), internet,
|
||||
denomination, wheelchair, opening_hours, wikipedia, floor, fee, atm, contact_facebook,
|
||||
contact_instagram, contact_twitter, contact_vk, contact_line, contact_fediverse, contact_bluesky, wikimedia_commons, panoramax};
|
||||
contact_instagram, contact_twitter, contact_vk, contact_line, contact_fediverse, contact_bluesky, wikimedia_commons};
|
||||
|
||||
AppendNames(f, columns);
|
||||
PrintAsCSV(columns, ';', cout);
|
||||
@@ -293,7 +292,7 @@ void PrintHeader()
|
||||
"phone", "website", "cuisines", "stars", "operator",
|
||||
"internet", "denomination", "wheelchair", "opening_hours", "wikipedia",
|
||||
"floor", "fee", "atm", "contact_facebook", "contact_instagram",
|
||||
"contact_twitter", "contact_vk", "contact_line", "contact_fediverse", "contact_bluesky", "wikimedia_commons", "panoramax"};
|
||||
"contact_twitter", "contact_vk", "contact_line", "contact_fediverse", "contact_bluesky", "wikimedia_commons"};
|
||||
// Append all supported name languages in order.
|
||||
for (uint8_t idx = 1; idx < kLangCount; idx++)
|
||||
columns.push_back("name_" + string(StringUtf8Multilang::GetLangByCode(idx)));
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
#include <cmath>
|
||||
#include <cstdlib>
|
||||
#include <optional>
|
||||
#include <regex>
|
||||
#include <unordered_map>
|
||||
#include <unordered_set>
|
||||
|
||||
@@ -310,22 +309,6 @@ std::string MetadataTagProcessorImpl::ValidateAndFormat_wikimedia_commons(std::s
|
||||
return {};
|
||||
}
|
||||
|
||||
std::string MetadataTagProcessorImpl::ValidateAndFormat_panoramax(std::string v)
|
||||
{
|
||||
static auto const s_panoramaxRegex = std::regex(R"(^([a-z0-9]{8}(-[a-z0-9]{4}){3}-[a-z0-9]{12})$)");
|
||||
|
||||
if (std::regex_match(v, s_panoramaxRegex))
|
||||
return v;
|
||||
url::Url const parsedUrl = url::Url::FromString(v);
|
||||
if (const std::string* paramValue = parsedUrl.GetParamValue("pic"))
|
||||
{
|
||||
if (std::regex_match(*paramValue, s_panoramaxRegex))
|
||||
return v;
|
||||
}
|
||||
LOG(LDEBUG, ("Invalid Panoramax tag value:", v));
|
||||
return {};
|
||||
}
|
||||
|
||||
std::string MetadataTagProcessorImpl::ValidateAndFormat_airport_iata(std::string const & v) const
|
||||
{
|
||||
if (!ftypes::IsAirportChecker::Instance()(m_params.m_types))
|
||||
@@ -565,7 +548,6 @@ void MetadataTagProcessor::operator()(std::string const & k, std::string const &
|
||||
case Metadata::FMD_POSTCODE: valid = ValidateAndFormat_postcode(v); break;
|
||||
case Metadata::FMD_WIKIPEDIA: valid = ValidateAndFormat_wikipedia(v); break;
|
||||
case Metadata::FMD_WIKIMEDIA_COMMONS: valid = ValidateAndFormat_wikimedia_commons(v); break;
|
||||
case Metadata::FMD_PANORAMAX: valid = ValidateAndFormat_panoramax(v); break;
|
||||
case Metadata::FMD_FLATS: valid = ValidateAndFormat_flats(v); break;
|
||||
case Metadata::FMD_MIN_HEIGHT: // The same validator as for height.
|
||||
case Metadata::FMD_HEIGHT: valid = ValidateAndFormat_height(v); break;
|
||||
|
||||
@@ -33,7 +33,6 @@ struct MetadataTagProcessorImpl
|
||||
static std::string ValidateAndFormat_denomination(std::string const & v) ;
|
||||
static std::string ValidateAndFormat_wikipedia(std::string v) ;
|
||||
static std::string ValidateAndFormat_wikimedia_commons(std::string v) ;
|
||||
static std::string ValidateAndFormat_panoramax(std::string v) ;
|
||||
std::string ValidateAndFormat_airport_iata(std::string const & v) const;
|
||||
static std::string ValidateAndFormat_brand(std::string const & v);
|
||||
std::string ValidateAndFormat_duration(std::string const & v) const;
|
||||
|
||||
@@ -124,8 +124,6 @@ bool Metadata::TypeFromString(string_view k, Metadata::EType & outType)
|
||||
outType = Metadata::FMD_WIKIPEDIA;
|
||||
else if (k == "wikimedia_commons")
|
||||
outType = Metadata::FMD_WIKIMEDIA_COMMONS;
|
||||
else if (k == "panoramax")
|
||||
outType = Metadata::FMD_PANORAMAX;
|
||||
else if (k == "addr:flats")
|
||||
outType = Metadata::FMD_FLATS;
|
||||
else if (k == "height")
|
||||
@@ -277,7 +275,6 @@ string ToString(Metadata::EType type)
|
||||
case Metadata::FMD_JUNCTION_REF: return "junction:ref";
|
||||
case Metadata::FMD_BUILDING_MIN_LEVEL: return "building:min_level";
|
||||
case Metadata::FMD_WIKIMEDIA_COMMONS: return "wikimedia_commons";
|
||||
case Metadata::FMD_PANORAMAX: return "panoramax";
|
||||
case Metadata::FMD_CAPACITY: return "capacity";
|
||||
case Metadata::FMD_WHEELCHAIR: return "wheelchair";
|
||||
case Metadata::FMD_LOCAL_REF: return "local_ref";
|
||||
|
||||
@@ -157,7 +157,6 @@ public:
|
||||
FMD_NETWORK = 49,
|
||||
FMD_CONTACT_FEDIVERSE = 50,
|
||||
FMD_CONTACT_BLUESKY = 51,
|
||||
FMD_PANORAMAX = 52,
|
||||
FMD_COUNT
|
||||
};
|
||||
|
||||
|
||||
@@ -54,7 +54,6 @@ constexpr string_view kUrlTwitter{"https://twitter.com/"};
|
||||
constexpr string_view kUrlVk{"https://vk.com/"};
|
||||
constexpr string_view kUrlLine{"https://line.me/R/ti/p/@"};
|
||||
constexpr string_view kUrlBluesky{"https://bsky.app/profile/"};
|
||||
constexpr string_view kUrlPanoramax{"https://api.panoramax.xyz/?pic="};
|
||||
constexpr string_view kHttp{"http://"};
|
||||
constexpr string_view kHttps{"https://"};
|
||||
|
||||
@@ -674,8 +673,6 @@ string socialContactToURL(MapObject::MetadataID metaID, string_view value)
|
||||
return string{kUrlLine}.append(value);
|
||||
else // 'value' is an URL.
|
||||
return string{kHttps}.append(value);
|
||||
case MapObject::MetadataID::FMD_PANORAMAX:
|
||||
return string{kUrlPanoramax}.append(value);
|
||||
default:
|
||||
return string{value};
|
||||
}
|
||||
|
||||
@@ -20,7 +20,6 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@property(nonatomic, readonly, nullable) NSString *vk;
|
||||
@property(nonatomic, readonly, nullable) NSString *line;
|
||||
@property(nonatomic, readonly, nullable) NSString *bluesky;
|
||||
@property(nonatomic, readonly, nullable) NSString *panoramax;
|
||||
@property(nonatomic, readonly, nullable) NSString *email;
|
||||
@property(nonatomic, readonly, nullable) NSURL *emailUrl;
|
||||
@property(nonatomic, readonly, nullable) NSString *cuisine;
|
||||
|
||||
@@ -75,7 +75,6 @@ NSString * GetLocalizedMetadataValueString(MapObject::MetadataID metaID, std::st
|
||||
case MetadataID::FMD_CONTACT_VK: _vk = ToNSString(value); break;
|
||||
case MetadataID::FMD_CONTACT_LINE: _line = ToNSString(value); break;
|
||||
case MetadataID::FMD_CONTACT_BLUESKY: _bluesky = ToNSString(value); break;
|
||||
case MetadataID::FMD_PANORAMAX: _panoramax = ToNSString(value); break;
|
||||
case MetadataID::FMD_OPERATOR: _ppOperator = [NSString stringWithFormat:NSLocalizedString(@"operator", nil), ToNSString(value)]; break;
|
||||
case MetadataID::FMD_INTERNET:
|
||||
_wifiAvailable = (rawData.GetInternet() == feature::Internet::No)
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
#import "MWMSideButtonsView.h"
|
||||
#import "MWMButton.h"
|
||||
#import "MWMRouter.h"
|
||||
#import "MWMMapViewControlsCommon.h"
|
||||
|
||||
#include "base/math.hpp"
|
||||
@@ -33,10 +32,6 @@ CGFloat const kButtonsBottomOffset = 6;
|
||||
CGFloat spacing = self.availableHeight - self.zoomOut.maxY - self.location.height;
|
||||
spacing = base::Clamp(spacing, kLocationButtonSpacingMin, kLocationButtonSpacingMax);
|
||||
|
||||
if (!IPAD && (UIDevice.currentDevice.orientation == UIDeviceOrientationLandscapeLeft || UIDevice.currentDevice.orientation == UIDeviceOrientationLandscapeRight) && [MWMRouter isRoutingActive]) {
|
||||
spacing = spacing - 36;
|
||||
}
|
||||
|
||||
self.location.minY = self.zoomOut.maxY + spacing;
|
||||
self.bounds = {{}, {self.zoomOut.width, self.location.maxY}};
|
||||
if (self.zoomHidden)
|
||||
@@ -67,9 +62,6 @@ CGFloat const kButtonsBottomOffset = 6;
|
||||
[UIView animateWithDuration:kDefaultAnimationDuration
|
||||
animations:^{
|
||||
self.midY = centerShift + self.superview.height / 2;
|
||||
if ([MWMRouter isRoutingActive]) {
|
||||
self.midY = self.midY - 18;
|
||||
}
|
||||
if (self.maxY > self.bottomBound)
|
||||
self.maxY = self.bottomBound;
|
||||
}];
|
||||
|
||||
@@ -200,8 +200,6 @@ NSString *const kNavigationControlViewXibName = @"NavigationControlView";
|
||||
}
|
||||
|
||||
- (void)onRouteStart {
|
||||
[MWMSearch clear];
|
||||
[self.searchManager close];
|
||||
self.state = MWMNavigationDashboardStateNavigation;
|
||||
}
|
||||
- (void)onRouteStop {
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "ic_panoramax.svg",
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"preserves-vector-representation" : true,
|
||||
"template-rendering-intent" : "template"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 6.6 KiB |
@@ -276,12 +276,6 @@
|
||||
/* Text in the editor */
|
||||
"bluesky" = "Bluesky";
|
||||
|
||||
/* Text in menu */
|
||||
"panoramax" = "Panoramax";
|
||||
|
||||
/* Text in menu */
|
||||
"panoramax_picture" = "Panoramax Picture";
|
||||
|
||||
/* Text in menu */
|
||||
"rate_the_app" = "Gradeer die toep";
|
||||
|
||||
|
||||
@@ -276,12 +276,6 @@
|
||||
/* Text in the editor */
|
||||
"bluesky" = "Bluesky";
|
||||
|
||||
/* Text in menu */
|
||||
"panoramax" = "Panoramax";
|
||||
|
||||
/* Text in menu */
|
||||
"panoramax_picture" = "Panoramax Picture";
|
||||
|
||||
/* Text in menu */
|
||||
"rate_the_app" = "قيّم التطبيق";
|
||||
|
||||
@@ -482,7 +476,7 @@
|
||||
"read_in_wikipedia" = "ويكيبيديا";
|
||||
|
||||
/* Place Page link to Wikimedia Commons. */
|
||||
"wikimedia_commons" = "ويكيميديا كومنز";
|
||||
"wikimedia_commons" = "Wikimedia Commons";
|
||||
"p2p_your_location" = "موقعك";
|
||||
"p2p_start" = "ابدأ";
|
||||
"p2p_from_here" = "الطريق من هنا";
|
||||
@@ -934,10 +928,10 @@
|
||||
"telegram_url" = "https://t.me/CoMapsApp";
|
||||
|
||||
/* Instagram account url for the "?" About page */
|
||||
"instagram_url" = "https://www.instagram.com/comapscommunity";
|
||||
"instagram_url" = "https://www.instagram.com/comapscommunity/";
|
||||
|
||||
/* Translated CoMaps site, add new translations here: https://github.com/organicmaps/organicmaps.github.io/tree/master/content */
|
||||
"translated_om_site_url" = "https://www.comaps.app/ar";
|
||||
"translated_om_site_url" = "https://www.comaps.app/";
|
||||
|
||||
/* Link to OSM wiki for Editor, Profile and About pages */
|
||||
"osm_wiki_about_url" = "https://wiki.openstreetmap.org/wiki/Ar:About_OpenStreetMap";
|
||||
|
||||