mirror of
https://github.com/vodemn/m3_lightmeter.git
synced 2025-07-11 16:40:43 +00:00
added list tile to set exposure offset for equipment profile
This commit is contained in:
parent
37642f73af
commit
6d41c0116e
4 changed files with 51 additions and 2 deletions
|
@ -42,6 +42,7 @@ class EquipmentProfileEditBloc extends Bloc<EquipmentProfileEditEvent, Equipment
|
||||||
isoValues: profile.isoValues,
|
isoValues: profile.isoValues,
|
||||||
ndValues: profile.ndValues,
|
ndValues: profile.ndValues,
|
||||||
lensZoom: profile.lensZoom,
|
lensZoom: profile.lensZoom,
|
||||||
|
exposureOffset: profile.exposureOffset,
|
||||||
canSave: false,
|
canSave: false,
|
||||||
),
|
),
|
||||||
) {
|
) {
|
||||||
|
@ -60,6 +61,8 @@ class EquipmentProfileEditBloc extends Bloc<EquipmentProfileEditEvent, Equipment
|
||||||
await _onNdValuesChanged(e, emit);
|
await _onNdValuesChanged(e, emit);
|
||||||
case final EquipmentProfileLensZoomChangedEvent e:
|
case final EquipmentProfileLensZoomChangedEvent e:
|
||||||
await _onLensZoomChanged(e, emit);
|
await _onLensZoomChanged(e, emit);
|
||||||
|
case final EquipmentProfileExposureOffsetChangedEvent e:
|
||||||
|
await _onExposureOffsetChanged(e, emit);
|
||||||
case EquipmentProfileSaveEvent():
|
case EquipmentProfileSaveEvent():
|
||||||
await _onSave(event, emit);
|
await _onSave(event, emit);
|
||||||
case EquipmentProfileCopyEvent():
|
case EquipmentProfileCopyEvent():
|
||||||
|
@ -131,6 +134,16 @@ class EquipmentProfileEditBloc extends Bloc<EquipmentProfileEditEvent, Equipment
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<void> _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<void> _onSave(EquipmentProfileSaveEvent _, Emitter emit) async {
|
Future<void> _onSave(EquipmentProfileSaveEvent _, Emitter emit) async {
|
||||||
emit(state.copyWith(isLoading: true));
|
emit(state.copyWith(isLoading: true));
|
||||||
if (_isEdit) {
|
if (_isEdit) {
|
||||||
|
@ -143,6 +156,7 @@ class EquipmentProfileEditBloc extends Bloc<EquipmentProfileEditEvent, Equipment
|
||||||
shutterSpeedValues: state.shutterSpeedValues,
|
shutterSpeedValues: state.shutterSpeedValues,
|
||||||
isoValues: state.isoValues,
|
isoValues: state.isoValues,
|
||||||
lensZoom: state.lensZoom,
|
lensZoom: state.lensZoom,
|
||||||
|
exposureOffset: state.exposureOffset,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
|
@ -155,6 +169,7 @@ class EquipmentProfileEditBloc extends Bloc<EquipmentProfileEditEvent, Equipment
|
||||||
shutterSpeedValues: state.shutterSpeedValues,
|
shutterSpeedValues: state.shutterSpeedValues,
|
||||||
isoValues: state.isoValues,
|
isoValues: state.isoValues,
|
||||||
lensZoom: state.lensZoom,
|
lensZoom: state.lensZoom,
|
||||||
|
exposureOffset: state.exposureOffset,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -173,6 +188,6 @@ class EquipmentProfileEditBloc extends Bloc<EquipmentProfileEditEvent, Equipment
|
||||||
}
|
}
|
||||||
|
|
||||||
bool _canSave(String name, double? lensZoom) {
|
bool _canSave(String name, double? lensZoom) {
|
||||||
return name.isNotEmpty && lensZoom != null && _newEquipmentProfile != _originalEquipmentProfile;
|
return name.isNotEmpty && _newEquipmentProfile != _originalEquipmentProfile;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,6 +40,12 @@ class EquipmentProfileLensZoomChangedEvent extends EquipmentProfileEditEvent {
|
||||||
const EquipmentProfileLensZoomChangedEvent(this.lensZoom);
|
const EquipmentProfileLensZoomChangedEvent(this.lensZoom);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class EquipmentProfileExposureOffsetChangedEvent extends EquipmentProfileEditEvent {
|
||||||
|
final double exposureOffset;
|
||||||
|
|
||||||
|
const EquipmentProfileExposureOffsetChangedEvent(this.exposureOffset);
|
||||||
|
}
|
||||||
|
|
||||||
class EquipmentProfileSaveEvent extends EquipmentProfileEditEvent {
|
class EquipmentProfileSaveEvent extends EquipmentProfileEditEvent {
|
||||||
const EquipmentProfileSaveEvent();
|
const EquipmentProfileSaveEvent();
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,9 +10,11 @@ import 'package:lightmeter/screens/equipment_profile_edit/components/slider_pick
|
||||||
import 'package:lightmeter/screens/equipment_profile_edit/event_equipment_profile_edit.dart';
|
import 'package:lightmeter/screens/equipment_profile_edit/event_equipment_profile_edit.dart';
|
||||||
import 'package:lightmeter/screens/equipment_profile_edit/flow_equipment_profile_edit.dart';
|
import 'package:lightmeter/screens/equipment_profile_edit/flow_equipment_profile_edit.dart';
|
||||||
import 'package:lightmeter/screens/equipment_profile_edit/state_equipment_profile_edit.dart';
|
import 'package:lightmeter/screens/equipment_profile_edit/state_equipment_profile_edit.dart';
|
||||||
|
import 'package:lightmeter/screens/metering/components/camera_container/bloc_container_camera.dart';
|
||||||
import 'package:lightmeter/screens/shared/sliver_screen/screen_sliver.dart';
|
import 'package:lightmeter/screens/shared/sliver_screen/screen_sliver.dart';
|
||||||
import 'package:lightmeter/screens/shared/text_field/widget_text_field.dart';
|
import 'package:lightmeter/screens/shared/text_field/widget_text_field.dart';
|
||||||
import 'package:lightmeter/utils/double_to_zoom.dart';
|
import 'package:lightmeter/utils/double_to_zoom.dart';
|
||||||
|
import 'package:lightmeter/utils/to_string_signed.dart';
|
||||||
import 'package:m3_lightmeter_resources/m3_lightmeter_resources.dart';
|
import 'package:m3_lightmeter_resources/m3_lightmeter_resources.dart';
|
||||||
|
|
||||||
class EquipmentProfileEditScreen extends StatefulWidget {
|
class EquipmentProfileEditScreen extends StatefulWidget {
|
||||||
|
@ -108,6 +110,7 @@ class _EquipmentProfileEditScreenState extends State<EquipmentProfileEditScreen>
|
||||||
_ApertureValuesListTileBuilder(),
|
_ApertureValuesListTileBuilder(),
|
||||||
_ShutterSpeedValuesListTileBuilder(),
|
_ShutterSpeedValuesListTileBuilder(),
|
||||||
_LensZoomListTileBuilder(),
|
_LensZoomListTileBuilder(),
|
||||||
|
_ExposureOffsetListTileBuilder(),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -246,7 +249,7 @@ class _LensZoomListTileBuilder extends StatelessWidget {
|
||||||
title: S.of(context).lensZoom,
|
title: S.of(context).lensZoom,
|
||||||
description: S.of(context).lensZoomDescription,
|
description: S.of(context).lensZoomDescription,
|
||||||
value: state.lensZoom,
|
value: state.lensZoom,
|
||||||
range: const RangeValues(1, 7),
|
range: CameraContainerBloc.zoomMaxRange,
|
||||||
valueAdapter: (context, value) => value.toZoom(context),
|
valueAdapter: (context, value) => value.toZoom(context),
|
||||||
onChanged: (value) {
|
onChanged: (value) {
|
||||||
context.read<EquipmentProfileEditBloc>().add(EquipmentProfileLensZoomChangedEvent(value));
|
context.read<EquipmentProfileEditBloc>().add(EquipmentProfileLensZoomChangedEvent(value));
|
||||||
|
@ -255,3 +258,24 @@ class _LensZoomListTileBuilder extends StatelessWidget {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class _ExposureOffsetListTileBuilder extends StatelessWidget {
|
||||||
|
const _ExposureOffsetListTileBuilder();
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return BlocBuilder<EquipmentProfileEditBloc, EquipmentProfileEditState>(
|
||||||
|
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<EquipmentProfileEditBloc>().add(EquipmentProfileExposureOffsetChangedEvent(value));
|
||||||
|
},
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@ class EquipmentProfileEditState {
|
||||||
final List<ShutterSpeedValue> shutterSpeedValues;
|
final List<ShutterSpeedValue> shutterSpeedValues;
|
||||||
final List<IsoValue> isoValues;
|
final List<IsoValue> isoValues;
|
||||||
final double lensZoom;
|
final double lensZoom;
|
||||||
|
final double exposureOffset;
|
||||||
final bool canSave;
|
final bool canSave;
|
||||||
final bool isLoading;
|
final bool isLoading;
|
||||||
final EquipmentProfile? profileToCopy;
|
final EquipmentProfile? profileToCopy;
|
||||||
|
@ -18,6 +19,7 @@ class EquipmentProfileEditState {
|
||||||
required this.shutterSpeedValues,
|
required this.shutterSpeedValues,
|
||||||
required this.isoValues,
|
required this.isoValues,
|
||||||
required this.lensZoom,
|
required this.lensZoom,
|
||||||
|
required this.exposureOffset,
|
||||||
required this.canSave,
|
required this.canSave,
|
||||||
this.isLoading = false,
|
this.isLoading = false,
|
||||||
this.profileToCopy,
|
this.profileToCopy,
|
||||||
|
@ -30,6 +32,7 @@ class EquipmentProfileEditState {
|
||||||
List<ShutterSpeedValue>? shutterSpeedValues,
|
List<ShutterSpeedValue>? shutterSpeedValues,
|
||||||
List<IsoValue>? isoValues,
|
List<IsoValue>? isoValues,
|
||||||
double? lensZoom,
|
double? lensZoom,
|
||||||
|
double? exposureOffset,
|
||||||
bool? canSave,
|
bool? canSave,
|
||||||
bool? isLoading,
|
bool? isLoading,
|
||||||
EquipmentProfile? profileToCopy,
|
EquipmentProfile? profileToCopy,
|
||||||
|
@ -41,6 +44,7 @@ class EquipmentProfileEditState {
|
||||||
shutterSpeedValues: shutterSpeedValues ?? this.shutterSpeedValues,
|
shutterSpeedValues: shutterSpeedValues ?? this.shutterSpeedValues,
|
||||||
isoValues: isoValues ?? this.isoValues,
|
isoValues: isoValues ?? this.isoValues,
|
||||||
lensZoom: lensZoom ?? this.lensZoom,
|
lensZoom: lensZoom ?? this.lensZoom,
|
||||||
|
exposureOffset: exposureOffset ?? this.exposureOffset,
|
||||||
canSave: canSave ?? this.canSave,
|
canSave: canSave ?? this.canSave,
|
||||||
isLoading: isLoading ?? this.isLoading,
|
isLoading: isLoading ?? this.isLoading,
|
||||||
profileToCopy: profileToCopy ?? this.profileToCopy,
|
profileToCopy: profileToCopy ?? this.profileToCopy,
|
||||||
|
|
Loading…
Reference in a new issue