LCOV - code coverage report
Current view: top level - lib/pages/home - home_edit_page.dart Coverage Total Hit
Test: lcov.info Lines: 0.0 % 47 0
Test Date: 2026-11-14 15:04:37 Functions: - 0 0

            Line data    Source code
       1              : // Copyright 2023 The terCAD team. All rights reserved.
       2              : // Use of this source code is governed by a CC BY-NC-ND 4.0 license that can be found in the LICENSE file.
       3              : 
       4              : import 'package:app_finance/_classes/herald/app_locale.dart';
       5              : import 'package:app_finance/_classes/storage/app_preferences.dart';
       6              : import 'package:app_finance/_configs/custom_text_theme.dart';
       7              : import 'package:app_finance/_configs/theme_helper.dart';
       8              : import 'package:app_finance/_ext/build_context_ext.dart';
       9              : import 'package:app_finance/components/_core/components_builder.dart';
      10              : import 'package:app_finance/components/_core/component_data.dart';
      11              : import 'package:app_finance/components/_core/list_component_registry.dart';
      12              : import 'package:app_finance/design/wrapper/confirmation_wrapper.dart';
      13              : import 'package:app_finance/design/button/toolbar_button_widget.dart';
      14              : import 'package:material_ui/material_ui.dart';
      15              : 
      16              : class HomeEditPage extends StatefulWidget {
      17              :   final Function callback;
      18              : 
      19            0 :   const HomeEditPage({super.key, required this.callback});
      20              : 
      21            0 :   @override
      22            0 :   HomeEditPageState createState() => HomeEditPageState();
      23              : }
      24              : 
      25              : class HomeEditPageState extends State<HomeEditPage> {
      26              :   List<ComponentData> data = [];
      27              :   late String key;
      28              : 
      29            0 :   Future<void> _save() async {
      30            0 :     await AppPreferences.set(key, data.toString());
      31            0 :     setState(() {});
      32              :   }
      33              : 
      34            0 :   Future<void> save() async {
      35            0 :     await _save();
      36            0 :     widget.callback();
      37              :   }
      38              : 
      39            0 :   Future<void> drop() async {
      40            0 :     await AppPreferences.clear(key);
      41            0 :     widget.callback();
      42              :   }
      43              : 
      44            0 :   Future<void> add(String key) async {
      45            0 :     data.add({
      46              :       componentData.key: key,
      47              :       componentData.startX: 0,
      48              :       componentData.startY: 0,
      49              :       componentData.endX: 4,
      50              :       componentData.endY: 4,
      51              :     });
      52            0 :     await _save();
      53              :   }
      54              : 
      55            0 :   Future<void> adjust(int index, ComponentData change) async {
      56            0 :     data[index] = change;
      57            0 :     await _save();
      58              :   }
      59              : 
      60            0 :   Future<void> delete(int index) async {
      61            0 :     data.removeAt(index);
      62            0 :     await _save();
      63              :   }
      64              : 
      65            0 :   @override
      66              :   Widget build(BuildContext context) {
      67            0 :     key = ComponentsBuilder.getKey(context);
      68            0 :     data = ComponentsBuilder.getData(context) ?? [];
      69            0 :     return Scaffold(
      70            0 :       appBar: AppBar(
      71              :         toolbarHeight: 45,
      72            0 :         backgroundColor: context.colorScheme.primary,
      73            0 :         title: Text(ComponentsBuilder.getKey(context)),
      74            0 :         titleTextStyle: context.textTheme.numberMedium,
      75              :         centerTitle: true,
      76              :         leadingWidth: 120,
      77            0 :         leading: Row(
      78            0 :           children: [
      79            0 :             ToolbarButtonWidget(
      80              :               icon: Icons.save,
      81              :               color: Colors.white70,
      82            0 :               tooltip: AppLocale.labels.customSaveTooltip,
      83            0 :               onPressed: save,
      84              :             ),
      85            0 :             ToolbarButtonWidget(
      86              :               icon: Icons.cancel,
      87              :               color: Colors.white70,
      88            0 :               tooltip: AppLocale.labels.customDeleteTooltip,
      89            0 :               onPressed: () => ConfirmationWrapper.show(context, drop),
      90              :             ),
      91              :           ],
      92              :         ),
      93            0 :         actions: [
      94            0 :           Container(
      95              :             width: 140,
      96            0 :             padding: EdgeInsets.all(ThemeHelper.getIndent(0.5)),
      97            0 :             child: ListComponentRegistry(
      98            0 :               setState: (v) => add(v?.id ?? ''),
      99            0 :               hintText: AppLocale.labels.customAddTooltip,
     100            0 :               hintStyle: context.textTheme.numberSmall.copyWith(color: Colors.white70),
     101              :             ),
     102              :           ),
     103              :         ],
     104              :       ),
     105            0 :       body: Padding(
     106            0 :         padding: EdgeInsets.all(ThemeHelper.getIndent(3)),
     107            0 :         child: ComponentsBuilder(data, editMode: true, adjust: adjust, delete: delete),
     108              :       ),
     109              :     );
     110              :   }
     111              : }
        

Generated by: LCOV version 2.0-1