237 lines
3.5 KiB
Markdown
237 lines
3.5 KiB
Markdown
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.
|