m3_lightmeter/lib/data/models/metering_screen_layout_config.dart

32 lines
998 B
Dart
Raw Normal View History

enum MeteringScreenLayoutFeature {
extremeExposurePairs, // 0
filmPicker, // 1
equipmentProfiles, // 3
}
typedef MeteringScreenLayoutConfig = Map<MeteringScreenLayoutFeature, bool>;
extension MeteringScreenLayoutConfigJson on MeteringScreenLayoutConfig {
static MeteringScreenLayoutConfig fromJson(Map<String, dynamic> data) {
int? migratedIndex(MeteringScreenLayoutFeature feature) {
switch (feature) {
case MeteringScreenLayoutFeature.extremeExposurePairs:
return 0;
case MeteringScreenLayoutFeature.filmPicker:
return 1;
case MeteringScreenLayoutFeature.equipmentProfiles:
return 3;
default:
return null;
}
}
return <MeteringScreenLayoutFeature, bool>{
for (final f in MeteringScreenLayoutFeature.values)
f: (data[migratedIndex(f).toString()] ?? data[f.name]) as bool? ?? true
};
}
Map<String, dynamic> toJson() => map((key, value) => MapEntry(key.name, value));
}