Commit fba9ef0
Changed files (3)
lib
components
lib/components/export_item_order.dart
@@ -3,6 +3,7 @@ import 'dart:async';
import 'package:badges/badges.dart' as badges;
import 'package:blood_pressure_app/components/consistent_future_builder.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/settings_store.dart';
import 'package:blood_pressure_app/screens/subsettings/export_column_data.dart';
@@ -105,7 +106,6 @@ class _ExportItemsCustomizerState extends State<ExportItemsCustomizer> {
Widget _buildManagePresetsBadge(BuildContext context, ExportConfigurationModel result, {required Widget child}) {
final exportConfigurations = result.exportConfigurations;
- final exportConfigurationKeys = exportConfigurations.keys.toList();
return badges.Badge(
position: badges.BadgePosition.topEnd(top: 3, end: 3),
badgeStyle: badges.BadgeStyle(
@@ -116,13 +116,18 @@ class _ExportItemsCustomizerState extends State<ExportItemsCustomizer> {
icon: const Icon(Icons.collections_bookmark),
itemBuilder: (BuildContext context) {
return [
- for (var i = 0; i< exportConfigurationKeys.length; i++)
- PopupMenuItem<int>(value: i, child: Text(exportConfigurationKeys[i])),
+ for (var i = 0; i< exportConfigurations.length; i++)
+ PopupMenuItem<int>(value: i, child: Text(exportConfigurations[i].$1)),
];
},
onSelected: (value) {
final settings = Provider.of<Settings>(context, listen: false);
- settings.exportItemsCsv = exportConfigurations[exportConfigurationKeys[value]]!;
+ if (settings.exportFormat == ExportFormat.csv) {
+ settings.exportItemsCsv = exportConfigurations[value].$2;
+ } else {
+ assert(settings.exportFormat == ExportFormat.pdf);
+ settings.exportItemsPdf = exportConfigurations[value].$2;
+ }
},
),
child: child,
lib/model/export_options.dart
@@ -23,11 +23,12 @@ class ExportConfigurationModel {
final List<ExportColumn> _availableFormats = [];
- Map<String, List<String>> get exportConfigurations => { // todo change type to List<String, List<String> and add pdf and csv seperately or remove entirely
- // Not fully localized, as potemtial user added configurations can't be localized as well
- localizations.default_: ['timestampUnixMs', 'systolic', 'diastolic', 'pulse', 'notes'],
- '"My Heart" export': ['DATUM', 'SYSTOLE', 'DIASTOLE', 'PULS', 'Beschreibung', 'Tags', 'Gewicht', 'Sauerstoffsättigung'],
- };
+ /// Format: (title, List<internalNameOfExportFormat>)
+ List<(String, List<String>)> get exportConfigurations => [
+ // Not fully localized, as potential user added configurations can't be localized as well
+ (localizations.default_, ['timestampUnixMs', 'systolic', 'diastolic', 'pulse', 'notes']),
+ ('"My Heart" export', ['DATUM', 'SYSTOLE', 'DIASTOLE', 'PULS', 'Beschreibung', 'Tags', 'Gewicht', 'Sauerstoffsättigung']),
+ ];
ExportConfigurationModel._create(this.settings, this.localizations);
Future<void> _asyncInit(String? dbPath, bool isFullPath) async {
lib/model/settings_store.dart
@@ -49,6 +49,14 @@ class Settings extends ChangeNotifier {
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'));
+ }
// reset variables for new version. Necessary for reusing variable names in new version and avoid having unexpected
// breaking values in the preferences
@@ -454,20 +462,20 @@ class Settings extends ChangeNotifier {
}
bool get exportCustomEntriesCsv {
- return _prefs.getBool('exportCustomEntries') ?? false;
+ return _prefs.getBool('exportCustomEntriesCsv') ?? false;
}
set exportCustomEntriesCsv(bool value) {
- _prefs.setBool('exportCustomEntries', value);
+ _prefs.setBool('exportCustomEntriesCsv', value);
notifyListeners();
}
List<String> get exportItemsCsv {
- return _prefs.getStringList('exportItems') ?? ExportFields.defaultCsv; // TODO migrate var name
+ return _prefs.getStringList('exportItemsCsv') ?? ExportFields.defaultCsv;
}
set exportItemsCsv(List<String> value) {
- _prefs.setStringList('exportItems', value);
+ _prefs.setStringList('exportItemsCsv', value);
notifyListeners();
}