Commit 4440284

derdilla <82763757+NobodyForNothing@users.noreply.github.com>
2023-12-12 16:05:12
implement removing custom active columns
Signed-off-by: derdilla <82763757+NobodyForNothing@users.noreply.github.com>
1 parent 935f918
Changed files (3)
lib
l10n
model
screens
lib/l10n/app_en.arb
@@ -472,5 +472,7 @@
     }
   },
   "exportFieldsPreset": "Export fields preset",
-  "@exportFieldsPreset": {}
+  "@exportFieldsPreset": {},
+  "remove": "Remove",
+  "@remove": {}
 }
lib/model/export_import/export_configuration.dart
@@ -69,6 +69,14 @@ class ActiveExportColumnConfiguration extends ChangeNotifier {
     notifyListeners();
   }
 
+  /// Removes the first export column from user columns where
+  /// [ExportColumn.internalIdentifier] matches [identifier].
+  void removeUserColumn(String identifier) {
+    assert(_activePreset == ExportImportPreset.none, 'user columns are not modifiable while another configuration is active');
+    _userSelectedColumns.removeWhere((c) => c == identifier);
+    notifyListeners();
+  }
+
   /// Columns to respect for export.
   UnmodifiableListView<ExportColumn> getActiveColumns(ExportColumnsManager availableColumns) => UnmodifiableListView(
     switch (_activePreset) {
lib/screens/subsettings/export_import_screen.dart
@@ -268,8 +268,19 @@ class ExportFieldCustomisationSetting extends StatelessWidget { // TODO: conside
                       return ListTile(
                         key: Key(activeColumns[idx].internalIdentifier + idx.toString()),
                         title: Text(activeColumns[idx].userTitle(localizations)),
-                        trailing: const Icon(Icons.drag_handle),
-                        // TODO: removing columns
+                        trailing: Row(
+                          mainAxisSize: MainAxisSize.min,
+                          children: [
+                            IconButton(
+                              tooltip: localizations.remove,
+                              onPressed: () {
+                                fieldsConfig.removeUserColumn(activeColumns[idx].internalIdentifier);
+                              },
+                              icon: const Icon(Icons.remove_circle_outline)
+                            ),
+                            const Icon(Icons.drag_handle),
+                          ],
+                        ),
                       );
                     },
                     itemCount: activeColumns.length + 1,
@@ -277,7 +288,7 @@ class ExportFieldCustomisationSetting extends StatelessWidget { // TODO: conside
                 );
               }
             ),
-          )
+          ),
           // TODO implement adding / editing columns => separate ColumnsManagerScreen ?
         ],
     );