m3_lightmeter/lib/screens/metering/event_metering.dart
Vadim 7ad47c0636
ML-203 Logging EXIF data (#239)
* typos

* added `LogbookPhotosProvider`

* implemented `LogbookScreen`

* implemented `LogbookPhotoEditScreen`

* added photo update

* save geolocation

* added `CameraSettingsSection`

* adjusted logbook grid

* added hero animation

* fixed logbook list updates

* added empty logbook state

* added `saveLogbookPhotos` option

* fixed updating photos

* made `DialogPicker` content scrollable

* added tests for `LogbookPhotosProvider`

* made image preview full-width

* made note field multiline

* wip

* migrated to new iap service

* fixed unit tests

* typo

* fixed arb formatting

* stub logbook photos for tests

* implemented integration test for logbook

* moved date to title

* redundant bottom padding

* added logbook photo screen to screenshots generator

* Update settings.gradle

* aligned iap stub with iap release

* sync

* made logbook iap

* debug screenshots

* Update runner.dart

* fixed dialog picker of optional values

* added bottom padding to logbook edit screen

* fixed tests

* Create camera_stub_image.jpg

* Update films_provider_test.dart

* rename

* Update pubspec.yaml

* added logbook to pro features
2025-07-29 12:38:48 +02:00

53 lines
1.1 KiB
Dart

import 'package:m3_lightmeter_resources/m3_lightmeter_resources.dart';
sealed class MeteringEvent {
const MeteringEvent();
}
class EquipmentProfileChangedEvent extends MeteringEvent {
final EquipmentProfile equipmentProfileData;
const EquipmentProfileChangedEvent(this.equipmentProfileData);
}
class IsoChangedEvent extends MeteringEvent {
final IsoValue isoValue;
const IsoChangedEvent(this.isoValue);
}
class NdChangedEvent extends MeteringEvent {
final NdValue ndValue;
const NdChangedEvent(this.ndValue);
}
class MeasureEvent extends MeteringEvent {
const MeasureEvent();
}
class MeasuredEvent extends MeteringEvent {
final double ev100;
final bool isMetering;
final String? photoPath;
const MeasuredEvent(
this.ev100, {
required this.isMetering,
this.photoPath,
});
}
class MeasureErrorEvent extends MeteringEvent {
final bool isMetering;
const MeasureErrorEvent({required this.isMetering});
}
class ScreenOnTopOpenedEvent extends MeteringEvent {
const ScreenOnTopOpenedEvent();
}
class ScreenOnTopClosedEvent extends MeteringEvent {
const ScreenOnTopClosedEvent();
}