mirror of
https://github.com/vodemn/m3_lightmeter.git
synced 2025-08-02 03:06:49 +00:00

* 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
62 lines
1.9 KiB
Dart
62 lines
1.9 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:lightmeter/generated/l10n.dart';
|
|
|
|
enum AppFeature {
|
|
reflectedLightMetering,
|
|
incidedntLightMetering,
|
|
isoAndNdValues,
|
|
themeEngine,
|
|
spotMeteringAndHistogram,
|
|
logbook,
|
|
focalLength,
|
|
listOfFilms,
|
|
customFilms,
|
|
equipmentProfiles,
|
|
timer,
|
|
mainScreenCustomization;
|
|
|
|
static List<AppFeature> get androidFeatures => values;
|
|
|
|
static List<AppFeature> get iosFeatures => values.where((f) => f != AppFeature.incidedntLightMetering).toList();
|
|
|
|
String name(BuildContext context) {
|
|
switch (this) {
|
|
case AppFeature.reflectedLightMetering:
|
|
return S.of(context).featureReflectedLightMetering;
|
|
case AppFeature.incidedntLightMetering:
|
|
return S.of(context).featureIncidentLightMetering;
|
|
case AppFeature.isoAndNdValues:
|
|
return S.of(context).featureIsoAndNdValues;
|
|
case AppFeature.themeEngine:
|
|
return S.of(context).featureTheme;
|
|
case AppFeature.spotMeteringAndHistogram:
|
|
return S.of(context).featureSpotMeteringAndHistorgram;
|
|
case AppFeature.logbook:
|
|
return S.of(context).logbook;
|
|
case AppFeature.focalLength:
|
|
return S.of(context).featureFocalLength35mm;
|
|
case AppFeature.listOfFilms:
|
|
return S.of(context).featureListOfFilms;
|
|
case AppFeature.customFilms:
|
|
return S.of(context).featureCustomFilms;
|
|
case AppFeature.equipmentProfiles:
|
|
return S.of(context).featureEquipmentProfiles;
|
|
case AppFeature.timer:
|
|
return S.of(context).featureTimer;
|
|
case AppFeature.mainScreenCustomization:
|
|
return S.of(context).featureMeteringScreenLayout;
|
|
}
|
|
}
|
|
|
|
bool get isFree {
|
|
switch (this) {
|
|
case AppFeature.reflectedLightMetering:
|
|
case AppFeature.incidedntLightMetering:
|
|
case AppFeature.isoAndNdValues:
|
|
case AppFeature.themeEngine:
|
|
return true;
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
}
|