From 16eef583b057284fdb66d47d400dc92572f7a347 Mon Sep 17 00:00:00 2001 From: Vadim <44135514+vodemn@users.noreply.github.com> Date: Mon, 18 Sep 2023 16:17:41 +0200 Subject: [PATCH] copy equipment profile --- .../providers/equipment_profile_provider.dart | 2 +- .../widget_container_equipment_profile.dart | 66 ++++++++++++------- .../screen_equipment_profile.dart | 9 +-- 3 files changed, 49 insertions(+), 28 deletions(-) diff --git a/iap/lib/src/providers/equipment_profile_provider.dart b/iap/lib/src/providers/equipment_profile_provider.dart index 92ba8a2..0a037a9 100644 --- a/iap/lib/src/providers/equipment_profile_provider.dart +++ b/iap/lib/src/providers/equipment_profile_provider.dart @@ -36,7 +36,7 @@ class EquipmentProfileProviderState extends State { void setProfile(EquipmentProfile data) {} - void addProfile(String name) {} + void addProfile(String name, [EquipmentProfile? copyFrom]) {} void updateProdile(EquipmentProfile data) {} diff --git a/lib/screens/settings/components/equipment/components/equipment_profiles/components/equipment_profile_screen/components/equipment_profile_container/widget_container_equipment_profile.dart b/lib/screens/settings/components/equipment/components/equipment_profiles/components/equipment_profile_screen/components/equipment_profile_container/widget_container_equipment_profile.dart index 244ddce..4c404a1 100644 --- a/lib/screens/settings/components/equipment/components/equipment_profiles/components/equipment_profile_screen/components/equipment_profile_container/widget_container_equipment_profile.dart +++ b/lib/screens/settings/components/equipment/components/equipment_profiles/components/equipment_profile_screen/components/equipment_profile_container/widget_container_equipment_profile.dart @@ -10,12 +10,14 @@ import 'package:m3_lightmeter_resources/m3_lightmeter_resources.dart'; class EquipmentProfileContainer extends StatefulWidget { final EquipmentProfile data; final ValueChanged onUpdate; + final VoidCallback onCopy; final VoidCallback onDelete; final VoidCallback onExpand; const EquipmentProfileContainer({ required this.data, required this.onUpdate, + required this.onCopy, required this.onDelete, required this.onExpand, super.key, @@ -85,19 +87,9 @@ class EquipmentProfileContainerState extends State ), ], ), - trailing: Row( - mainAxisAlignment: MainAxisAlignment.end, - mainAxisSize: MainAxisSize.min, - children: [ - _AnimatedArrowButton( - controller: _controller, - onPressed: () => _expanded ? collapse() : expand(), - ), - IconButton( - onPressed: widget.onDelete, - icon: const Icon(Icons.delete), - ), - ], + trailing: _AnimatedArrowButton( + controller: _controller, + onPressed: () => _expanded ? collapse() : expand(), ), onTap: () => _expanded ? _showNameDialog() : expand(), ), @@ -120,6 +112,8 @@ class EquipmentProfileContainerState extends State _equipmentData = _equipmentData.copyWith(shutterSpeedValues: value); widget.onUpdate(_equipmentData); }, + onCopy: widget.onCopy, + onDelete: widget.onDelete, ), ], ), @@ -204,6 +198,8 @@ class _AnimatedEquipmentListTiles extends AnimatedWidget { final ValueChanged> onIsoValuesSelecred; final ValueChanged> onNdValuesSelected; final ValueChanged> onShutterSpeedValuesSelected; + final VoidCallback onCopy; + final VoidCallback onDelete; const _AnimatedEquipmentListTiles({ required AnimationController controller, @@ -212,6 +208,8 @@ class _AnimatedEquipmentListTiles extends AnimatedWidget { required this.onIsoValuesSelecred, required this.onNdValuesSelected, required this.onShutterSpeedValuesSelected, + required this.onCopy, + required this.onDelete, }) : super(listenable: controller); Animation get _progress => listenable as Animation; @@ -222,19 +220,41 @@ class _AnimatedEquipmentListTiles extends AnimatedWidget { alignment: Alignment.topCenter, size: Size( double.maxFinite, - _progress.value * Dimens.grid56 * 4, + _progress.value * Dimens.grid56 * 5, ), + // https://github.com/gskinnerTeam/flutter-folio/pull/62 child: Opacity( opacity: _progress.value, - child: EquipmentListTiles( - selectedApertureValues: equipmentData.apertureValues, - selectedIsoValues: equipmentData.isoValues, - selectedNdValues: equipmentData.ndValues, - selectedShutterSpeedValues: equipmentData.shutterSpeedValues, - onApertureValuesSelected: onApertureValuesSelected, - onIsoValuesSelecred: onIsoValuesSelecred, - onNdValuesSelected: onNdValuesSelected, - onShutterSpeedValuesSelected: onShutterSpeedValuesSelected, + child: Column( + children: [ + EquipmentListTiles( + selectedApertureValues: equipmentData.apertureValues, + selectedIsoValues: equipmentData.isoValues, + selectedNdValues: equipmentData.ndValues, + selectedShutterSpeedValues: equipmentData.shutterSpeedValues, + onApertureValuesSelected: onApertureValuesSelected, + onIsoValuesSelecred: onIsoValuesSelecred, + onNdValuesSelected: onNdValuesSelected, + onShutterSpeedValuesSelected: onShutterSpeedValuesSelected, + ), + ListTile( + contentPadding: const EdgeInsets.symmetric(horizontal: Dimens.paddingM), + trailing: Row( + mainAxisAlignment: MainAxisAlignment.end, + mainAxisSize: MainAxisSize.min, + children: [ + IconButton( + onPressed: onCopy, + icon: const Icon(Icons.copy), + ), + IconButton( + onPressed: onDelete, + icon: const Icon(Icons.delete), + ), + ], + ), + ), + ], ), ), ); diff --git a/lib/screens/settings/components/equipment/components/equipment_profiles/components/equipment_profile_screen/screen_equipment_profile.dart b/lib/screens/settings/components/equipment/components/equipment_profiles/components/equipment_profile_screen/screen_equipment_profile.dart index a5b0eca..5bb867e 100644 --- a/lib/screens/settings/components/equipment/components/equipment_profiles/components/equipment_profile_screen/screen_equipment_profile.dart +++ b/lib/screens/settings/components/equipment/components/equipment_profiles/components/equipment_profile_screen/screen_equipment_profile.dart @@ -69,6 +69,7 @@ class _EquipmentProfilesScreenState extends State { data: profile, onExpand: () => _keepExpandedAt(index), onUpdate: _updateProfileAt, + onCopy: () => _addProfile(profile), onDelete: () => _removeProfileAt(profile), ), ); @@ -81,13 +82,13 @@ class _EquipmentProfilesScreenState extends State { ); } - void _addProfile() { + void _addProfile([EquipmentProfile? copyFrom]) { showDialog( context: context, builder: (_) => const EquipmentProfileNameDialog(), - ).then((value) { - if (value != null) { - EquipmentProfileProvider.of(context).addProfile(value); + ).then((name) { + if (name != null) { + EquipmentProfileProvider.of(context).addProfile(name, copyFrom); } }); }