added CameraSettingsSection

This commit is contained in:
Vadim 2025-07-10 15:43:54 +02:00
parent 39501ee4ac
commit 02c6c2fc6f
13 changed files with 60 additions and 15 deletions

View file

@ -12,13 +12,12 @@ import 'package:lightmeter/screens/equipment_profiles/screen_equipment_profiles.
import 'package:lightmeter/screens/film_edit/flow_film_edit.dart'; import 'package:lightmeter/screens/film_edit/flow_film_edit.dart';
import 'package:lightmeter/screens/films/screen_films.dart'; import 'package:lightmeter/screens/films/screen_films.dart';
import 'package:lightmeter/screens/lightmeter_pro/screen_lightmeter_pro.dart'; import 'package:lightmeter/screens/lightmeter_pro/screen_lightmeter_pro.dart';
import 'package:lightmeter/screens/logbook/screen_logbook.dart';
import 'package:lightmeter/screens/logbook_photo_edit/flow_logbook_photo_edit.dart'; import 'package:lightmeter/screens/logbook_photo_edit/flow_logbook_photo_edit.dart';
import 'package:lightmeter/screens/metering/flow_metering.dart'; import 'package:lightmeter/screens/metering/flow_metering.dart';
import 'package:m3_lightmeter_resources/m3_lightmeter_resources.dart';
import 'package:lightmeter/screens/settings/flow_settings.dart'; import 'package:lightmeter/screens/settings/flow_settings.dart';
import 'package:lightmeter/screens/shared/release_notes_dialog/flow_dialog_release_notes.dart'; import 'package:lightmeter/screens/shared/release_notes_dialog/flow_dialog_release_notes.dart';
import 'package:lightmeter/screens/timer/flow_timer.dart'; import 'package:lightmeter/screens/timer/flow_timer.dart';
import 'package:m3_lightmeter_resources/m3_lightmeter_resources.dart';
class Application extends StatelessWidget { class Application extends StatelessWidget {
const Application({super.key}); const Application({super.key});
@ -54,7 +53,7 @@ class Application extends StatelessWidget {
routes: { routes: {
NavigationRoutes.meteringScreen.name: (_) => const ReleaseNotesFlow(child: MeteringFlow()), NavigationRoutes.meteringScreen.name: (_) => const ReleaseNotesFlow(child: MeteringFlow()),
NavigationRoutes.settingsScreen.name: (_) => const SettingsFlow(), NavigationRoutes.settingsScreen.name: (_) => const SettingsFlow(),
NavigationRoutes.equipmentProfilesListScreen.name: (_) => const LogbookScreen(), NavigationRoutes.equipmentProfilesListScreen.name: (_) => const EquipmentProfilesScreen(),
NavigationRoutes.equipmentProfileEditScreen.name: (context) => NavigationRoutes.equipmentProfileEditScreen.name: (context) =>
EquipmentProfileEditFlow(args: context.routeArgs<EquipmentProfileEditArgs>()), EquipmentProfileEditFlow(args: context.routeArgs<EquipmentProfileEditArgs>()),
NavigationRoutes.filmsListScreen.name: (_) => const FilmsScreen(), NavigationRoutes.filmsListScreen.name: (_) => const FilmsScreen(),

View file

@ -173,5 +173,6 @@
"note": "Notiz", "note": "Notiz",
"notSet": "Nicht gesetzt", "notSet": "Nicht gesetzt",
"location": "Standort", "location": "Standort",
"noMapsAppFound": "Keine Kartenanwendung gefunden." "noMapsAppFound": "Keine Kartenanwendung gefunden.",
"logbook": "Fototagebuch"
} }

View file

@ -173,5 +173,6 @@
"note": "Note", "note": "Note",
"notSet": "Not set", "notSet": "Not set",
"location": "Location", "location": "Location",
"noMapsAppFound": "No maps application found." "noMapsAppFound": "No maps application found.",
"logbook": "Logbook"
} }

View file

@ -32,7 +32,7 @@
"calibration": "Calibration", "calibration": "Calibration",
"calibrationMessage": "La précision des lectures mesurées par cette application dépend entièrement du matériel de l'appareil. Par conséquent, envisagez de tester cette application et de configurer les valeurs d'étalonnage des EV qui vous donneront les résultats de mesure souhaités.", "calibrationMessage": "La précision des lectures mesurées par cette application dépend entièrement du matériel de l'appareil. Par conséquent, envisagez de tester cette application et de configurer les valeurs d'étalonnage des EV qui vous donneront les résultats de mesure souhaités.",
"calibrationMessageCameraOnly": "La précision des lectures mesurées par cette application dépend entièrement de la caméra arrière de l'appareil. Par conséquent, envisagez de tester cette application et de configurer une valeur d'étalonnage EV qui vous donnera les résultats de mesure souhaités.", "calibrationMessageCameraOnly": "La précision des lectures mesurées par cette application dépend entièrement de la caméra arrière de l'appareil. Par conséquent, envisagez de tester cette application et de configurer une valeur d'étalonnage EV qui vous donnera les résultats de mesure souhaités.",
"camera": "Caméra", "camera": "Appareil photo",
"lightSensor": "Capteur de lumière", "lightSensor": "Capteur de lumière",
"showEv100": "Montrer EV\u2081\u2080\u2080", "showEv100": "Montrer EV\u2081\u2080\u2080",
"meteringScreenLayout": "Disposition de l'écran de mesure", "meteringScreenLayout": "Disposition de l'écran de mesure",
@ -164,5 +164,6 @@
"note": "Note", "note": "Note",
"notSet": "Non défini", "notSet": "Non défini",
"location": "Emplacement", "location": "Emplacement",
"noMapsAppFound": "Aucune application de cartes trouvée." "noMapsAppFound": "Aucune application de cartes trouvée.",
"logbook": "Carnet photo"
} }

View file

@ -163,5 +163,6 @@
"note": "Заметка", "note": "Заметка",
"notSet": "Не задано", "notSet": "Не задано",
"location": "Местоположение", "location": "Местоположение",
"noMapsAppFound": "Приложение карт не найдено." "noMapsAppFound": "Приложение карт не найдено.",
"logbook": "Фотожурнал"
} }

View file

@ -32,7 +32,7 @@
"calibration": "校准", "calibration": "校准",
"calibrationMessage": "此应用测量读数的准确性取决于设备的后置摄像头。如需更精确的测量结果或测量结果存在偏差,请手动校准 EV 。", "calibrationMessage": "此应用测量读数的准确性取决于设备的后置摄像头。如需更精确的测量结果或测量结果存在偏差,请手动校准 EV 。",
"calibrationMessageCameraOnly": "此应用测量读数的准确性取决于设备的后置摄像头。如需更精确的测量结果或测量结果存在偏差,请手动校准 EV 。", "calibrationMessageCameraOnly": "此应用测量读数的准确性取决于设备的后置摄像头。如需更精确的测量结果或测量结果存在偏差,请手动校准 EV 。",
"camera": "摄像头", "camera": "相机",
"lightSensor": "光线传感器", "lightSensor": "光线传感器",
"showEv100": "显示 EV\u2081\u2080\u2080", "showEv100": "显示 EV\u2081\u2080\u2080",
"meteringScreenLayout": "布局", "meteringScreenLayout": "布局",
@ -161,5 +161,6 @@
"note": "备注", "note": "备注",
"notSet": "未设置", "notSet": "未设置",
"location": "位置", "location": "位置",
"noMapsAppFound": "未找到地图应用程序。" "noMapsAppFound": "未找到地图应用程序。",
"logbook": "拍照日志"
} }

View file

@ -1,6 +1,7 @@
import 'dart:io'; import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:lightmeter/generated/l10n.dart';
import 'package:lightmeter/navigation/routes.dart'; import 'package:lightmeter/navigation/routes.dart';
import 'package:lightmeter/platform_config.dart'; import 'package:lightmeter/platform_config.dart';
import 'package:lightmeter/providers/logbook_photos_provider.dart'; import 'package:lightmeter/providers/logbook_photos_provider.dart';
@ -19,7 +20,7 @@ class _LogbookScreenState extends State<LogbookScreen> with SingleTickerProvider
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return SliverScreen( return SliverScreen(
title: Text("Logbook"), title: Text(S.of(context).logbook),
slivers: [ slivers: [
_PicturesGridBuilder( _PicturesGridBuilder(
values: LogbookPhotos.of(context), values: LogbookPhotos.of(context),

View file

@ -46,7 +46,7 @@ class LogbookPhotoEditBloc extends Bloc<LogbookPhotoEditEvent, LogbookPhotoEditS
} }
Future<void> _onApertureChanged(LogbookPhotoApertureChangedEvent event, Emitter emit) async { Future<void> _onApertureChanged(LogbookPhotoApertureChangedEvent event, Emitter emit) async {
// For now, we'll just update the state since LogbookPhoto doesn't support aperture _newPhoto = _newPhoto.copyWith(apertureValue: event.aperture);
emit( emit(
state.copyWith( state.copyWith(
aperture: event.aperture, aperture: event.aperture,
@ -56,7 +56,7 @@ class LogbookPhotoEditBloc extends Bloc<LogbookPhotoEditEvent, LogbookPhotoEditS
} }
Future<void> _onShutterSpeedChanged(LogbookPhotoShutterSpeedChangedEvent event, Emitter emit) async { Future<void> _onShutterSpeedChanged(LogbookPhotoShutterSpeedChangedEvent event, Emitter emit) async {
// For now, we'll just update the state since LogbookPhoto doesn't support shutterSpeed _newPhoto = _newPhoto.copyWith(shutterSpeedValue: event.shutterSpeed);
emit( emit(
state.copyWith( state.copyWith(
shutterSpeed: event.shutterSpeed, shutterSpeed: event.shutterSpeed,

View file

@ -0,0 +1,20 @@
import 'package:flutter/material.dart';
import 'package:lightmeter/generated/l10n.dart';
import 'package:lightmeter/screens/logbook/screen_logbook.dart';
class LogbookListTile extends StatelessWidget {
const LogbookListTile({super.key});
@override
Widget build(BuildContext context) {
return ListTile(
leading: const Icon(Icons.book_outlined),
title: Text(S.of(context).logbook),
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(builder: (_) => const LogbookScreen()),
);
},
);
}
}

View file

@ -0,0 +1,20 @@
import 'package:flutter/material.dart';
import 'package:lightmeter/generated/l10n.dart';
import 'package:lightmeter/screens/settings/components/camera/camera_features/widget_list_tile_camera_features.dart';
import 'package:lightmeter/screens/settings/components/camera/logbook/widget_list_tile_logbook.dart';
import 'package:lightmeter/screens/settings/components/shared/settings_section/widget_settings_section.dart';
class CameraSettingsSection extends StatelessWidget {
const CameraSettingsSection({super.key});
@override
Widget build(BuildContext context) {
return SettingsSection(
title: S.of(context).camera,
children: const [
LogbookListTile(),
CameraFeaturesListTile(),
],
);
}
}

View file

@ -1,7 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:lightmeter/generated/l10n.dart'; import 'package:lightmeter/generated/l10n.dart';
import 'package:lightmeter/screens/settings/components/metering/components/calibration/widget_list_tile_calibration.dart'; import 'package:lightmeter/screens/settings/components/metering/components/calibration/widget_list_tile_calibration.dart';
import 'package:lightmeter/screens/settings/components/metering/components/camera_features/widget_list_tile_camera_features.dart';
import 'package:lightmeter/screens/settings/components/metering/components/equipment_profiles/widget_list_tile_equipment_profiles.dart'; import 'package:lightmeter/screens/settings/components/metering/components/equipment_profiles/widget_list_tile_equipment_profiles.dart';
import 'package:lightmeter/screens/settings/components/metering/components/films/widget_list_tile_films.dart'; import 'package:lightmeter/screens/settings/components/metering/components/films/widget_list_tile_films.dart';
import 'package:lightmeter/screens/settings/components/metering/components/fractional_stops/widget_list_tile_fractional_stops.dart'; import 'package:lightmeter/screens/settings/components/metering/components/fractional_stops/widget_list_tile_fractional_stops.dart';
@ -23,7 +22,6 @@ class MeteringSettingsSection extends StatelessWidget {
MeteringScreenLayoutListTile(), MeteringScreenLayoutListTile(),
EquipmentProfilesListTile(), EquipmentProfilesListTile(),
FilmsListTile(), FilmsListTile(),
CameraFeaturesListTile(),
], ],
); );
} }

View file

@ -1,6 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:lightmeter/generated/l10n.dart'; import 'package:lightmeter/generated/l10n.dart';
import 'package:lightmeter/screens/settings/components/about/widget_settings_section_about.dart'; import 'package:lightmeter/screens/settings/components/about/widget_settings_section_about.dart';
import 'package:lightmeter/screens/settings/components/camera/widget_settings_section_camera.dart';
import 'package:lightmeter/screens/settings/components/general/widget_settings_section_general.dart'; import 'package:lightmeter/screens/settings/components/general/widget_settings_section_general.dart';
import 'package:lightmeter/screens/settings/components/lightmeter_pro/widget_settings_section_lightmeter_pro.dart'; import 'package:lightmeter/screens/settings/components/lightmeter_pro/widget_settings_section_lightmeter_pro.dart';
import 'package:lightmeter/screens/settings/components/metering/widget_settings_section_metering.dart'; import 'package:lightmeter/screens/settings/components/metering/widget_settings_section_metering.dart';
@ -40,6 +41,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
<Widget>[ <Widget>[
if (!context.isPro) const LightmeterProSettingsSection(), if (!context.isPro) const LightmeterProSettingsSection(),
const MeteringSettingsSection(), const MeteringSettingsSection(),
const CameraSettingsSection(),
const GeneralSettingsSection(), const GeneralSettingsSection(),
const ThemeSettingsSection(), const ThemeSettingsSection(),
const AboutSettingsSection(), const AboutSettingsSection(),