Aves_mio0.88/activity2.md
2026-10-03 12:51:15 +02:00

237 lines
3.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Certo Fabio. Ad oggi, per la parte **Activity**, dovremmo avere questa struttura principale.
## File Activity attuali
```text
lib/widgets/activity/
├── activity_files_page.dart
├── activity_auto_sync_controller.dart
├── activity_list_tile.dart
├── activity_map_page.dart
├── activity_sport_groups_view.dart
├── activity_album_groups_view.dart
├── preview/
│ ├── activity_entry_preview.dart
│ └── activity_track_preview.dart
└── utils/
└── activity_formatters.dart
```
***
## Cosa fa ogni file
### `activity_files_page.dart`
È ancora il file principale della pagina Activity.
Contiene:
```text
- caricamento attività DB
- scan manuale
- auto sync
- scelta cartella Activity
- apertura file manuale GPX/TCX/FIT
- gestione navbar Activity
- gestione viste:
- activities
- sports
- albums
- preferiti
- rename activity
- apertura mappa
- dialog dettagli DB
- dialog ricalcolo
```
È ancora grande, ma molto meno di prima.
***
### `activity_auto_sync_controller.dart`
Gestisce la sincronizzazione automatica:
```text
- scan su apertura pagina
- scan quando app torna in foreground
- scan dopo selezione cartella
```
***
### `activity_list_tile.dart`
Contiene le righe della lista attività:
```dart
ActivityEntryListTile
ActivityTrackListTile
```
Quindi gestisce la UI di:
```text
- activity salvata nel DB
- activity aperta manualmente
- cuore preferiti
- menu azioni
- ricalcolo
- info DB
- rename
```
***
### `activity_map_page.dart`
È la pagina mappa dell’attività.
Serve quando tocchi una activity:
```dart
_openActivity(activity)
```
***
### `activity_sport_groups_view.dart`
È la nuova pagina/griglia Sport.
Contiene:
```dart
ActivitySportGroup
ActivitySportGroupsView
```
Serve per mostrare:
```text
Corsa
Bici
Camminata
Senza sport
```
con thumbnail e numero attività.
***
### `activity_album_groups_view.dart`
È la nuova pagina/griglia Album attività.
Contiene:
```dart
ActivityAlbumGroup
ActivityAlbumGroupsView
```
Serve per mostrare album/cartelle attività tipo:
```text
Activity
main
Garmin
Zepp
Strava
```
con thumbnail e numero attività.
***
### `preview/activity_entry_preview.dart`
Contiene la preview grafica per attività DB:
```dart
ActivityEntryPreview
_ActivityEntryPreviewPainter
```
Usa:
```dart
List<ActivityPreviewPoint>
```
per disegnare la traccia salvata nel DB.
***
### `preview/activity_track_preview.dart`
Contiene la preview grafica per attività aperte manualmente:
```dart
ActivityTrackPreview
_ActivityTrackPreviewPainter
```
Usa:
```dart
ActivityTrack
```
per disegnare la traccia direttamente dal file aperto.
***
### `utils/activity_formatters.dart`
Contiene formatter e calcoli comuni:
```dart
ActivityFormatters
```
Con metodi tipo:
```dart
ActivityFormatters.distance(...)
ActivityFormatters.entryElevation(...)
ActivityFormatters.entryDate(...)
ActivityFormatters.entryDuration(...)
ActivityFormatters.computeDistanceFromTrack(...)
ActivityFormatters.readDiagnosticDouble(...)
ActivityFormatters.isExpectedActivityRoot(...)
```
***
## Prossimo file che conviene creare
Il prossimo split utile è:
```text
lib/widgets/activity/dialogs/activity_recalculate_dialog.dart
```
Per spostare fuori da `activity_files_page.dart`:
```dart
_showRecalculateDialog
_CompareLine
```
Poi subito dopo:
```text
lib/widgets/activity/dialogs/activity_db_fields_dialog.dart
```
Per spostare:
```dart
_showActivityDbFieldsDialog
_activityEntryDbRows
_DbFieldLine
```
Così `activity_files_page.dart` si alleggerisce parecchio.