diff --git a/lib/screens/settings_screen.dart b/lib/screens/settings_screen.dart index 3fafa41..5f7b1fb 100644 --- a/lib/screens/settings_screen.dart +++ b/lib/screens/settings_screen.dart @@ -415,7 +415,11 @@ class _OfflineAreasSectionState extends State<_OfflineAreasSection> { 'Z${area.minZoom}-${area.maxZoom}\n' + 'Lat: ${area.bounds.southWest.latitude.toStringAsFixed(3)}, ${area.bounds.southWest.longitude.toStringAsFixed(3)}\n' + 'Lat: ${area.bounds.northEast.latitude.toStringAsFixed(3)}, ${area.bounds.northEast.longitude.toStringAsFixed(3)}'; - subtitle += '\nTiles: ${area.tilesTotal}'; + if (area.status == OfflineAreaStatus.downloading) { + subtitle += '\nTiles: ${area.tilesDownloaded} / ${area.tilesTotal}'; + } else { + subtitle += '\nTiles: ${area.tilesTotal}'; + } subtitle += ' | Size: $diskStr'; if (area.status == OfflineAreaStatus.complete) { subtitle += ' | Cameras: ${area.cameras.length}'; diff --git a/lib/services/offline_area_service.dart b/lib/services/offline_area_service.dart index 91c673a..833ee9d 100644 --- a/lib/services/offline_area_service.dart +++ b/lib/services/offline_area_service.dart @@ -186,10 +186,16 @@ class OfflineAreaService { } } - void cancelDownload(String id) { + void cancelDownload(String id) async { final area = _areas.firstWhere((a) => a.id == id, orElse: () => throw 'Area not found'); area.status = OfflineAreaStatus.cancelled; - saveAreasToDisk(); + // Delete partial files as on standard delete + final dir = Directory(area.directory); + if (await dir.exists()) { + await dir.delete(recursive: true); + } + _areas.remove(area); + await saveAreasToDisk(); } void deleteArea(String id) async {