Commit 70f10b3
Changed files (4)
lib
l10n
screens
subsettings
lib/l10n/app_en.arb
@@ -47,8 +47,6 @@
"@errNotEnoughDataToGraph": {},
"errNoData": "no data",
"@errNoData": {},
- "errNoRangeForExport": "You need to specify a range in which data is exported.",
- "@errNoRangeForExport": {},
"errPleaseSelect": "please select",
"@errPleaseSelect": {},
"errWrongImportFormat": "You can only import files in CSV and SQLite database format.",
@@ -179,8 +177,6 @@
"@exportAfterEveryInput": {},
"exportAfterEveryInputDesc": "Not recommended (file explosion)",
"@exportAfterEveryInputDesc": {},
- "exportLimitDataRange": "Limit data range",
- "@exportLimitDataRange": {},
"exportInterval": "Data range",
"@exportInterval": {},
"exportFormat": "Export format",
lib/model/export_import.dart
@@ -1,5 +1,4 @@
-import 'dart:collection';
import 'dart:convert';
import 'dart:io';
import 'dart:typed_data';
@@ -224,17 +223,8 @@ class Exporter {
final messenger = ScaffoldMessenger.of(context);
final localizations = AppLocalizations.of(context);
- final UnmodifiableListView<BloodPressureRecord> entries;
- if (settings.exportLimitDataRange) {
- var range = settings.exportDataRange;
- if (range.start.millisecondsSinceEpoch == 0 || range.end.millisecondsSinceEpoch == 0) {
- messenger.showSnackBar(SnackBar(content: Text(localizations!.errNoRangeForExport)));
- return;
- }
- entries = await Provider.of<BloodPressureModel>(context, listen: false).getInTimeRange(settings.exportDataRange.start, settings.exportDataRange.end);
- } else {
- entries = await Provider.of<BloodPressureModel>(context, listen: false).all;
- }
+ final entries = await Provider.of<BloodPressureModel>(context, listen: false)
+ .getInTimeRange(settings.displayDataStart, settings.displayDataEnd);
var fileContents = await ExportFileCreator(settings).createFile(entries);
String filename = 'blood_press_${DateTime.now().toIso8601String()}';
lib/model/settings_store.dart
@@ -33,6 +33,15 @@ class Settings extends ChangeNotifier {
if (keys.contains('overrideWarnValues')) {
toAwait.add(_prefs.remove('overrideWarnValues'));
}
+ if (keys.contains('exportLimitDataRange')) {
+ toAwait.add(_prefs.remove('exportLimitDataRange'));
+ }
+ if (keys.contains('exportDataRangeStartEpochMs')) {
+ toAwait.add(_prefs.remove('exportDataRangeStartEpochMs'));
+ }
+ if (keys.contains('exportDataRangeEndEpochMs')) {
+ toAwait.add(_prefs.remove('exportDataRangeEndEpochMs'));
+ }
for (var e in toAwait) {
await e;
@@ -372,27 +381,6 @@ class Settings extends ChangeNotifier {
notifyListeners();
}
- bool get exportLimitDataRange {
- return _prefs.getBool('exportLimitDataRange') ?? false;
- }
-
- set exportLimitDataRange(bool value) {
- _prefs.setBool('exportLimitDataRange', value);
- notifyListeners();
- }
-
- DateTimeRange get exportDataRange {
- final start = DateTime.fromMillisecondsSinceEpoch(_prefs.getInt('exportDataRangeStartEpochMs') ?? 0);
- final end = DateTime.fromMillisecondsSinceEpoch(_prefs.getInt('exportDataRangeEndEpochMs') ?? 0);
- return DateTimeRange(start: start, end: end);
- }
-
- set exportDataRange(DateTimeRange value) {
- _prefs.setInt('exportDataRangeStartEpochMs', value.start.millisecondsSinceEpoch);
- _prefs.setInt('exportDataRangeEndEpochMs', value.end.millisecondsSinceEpoch);
- notifyListeners();
- }
-
bool get exportCustomEntries {
return _prefs.getBool('exportCustomEntries') ?? false;
}
lib/screens/subsettings/export_import_screen.dart
@@ -1,14 +1,13 @@
+import 'package:blood_pressure_app/components/display_interval_picker.dart';
import 'package:blood_pressure_app/components/settings_widgets.dart';
-import 'package:blood_pressure_app/model/blood_pressure.dart';
-import 'package:blood_pressure_app/model/blood_pressure_analyzer.dart';
import 'package:blood_pressure_app/model/export_import.dart';
import 'package:blood_pressure_app/model/settings_store.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
-import 'package:intl/intl.dart';
import 'package:jsaver/jSaver.dart';
import 'package:provider/provider.dart';
+// TODO: control if warn messages work
class ExportImportScreen extends StatelessWidget {
const ExportImportScreen({super.key});
@@ -26,6 +25,11 @@ class ExportImportScreen extends StatelessWidget {
child: Column(
children: [
const ExportWarnBanner(),
+ const SizedBox(height: 15,),
+ Opacity(
+ opacity: (settings.exportFormat == ExportFormat.db) ? 0.5 : 1, // TODO: centralize when restyle
+ child: const IntervalPicker(),
+ ),
SettingsTile(
title: Text(AppLocalizations.of(context)!.exportDir),
description: Text(settings.defaultExportDir),
@@ -57,7 +61,6 @@ class ExportImportScreen extends StatelessWidget {
}
},
),
- const ExportDataRangeSettings(),
InputSettingsTile(
title: Text(AppLocalizations.of(context)!.fieldDelimiter),
inputWidth: 40,
@@ -100,58 +103,6 @@ class ExportImportScreen extends StatelessWidget {
}
}
-class ExportDataRangeSettings extends StatelessWidget {
- const ExportDataRangeSettings({super.key});
-
- @override
- Widget build(BuildContext context) {
- return Consumer<Settings>(builder: (context, settings, child) {
- var exportRange = settings.exportDataRange;
- String exportRangeText;
- if (exportRange.start.millisecondsSinceEpoch != 0 && exportRange.end.millisecondsSinceEpoch != 0) {
- var formatter = DateFormat.yMMMd(AppLocalizations.of(context)!.localeName);
- exportRangeText = '${formatter.format(exportRange.start)} - ${formatter.format(exportRange.end)}';
- } else {
- exportRangeText = AppLocalizations.of(context)!.errPleaseSelect;
- }
- return Column(
- children: [
- SwitchSettingsTile(
- title: Text(AppLocalizations.of(context)!.exportLimitDataRange),
- initialValue: settings.exportLimitDataRange,
- onToggle: (value) {
- settings.exportLimitDataRange = value;
- },
- disabled: settings.exportFormat == ExportFormat.db,
- ),
- SettingsTile(
- title: Text(AppLocalizations.of(context)!.exportInterval),
- description: Text(exportRangeText),
- disabled: !settings.exportLimitDataRange || settings.exportFormat == ExportFormat.db,
- onPressed: (context) async {
- var model = Provider.of<BloodPressureModel>(context, listen: false);
- var analyzer = BloodPressureAnalyser(await model.all);
- if(!context.mounted) return;
- var newRange = await showDateRangePicker(
- context: context,
- firstDate: analyzer.firstDay??DateTime.fromMillisecondsSinceEpoch(0),
- lastDate: analyzer.lastDay??DateTime.now()
- );
- if (newRange == null && context.mounted) {
- ScaffoldMessenger.of(context)
- .showSnackBar(SnackBar(content: Text(AppLocalizations.of(context)!.errNoRangeForExport)));
- return;
- }
- settings.exportDataRange = newRange ?? DateTimeRange(start: DateTime.fromMillisecondsSinceEpoch(0), end: DateTime.fromMillisecondsSinceEpoch(0));
- }
- ),
- ],
- );
- });
- }
-
-}
-
class ExportFieldCustomisationSetting extends StatelessWidget {
const ExportFieldCustomisationSetting({super.key});