diff --git a/lib/screens/equipment_profile_edit/bloc_equipment_profile_edit.dart b/lib/screens/equipment_profile_edit/bloc_equipment_profile_edit.dart index 0627bee..6f60f81 100644 --- a/lib/screens/equipment_profile_edit/bloc_equipment_profile_edit.dart +++ b/lib/screens/equipment_profile_edit/bloc_equipment_profile_edit.dart @@ -42,6 +42,7 @@ class EquipmentProfileEditBloc extends Bloc _onExposureOffsetChanged(EquipmentProfileExposureOffsetChangedEvent event, Emitter emit) async { + _newEquipmentProfile = _newEquipmentProfile.copyWith(exposureOffset: event.exposureOffset); + emit( + state.copyWith( + exposureOffset: event.exposureOffset, + canSave: _canSave(state.name, event.exposureOffset), + ), + ); + } + Future _onSave(EquipmentProfileSaveEvent _, Emitter emit) async { emit(state.copyWith(isLoading: true)); if (_isEdit) { @@ -143,6 +156,7 @@ class EquipmentProfileEditBloc extends Bloc _ApertureValuesListTileBuilder(), _ShutterSpeedValuesListTileBuilder(), _LensZoomListTileBuilder(), + _ExposureOffsetListTileBuilder(), ], ), ), @@ -246,7 +249,7 @@ class _LensZoomListTileBuilder extends StatelessWidget { title: S.of(context).lensZoom, description: S.of(context).lensZoomDescription, value: state.lensZoom, - range: const RangeValues(1, 7), + range: CameraContainerBloc.zoomMaxRange, valueAdapter: (context, value) => value.toZoom(context), onChanged: (value) { context.read().add(EquipmentProfileLensZoomChangedEvent(value)); @@ -255,3 +258,24 @@ class _LensZoomListTileBuilder extends StatelessWidget { ); } } + +class _ExposureOffsetListTileBuilder extends StatelessWidget { + const _ExposureOffsetListTileBuilder(); + + @override + Widget build(BuildContext context) { + return BlocBuilder( + builder: (context, state) => SliderPickerListTile( + icon: Icons.light_mode_outlined, + title: S.of(context).lensZoom, + description: S.of(context).lensZoomDescription, + value: state.exposureOffset, + range: CameraContainerBloc.exposureMaxRange, + valueAdapter: (context, value) => S.of(context).evValue(value.toStringSignedAsFixed(1)), + onChanged: (value) { + context.read().add(EquipmentProfileExposureOffsetChangedEvent(value)); + }, + ), + ); + } +} diff --git a/lib/screens/equipment_profile_edit/state_equipment_profile_edit.dart b/lib/screens/equipment_profile_edit/state_equipment_profile_edit.dart index 5002a84..4727fbd 100644 --- a/lib/screens/equipment_profile_edit/state_equipment_profile_edit.dart +++ b/lib/screens/equipment_profile_edit/state_equipment_profile_edit.dart @@ -7,6 +7,7 @@ class EquipmentProfileEditState { final List shutterSpeedValues; final List isoValues; final double lensZoom; + final double exposureOffset; final bool canSave; final bool isLoading; final EquipmentProfile? profileToCopy; @@ -18,6 +19,7 @@ class EquipmentProfileEditState { required this.shutterSpeedValues, required this.isoValues, required this.lensZoom, + required this.exposureOffset, required this.canSave, this.isLoading = false, this.profileToCopy, @@ -30,6 +32,7 @@ class EquipmentProfileEditState { List? shutterSpeedValues, List? isoValues, double? lensZoom, + double? exposureOffset, bool? canSave, bool? isLoading, EquipmentProfile? profileToCopy, @@ -41,6 +44,7 @@ class EquipmentProfileEditState { shutterSpeedValues: shutterSpeedValues ?? this.shutterSpeedValues, isoValues: isoValues ?? this.isoValues, lensZoom: lensZoom ?? this.lensZoom, + exposureOffset: exposureOffset ?? this.exposureOffset, canSave: canSave ?? this.canSave, isLoading: isLoading ?? this.isLoading, profileToCopy: profileToCopy ?? this.profileToCopy,