feat: Add GPX import/export functionality and enhance trail management

- Implemented GPX export and import features in GpxService for location trails.
- Added UI controls for exporting and importing trails in the TrailControls widget.
- Introduced localization strings for GPX operations in Italian and Slovenian.
- Enhanced MapProvider to manage imported trails and toggle visibility for contact trails.
- Updated trail color management with TrailColorService for consistent color assignment based on contact roles.
- Improved UI for displaying contact trails with toggle options for individual and all contact trails.
- Refactored detailed compass dialog to remove unnecessary path toggle button for contacts.
This commit is contained in:
Janez T
2025-10-28 11:04:09 +01:00
parent a1207ad844
commit e7fe700fee
23 changed files with 1967 additions and 33 deletions

View File

@@ -2315,6 +2315,111 @@
"description": "Tooltip für Verlaufssteuerung"
},
"exportTrailToGpx": "Verlauf als GPX exportieren",
"@exportTrailToGpx": {
"description": "Beschriftung der Schaltfläche zum Exportieren des Verlaufs in eine GPX-Datei"
},
"importTrailFromGpx": "Verlauf aus GPX importieren",
"@importTrailFromGpx": {
"description": "Beschriftung der Schaltfläche zum Importieren des Verlaufs aus einer GPX-Datei"
},
"trailExportedSuccessfully": "Verlauf erfolgreich exportiert!",
"@trailExportedSuccessfully": {
"description": "Erfolgsmeldung beim Exportieren des Verlaufs"
},
"failedToExportTrail": "Exportieren des Verlaufs fehlgeschlagen",
"@failedToExportTrail": {
"description": "Fehlermeldung beim Exportieren des Verlaufs"
},
"failedToImportTrail": "Importieren des Verlaufs fehlgeschlagen: {error}",
"@failedToImportTrail": {
"description": "Fehlermeldung beim Importieren des Verlaufs",
"placeholders": {
"error": {
"type": "String"
}
}
},
"importTrail": "Verlauf importieren",
"@importTrail": {
"description": "Titel des Dialogs zum Importieren des Verlaufs"
},
"importTrailQuestion": "Verlauf mit {pointCount} Punkten importieren?\n\nSie können Ihren aktuellen Verlauf ersetzen oder daneben anzeigen.",
"@importTrailQuestion": {
"description": "Inhalt des Bestätigungsdialogs zum Importieren des Verlaufs",
"placeholders": {
"pointCount": {
"type": "int"
}
}
},
"viewAlongside": "Daneben anzeigen",
"@viewAlongside": {
"description": "Schaltfläche zum Importieren des Verlaufs neben dem aktuellen Verlauf"
},
"replaceCurrent": "Aktuellen ersetzen",
"@replaceCurrent": {
"description": "Schaltfläche zum Ersetzen des aktuellen Verlaufs durch importierten Verlauf"
},
"trailImported": "Verlauf importiert! ({pointCount} Punkte)",
"@trailImported": {
"description": "Erfolgsmeldung beim Importieren des Verlaufs",
"placeholders": {
"pointCount": {
"type": "int"
}
}
},
"trailReplaced": "Verlauf ersetzt! ({pointCount} Punkte)",
"@trailReplaced": {
"description": "Erfolgsmeldung beim Ersetzen des Verlaufs",
"placeholders": {
"pointCount": {
"type": "int"
}
}
},
"contactTrails": "Kontaktverläufe",
"@contactTrails": {
"description": "Überschrift des Bereichs für Kontaktverläufe"
},
"showAllContactTrails": "Alle Kontaktverläufe anzeigen",
"@showAllContactTrails": {
"description": "Beschriftung zum Umschalten der Anzeige aller Kontaktverläufe"
},
"noContactsWithLocationHistory": "Keine Kontakte mit Standortverlauf",
"@noContactsWithLocationHistory": {
"description": "Untertitel, wenn keine Kontakte mit Verläufen vorhanden sind"
},
"showingTrailsForContacts": "Verläufe für {count} Kontakte anzeigen",
"@showingTrailsForContacts": {
"description": "Untertitel mit Anzahl der Kontakte mit Verläufen",
"placeholders": {
"count": {
"type": "int"
}
}
},
"individualContactTrails": "Einzelne Kontaktverläufe",
"@individualContactTrails": {
"description": "Titel des Erweiterungselements für einzelne Kontaktverläufe"
},
"deviceInformation": "Geräteinformationen",
"@deviceInformation": {
"description": "Überschrift des Geräteinformationen-Bereichs"