Commit b8d059b

derdilla <82763757+NobodyForNothing@users.noreply.github.com>
2023-12-03 09:04:53
store new active export columns in settings
Signed-off-by: derdilla <82763757+NobodyForNothing@users.noreply.github.com>
1 parent 9901e73
lib/model/export_import/export_configuration.dart
@@ -43,7 +43,6 @@ class ActiveExportColumnConfiguration extends ChangeNotifier {
     _activePreset = value;
     notifyListeners();
   }
-  // TODO: put in CsvExportSettings, PdfExportSettings
 
   /// Columns to respect for export.
   UnmodifiableListView<ExportColumn> getActiveColumns(ExportColumnsManager availableColumns) => UnmodifiableListView(
lib/model/storage/common_settings_interfaces.dart
@@ -1,10 +1,11 @@
+import 'package:blood_pressure_app/model/export_import/export_configuration.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';
 
 /// Common fields that are present in both [CsvExportSettings] and [PdfExportSettings].
 abstract class CustomFieldsSettings {
-  bool get exportCustomFields;
-  set exportCustomFields(bool value);
-  List<String> get customFields;
-  set customFields(List<String> value);
+  /// Active export columns.
+  ///
+  /// Implementers must propagate any notifyListener calls.
+  ActiveExportColumnConfiguration get exportFieldsConfiguration;
 }
\ No newline at end of file
lib/model/storage/export_csv_settings_store.dart
@@ -1,6 +1,6 @@
 import 'dart:convert';
 
-import 'package:blood_pressure_app/model/export_options.dart';
+import 'package:blood_pressure_app/model/export_import/export_configuration.dart';
 import 'package:blood_pressure_app/model/storage/common_settings_interfaces.dart';
 import 'package:blood_pressure_app/model/storage/convert_util.dart';
 import 'package:flutter/material.dart';
@@ -11,22 +11,22 @@ class CsvExportSettings extends ChangeNotifier implements CustomFieldsSettings {
     String? fieldDelimiter,
     String? textDelimiter,
     bool? exportHeadline,
-    bool? exportCustomFields,
-    List<String>? customFields,
+    ActiveExportColumnConfiguration? exportFieldsConfiguration,
   }) {
     if (fieldDelimiter != null) _fieldDelimiter = fieldDelimiter;
     if (textDelimiter != null) _textDelimiter = textDelimiter;
     if (exportHeadline != null) _exportHeadline = exportHeadline;
-    if (exportCustomFields != null) _exportCustomFields = exportCustomFields;
-    if (customFields != null) _customFields = customFields;
+    if (exportFieldsConfiguration != null) _exportFieldsConfiguration = exportFieldsConfiguration;
+
+    _exportFieldsConfiguration.addListener(() => notifyListeners());
   }
 
   factory CsvExportSettings.fromMap(Map<String, dynamic> map) => CsvExportSettings(
       fieldDelimiter: ConvertUtil.parseString(map['fieldDelimiter']),
       textDelimiter: ConvertUtil.parseString(map['textDelimiter']),
       exportHeadline: ConvertUtil.parseBool(map['exportHeadline']),
-      exportCustomFields: ConvertUtil.parseBool(map['exportCustomFields']),
-      customFields: ConvertUtil.parseList<String>(map['customFields']),
+      exportFieldsConfiguration: ActiveExportColumnConfiguration.fromJson(map['exportCustomFields']),
+      // TODO: migrate exportCustomFields and customFields before release
   );
 
   factory CsvExportSettings.fromJson(String json) {
@@ -41,8 +41,7 @@ class CsvExportSettings extends ChangeNotifier implements CustomFieldsSettings {
     'fieldDelimiter': fieldDelimiter,
     'textDelimiter': textDelimiter,
     'exportHeadline': exportHeadline,
-    'exportCustomFields': exportCustomFields,
-    'customFields': customFields,
+    'exportFieldsConfiguration': exportFieldsConfiguration.toJson()
   };
 
   String toJson() => jsonEncode(toMap());
@@ -68,23 +67,9 @@ class CsvExportSettings extends ChangeNotifier implements CustomFieldsSettings {
     notifyListeners();
   }
 
-  bool _exportCustomFields = false;
-  @override
-  bool get exportCustomFields => _exportCustomFields;
+  ActiveExportColumnConfiguration _exportFieldsConfiguration = ActiveExportColumnConfiguration();
   @override
-  set exportCustomFields(bool value) {
-    _exportCustomFields = value;
-    notifyListeners();
-  }
-
-  List<String> _customFields = ExportFields.defaultCsv;
-  @override
-  List<String> get customFields => _customFields;
-  @override
-  set customFields(List<String> value) {
-    _customFields = value;
-    notifyListeners();
-  }
+  ActiveExportColumnConfiguration get exportFieldsConfiguration => _exportFieldsConfiguration;
 
   // Procedure for adding more entries described in the settings_store.dart doc comment
 }
\ No newline at end of file
lib/model/storage/export_pdf_settings_store.dart
@@ -1,6 +1,6 @@
 import 'dart:convert';
 
-import 'package:blood_pressure_app/model/export_options.dart';
+import 'package:blood_pressure_app/model/export_import/export_configuration.dart';
 import 'package:blood_pressure_app/model/storage/common_settings_interfaces.dart';
 import 'package:blood_pressure_app/model/storage/convert_util.dart';
 import 'package:flutter/material.dart';
@@ -11,12 +11,11 @@ class PdfExportSettings extends ChangeNotifier implements CustomFieldsSettings {
     bool? exportTitle,
     bool? exportStatistics,
     bool? exportData,
-    bool? exportCustomFields,
     double? headerHeight,
     double? cellHeight,
     double? headerFontSize,
     double? cellFontSize,
-    List<String>? customFields,
+    ActiveExportColumnConfiguration? exportFieldsConfiguration,
   }) {
     if (exportTitle != null) _exportTitle = exportTitle;
     if (exportStatistics != null) _exportStatistics = exportStatistics;
@@ -25,8 +24,7 @@ class PdfExportSettings extends ChangeNotifier implements CustomFieldsSettings {
     if (cellHeight != null) _cellHeight = cellHeight;
     if (headerFontSize != null) _headerFontSize = headerFontSize;
     if (cellFontSize != null) _cellFontSize = cellFontSize;
-    if (exportCustomFields != null) _exportCustomFields = exportCustomFields;
-    if (customFields != null) _customFields = customFields;
+    if (exportFieldsConfiguration != null) _exportFieldsConfiguration = exportFieldsConfiguration;
   }
 
   factory PdfExportSettings.fromMap(Map<String, dynamic> map) => PdfExportSettings(
@@ -37,8 +35,8 @@ class PdfExportSettings extends ChangeNotifier implements CustomFieldsSettings {
     cellHeight: ConvertUtil.parseDouble(map['cellHeight']),
     headerFontSize: ConvertUtil.parseDouble(map['headerFontSize']),
     cellFontSize: ConvertUtil.parseDouble(map['cellFontSize']),
-    exportCustomFields: ConvertUtil.parseBool(map['exportCustomFields']),
-    customFields: ConvertUtil.parseList<String>(map['customFields']),
+    exportFieldsConfiguration: ActiveExportColumnConfiguration.fromJson(map['exportFieldsConfiguration']),
+    // TODO: migrate exportCustomFields and customFields before release
   );
 
   factory PdfExportSettings.fromJson(String json) {
@@ -57,8 +55,7 @@ class PdfExportSettings extends ChangeNotifier implements CustomFieldsSettings {
     'cellHeight': cellHeight,
     'headerFontSize': headerFontSize,
     'cellFontSize': cellFontSize,
-    'exportCustomFields': exportCustomFields,
-    'customFields': customFields,
+    'exportFieldsConfiguration': exportFieldsConfiguration.toJson()
   };
 
   String toJson() => jsonEncode(toMap());
@@ -112,23 +109,10 @@ class PdfExportSettings extends ChangeNotifier implements CustomFieldsSettings {
     notifyListeners();
   }
 
-  bool _exportCustomFields = false;
+  ActiveExportColumnConfiguration _exportFieldsConfiguration = ActiveExportColumnConfiguration();
   @override
-  bool get exportCustomFields => _exportCustomFields;
-  @override
-  set exportCustomFields(bool value) {
-    _exportCustomFields = value;
-    notifyListeners();
-  }
-
-  List<String> _customFields = ExportFields.defaultPdf;
-  @override
-  List<String> get customFields => _customFields;
-  @override
-  set customFields(List<String> value) {
-    _customFields = value;
-    notifyListeners();
-  }
+  // TODO: implement exportFieldsConfiguration
+  ActiveExportColumnConfiguration get exportFieldsConfiguration => _exportFieldsConfiguration;
 
   // Procedure for adding more entries described in the settings_store.dart doc comment
 }
\ No newline at end of file
lib/model/storage/update_legacy_settings.dart
@@ -1,6 +1,7 @@
 import 'dart:convert';
 
 import 'package:blood_pressure_app/model/blood_pressure.dart';
+import 'package:blood_pressure_app/model/export_import/export_configuration.dart';
 import 'package:blood_pressure_app/model/horizontal_graph_line.dart';
 import 'package:blood_pressure_app/model/storage/convert_util.dart';
 import 'package:blood_pressure_app/model/storage/export_csv_settings_store.dart';
@@ -36,11 +37,12 @@ Future<void> updateLegacySettings(Settings settings, ExportSettings exportSettin
         await sharedPreferences.remove(key);
         break;
       case 'exportCustomEntries':
-        csvExportSettings.exportCustomFields = sharedPreferences.getBool(key)!;
+        csvExportSettings.exportFieldsConfiguration.activePreset =
+          sharedPreferences.getBool(key)! ? ExportImportPreset.none : ExportImportPreset.bloodPressureApp;
         await sharedPreferences.remove(key);
         break;
       case 'exportItems':
-        csvExportSettings.customFields = sharedPreferences.getStringList(key)!;
+        //csvExportSettings.customFields = sharedPreferences.getStringList(key)!; TODO: update
         await sharedPreferences.remove(key);
         break;
       case 'darkMode':
@@ -110,10 +112,11 @@ Future<void> updateLegacySettings(Settings settings, ExportSettings exportSettin
       case 'exportMimeType':
         break;
       case 'exportCustomEntriesCsv':
-        csvExportSettings.exportCustomFields = sharedPreferences.getBool(key)!;
+        csvExportSettings.exportFieldsConfiguration.activePreset =
+          sharedPreferences.getBool(key)! ? ExportImportPreset.none : ExportImportPreset.bloodPressureApp;
         break;
       case 'exportItemsCsv':
-        csvExportSettings.customFields = sharedPreferences.getStringList(key)!;
+        // csvExportSettings.customFields = sharedPreferences.getStringList(key)!;TODO: update
         break;
       case 'exportCsvHeadline':
         csvExportSettings.exportHeadline = sharedPreferences.getBool(key)!;
@@ -160,10 +163,12 @@ Future<void> updateLegacySettings(Settings settings, ExportSettings exportSettin
         settings.startWithAddMeasurementPage = sharedPreferences.getBool(key)!;
         break;
       case 'exportCustomEntriesPdf':
-        pdfExportSettings.exportCustomFields = sharedPreferences.getBool(key)!;
+        pdfExportSettings.exportFieldsConfiguration.activePreset =
+            sharedPreferences.getBool(key)!
+              ? ExportImportPreset.none : ExportImportPreset.bloodPressureApp;
         break;
       case 'exportItemsPdf':
-        pdfExportSettings.customFields = sharedPreferences.getStringList(key)!;
+        // pdfExportSettings.customFields = sharedPreferences.getStringList(key)!; TODO: update
         break;
       case 'horizontalGraphLines':
         settings.horizontalGraphLines = sharedPreferences.getStringList(key)!.map((e) =>
lib/model/export_options.dart
@@ -47,18 +47,9 @@ class ExportConfigurationModel {
   /// Determines which export columns should be used.
   ///
   /// The [fieldSettings] parameter describes the settings of the current export format and should be set accordingly.
+  @Deprecated('not implemented anymore')
   List<ExportColumn> getActiveExportColumns(ExportFormat format, CustomFieldsSettings fieldsSettings) {
-    switch (format) {
-      case ExportFormat.csv:
-        final fields = (fieldsSettings.exportCustomFields) ? fieldsSettings.customFields : ExportFields.defaultCsv;
-        return availableFormats.where((e) => fields.contains(e.internalName)).toList();
-      case ExportFormat.pdf:
-        final fields = (fieldsSettings.exportCustomFields) ? fieldsSettings.customFields : ExportFields.defaultPdf;
-        return availableFormats.where((e) => fields.contains(e.internalName)).toList();
-      case ExportFormat.db:
-        // Export formats don't work on this one
-        return [];
-    }
+    return [];
   }
   
   List<ExportColumn> getDefaultFormates() => [