diff --git a/lib/model/settings/modules/debug.dart b/lib/model/settings/modules/debug.dart new file mode 100644 index 000000000..f7402068d --- /dev/null +++ b/lib/model/settings/modules/debug.dart @@ -0,0 +1,7 @@ +import 'package:aves_model/aves_model.dart'; + +mixin DebugSettings on SettingsAccess { + bool get debugShowViewerTiles => getBool(SettingKeys.debugShowViewerTilesKey) ?? false; + + set debugShowViewerTiles(bool newValue) => set(SettingKeys.debugShowViewerTilesKey, newValue); +} diff --git a/lib/model/settings/settings.dart b/lib/model/settings/settings.dart index af1b205e0..f4d181fd1 100644 --- a/lib/model/settings/settings.dart +++ b/lib/model/settings/settings.dart @@ -12,6 +12,7 @@ import 'package:aves/model/settings/enums/accessibility_animations.dart'; import 'package:aves/model/settings/enums/map_style.dart'; import 'package:aves/model/settings/modules/app.dart'; import 'package:aves/model/settings/modules/collection.dart'; +import 'package:aves/model/settings/modules/debug.dart'; import 'package:aves/model/settings/modules/display.dart'; import 'package:aves/model/settings/modules/filter_grids.dart'; import 'package:aves/model/settings/modules/info.dart'; @@ -40,7 +41,7 @@ import 'package:latlong2/latlong.dart'; final Settings settings = Settings._private(); -class Settings with ChangeNotifier, SettingsAccess, AppSettings, DisplaySettings, NavigationSettings, SearchSettings, CollectionSettings, FilterGridsSettings, PrivacySettings, ViewerSettings, VideoSettings, SubtitlesSettings, InfoSettings { +class Settings with ChangeNotifier, SettingsAccess, DebugSettings, AppSettings, DisplaySettings, NavigationSettings, SearchSettings, CollectionSettings, FilterGridsSettings, PrivacySettings, ViewerSettings, VideoSettings, SubtitlesSettings, InfoSettings { final List _subscriptions = []; final EventChannel _platformSettingsChangeChannel = const OptionalEventChannel('deckers.thibault/aves/settings_change'); final StreamController _updateStreamController = StreamController.broadcast(); diff --git a/lib/widgets/debug/general.dart b/lib/widgets/debug/general.dart index 704dd6be5..985dc20f3 100644 --- a/lib/widgets/debug/general.dart +++ b/lib/widgets/debug/general.dart @@ -1,7 +1,9 @@ +import 'package:aves/model/settings/settings.dart'; import 'package:aves/model/source/collection_source.dart'; import 'package:aves/services/analysis_service.dart'; import 'package:aves/widgets/common/identity/aves_expansion_tile.dart'; import 'package:aves/widgets/debug/overlay.dart'; +import 'package:aves/widgets/settings/common/tiles.dart'; import 'package:aves/widgets/viewer/info/common.dart'; import 'package:collection/collection.dart'; import 'package:flutter/material.dart'; @@ -61,6 +63,11 @@ class _DebugGeneralSectionState extends State with Automati }, title: const Text('Show tasks overlay'), ), + SettingsSwitchListTile( + selector: (context, s) => s.debugShowViewerTiles, + onChanged: (v) => settings.debugShowViewerTiles = v, + title: 'Show viewer tiles', + ), ElevatedButton( onPressed: () => LeakTracking.collectLeaks().then((leaks) { const config = LeakDiagnosticConfig( diff --git a/lib/widgets/viewer/visual/raster.dart b/lib/widgets/viewer/visual/raster.dart index 3ca4148eb..8d0396be1 100644 --- a/lib/widgets/viewer/visual/raster.dart +++ b/lib/widgets/viewer/visual/raster.dart @@ -429,6 +429,28 @@ class _RegionTileState extends State<_RegionTile> { ); } + if (settings.debugShowViewerTiles) { + final regionRect = widget.regionRect; + child = Stack( + children: [ + Positioned.fill(child: child), + Text( + '\ntile=(${tileRect.left.round()}, ${tileRect.top.round()}) ${tileRect.width.round()} x ${tileRect.height.round()}' + '\nregion=(${regionRect.left.round()}, ${regionRect.top.round()}) ${regionRect.width.round()} x ${regionRect.height.round()}' + '\nsampleSize=${widget.sampleSize}', + style: const TextStyle(backgroundColor: Colors.black87), + ), + Positioned.fill( + child: DecoratedBox( + decoration: BoxDecoration( + border: Border.all(color: Colors.red, width: 1), + ), + ), + ), + ], + ); + } + return Positioned.fromRect( rect: tileRect, child: child, diff --git a/plugins/aves_model/lib/src/settings/keys.dart b/plugins/aves_model/lib/src/settings/keys.dart index c1ed5ecd6..19cec2c3c 100644 --- a/plugins/aves_model/lib/src/settings/keys.dart +++ b/plugins/aves_model/lib/src/settings/keys.dart @@ -10,6 +10,7 @@ class SettingKeys { topEntryIdsKey, recentDestinationAlbumsKey, recentTagsKey, + debugShowViewerTilesKey, }; static const _widgetKeyPrefix = 'widget_'; @@ -29,6 +30,9 @@ class SettingKeys { static const recentDestinationAlbumsKey = 'recent_destination_albums'; static const recentTagsKey = 'recent_tags'; + // debug + static const debugShowViewerTilesKey = 'debug_show_viewer_tiles'; + // display static const displayRefreshRateModeKey = 'display_refresh_rate_mode'; static const themeBrightnessKey = 'theme_brightness';