diff --git a/OsmAnd-java/src/main/java/net/osmand/gpx/GPXFile.java b/OsmAnd-java/src/main/java/net/osmand/gpx/GPXFile.java index b2b41a7006e..2b4e2d21023 100644 --- a/OsmAnd-java/src/main/java/net/osmand/gpx/GPXFile.java +++ b/OsmAnd-java/src/main/java/net/osmand/gpx/GPXFile.java @@ -20,6 +20,7 @@ import java.util.Map; import java.util.Set; +@Deprecated public class GPXFile extends GPXUtilities.GPXExtensions { public String author; diff --git a/OsmAnd-java/src/main/java/net/osmand/gpx/GPXTrackAnalysis.java b/OsmAnd-java/src/main/java/net/osmand/gpx/GPXTrackAnalysis.java index 8a1f03cd83b..5119458d86b 100644 --- a/OsmAnd-java/src/main/java/net/osmand/gpx/GPXTrackAnalysis.java +++ b/OsmAnd-java/src/main/java/net/osmand/gpx/GPXTrackAnalysis.java @@ -22,6 +22,7 @@ import java.util.Objects; import java.util.Set; +@Deprecated public class GPXTrackAnalysis { public static final Log LOG = PlatformUtil.getLog(GPXTrackAnalysis.class); diff --git a/OsmAnd-java/src/main/java/net/osmand/gpx/GPXUtilities.java b/OsmAnd-java/src/main/java/net/osmand/gpx/GPXUtilities.java index f9fd5832968..e7a42961fbb 100644 --- a/OsmAnd-java/src/main/java/net/osmand/gpx/GPXUtilities.java +++ b/OsmAnd-java/src/main/java/net/osmand/gpx/GPXUtilities.java @@ -53,6 +53,7 @@ import java.util.Stack; import java.util.TimeZone; +@Deprecated public class GPXUtilities { public static final Log log = PlatformUtil.getLog(GPXUtilities.class); diff --git a/OsmAnd-java/src/main/java/net/osmand/gpx/GpxParameter.java b/OsmAnd-java/src/main/java/net/osmand/gpx/GpxParameter.java index 47d9409f32a..931c96a17b9 100644 --- a/OsmAnd-java/src/main/java/net/osmand/gpx/GpxParameter.java +++ b/OsmAnd-java/src/main/java/net/osmand/gpx/GpxParameter.java @@ -7,6 +7,7 @@ import java.util.Arrays; import java.util.List; +@Deprecated public enum GpxParameter { FILE_NAME("fileName", "TEXT", String.class, null, false), diff --git a/OsmAnd-java/src/main/java/net/osmand/router/RouteColorize.java b/OsmAnd-java/src/main/java/net/osmand/router/RouteColorize.java index d0bb9a4a36a..6935b8c693e 100644 --- a/OsmAnd-java/src/main/java/net/osmand/router/RouteColorize.java +++ b/OsmAnd-java/src/main/java/net/osmand/router/RouteColorize.java @@ -17,6 +17,7 @@ import java.util.ArrayList; import java.util.List; +@Deprecated public class RouteColorize { public static double MAX_CORRECT_ELEVATION_DISTANCE = 100.0;// in meters diff --git a/OsmAnd-shared/src/commonMain/kotlin/net/osmand/shared/gpx/GpxTrackAnalysis.kt b/OsmAnd-shared/src/commonMain/kotlin/net/osmand/shared/gpx/GpxTrackAnalysis.kt index 58a83b519e1..9ebb5daa227 100644 --- a/OsmAnd-shared/src/commonMain/kotlin/net/osmand/shared/gpx/GpxTrackAnalysis.kt +++ b/OsmAnd-shared/src/commonMain/kotlin/net/osmand/shared/gpx/GpxTrackAnalysis.kt @@ -168,7 +168,9 @@ class GpxTrackAnalysis { set(value) = setGpxParameter(GpxParameter.TOTAL_DISTANCE, value.toDouble()) fun isTimeSpecified(): Boolean { - return startTime != Long.MAX_VALUE && startTime != 0L + val startTime = startTime + val endTime = endTime + return startTime != Long.MAX_VALUE && startTime != 0L && endTime != Long.MIN_VALUE && endTime != 0L } fun isTimeMoving(): Boolean { diff --git a/OsmAnd-shared/src/commonMain/kotlin/net/osmand/shared/gpx/GpxUtilities.kt b/OsmAnd-shared/src/commonMain/kotlin/net/osmand/shared/gpx/GpxUtilities.kt index 33b8e5bb00d..709d47dd872 100644 --- a/OsmAnd-shared/src/commonMain/kotlin/net/osmand/shared/gpx/GpxUtilities.kt +++ b/OsmAnd-shared/src/commonMain/kotlin/net/osmand/shared/gpx/GpxUtilities.kt @@ -729,10 +729,10 @@ object GpxUtilities { progress?.progress(1) } - fun assignExtensionWriter(wptPt: WptPt, pluginsExtensions: Map) { + fun assignExtensionWriter(wptPt: WptPt, extensions: Map) { val regularExtensions = HashMap() val gpxtpxExtensions = HashMap() - for ((key, value) in pluginsExtensions) { + for ((key, value) in extensions) { if (key.startsWith(GPXTPX_PREFIX)) { gpxtpxExtensions[key] = value } else { diff --git a/OsmAnd-shared/src/commonMain/kotlin/net/osmand/shared/gpx/TrackFolderLoaderTask.kt b/OsmAnd-shared/src/commonMain/kotlin/net/osmand/shared/gpx/TrackFolderLoaderTask.kt index 6645a594085..2d58156f439 100644 --- a/OsmAnd-shared/src/commonMain/kotlin/net/osmand/shared/gpx/TrackFolderLoaderTask.kt +++ b/OsmAnd-shared/src/commonMain/kotlin/net/osmand/shared/gpx/TrackFolderLoaderTask.kt @@ -9,13 +9,10 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import net.osmand.shared.KAsyncTask import net.osmand.shared.extensions.currentTimeMillis -import net.osmand.shared.extensions.format -import net.osmand.shared.gpx.GpxDbHelper.GpxDataItemCallback import net.osmand.shared.gpx.GpxDbHelper.GpxDataItemCallbackEx import net.osmand.shared.gpx.data.TrackFolder import net.osmand.shared.io.KFile import net.osmand.shared.util.LoggerFactory -import net.osmand.shared.util.PlatformUtil class TrackFolderLoaderTask( private val folder: TrackFolder, @@ -73,6 +70,7 @@ class TrackFolderLoaderTask( override fun onPostExecute(result: TrackFolder) { val cachedRootFolder = cachedRootFolder if (result === cachedRootFolder) folder.update(cachedRootFolder) + resetCachedData(folder) listener.loadTracksFinished(folder) SmartFolderHelper.notifyUpdateListeners() } @@ -117,7 +115,7 @@ class TrackFolderLoaderTask( launch { log.info("Loading track subfolder = $subfolder") scanFolder(subfolder, progress, trackItems) - folder.addSubFolder(subfolder) + taskSync.synchronize { folder.addSubFolder(subfolder) } } } else if (GpxHelper.isGpxFile(file)) { val item = TrackItem(file) @@ -141,7 +139,7 @@ class TrackFolderLoaderTask( } } } - folder.addTrackItems(batchTrackItems) + taskSync.synchronize { folder.addTrackItems(batchTrackItems) } } } if (isCancelled()) return@coroutineScope diff --git a/OsmAnd-shared/src/commonMain/kotlin/net/osmand/shared/gpx/data/TrackFolder.kt b/OsmAnd-shared/src/commonMain/kotlin/net/osmand/shared/gpx/data/TrackFolder.kt index 4aa493c0e5f..429754ac594 100644 --- a/OsmAnd-shared/src/commonMain/kotlin/net/osmand/shared/gpx/data/TrackFolder.kt +++ b/OsmAnd-shared/src/commonMain/kotlin/net/osmand/shared/gpx/data/TrackFolder.kt @@ -12,8 +12,8 @@ class TrackFolder(dirFile: KFile, parentFolder: TrackFolder?) : TracksGroup, ComparableTracksGroup { private var dirFile: KFile private val parentFolder: TrackFolder? - private var trackItems = listOf() - private var subFolders = listOf() + private var trackItems = mutableListOf() + private var subFolders = mutableListOf() private var flattenedTrackItems: List? = null private var flattenedSubFolders: List? = null private var folderAnalysis: TrackFolderAnalysis? = null @@ -29,8 +29,8 @@ class TrackFolder(dirFile: KFile, parentFolder: TrackFolder?) : } fun update(folder: TrackFolder) { - trackItems = folder.trackItems.toList() - subFolders = folder.subFolders.toList() + trackItems = ArrayList(folder.trackItems) + subFolders = ArrayList(folder.subFolders) flattenedTrackItems = folder.flattenedTrackItems?.toList() flattenedSubFolders = folder.flattenedSubFolders?.toList() folderAnalysis = folder.folderAnalysis @@ -76,7 +76,7 @@ class TrackFolder(dirFile: KFile, parentFolder: TrackFolder?) : } fun addSubFolder(subFolder: TrackFolder) { - this.subFolders = KCollectionUtils.addToList(this.subFolders, subFolder) + this.subFolders.add(subFolder) } fun setTrackItems(trackItems: MutableList) { @@ -84,11 +84,11 @@ class TrackFolder(dirFile: KFile, parentFolder: TrackFolder?) : } fun addTrackItem(trackItem: TrackItem) { - this.trackItems = KCollectionUtils.addToList(this.trackItems, trackItem) + this.trackItems.add(trackItem) } fun addTrackItems(trackItems: List) { - this.trackItems = KCollectionUtils.addAllToList(this.trackItems, trackItems) + this.trackItems.addAll(trackItems) } val isEmpty: Boolean diff --git a/OsmAnd-shared/src/commonMain/kotlin/net/osmand/shared/gpx/filters/TrackFolderAnalysis.kt b/OsmAnd-shared/src/commonMain/kotlin/net/osmand/shared/gpx/filters/TrackFolderAnalysis.kt index 1d63e7db6f5..ec4aa8ee39c 100644 --- a/OsmAnd-shared/src/commonMain/kotlin/net/osmand/shared/gpx/filters/TrackFolderAnalysis.kt +++ b/OsmAnd-shared/src/commonMain/kotlin/net/osmand/shared/gpx/filters/TrackFolderAnalysis.kt @@ -31,6 +31,7 @@ class TrackFolderAnalysis(folder: TracksGroup) { items.addAll(folder.getTrackItems()) } var totalDistanceSum = 0.0 + var timeSpanSum = 0.0 for (trackItem in items) { val dataItem = trackItem.dataItem val analysis = dataItem?.getAnalysis() @@ -43,11 +44,12 @@ class TrackFolderAnalysis(folder: TracksGroup) { fileSize += file.length() } if (analysis.isTimeSpecified()) { - timeSpan = (timeSpan + analysis.getDurationInMs() / 1000.0).toInt() + timeSpanSum += analysis.getDurationInMs() / 1000.0 } } } totalDistance = totalDistanceSum.toFloat() + timeSpan = timeSpanSum.toInt() tracksCount = items.size log.info(">>>> ${folder.getName()} = (tracks: $tracksCount, totalDistance: ${"%.2f".format(totalDistance)}, " + diff --git a/OsmAnd/res/values-b+sr+Latn/strings.xml b/OsmAnd/res/values-b+sr+Latn/strings.xml index 742d9563431..627b978df96 100644 --- a/OsmAnd/res/values-b+sr+Latn/strings.xml +++ b/OsmAnd/res/values-b+sr+Latn/strings.xml @@ -3041,7 +3041,7 @@ Dvofazno usmeravanje za auto navigaciju. Preračunava samo početni deo puta, korisno za duga putovanja. Razvoj lokalnog javnog prevoza - Prebaci se na Java (bezbedno) izrečunavanje rute javnog prevoza + Prebaci se na Java (bezbedno) izračunavanje rute javnog prevoza Prijavi se pomoću OAuth -a radi korišćenja mogućnosti uređivanja OpenStritMapa Prijavi se preko OAuth-a Obriši OpenStreetMap OAuth token @@ -5909,4 +5909,57 @@ Nema dostupnih fotografija Vikimedia V + Nije navedena vrsta goriva + Benzin + Metanol + Etanol + Dizel + TNG + KPG + Propan + Električno + Dvogorivno radno Benzin + Dvogorivno radno Metanol + Dvogorivno radno Etanol + Dvogorivno radno TNG + Dvogorivno radno KPG + Dvogorivno radno Propan + Dvogorivno radno Električno + Hibridno Benzinsko + Dvogorivno radno Električna i sa US mašina + Hibridno Etanol + Hibridno Dizel + Hibridno Električna i sa US mašina + Hibridno Regenerativno + Dvogorivno radno Vodonik + Hibridno Vodonik + Vodonik + Nepoznati tip goriva + OBD + Hibridno Električno + Metrika vozila + % + RPM + rpm + Prikazuje brzinu vozila preko OBD senzora + Prikazuje tahometarski RPM preko OBD senzora + Prikazuje temperaturu usisnog vazduha vozila preko OBD senzora + Prikazuje temperaturu ambijentalnog vazduha preko OBD senzora + Prikazuje napon baterije preko OBD senzora + Prikazuje nivo goriva u vozilu preko OBD senzora + Prikazuje vrstu goriva vozila preko OBD senzora + Temperatura ulaznog vazduha + Temperatura ambijentalnog vazduha + Napon baterije + Temperatura rashladne tečnosti motora + Nivo goriva + Stopa potrošnje goriva + Prikazuje stopu potrošnje goriva vozila na osnovu OBD lokacije + Preostalo gorivo (rastojanje) + Tip goriva + Metrika vozila + OBD podrška + Pristupa informacijama o vašem vozilu preko OBD protokola + Prikazuje temperaturu rashladne tečnosti motora preko OBD senzora + Pokazuje razdaljinu koju vozilo može da pređe sa preostalim gorivom preko OBD senzora \ No newline at end of file diff --git a/OsmAnd/res/values-eo/strings.xml b/OsmAnd/res/values-eo/strings.xml index 836056b6eee..0b13e4531e1 100644 --- a/OsmAnd/res/values-eo/strings.xml +++ b/OsmAnd/res/values-eo/strings.xml @@ -5909,4 +5909,46 @@ plurbrulaĵa, nun benzino plurbrulaĵa, nun metanolo V + plurbrulaĵa, nun etanolo + plurbrulaĵa, nun LPG + plurbrulaĵa, nun CNG + plurbrulaĵa, nun propano + plurbrulaĵa, nun elektro + plurbrulaĵa, nun elektro kaj brulmotoro + hibrida, nun benzino + hibrida, nun etanolo + hibrida, nun dizeloleo + hibrida, nun elektro + hibrida, nun elektro kaj brulmotoro + hibrida, nun reutiligo + plurbrulaĵa, nun hidrogeno + hibrida, nun hidrogeno + nekonata speco de brulaĵo + Statistikoj pri veturilo + % + Rivolua rapido + riv./min + Montras rapidon de veturilo raportatan de OBD-sentilo + Montras temperaturon de eniga aero raportatan de OBD-sentilo + Montras nivelon de brulaĵo raportatan de OBD-sentilo + Montras vetureblan distancon per la nuna brulaĵ-nivelo raportatan de OBD-sentilo + Montras temperaturon de fona aero raportatan de OBD-sentilo + Montras tension de baterio raportatan de OBD-sentilo + Temperaturo de eniga aero + Temperaturo de fona aero + Tensio de baterio + Temperaturo de malvarmiga likvaĵo + Brulaĵ-nivelo + Statistikoj pri veturilo + Konsum-rapido de brulaĵo + Montras konsum-rapidon de brulaĵo raportatan de OBD-sentilo + Brulaĵ-nivelo (distanco) + Speco de brulaĵo + Liveras informojn pri via veturilo raportatajn per la protokolo OBD. + Subteno por OBD + hidrogeno + OBD + Montras rivoluan rapidon de motoro raportatan de OBD-sentilo + Montras specon de brulaĵo raportatan de OBD-sentilo + Montras temperaturon de malvarmiga likvaĵo raportatan de OBD-sentilo \ No newline at end of file diff --git a/OsmAnd/res/values-ru/strings.xml b/OsmAnd/res/values-ru/strings.xml index e3b85a64191..0d48b5dff31 100644 --- a/OsmAnd/res/values-ru/strings.xml +++ b/OsmAnd/res/values-ru/strings.xml @@ -5933,4 +5933,5 @@ В это местоположение еще не было добавлено ни одной пользовательской фотографии Нет доступных фотографий Викимедиа + % \ No newline at end of file diff --git a/OsmAnd/res/values-sr/strings.xml b/OsmAnd/res/values-sr/strings.xml index 655d5151fa8..10868911f21 100644 --- a/OsmAnd/res/values-sr/strings.xml +++ b/OsmAnd/res/values-sr/strings.xml @@ -5900,4 +5900,58 @@ Још увек није додата ниједна корисничка фотографија на ову локацију Нема доступних фотографија Викимедиа + V + Није наведена врста горива + Бензин + Метанол + КПГ + Пропан + Електрично + Двогоривно радно Бензин + Двогоривно радно Метанол + Двогоривно радно Етанол + Двогоривно радно ТНГ + Двогоривно радно КПГ + Двогоривно радно Електрично + Етанол + Дизел + ТНГ + Двогоривно радно Пропан + Хибридно Бензинско + Хибридно Етанол + Хибридно Дизел + Двогоривно радно Електрична и са УС машина + Хибридно Електрична и са УС машина + Хибридно Регенеративно + Хибридно Водоник + Хибридно Електрично + Водоник + Непознати тип горива + ДНВ + Метрика возила + % + ОУМ + оум + Приказује брзину возила преко ДНВ сензора + Приказује тахометарски ОУМ возила преко ДНВ сензора + Приказује температуру усисног ваздуха возила преко ДНВ сензора + Приказује температуру амбијенталног ваздуха преко ДНВ сензора + Приказује температуру расхладне течности мотора преко ДНВ сензора + Приказује ниво горива у возилу преко ДНВ сензора + Приказује врсту горива возила преко ДНВ сензора + Температура улазног ваздуха + Температура амбијенталног ваздуха + Напон батерије + Температура расхладне течности мотора + Ниво горива + Стопа потрошње горива + Приказује стопу потрошње горива возила на основу ДНВ локације + Преостало гориво (растојање) + Тип горива + Метрика возила + ДНВ подршка + Приступа информацијама о вашем возилу преко ДНВ протокола + Двогоривно радно Водоник + Приказује напон батерије преко ДНВ сензора + Показује раздаљину коју возило може да пређе са преосталим горивом преко ОБД сензора \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/gallery/GalleryDetailsFragment.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/gallery/GalleryDetailsFragment.java index 76670ce4c0e..2eb1b9e9a94 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/gallery/GalleryDetailsFragment.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/gallery/GalleryDetailsFragment.java @@ -156,7 +156,12 @@ private void buildItem(@NonNull ViewGroup container, @NonNull String title, @Non return true; }); if (isUrl) { - view.setOnClickListener(v -> AndroidUtils.openUrl(app, description, nightMode)); + view.setOnClickListener(v -> { + FragmentActivity activity = getActivity(); + if (activity != null) { + AndroidUtils.openUrl(activity, description, nightMode); + } + }); } container.addView(view); diff --git a/OsmAnd/src/net/osmand/plus/settings/backend/backup/items/QuickActionsSettingsItem.java b/OsmAnd/src/net/osmand/plus/settings/backend/backup/items/QuickActionsSettingsItem.java index a17b161299a..2bb4f677463 100644 --- a/OsmAnd/src/net/osmand/plus/settings/backend/backup/items/QuickActionsSettingsItem.java +++ b/OsmAnd/src/net/osmand/plus/settings/backend/backup/items/QuickActionsSettingsItem.java @@ -135,7 +135,7 @@ private void readButtonState(@NonNull JSONObject json) { buttonState.setEnabled(object.getBoolean("enabled")); String iconName = object.optString("icon"); - if (Algorithms.isEmpty(iconName)) { + if (!Algorithms.isEmpty(iconName)) { buttonState.getIconPref().set(iconName); } int size = object.optInt("size"); @@ -143,11 +143,11 @@ private void readButtonState(@NonNull JSONObject json) { buttonState.getSizePref().set(size); } int cornerRadius = object.optInt("corner_radius"); - if (cornerRadius > 0) { + if (cornerRadius >= 0) { buttonState.getCornerRadiusPref().set(cornerRadius); } float opacity = (float) object.optDouble("opacity"); - if (opacity > 0) { + if (opacity >= 0) { buttonState.getOpacityPref().set(opacity); } } else { diff --git a/OsmAnd/src/net/osmand/plus/views/mapwidgets/configure/buttons/QuickActionButtonState.java b/OsmAnd/src/net/osmand/plus/views/mapwidgets/configure/buttons/QuickActionButtonState.java index c3421c05490..edd6afd87eb 100644 --- a/OsmAnd/src/net/osmand/plus/views/mapwidgets/configure/buttons/QuickActionButtonState.java +++ b/OsmAnd/src/net/osmand/plus/views/mapwidgets/configure/buttons/QuickActionButtonState.java @@ -198,7 +198,7 @@ public boolean isDefaultButton() { @Override public ButtonAppearanceParams createAppearanceParams() { ButtonAppearanceParams appearanceParams = super.createAppearanceParams(); - if (!iconPref.isSet()) { + if (Algorithms.isEmpty(iconPref.get())) { if (isSingleAction()) { int iconId = getQuickActions().get(0).getIconRes(app); if (iconId > 0) {