Line data Source code
1 : import 'package:mvvm_builder/mvvm_builder.dart'; 2 : import 'package:pal/src/ui/editor/pages/helper_editor/font_editor/pickers/font_family_picker/font_family_picker.dart'; 3 : import 'package:pal/src/ui/editor/pages/helper_editor/font_editor/pickers/font_family_picker/font_family_picker_loader.dart'; 4 : import 'package:pal/src/ui/editor/pages/helper_editor/font_editor/pickers/font_family_picker/font_family_picker_viewmodel.dart'; 5 : 6 : class FontFamilyPickerPresenter 7 : extends Presenter<FontFamilyPickerModel, FontFamilyPickerView> { 8 : final FontFamilyPickerLoader loader; 9 : final FontFamilyPickerArguments arguments; 10 : 11 1 : FontFamilyPickerPresenter( 12 : FontFamilyPickerView viewInterface, 13 : this.loader, 14 : this.arguments, 15 2 : ) : super(FontFamilyPickerModel(), viewInterface); 16 : 17 1 : @override 18 : void onInit() { 19 3 : this.viewModel.originalFonts = []; 20 3 : this.viewModel.fonts = []; 21 2 : this.viewModel.isLoading = false; 22 4 : this.viewModel.selectedFontFamilyKey = arguments.fontFamilyName; 23 : 24 1 : this.setup(); 25 : } 26 : 27 1 : setup() async { 28 2 : this.viewModel.isLoading = true; 29 1 : this.refreshView(); 30 : 31 3 : FontFamilyPickerModel loadedViewModel = await this.loader.load(); 32 3 : this.viewModel.fonts = loadedViewModel.fonts; 33 3 : this.viewModel.originalFonts = loadedViewModel.originalFonts; 34 : 35 2 : this.viewModel.isLoading = false; 36 1 : this.refreshView(); 37 : } 38 : 39 1 : void filterSearchResults(String query) { 40 1 : if (query.isNotEmpty) { 41 1 : List<String> dummyListData = []; 42 4 : this.viewModel.originalFonts.forEach((fontKey) { 43 1 : final lowerQuery = query.toLowerCase(); 44 1 : final lowerFontName = fontKey.toLowerCase(); 45 : 46 1 : if (lowerFontName.contains(lowerQuery)) { 47 1 : dummyListData.add(fontKey); 48 : } 49 : }); 50 3 : this.viewModel.fonts.clear(); 51 3 : this.viewModel.fonts.addAll(dummyListData); 52 : } else { 53 0 : this.viewModel.fonts.clear(); 54 0 : this.viewModel.fonts.addAll(this.viewModel.originalFonts); 55 : } 56 : 57 1 : this.refreshView(); 58 : } 59 : }