Line data Source code
1 : import 'dart:async';
2 :
3 : import 'package:flutter/material.dart';
4 : import 'package:mvvm_builder/mvvm_builder.dart';
5 : import 'package:pal/src/database/entity/helper/helper_entity.dart';
6 : import 'package:pal/src/database/entity/helper/helper_theme.dart';
7 : import 'package:pal/src/database/entity/helper/helper_trigger_type.dart';
8 : import 'package:pal/src/database/entity/helper/helper_type.dart';
9 : import 'package:pal/src/ui/editor/pages/helper_editor/font_editor/pickers/font_weight_picker/font_weight_picker_loader.dart';
10 : import 'package:pal/src/ui/editor/pages/helper_editor/helper_editor_notifiers.dart';
11 : import 'package:pal/src/ui/editor/pages/helper_editor/helper_editor_viewmodel.dart';
12 : import 'package:pal/src/ui/shared/helper_shared_factory.dart';
13 : import 'package:pal/src/ui/shared/helper_shared_viewmodels.dart';
14 :
15 : class SimpleHelperViewModel extends HelperViewModel {
16 :
17 : // form validation boolean
18 : ValueNotifier<bool> canValidate;
19 :
20 : LanguageNotifier language;
21 : BoxNotifier bodyBox;
22 : TextFormFieldNotifier detailsField;
23 :
24 1 : SimpleHelperViewModel({
25 : String id,
26 : @required String name,
27 : @required HelperTriggerType triggerType,
28 : @required int priority,
29 : String minVersionCode,
30 : String maxVersionCode,
31 : HelperTheme helperTheme,
32 : int versionMaxId,
33 : int languageId,
34 : HelperBoxViewModel helperBoxViewModel,
35 : HelperTextViewModel detailsField,
36 1 : }) : super(
37 : id: id,
38 : name: name,
39 : triggerType: triggerType,
40 : priority: priority,
41 : minVersionCode: minVersionCode,
42 : maxVersionCode: maxVersionCode,
43 : helperType: HelperType.SIMPLE_HELPER,
44 : helperTheme: helperTheme,
45 : ) {
46 2 : this.language = LanguageNotifier(
47 : id: languageId ?? 1,
48 : );
49 2 : this.bodyBox = BoxNotifier(
50 0 : id: helperBoxViewModel?.id,
51 0 : backgroundColor: helperBoxViewModel?.backgroundColor ?? Colors.black87,
52 : );
53 2 : this.detailsField = TextFormFieldNotifier(
54 0 : id: detailsField?.id,
55 0 : fontColor: detailsField?.fontColor ?? Colors.white,
56 0 : fontSize: detailsField?.fontSize?.toInt() ?? 14,
57 0 : fontFamily: detailsField?.fontFamily,
58 1 : fontWeight: FontWeightMapper.toFontKey(detailsField?.fontWeight),
59 0 : text: detailsField?.text ?? '',
60 : );
61 : }
62 :
63 1 : factory SimpleHelperViewModel.fromHelperViewModel(HelperViewModel model) {
64 1 : final simpleHelper = SimpleHelperViewModel(
65 1 : id: model?.id,
66 1 : name: model.name,
67 1 : triggerType: model.triggerType,
68 1 : priority: model.priority,
69 1 : minVersionCode: model.minVersionCode,
70 1 : maxVersionCode: model.maxVersionCode,
71 1 : helperTheme: model.helperTheme,
72 : );
73 :
74 1 : if (model is SimpleHelperViewModel) {
75 0 : simpleHelper.bodyBox = model?.bodyBox;
76 0 : simpleHelper.language = model?.language;
77 0 : simpleHelper.detailsField = model?.detailsField;
78 : }
79 : return simpleHelper;
80 : }
81 :
82 0 : factory SimpleHelperViewModel.fromHelperEntity(HelperEntity helperEntity) {
83 0 : return SimpleHelperViewModel(
84 0 : id: helperEntity?.id,
85 0 : name: helperEntity?.name,
86 0 : triggerType: helperEntity?.triggerType,
87 0 : priority: helperEntity?.priority,
88 0 : minVersionCode: helperEntity?.versionMin,
89 0 : maxVersionCode: helperEntity?.versionMax,
90 : helperTheme: null,
91 0 : helperBoxViewModel: HelperSharedFactory.parseBoxBackground(
92 : SimpleHelperKeys.BACKGROUND_KEY,
93 0 : helperEntity?.helperBoxes,
94 : ),
95 0 : detailsField: HelperSharedFactory.parseTextLabel(
96 : SimpleHelperKeys.CONTENT_KEY,
97 0 : helperEntity?.helperTexts,
98 : ),
99 : );
100 : }
101 : }
|