Commit c2546a5
Changed files (3)
lib
lib/model/storage/update_legacy_settings.dart
@@ -0,0 +1,186 @@
+import 'dart:convert';
+
+import 'package:blood_pressure_app/model/blood_pressure.dart';
+import 'package:blood_pressure_app/model/horizontal_graph_line.dart';
+import 'package:blood_pressure_app/model/settings_store.dart';
+import 'package:blood_pressure_app/model/storage/export_csv_settings_store.dart';
+import 'package:blood_pressure_app/model/storage/export_pdf_settings_store.dart';
+import 'package:blood_pressure_app/model/storage/export_settings_store.dart';
+import 'package:blood_pressure_app/model/storage/intervall_store.dart';
+import 'package:blood_pressure_app/model/storage/settings_store.dart';
+import 'package:flutter/material.dart';
+import 'package:shared_preferences/shared_preferences.dart';
+
+Future<void> updateLegacySettings(Settings settings, ExportSettings exportSettings, CsvExportSettings csvExportSettings,
+ PdfExportSettings pdfExportSettings, IntervallStoreManager intervallStoreManager) async {
+ SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
+
+ List<Future> futures = [];
+
+ final keys = sharedPreferences.getKeys();
+ for (final key in keys) { // remove these first
+ print(key);
+ switch (key) {
+ case 'age':
+ final age = sharedPreferences.getInt('age') ?? 30;
+ settings.sysWarn = BloodPressureWarnValues.getUpperSysWarnValue(age);
+ settings.diaWarn = BloodPressureWarnValues.getUpperDiaWarnValue(age);
+ await sharedPreferences.remove(key);
+ break;
+ case 'overrideWarnValues':
+ case 'exportLimitDataRange':
+ case 'exportDataRangeStartEpochMs':
+ case 'exportDataRangeEndEpochMs':
+ case 'exportAddableItems':
+ case 'iconSize':
+ case 'titlesCount':
+ await sharedPreferences.remove(key);
+ break;
+ case 'exportCustomEntries':
+ csvExportSettings.exportCustomFields = sharedPreferences.getBool(key)!;
+ await sharedPreferences.remove(key);
+ break;
+ case 'exportItems':
+ csvExportSettings.customFields = sharedPreferences.getStringList(key)!;
+ await sharedPreferences.remove(key);
+ break;
+ }
+ }
+ for (final key in keys) {
+ switch (key) {
+ case 'graphStepSize':
+ intervallStoreManager.mainPage.changeStepSize(TimeStep.deserialize(sharedPreferences.getInt(key)!));
+ intervallStoreManager.statsPage.changeStepSize(TimeStep.deserialize(sharedPreferences.getInt(key)!));
+ intervallStoreManager.exportPage.changeStepSize(TimeStep.deserialize(sharedPreferences.getInt(key)!));
+ break;
+ case 'followSystemDarkMode':
+ settings.followSystemDarkMode = sharedPreferences.getBool(key)!;
+ break;
+ case 'darkMode':
+ settings.darkMode = sharedPreferences.getBool(key)!;
+ break;
+ case 'accentColor':
+ settings.accentColor = createMaterialColor(sharedPreferences.getInt(key)!);
+ break;
+ case 'diaColor':
+ settings.diaColor = createMaterialColor(sharedPreferences.getInt(key)!);
+ break;
+ case 'sysColor':
+ settings.sysColor = createMaterialColor(sharedPreferences.getInt(key)!);
+ break;
+ case 'pulColor':
+ settings.pulColor = createMaterialColor(sharedPreferences.getInt(key)!);
+ break;
+ case 'allowManualTimeInput':
+ settings.allowManualTimeInput = sharedPreferences.getBool(key)!;
+ break;
+ case 'dateFormatString':
+ settings.dateFormatString = sharedPreferences.getString(key)!;
+ break;
+ case 'sysWarn':
+ settings.sysWarn = sharedPreferences.getInt(key)!;
+ break;
+ case 'diaWarn':
+ settings.sysWarn = sharedPreferences.getInt(key)!;
+ break;
+ case 'validateInputs':
+ settings.validateInputs = sharedPreferences.getBool(key)!;
+ break;
+ case 'allowMissingValues':
+ settings.allowMissingValues = sharedPreferences.getBool(key)!;
+ break;
+ case 'graphLineThickness':
+ settings.graphLineThickness = sharedPreferences.getDouble(key)!;
+ break;
+ case 'animationSpeed':
+ settings.animationSpeed = sharedPreferences.getInt(key)!;
+ break;
+ case 'confirmDeletion':
+ settings.confirmDeletion = sharedPreferences.getBool(key)!;
+ break;
+ case 'exportFormat':
+ exportSettings.exportFormat = ExportFormat.deserialize(sharedPreferences.getInt(key)!);
+ break;
+ case 'csvFieldDelimiter':
+ csvExportSettings.fieldDelimiter = sharedPreferences.getString(key)!;
+ break;
+ case 'csvTextDelimiter':
+ csvExportSettings.textDelimiter = sharedPreferences.getString(key)!;
+ break;
+ case 'exportMimeType':
+ break;
+ case 'exportCustomEntriesCsv':
+ csvExportSettings.exportCustomFields = sharedPreferences.getBool(key)!;
+ break;
+ case 'exportItemsCsv':
+ csvExportSettings.customFields = sharedPreferences.getStringList(key)!;
+ break;
+ case 'exportCsvHeadline':
+ csvExportSettings.exportHeadline = sharedPreferences.getBool(key)!;
+ break;
+ case 'defaultExportDir':
+ exportSettings.defaultExportDir = sharedPreferences.getString(key)!;
+ break;
+ case 'exportAfterEveryEntry':
+ exportSettings.exportAfterEveryEntry = sharedPreferences.getBool(key)!;
+ break;
+ case 'language':
+ final value = sharedPreferences.getString(key);
+ if (value?.isEmpty ?? true) {
+ settings.language = null;
+ } else {
+ settings.language = Locale(value!);
+ }
+ break;
+ case 'drawRegressionLines':
+ settings.drawRegressionLines = sharedPreferences.getBool(key)!;
+ break;
+ case 'exportPdfHeaderHeight':
+ pdfExportSettings.headerHeight = sharedPreferences.getDouble(key)!;
+ break;
+ case 'exportPdfCellHeight':
+ pdfExportSettings.cellHeight = sharedPreferences.getDouble(key)!;
+ break;
+ case 'exportPdfHeaderFontSize':
+ pdfExportSettings.headerFontSize = sharedPreferences.getDouble(key)!;
+ break;
+ case 'exportPdfCellFontSize':
+ pdfExportSettings.cellFontSize = sharedPreferences.getDouble(key)!;
+ break;
+ case 'exportPdfExportTitle':
+ pdfExportSettings.exportTitle = sharedPreferences.getBool(key)!;
+ break;
+ case 'exportPdfExportStatistics':
+ pdfExportSettings.exportStatistics = sharedPreferences.getBool(key)!;
+ break;
+ case 'exportPdfExportData':
+ pdfExportSettings.exportData = sharedPreferences.getBool(key)!;
+ break;
+ case 'startWithAddMeasurementPage':
+ settings.startWithAddMeasurementPage = sharedPreferences.getBool(key)!;
+ break;
+ case 'exportCustomEntriesPdf':
+ pdfExportSettings.exportCustomFields = sharedPreferences.getBool(key)!;
+ break;
+ case 'exportItemsPdf':
+ pdfExportSettings.customFields = sharedPreferences.getStringList(key)!;
+ break;
+ case 'horizontalGraphLines':
+ settings.horizontalGraphLines = sharedPreferences.getStringList(key)!.map((e) =>
+ HorizontalGraphLine.fromJson(jsonDecode(e))).toList();
+ break;
+ case 'useLegacyList':
+ settings.useLegacyList = sharedPreferences.getBool(key)!;
+ break;
+ case 'lastAppVersion':
+ break;
+ default:
+ assert(false, 'Unexpected property saved: $key with value ${sharedPreferences.get(key)}');
+ break;
+ }
+ futures.add(sharedPreferences.remove(key));
+ }
+ for (final f in futures) {
+ await f;
+ }
+}
\ No newline at end of file
lib/model/settings_store.dart
@@ -1,675 +1,7 @@
-import 'dart:convert';
-
-import 'package:blood_pressure_app/model/blood_pressure.dart';
-import 'package:blood_pressure_app/model/export_import.dart';
-import 'package:blood_pressure_app/model/export_options.dart';
-import 'package:blood_pressure_app/model/horizontal_graph_line.dart';
-import 'package:file_saver/file_saver.dart' show MimeType;
import 'package:flutter/material.dart';
-import 'package:flutter_gen/gen_l10n/app_localizations.dart';
-import 'package:package_info_plus/package_info_plus.dart';
-import 'package:shared_preferences/shared_preferences.dart';
// TODO: remove file
-class _Settings extends ChangeNotifier {
-
- late final SharedPreferences _prefs;
- final PackageInfo _packageInfo;
-
- DateTime? _displayDataStart;
- DateTime? _displayDataEnd;
-
- _Settings._create(this._packageInfo);
- // factory method, to allow for async constructor
- static Future<_Settings> create([PackageInfo? packageInfo]) async {
- final component = _Settings._create(packageInfo ?? (await PackageInfo.fromPlatform()));
- component._prefs = await SharedPreferences.getInstance();
- await component._update();
- return component;
- }
-
- Future<void> _update() async {
- final keys = _prefs.getKeys();
- List<Future> toAwait = [];
-
- // delete old keys
- if (keys.contains('age')) {
- final lastAge = _prefs.getInt('age') ?? 30;
- sysWarn = BloodPressureWarnValues.getUpperSysWarnValue(lastAge);
- diaWarn = BloodPressureWarnValues.getUpperDiaWarnValue(lastAge);
- toAwait.add(_prefs.remove('age'));
- }
- 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'));
- }
- if (keys.contains('exportAddableItems')) {
- toAwait.add(_prefs.remove('exportAddableItems'));
- }
- if (keys.contains('exportCustomEntries')) {
- await _prefs.setBool('exportCustomEntriesCsv', _prefs.getBool('exportCustomEntries') ?? false);
- toAwait.add(_prefs.remove('exportCustomEntries'));
- }
- if (keys.contains('exportItems')) {
- await _prefs.setStringList('exportItemsCsv', _prefs.getStringList('exportItems') ?? ExportFields.defaultCsv);
- toAwait.add(_prefs.remove('exportItems'));
- }
- if (keys.contains('iconSize')) {
- toAwait.add(_prefs.remove('iconSize'));
- }
- if (keys.contains('titlesCount')) {
- toAwait.add(_prefs.remove('titlesCount'));
- }
-
- // reset variables for new version. Necessary for reusing variable names in new version and avoid having unexpected
- // breaking values in the preferences
- switch (_prefs.getInt('lastAppVersion')) {
- case null:
- toAwait.add(_prefs.remove('exportCsvHeadline'));
- toAwait.add(_prefs.remove('exportCustomEntries'));
- toAwait.add(_prefs.remove('exportItems'));
- toAwait.add(_prefs.remove('exportMimeType'));
- }
-
- for (var e in toAwait) {
- await e;
- }
- await _prefs.setInt('lastAppVersion', int.parse(_packageInfo.buildNumber));
- return;
- }
-
- _TimeStep get graphStepSize {
- int stepInt = _prefs.getInt('graphStepSize') ?? 0;
- switch (stepInt) {
- case 0:
- return _TimeStep.day;
- case 1:
- return _TimeStep.month;
- case 2:
- return _TimeStep.year;
- case 3:
- return _TimeStep.lifetime;
- case 4:
- return _TimeStep.week;
- case 5:
- return _TimeStep.last7Days;
- case 6:
- return _TimeStep.last30Days;
- case 7:
- return _TimeStep.custom;
- }
- assert(false);
- return _TimeStep.day;
- }
-
- set graphStepSize(_TimeStep newStepSize) {
- _prefs.setInt('graphStepSize', ((){
- switch (newStepSize) {
- case _TimeStep.day:
- return 0;
- case _TimeStep.month:
- return 1;
- case _TimeStep.year:
- return 2;
- case _TimeStep.lifetime:
- return 3;
- case _TimeStep.week:
- return 4;
- case _TimeStep.last7Days:
- return 5;
- case _TimeStep.last30Days:
- return 6;
- case _TimeStep.custom:
- return 7;
- }
- })());
-
-
- notifyListeners();
- }
-
- void changeStepSize(_TimeStep value) {
- graphStepSize = value;
- final newInterval = getMostRecentDisplayIntervall();
- displayDataStart = newInterval[0];
- displayDataEnd = newInterval[1];
- }
-
- void setToMostRecentIntervall() {
- changeStepSize(graphStepSize);
- }
-
- void moveDisplayDataByStep(int directionalStep) {
- final oldStart = displayDataStart;
- final oldEnd = displayDataEnd;
- switch (graphStepSize) {
- case _TimeStep.day:
- displayDataStart = oldStart.copyWith(day: oldStart.day + directionalStep);
- displayDataEnd = oldEnd.copyWith(day: oldEnd.day + directionalStep);
- break;
- case _TimeStep.week:
- case _TimeStep.last7Days:
- displayDataStart = oldStart.copyWith(day: oldStart.day + directionalStep * 7);
- displayDataEnd = oldEnd.copyWith(day: oldEnd.day + directionalStep * 7);
- break;
- case _TimeStep.month:
- displayDataStart = oldStart.copyWith(month: oldStart.month + directionalStep);
- displayDataEnd = oldEnd.copyWith(month: oldEnd.month + directionalStep);
- break;
- case _TimeStep.year:
- displayDataStart = oldStart.copyWith(year: oldStart.year + directionalStep);
- displayDataEnd = oldEnd.copyWith(year: oldEnd.year + directionalStep);
- break;
- case _TimeStep.lifetime:
- displayDataStart = DateTime.fromMillisecondsSinceEpoch(1);
- displayDataEnd = DateTime.now().copyWith(hour: 23, minute: 59, second: 59);
- break;
- case _TimeStep.last30Days:
- displayDataStart = oldStart.copyWith(day: oldStart.day + directionalStep * 30);
- displayDataEnd = oldEnd.copyWith(day: oldEnd.day + directionalStep * 30);
- break;
- case _TimeStep.custom:
- final step = oldEnd.difference(oldStart) * directionalStep;
- displayDataStart = oldStart.add(step);
- displayDataEnd = oldEnd.add(step);
- break;
- }
- }
-
- List<DateTime> getMostRecentDisplayIntervall() {
- final now = DateTime.now();
- switch (graphStepSize) {
- case _TimeStep.day:
- final start = DateTime(now.year, now.month, now.day);
- return [start, start.copyWith(day: now.day + 1)];
- case _TimeStep.week:
- final start = DateTime(now.year, now.month, now.day - (now.weekday - 1)); // monday
- return [start, start.copyWith(day: start.day + DateTime.sunday)]; // end of sunday
- case _TimeStep.month:
- final start = DateTime(now.year, now.month);
- return [start, start.copyWith(month: now.month + 1)];
- case _TimeStep.year:
- final start = DateTime(now.year);
- return [start, start.copyWith(year: now.year + 1)];
- case _TimeStep.lifetime:
- final start = DateTime.fromMillisecondsSinceEpoch(1);
- final endOfToday = now.copyWith(hour: 23, minute: 59, second: 59);
- return [start, endOfToday];
- case _TimeStep.last7Days:
- final start = now.copyWith(day: now.day - 7);
- final endOfToday = now.copyWith(hour: 23, minute: 59, second: 59);
- return [start, endOfToday];
- case _TimeStep.last30Days:
- final start = now.copyWith(day: now.day - 30);
- final endOfToday = now.copyWith(hour: 23, minute: 59, second: 59);
- return [start, endOfToday];
- case _TimeStep.custom:
- // fallback, _TimeStep will be reset by getter
- return [DateTime.fromMillisecondsSinceEpoch(-1), DateTime.fromMillisecondsSinceEpoch(-1)];
- }
- }
-
- DateTime get displayDataStart {
- final s = _displayDataStart ?? getMostRecentDisplayIntervall()[0];
- if(s.millisecondsSinceEpoch < 1) {
- changeStepSize(_TimeStep.last7Days);
- }
- return s;
- }
-
- set displayDataStart(DateTime newGraphStart) {
- _displayDataStart = newGraphStart;
- notifyListeners();
- }
-
- DateTime get displayDataEnd {
- final s = _displayDataEnd ?? getMostRecentDisplayIntervall()[1];
- if(s.millisecondsSinceEpoch < 1) {
- changeStepSize(_TimeStep.last7Days);
- }
- return s;
- }
-
- set displayDataEnd(DateTime newGraphEnd) {
- _displayDataEnd = newGraphEnd;
- notifyListeners();
- }
-
- bool get followSystemDarkMode {
- return _prefs.getBool('followSystemDarkMode') ?? true;
- }
-
- set followSystemDarkMode(bool newSetting) {
- _prefs.setBool('followSystemDarkMode', newSetting);
- notifyListeners();
- }
-
- bool get darkMode {
- return _prefs.getBool('darkMode') ?? true;
- }
-
- set darkMode(bool newSetting) {
- _prefs.setBool('darkMode', newSetting);
- notifyListeners();
- }
-
- MaterialColor get accentColor {
- return createMaterialColor(_prefs.getInt('accentColor') ?? 0xFF009688);
- }
-
- set accentColor(MaterialColor newColor) {
- _prefs.setInt('accentColor', newColor.value);
- notifyListeners();
- }
-
- MaterialColor get diaColor {
- return createMaterialColor(_prefs.getInt('diaColor') ?? 0xFF4CAF50);
- }
-
- set diaColor(MaterialColor newColor) {
- _prefs.setInt('diaColor', newColor.value);
- notifyListeners();
- }
-
- MaterialColor get sysColor {
- return createMaterialColor(_prefs.getInt('sysColor') ?? 0xFF009688);
- }
-
- set sysColor(MaterialColor newColor) {
- _prefs.setInt('sysColor', newColor.value);
- notifyListeners();
- }
-
- MaterialColor get pulColor {
- return createMaterialColor(_prefs.getInt('pulColor') ?? 0xFFF44336);
- }
-
- set pulColor(MaterialColor newColor) {
- _prefs.setInt('pulColor', newColor.value);
- notifyListeners();
- }
-
- bool get allowManualTimeInput {
- return _prefs.getBool('allowManualTimeInput') ?? true;
- }
-
- set allowManualTimeInput(bool newSetting) {
- _prefs.setBool('allowManualTimeInput', newSetting);
- notifyListeners();
- }
-
- String get dateFormatString {
- return _prefs.getString('dateFormatString') ?? 'yyyy-MM-dd HH:mm';
- }
-
- set dateFormatString(String newFormatString) {
- _prefs.setString('dateFormatString', newFormatString);
- notifyListeners();
- }
-
- int get sysWarn {
- return _prefs.getInt('sysWarn') ?? 120;
- }
-
- set sysWarn(int newWarn) {
- _prefs.setInt('sysWarn', newWarn);
- notifyListeners();
- }
-
- int get diaWarn {
- return _prefs.getInt('diaWarn') ?? 80;
- }
-
- set diaWarn(int newWarn) {
- _prefs.setInt('diaWarn', newWarn);
- notifyListeners();
- }
-
- bool get validateInputs {
- return _prefs.getBool('validateInputs') ?? true;
- }
-
- set validateInputs(bool validateInputs) {
- _prefs.setBool('validateInputs', validateInputs);
- notifyListeners();
- }
-
- bool get allowMissingValues {
- return _prefs.getBool('allowMissingValues') ?? false;
- }
-
- set allowMissingValues(bool allowMissingValues) {
- _prefs.setBool('allowMissingValues', allowMissingValues);
- notifyListeners();
- }
-
- double get graphLineThickness {
- return _prefs.getDouble('graphLineThickness') ?? 3;
- }
-
- set graphLineThickness(double newThickness) {
- _prefs.setDouble('graphLineThickness', newThickness);
- notifyListeners();
- }
-
- int get animationSpeed {
- return _prefs.getInt('animationSpeed') ?? 150;
- }
-
- set animationSpeed(int newSpeed) {
- _prefs.setInt('animationSpeed', newSpeed);
- notifyListeners();
- }
-
- bool get confirmDeletion {
- return _prefs.getBool('confirmDeletion') ?? true;
- }
-
- set confirmDeletion(bool confirmDeletion) {
- _prefs.setBool('confirmDeletion', confirmDeletion);
- notifyListeners();
- }
-
- ExportFormat get exportFormat {
- switch (_prefs.getInt('exportFormat') ?? 0) {
- case 0:
- return ExportFormat.csv;
- case 1:
- return ExportFormat.pdf;
- case 2:
- return ExportFormat.db;
- default:
- assert(false);
- return ExportFormat.csv;
- }
- }
-
- set exportFormat(ExportFormat format) {
- switch (format) {
- case ExportFormat.csv:
- _prefs.setInt('exportFormat', 0);
- break;
- case ExportFormat.pdf:
- _prefs.setInt('exportFormat', 1);
- break;
- case ExportFormat.db:
- _prefs.setInt('exportFormat', 2);
- break;
- default:
- assert(false);
- }
- notifyListeners();
- }
-
- String get csvFieldDelimiter {
- return _prefs.getString('csvFieldDelimiter') ?? ',';
- }
-
- set csvFieldDelimiter(String value) {
- _prefs.setString('csvFieldDelimiter', value);
- notifyListeners();
- }
-
- String get csvTextDelimiter {
- return _prefs.getString('csvTextDelimiter') ?? '"';
- }
-
- set csvTextDelimiter(String value) {
- _prefs.setString('csvTextDelimiter', value);
- notifyListeners();
- }
-
- MimeType get exportMimeType {
- switch (_prefs.getInt('exportMimeType') ?? 0) {
- case 0:
- return MimeType.csv;
- case 1:
- return MimeType.text;
- case 2:
- return MimeType.pdf;
- case 3:
- return MimeType.other;
- default:
- throw UnimplementedError();
- }
- }
- set exportMimeType(MimeType value) {
- switch (value) {
- case MimeType.csv:
- _prefs.setInt('exportMimeType', 0);
- break;
- case MimeType.text:
- _prefs.setInt('exportMimeType', 1);
- break;
- case MimeType.pdf:
- _prefs.setInt('exportMimeType', 2);
- break;
- case MimeType.other:
- _prefs.setInt('exportMimeType', 3);
- break;
- default:
- throw UnimplementedError();
- }
- notifyListeners();
- }
-
- bool get exportCustomEntriesCsv {
- return _prefs.getBool('exportCustomEntriesCsv') ?? false;
- }
-
- set exportCustomEntriesCsv(bool value) {
- _prefs.setBool('exportCustomEntriesCsv', value);
- notifyListeners();
- }
-
- List<String> get exportItemsCsv {
- return _prefs.getStringList('exportItemsCsv') ?? ExportFields.defaultCsv;
- }
-
- set exportItemsCsv(List<String> value) {
- _prefs.setStringList('exportItemsCsv', value);
- notifyListeners();
- }
-
- bool get exportCsvHeadline {
- return _prefs.getBool('exportCsvHeadline') ?? true;
- }
-
- set exportCsvHeadline(bool value) {
- _prefs.setBool('exportCsvHeadline', value);
- notifyListeners();
- }
-
- String get defaultExportDir {
- return _prefs.getString('defaultExportDir') ?? '';
- }
- set defaultExportDir (String value) {
- _prefs.setString('defaultExportDir', value);
- notifyListeners();
- }
-
- bool get exportAfterEveryEntry {
- return _prefs.getBool('exportAfterEveryEntry') ?? false;
- }
-
- set exportAfterEveryEntry(bool value) {
- _prefs.setBool('exportAfterEveryEntry', value);
- notifyListeners();
- }
-
- Locale? get language {
- final value = _prefs.getString('language');
- if (value?.isEmpty ?? true) return null;
- return Locale(value ?? 'en');
- }
-
- set language (Locale? value) {
- _prefs.setString('language', value?.languageCode ?? '');
- notifyListeners();
- }
-
- bool get drawRegressionLines {
- return _prefs.getBool('drawRegressionLines') ?? false;
- }
-
- set drawRegressionLines(bool value) {
- _prefs.setBool('drawRegressionLines', value);
- notifyListeners();
- }
-
- double get exportPdfHeaderHeight {
- return _prefs.getDouble('exportPdfHeaderHeight') ?? 20;
- }
-
- set exportPdfHeaderHeight(double value) {
- _prefs.setDouble('exportPdfHeaderHeight', value);
- notifyListeners();
- }
- double get exportPdfCellHeight {
- return _prefs.getDouble('exportPdfCellHeight') ?? 15;
- }
-
- set exportPdfCellHeight(double value) {
- _prefs.setDouble('exportPdfCellHeight', value);
- notifyListeners();
- }
-
- double get exportPdfHeaderFontSize {
- return _prefs.getDouble('exportPdfHeaderFontSize') ?? 10;
- }
-
- set exportPdfHeaderFontSize(double value) {
- _prefs.setDouble('exportPdfHeaderFontSize', value);
- notifyListeners();
- }
-
- double get exportPdfCellFontSize {
- return _prefs.getDouble('exportPdfCellFontSize') ?? 8;
- }
-
- set exportPdfCellFontSize(double value) {
- _prefs.setDouble('exportPdfCellFontSize', value);
- notifyListeners();
- }
-
- bool get exportPdfExportTitle {
- return _prefs.getBool('exportPdfExportTitle') ?? true;
- }
-
- set exportPdfExportTitle(bool value) {
- _prefs.setBool('exportPdfExportTitle', value);
- notifyListeners();
- }
-
- bool get exportPdfExportStatistics {
- return _prefs.getBool('exportPdfExportStatistics') ?? false;
- }
-
- set exportPdfExportStatistics(bool value) {
- _prefs.setBool('exportPdfExportStatistics', value);
- notifyListeners();
- }
-
- /// whether to add a section with all entries to pdf export
- bool get exportPdfExportData {
- return _prefs.getBool('exportPdfExportData') ?? true;
- }
-
- set exportPdfExportData(bool value) {
- _prefs.setBool('exportPdfExportData', value);
- notifyListeners();
- }
-
- bool get startWithAddMeasurementPage {
- return _prefs.getBool('startWithAddMeasurementPage') ?? false;
- }
-
- set startWithAddMeasurementPage(bool value) {
- _prefs.setBool('startWithAddMeasurementPage', value);
- notifyListeners();
- }
-
- bool get exportCustomEntriesPdf {
- return _prefs.getBool('exportCustomEntriesPdf') ?? false;
- }
-
- set exportCustomEntriesPdf(bool value) {
- _prefs.setBool('exportCustomEntriesPdf', value);
- notifyListeners();
- }
-
- List<String> get exportItemsPdf {
- return _prefs.getStringList('exportItemsPdf') ?? ExportFields.defaultPdf;
- }
-
- set exportItemsPdf(List<String> value) {
- _prefs.setStringList('exportItemsPdf', value);
- notifyListeners();
- }
-
- Iterable<HorizontalGraphLine> get horizontalGraphLines {
- final linesStr = _prefs.getStringList('horizontalGraphLines') ?? [];
- return linesStr.map((e) => HorizontalGraphLine.fromJson(jsonDecode(e)));
- }
-
- set horizontalGraphLines(Iterable<HorizontalGraphLine> value) {
- _prefs.setStringList('horizontalGraphLines', value.map((e) => jsonEncode(e)).toList());
- notifyListeners();
- }
-
- bool get useLegacyList {
- return _prefs.getBool('useLegacyList') ?? false;
- }
-
- set useLegacyList(bool value) {
- _prefs.setBool('useLegacyList', value);
- notifyListeners();
- }
-}
-
-enum _TimeStep {
- day,
- month,
- year,
- lifetime,
- week,
- last7Days,
- last30Days,
- custom;
-
- static const options = [_TimeStep.day, _TimeStep.week, _TimeStep.month, _TimeStep.year, _TimeStep.lifetime, _TimeStep.last7Days, _TimeStep.last30Days, _TimeStep.custom];
-
- static String getName(_TimeStep opt, BuildContext context) {
- switch (opt) {
- case _TimeStep.day:
- return AppLocalizations.of(context)!.day;
- case _TimeStep.month:
- return AppLocalizations.of(context)!.month;
- case _TimeStep.year:
- return AppLocalizations.of(context)!.year;
- case _TimeStep.lifetime:
- return AppLocalizations.of(context)!.lifetime;
- case _TimeStep.week:
- return AppLocalizations.of(context)!.week;
- case _TimeStep.last7Days:
- return AppLocalizations.of(context)!.last7Days;
- case _TimeStep.last30Days:
- return AppLocalizations.of(context)!.last30Days;
- case _TimeStep.custom:
- return AppLocalizations.of(context)!.custom;
- }
- }
-}
-
MaterialColor createMaterialColor(int value) { // TODO: remove
final color = Color(value);
List strengths = <double>[.05];
lib/main.dart
@@ -1,9 +1,9 @@
import 'package:blood_pressure_app/model/blood_pressure.dart';
-import 'package:blood_pressure_app/model/settings_store.dart';
import 'package:blood_pressure_app/model/storage/db/config_dao.dart';
import 'package:blood_pressure_app/model/storage/db/config_db.dart';
import 'package:blood_pressure_app/model/storage/intervall_store.dart';
import 'package:blood_pressure_app/model/storage/settings_store.dart';
+import 'package:blood_pressure_app/model/storage/update_legacy_settings.dart';
import 'package:blood_pressure_app/screens/home.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
@@ -20,7 +20,6 @@ void main() async {
// 2 different db files
final dataModel = await BloodPressureModel.create();
- // TODO:
final configDB = await ConfigDB.open();
final configDao = ConfigDao(configDB);
@@ -30,7 +29,7 @@ void main() async {
final pdfExportSettings = await configDao.loadPdfExportSettings(0);
final intervalStorageManager = await IntervallStoreManager.load(configDao, 0);
- // TODO: old settings migration
+ await updateLegacySettings(settings, exportSettings, csvExportSettings, pdfExportSettings, intervalStorageManager);
globalConfigDao = configDao;