Compare commits

..

3 Commits

Author SHA1 Message Date
Dennis Guse 42ae582cd8 Release: v4.24.2 2025-12-19 22:14:30 +01:00
frazou 6e0ad50397 Translated using Weblate (French)
Currently translated at 100.0% (544 of 544 strings)

Translation: OpenTracks/opentracks.src-main-res-values-strings-xml--main
Translate-URL: https://translate.codeberg.org/projects/opentracks/opentracks-src-main-res-values-strings-xml-main/fr/
2025-12-13 12:35:09 +01:00
Dennis Guse d43efad52a Bugfix: crash on select all tracks or all markers.
Fixes #2231.
2025-12-12 21:59:45 +01:00
6 changed files with 28 additions and 17 deletions
+2 -2
View File
@@ -46,8 +46,8 @@ android {
defaultConfig {
applicationId 'de.dennisguse.opentracks'
versionCode 6513
versionName "v4.24.1"
versionCode 6516
versionName "v4.24.2"
buildConfigField "String", "VERSION_NAME_FULL", "\"${getVersionName()}\""
@@ -0,0 +1,4 @@
v4.24.2: OpenTracks
Bugfix:
- Crash when select all (introduced in v4.24.0)
@@ -38,7 +38,7 @@ public class TrackListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHold
private final SparseBooleanArray selection = new SparseBooleanArray();
private RecordingStatus recordingStatus;
private UnitSystem unitSystem;
private TrackListIterator cursor;
private TrackListIterator trackIterator;
private boolean selectionMode = false;
private ActivityUtils.ContextualActionModeCallback actionModeCallback;
private ActionMode actionMode;
@@ -66,26 +66,26 @@ public class TrackListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHold
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
ViewHolder viewHolder = (ViewHolder) holder;
cursor.moveToPosition(position);
viewHolder.bind(cursor);
trackIterator.moveToPosition(position);
viewHolder.bind(trackIterator);
}
@Override
public long getItemId(int position) {
cursor.moveToPosition(position);
return cursor.get().id().id();
trackIterator.moveToPosition(position);
return trackIterator.get().id().id();
}
@Override
public int getItemCount() {
if (cursor == null) {
if (trackIterator == null) {
return 0;
}
return cursor.getCount();
return trackIterator.getCount();
}
public void swapData(TrackListIterator cursor) {
this.cursor = cursor;
this.trackIterator = cursor;
this.notifyDataSetChanged();
}
@@ -132,10 +132,10 @@ public class TrackListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHold
public void setAllSelected(boolean isSelected) {
if (isSelected) {
cursor.moveToPosition(-1);
while (cursor.hasNext()) {
selection.put((int) cursor.get().id().id(), true);
cursor.next();
trackIterator.moveToFirst();
while (trackIterator.hasNext()) {
selection.put((int) trackIterator.get().id().id(), true);
trackIterator.next();
}
} else {
selection.clear();
@@ -136,7 +136,7 @@ public class MarkerListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
public void setAllSelected(boolean isSelected) {
if (isSelected) {
markerIterator.moveToPosition(-1);
markerIterator.moveToFirst();
while (markerIterator.hasNext()) {
selection.put((int) markerIterator.get().id().id(), true);
markerIterator.next();
@@ -29,6 +29,10 @@ public abstract class AutoCloseableIterator<T> implements Iterator<T>, AutoClose
return cursor.getPosition();
}
public final boolean moveToFirst() {
return cursor.moveToFirst();
}
public final boolean moveToPosition(int position) {
return cursor.moveToPosition(position);
}
+5 -2
View File
@@ -450,7 +450,7 @@ Si le dispositif GPS signale des données inexactes (par exemple, la localisatio
<string name="generic_show_errors">Afficher les erreurs</string>
<string name="generic_separator_done_total">/</string>
<string name="generic_skip">Ignorer</string>
<string name="generic_open_track">Voie ouverte</string>
<string name="generic_open_track">Ouvrir le tracé</string>
<string name="gps_disabled_msg">GPS désactivé</string>
<string name="gps_fixed_and_ready">GPS fixe et prêt</string>
<string name="import_thread_interrupted">Fil interrompu</string>
@@ -638,7 +638,7 @@ Si le dispositif GPS signale des données inexactes (par exemple, la localisatio
<string name="settings_recording_title">Enregistrement</string>
<string name="settings_theme_switch_restart">Les changements de thème peuvent nécessiter un redémarrage manuel.</string>
<string name="settings_ui_dynamic_colors_summary">Utiliser des couleurs dynamiques définies par l\'utilisateur (Android 12+ uniquement ; requiert un redémarrage manuel)</string>
<string name="settings_recording_idle_timeout_title">Délai avant mise en veille</string>
<string name="settings_recording_idle_timeout_title">Délai d\'inactivité</string>
<string name="settings_night_mode_option_night_oled">Compatible OLED</string>
<string name="settings_announcements_unit">Unité de Distance/Vitesse</string>
<string name="value_internal_sensor">Capteur interne</string>
@@ -674,4 +674,7 @@ Si le dispositif GPS signale des données inexactes (par exemple, la localisatio
<string name="settings_night_mode_option_system_dynamic">Système (couleurs dynamiques)</string>
<string name="settings_night_mode_option_day_dynamic">Jour (couleurs dynamiques)</string>
<string name="settings_night_mode_option_night_dynamic">Nuit (couleurs dynamiques)</string>
<string name="stats_elapsed_segment_time">Durée sur ce segment</string>
<string name="stats_average_segment_pace">Allure sur ce segment</string>
<string name="settings_announcements_segment_average_speed_pace">Allure/vitesse moyenne sur ce segment</string>
</resources>