From e1d5fe0b9de8b7e5cd4e15d22ca001b8dbf0cd26 Mon Sep 17 00:00:00 2001 From: Feichtmeier Date: Tue, 5 Oct 2021 19:25:31 +0200 Subject: [PATCH 01/17] Add printers UI mock and empty model --- lib/view/pages/page_items.dart | 5 +- lib/view/pages/printers/printers_model.dart | 3 + lib/view/pages/printers/printers_page.dart | 92 +++++++++++++++++++++ 3 files changed, 98 insertions(+), 2 deletions(-) create mode 100644 lib/view/pages/printers/printers_model.dart create mode 100644 lib/view/pages/printers/printers_page.dart diff --git a/lib/view/pages/page_items.dart b/lib/view/pages/page_items.dart index dc3fa7f2..49ee0f90 100644 --- a/lib/view/pages/page_items.dart +++ b/lib/view/pages/page_items.dart @@ -5,6 +5,7 @@ import 'package:settings/view/pages/appearance/appearance_page.dart'; import 'package:settings/view/pages/info/info_page.dart'; import 'package:settings/view/pages/keyboard_shortcuts/keyboard_shortcuts_page.dart'; import 'package:settings/view/pages/mouse_and_touchpad/mouse_and_touchpad_page.dart'; +import 'package:settings/view/pages/printers/printers_page.dart'; import 'package:settings/view/pages/removable_media/removable_media_page.dart'; import 'package:settings/view/pages/notifications/notifications_page.dart'; import 'package:settings/view/pages/power/power_page.dart'; @@ -94,10 +95,10 @@ final pageItems = [ iconData: YaruIcons.input_keyboard, builder: KeyboardShortcutsPage.create, ), - PageItem( + const PageItem( title: 'Printers', iconData: YaruIcons.printer, - builder: (_) => const Text('Printers'), + builder: PrintersPage.create, ), const PageItem( title: 'Removable Media', diff --git a/lib/view/pages/printers/printers_model.dart b/lib/view/pages/printers/printers_model.dart new file mode 100644 index 00000000..dd087409 --- /dev/null +++ b/lib/view/pages/printers/printers_model.dart @@ -0,0 +1,3 @@ +import 'package:safe_change_notifier/safe_change_notifier.dart'; + +class PrintersModel extends SafeChangeNotifier {} diff --git a/lib/view/pages/printers/printers_page.dart b/lib/view/pages/printers/printers_page.dart new file mode 100644 index 00000000..1f428083 --- /dev/null +++ b/lib/view/pages/printers/printers_page.dart @@ -0,0 +1,92 @@ +import 'dart:io'; + +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:settings/view/pages/printers/printers_model.dart'; +import 'package:settings/view/widgets/file_picker_row.dart'; +import 'package:settings/view/widgets/settings_row.dart'; +import 'package:settings/view/widgets/settings_section.dart'; +import 'package:yaru_icons/widgets/yaru_icons.dart'; + +class PrintersPage extends StatelessWidget { + const PrintersPage({Key? key}) : super(key: key); + + static Widget create(BuildContext context) { + // final service = Provider.of(context, listen: false); + return ChangeNotifierProvider( + create: (_) => PrintersModel(), + child: const PrintersPage(), + ); + } + + @override + Widget build(BuildContext context) { + return Column( + children: [ + Padding( + padding: const EdgeInsets.only(bottom: 35, top: 15), + child: SizedBox( + width: 518, + child: Row( + children: [ + ElevatedButton( + onPressed: () => {}, + child: Padding( + padding: const EdgeInsets.only(top: 8.0, bottom: 8), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: const [ + Icon(YaruIcons.printer), + Padding( + padding: EdgeInsets.only(left: 12.0, right: 2), + child: Text('Add a printer'), + ) + ], + ), + )), + ], + ), + ), + ), + for (var i = 0; i < 10; i++) + SettingsSection(headline: 'Printer ${i + 1}', children: [ + SettingsRow( + trailingWidget: Row( + children: [ + SizedBox( + width: 70, + child: Image.file( + File( + '/home/frederik/Projects/yaru/icons/Suru/256x256/devices/printer.png'), + fit: BoxFit.fill), + ), + const SizedBox( + width: 20, + ), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: const [ + Text('Model XYZ'), + SizedBox( + height: 8, + ), + Text('Ready') + ], + ) + ], + ), + actionWidget: SizedBox( + width: 40, + height: 40, + child: OutlinedButton( + style: OutlinedButton.styleFrom( + padding: const EdgeInsets.all(0)), + onPressed: () => {}, + child: const Icon(YaruIcons.settings), + ), + )) + ]) + ], + ); + } +} From a67ec2dbdf8e27e03d879eabd0b9b8d7a9475070 Mon Sep 17 00:00:00 2001 From: Feichtmeier Date: Fri, 15 Oct 2021 11:03:49 +0200 Subject: [PATCH 02/17] use printer image from asset, add queue button --- assets/images/icons/printer-network.png | Bin 0 -> 5678 bytes assets/images/icons/printer-network.svg | 1 + assets/images/icons/printer.png | Bin 0 -> 6390 bytes assets/images/icons/printer.svg | 1 + lib/view/pages/printers/printers_page.dart | 29 ++++++++++++--------- pubspec.yaml | 1 + 6 files changed, 19 insertions(+), 13 deletions(-) create mode 100644 assets/images/icons/printer-network.png create mode 100644 assets/images/icons/printer-network.svg create mode 100644 assets/images/icons/printer.png create mode 100644 assets/images/icons/printer.svg diff --git a/assets/images/icons/printer-network.png b/assets/images/icons/printer-network.png new file mode 100644 index 0000000000000000000000000000000000000000..207ffa29b430e92a2bd0bf54165cb9a6030c27c7 GIT binary patch literal 5678 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 \ No newline at end of file diff --git a/assets/images/icons/printer.png b/assets/images/icons/printer.png new file mode 100644 index 0000000000000000000000000000000000000000..251a4c7e2f3a41f7ddc43bae92f3aa40eb62c6a5 GIT binary patch literal 6390 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 \ No newline at end of file diff --git a/lib/view/pages/printers/printers_page.dart b/lib/view/pages/printers/printers_page.dart index 1f428083..2c748a68 100644 --- a/lib/view/pages/printers/printers_page.dart +++ b/lib/view/pages/printers/printers_page.dart @@ -3,7 +3,7 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:settings/view/pages/printers/printers_model.dart'; -import 'package:settings/view/widgets/file_picker_row.dart'; +import 'package:settings/view/widgets/extra_options_gsettings_row.dart'; import 'package:settings/view/widgets/settings_row.dart'; import 'package:settings/view/widgets/settings_section.dart'; import 'package:yaru_icons/widgets/yaru_icons.dart'; @@ -55,9 +55,7 @@ class PrintersPage extends StatelessWidget { children: [ SizedBox( width: 70, - child: Image.file( - File( - '/home/frederik/Projects/yaru/icons/Suru/256x256/devices/printer.png'), + child: Image.asset('assets/images/icons/printer.png', fit: BoxFit.fill), ), const SizedBox( @@ -75,15 +73,20 @@ class PrintersPage extends StatelessWidget { ) ], ), - actionWidget: SizedBox( - width: 40, - height: 40, - child: OutlinedButton( - style: OutlinedButton.styleFrom( - padding: const EdgeInsets.all(0)), - onPressed: () => {}, - child: const Icon(YaruIcons.settings), - ), + actionWidget: Row( + children: [ + SizedBox( + height: 40, + child: OutlinedButton( + onPressed: () => {}, child: const Text('Open Queue')), + ), + const SizedBox( + width: 10, + ), + OptionsButton( + onPressed: () => {}, + ), + ], )) ]) ], diff --git a/pubspec.yaml b/pubspec.yaml index 5e13d07c..0bb64a96 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -51,6 +51,7 @@ flutter: assets: - assets/images/ + - assets/images/icons/ - assets/images/cursor/ - assets/pdf_assets/cof.png - assets/rive/ubuntu_cof.riv From 3873c25ea8b47766a7baa70f1a223b75c93ff5b7 Mon Sep 17 00:00:00 2001 From: Feichtmeier Date: Mon, 18 Oct 2021 16:37:27 +0200 Subject: [PATCH 03/17] add comments, disable queue button --- lib/view/pages/printers/printers_page.dart | 41 ++++++++++++++-------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/lib/view/pages/printers/printers_page.dart b/lib/view/pages/printers/printers_page.dart index 2c748a68..7a2b3be3 100644 --- a/lib/view/pages/printers/printers_page.dart +++ b/lib/view/pages/printers/printers_page.dart @@ -1,5 +1,3 @@ -import 'dart:io'; - import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:settings/view/pages/printers/printers_model.dart'; @@ -55,30 +53,45 @@ class PrintersPage extends StatelessWidget { children: [ SizedBox( width: 70, - child: Image.asset('assets/images/icons/printer.png', + child: Image.asset( + i.isEven + ? 'assets/images/icons/printer.png' + : 'assets/images/icons/printer-network.png', fit: BoxFit.fill), ), const SizedBox( width: 20, ), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: const [ - Text('Model XYZ'), - SizedBox( - height: 8, - ), - Text('Ready') - ], + SizedBox( + height: 60, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Text('Model XYZ'), // printer.type + const SizedBox( + height: 3, + ), + Text(i.isEven + ? 'local' + : '192.168.1.1337'), // printer.location + // printer.status + ], + ), ) ], ), actionWidget: Row( children: [ - SizedBox( + const SizedBox( height: 40, child: OutlinedButton( - onPressed: () => {}, child: const Text('Open Queue')), + onPressed: null, // printer.activejobs ? + child: Text( + 'No active jobs', + // style: TextStyle( + // color: Theme.of(context).disabledColor), + )), ), const SizedBox( width: 10, From baeadc18de44c19af629bed65e826a9cdec1f40a Mon Sep 17 00:00:00 2001 From: Feichtmeier Date: Mon, 18 Oct 2021 16:44:29 +0200 Subject: [PATCH 04/17] change add button icon, add settings button --- lib/view/pages/printers/printers_page.dart | 23 +++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/lib/view/pages/printers/printers_page.dart b/lib/view/pages/printers/printers_page.dart index 7a2b3be3..b6ca4d66 100644 --- a/lib/view/pages/printers/printers_page.dart +++ b/lib/view/pages/printers/printers_page.dart @@ -27,21 +27,30 @@ class PrintersPage extends StatelessWidget { width: 518, child: Row( children: [ - ElevatedButton( - onPressed: () => {}, - child: Padding( - padding: const EdgeInsets.only(top: 8.0, bottom: 8), + SizedBox( + height: 40, + child: ElevatedButton( + onPressed: () => {}, child: Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: const [ - Icon(YaruIcons.printer), + Icon(YaruIcons.plus), Padding( padding: EdgeInsets.only(left: 12.0, right: 2), child: Text('Add a printer'), ) ], - ), - )), + )), + ), + const SizedBox( + width: 12, + ), + SizedBox( + height: 40, + child: OutlinedButton( + onPressed: () => {}, + child: const Text('Additional printer settings ...')), + ) ], ), ), From 27e05ab01bcb32ca3301ddd6d5a4aa85b1ade042 Mon Sep 17 00:00:00 2001 From: Feichtmeier Date: Wed, 20 Oct 2021 09:40:22 +0200 Subject: [PATCH 05/17] do not return empty map on unimplented actions --- lib/view/pages/printers/printers_page.dart | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/view/pages/printers/printers_page.dart b/lib/view/pages/printers/printers_page.dart index b6ca4d66..868e1ce6 100644 --- a/lib/view/pages/printers/printers_page.dart +++ b/lib/view/pages/printers/printers_page.dart @@ -30,7 +30,9 @@ class PrintersPage extends StatelessWidget { SizedBox( height: 40, child: ElevatedButton( - onPressed: () => {}, + onPressed: () { + {} + }, child: Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: const [ @@ -48,7 +50,7 @@ class PrintersPage extends StatelessWidget { SizedBox( height: 40, child: OutlinedButton( - onPressed: () => {}, + onPressed: () {}, child: const Text('Additional printer settings ...')), ) ], From 6f48681cc6afe0eea0ecca0676fedecfd555670d Mon Sep 17 00:00:00 2001 From: Feichtmeier Date: Wed, 20 Oct 2021 09:55:14 +0200 Subject: [PATCH 06/17] add empty add printer dialog --- lib/view/pages/printers/printers_page.dart | 33 +++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/lib/view/pages/printers/printers_page.dart b/lib/view/pages/printers/printers_page.dart index 868e1ce6..d9295edd 100644 --- a/lib/view/pages/printers/printers_page.dart +++ b/lib/view/pages/printers/printers_page.dart @@ -31,7 +31,14 @@ class PrintersPage extends StatelessWidget { height: 40, child: ElevatedButton( onPressed: () { - {} + showDialog( + barrierDismissible: false, + context: context, + builder: (_) => + StatefulBuilder(builder: (context, setState) { + return const AddPrinterDialog(); + }), + ).then((shortcut) {}); }, child: Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, @@ -117,3 +124,27 @@ class PrintersPage extends StatelessWidget { ); } } + +class AddPrinterDialog extends StatelessWidget { + const AddPrinterDialog({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return AlertDialog( + title: const Text('Add a printer'), + content: SizedBox( + height: 300, + width: 380, + child: Column( + children: const [], + ), + ), + actions: [ + OutlinedButton( + onPressed: () => Navigator.of(context).pop(), + child: const Text('Cancel')), + ElevatedButton(onPressed: () {}, child: const Text('Add printer')) + ], + ); + } +} From 587b8abe1e550e3795681236d4691f3a4a5398df Mon Sep 17 00:00:00 2001 From: Feichtmeier Date: Sat, 13 Nov 2021 17:30:30 +0100 Subject: [PATCH 07/17] printerpage: use yaru_widgets --- lib/view/pages/printers/printers_page.dart | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/lib/view/pages/printers/printers_page.dart b/lib/view/pages/printers/printers_page.dart index d9295edd..3678eeae 100644 --- a/lib/view/pages/printers/printers_page.dart +++ b/lib/view/pages/printers/printers_page.dart @@ -1,10 +1,8 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:settings/view/pages/printers/printers_model.dart'; -import 'package:settings/view/widgets/extra_options_gsettings_row.dart'; -import 'package:settings/view/widgets/settings_row.dart'; -import 'package:settings/view/widgets/settings_section.dart'; import 'package:yaru_icons/widgets/yaru_icons.dart'; +import 'package:yaru_widgets/yaru_widgets.dart'; class PrintersPage extends StatelessWidget { const PrintersPage({Key? key}) : super(key: key); @@ -65,8 +63,8 @@ class PrintersPage extends StatelessWidget { ), ), for (var i = 0; i < 10; i++) - SettingsSection(headline: 'Printer ${i + 1}', children: [ - SettingsRow( + YaruSection(headline: 'Printer ${i + 1}', children: [ + YaruRow( trailingWidget: Row( children: [ SizedBox( @@ -114,7 +112,8 @@ class PrintersPage extends StatelessWidget { const SizedBox( width: 10, ), - OptionsButton( + YaruOptionButton( + iconData: YaruIcons.settings, onPressed: () => {}, ), ], From ff07084224ce2ab8f8131ca30c8d86a645e10358 Mon Sep 17 00:00:00 2001 From: Feichtmeier Date: Wed, 5 Jan 2022 23:54:44 +0100 Subject: [PATCH 08/17] update icon import --- lib/view/pages/printers/printers_page.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/view/pages/printers/printers_page.dart b/lib/view/pages/printers/printers_page.dart index 3678eeae..ff59fbd5 100644 --- a/lib/view/pages/printers/printers_page.dart +++ b/lib/view/pages/printers/printers_page.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:settings/view/pages/printers/printers_model.dart'; -import 'package:yaru_icons/widgets/yaru_icons.dart'; +import 'package:yaru_icons/yaru_icons.dart'; import 'package:yaru_widgets/yaru_widgets.dart'; class PrintersPage extends StatelessWidget { From f79a33b48dc9f061e5df7cad0a8104f11d25e9fd Mon Sep 17 00:00:00 2001 From: Frederik Feichtmeier Date: Sat, 19 Feb 2022 20:42:45 +0100 Subject: [PATCH 09/17] Pubspec: use yaru_widgets from master (#278) --- pubspec.lock | 4 ++-- pubspec.yaml | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index 5690c22e..a1788116 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -951,8 +951,8 @@ packages: dependency: "direct main" description: path: "." - ref: titlebuilder - resolved-ref: a58965c28a5d77d968831c05414a32adc7880df9 + ref: HEAD + resolved-ref: cd5058fe96f00615870af34f03c152ad19c4c42e url: "https://github.com/ubuntu/yaru_widgets.dart" source: git version: "1.0.5" diff --git a/pubspec.yaml b/pubspec.yaml index 58340cea..2748464a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -43,7 +43,6 @@ dependencies: yaru_widgets: git: url: https://github.com/ubuntu/yaru_widgets.dart - ref: titlebuilder flutter_svg: ^1.0.0 flutter_spinbox: ^0.8.0 http: ^0.13.4 From 0269f7a346b27c4d908a5600caecefb3f5df326c Mon Sep 17 00:00:00 2001 From: Feichtmeier Date: Sat, 19 Feb 2022 20:56:41 +0100 Subject: [PATCH 10/17] Adapt to master --- lib/view/pages/page_items.dart | 8 +- lib/view/pages/printers/printers_page.dart | 117 ++++++++++++--------- 2 files changed, 70 insertions(+), 55 deletions(-) diff --git a/lib/view/pages/page_items.dart b/lib/view/pages/page_items.dart index 0417f762..1421a806 100644 --- a/lib/view/pages/page_items.dart +++ b/lib/view/pages/page_items.dart @@ -15,6 +15,7 @@ import 'package:settings/view/pages/multitasking/multi_tasking_page.dart'; import 'package:settings/view/pages/notifications/notifications_page.dart'; import 'package:settings/view/pages/online_accounts/online_accounts_page.dart'; import 'package:settings/view/pages/power/power_page.dart'; +import 'package:settings/view/pages/printers/printers_page.dart'; import 'package:settings/view/pages/privacy/privacy_page.dart'; import 'package:settings/view/pages/region_and_language/region_and_language_page.dart'; import 'package:settings/view/pages/removable_media/removable_media_page.dart'; @@ -114,10 +115,11 @@ List getPageItems(BuildContext context) => [ builder: KeyboardPage.create, searchMatches: KeyboardPage.searchMatches, ), - YaruPageItem( - titleBuilder: (context) => const Text('Printers'), + const YaruPageItem( + titleBuilder: PrintersPage.createTitle, iconData: YaruIcons.printer, - builder: (_) => const Center(child: Text('Printers')), + builder: PrintersPage.create, + searchMatches: PrintersPage.searchMatches, ), const YaruPageItem( titleBuilder: RemovableMediaPage.createTitle, diff --git a/lib/view/pages/printers/printers_page.dart b/lib/view/pages/printers/printers_page.dart index ff59fbd5..6ebc0ed1 100644 --- a/lib/view/pages/printers/printers_page.dart +++ b/lib/view/pages/printers/printers_page.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; +import 'package:settings/l10n/l10n.dart'; import 'package:settings/view/pages/printers/printers_model.dart'; import 'package:yaru_icons/yaru_icons.dart'; import 'package:yaru_widgets/yaru_widgets.dart'; @@ -15,6 +16,16 @@ class PrintersPage extends StatelessWidget { ); } + static Widget createTitle(BuildContext context) => + Text(context.l10n.printersPageTitle); + + static bool searchMatches(String value, BuildContext context) => + value.isNotEmpty + ? context.l10n.printersPageTitle + .toLowerCase() + .contains(value.toLowerCase()) + : false; + @override Widget build(BuildContext context) { return Column( @@ -65,59 +76,61 @@ class PrintersPage extends StatelessWidget { for (var i = 0; i < 10; i++) YaruSection(headline: 'Printer ${i + 1}', children: [ YaruRow( - trailingWidget: Row( - children: [ - SizedBox( - width: 70, - child: Image.asset( - i.isEven - ? 'assets/images/icons/printer.png' - : 'assets/images/icons/printer-network.png', - fit: BoxFit.fill), - ), - const SizedBox( - width: 20, - ), - SizedBox( - height: 60, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - const Text('Model XYZ'), // printer.type - const SizedBox( - height: 3, - ), - Text(i.isEven - ? 'local' - : '192.168.1.1337'), // printer.location - // printer.status - ], - ), - ) - ], - ), - actionWidget: Row( - children: [ - const SizedBox( - height: 40, - child: OutlinedButton( - onPressed: null, // printer.activejobs ? - child: Text( - 'No active jobs', - // style: TextStyle( - // color: Theme.of(context).disabledColor), - )), - ), - const SizedBox( - width: 10, - ), - YaruOptionButton( - iconData: YaruIcons.settings, - onPressed: () => {}, + trailingWidget: Row( + children: [ + SizedBox( + width: 70, + child: Image.asset( + i.isEven + ? 'assets/images/icons/printer.png' + : 'assets/images/icons/printer-network.png', + fit: BoxFit.fill), + ), + const SizedBox( + width: 20, + ), + SizedBox( + height: 60, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Text('Model XYZ'), // printer.type + const SizedBox( + height: 3, + ), + Text(i.isEven + ? 'local' + : '192.168.1.1337'), // printer.location + // printer.status + ], ), - ], - )) + ) + ], + ), + actionWidget: Row( + children: [ + const SizedBox( + height: 40, + child: OutlinedButton( + onPressed: null, // printer.activejobs ? + child: Text( + 'No active jobs', + // style: TextStyle( + // color: Theme.of(context).disabledColor), + )), + ), + const SizedBox( + width: 10, + ), + YaruOptionButton( + iconData: YaruIcons.settings, + onPressed: () => {}, + ), + ], + ), + enabled: true, + ) ]) ], ); From a12b1122cd17e97c371662af6b97870b31ff4a3f Mon Sep 17 00:00:00 2001 From: Feichtmeier Date: Sat, 19 Feb 2022 21:03:48 +0100 Subject: [PATCH 11/17] adapt to master --- lib/view/pages/printers/printers_page.dart | 193 ++++++++++----------- pubspec.yaml | 3 +- 2 files changed, 98 insertions(+), 98 deletions(-) diff --git a/lib/view/pages/printers/printers_page.dart b/lib/view/pages/printers/printers_page.dart index 6ebc0ed1..f0a183c7 100644 --- a/lib/view/pages/printers/printers_page.dart +++ b/lib/view/pages/printers/printers_page.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; +import 'package:settings/constants.dart'; import 'package:settings/l10n/l10n.dart'; import 'package:settings/view/pages/printers/printers_model.dart'; import 'package:yaru_icons/yaru_icons.dart'; @@ -28,110 +29,108 @@ class PrintersPage extends StatelessWidget { @override Widget build(BuildContext context) { - return Column( + return YaruPage( children: [ - Padding( - padding: const EdgeInsets.only(bottom: 35, top: 15), - child: SizedBox( - width: 518, - child: Row( - children: [ - SizedBox( - height: 40, - child: ElevatedButton( - onPressed: () { - showDialog( - barrierDismissible: false, - context: context, - builder: (_) => - StatefulBuilder(builder: (context, setState) { - return const AddPrinterDialog(); - }), - ).then((shortcut) {}); - }, - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: const [ - Icon(YaruIcons.plus), - Padding( - padding: EdgeInsets.only(left: 12.0, right: 2), - child: Text('Add a printer'), - ) - ], - )), - ), - const SizedBox( - width: 12, - ), - SizedBox( - height: 40, - child: OutlinedButton( - onPressed: () {}, - child: const Text('Additional printer settings ...')), - ) - ], - ), + SizedBox( + width: kDefaultWidth, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + ElevatedButton( + onPressed: () { + showDialog( + barrierDismissible: false, + context: context, + builder: (_) => + StatefulBuilder(builder: (context, setState) { + return const AddPrinterDialog(); + }), + ).then((shortcut) {}); + }, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: const [ + Icon(YaruIcons.plus), + Padding( + padding: EdgeInsets.only(left: 12.0, right: 2), + child: Text('Add a printer'), + ) + ], + )), + const SizedBox( + width: 12, + ), + OutlinedButton( + onPressed: () {}, + child: const Text('Additional printer settings ...')) + ], ), ), + const SizedBox( + height: 20, + ), for (var i = 0; i < 10; i++) - YaruSection(headline: 'Printer ${i + 1}', children: [ - YaruRow( - trailingWidget: Row( - children: [ - SizedBox( - width: 70, - child: Image.asset( - i.isEven - ? 'assets/images/icons/printer.png' - : 'assets/images/icons/printer-network.png', - fit: BoxFit.fill), - ), - const SizedBox( - width: 20, - ), - SizedBox( - height: 60, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - const Text('Model XYZ'), // printer.type - const SizedBox( - height: 3, + YaruSection( + width: kDefaultWidth, + headline: 'Printer ${i + 1}', + children: [ + YaruRow( + trailingWidget: Row( + children: [ + SizedBox( + width: 70, + child: Image.asset( + i.isEven + ? 'assets/images/icons/printer.png' + : 'assets/images/icons/printer-network.png', + fit: BoxFit.fill), + ), + const SizedBox( + width: 20, + ), + SizedBox( + height: 60, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Text('Model XYZ'), // printer.type + const SizedBox( + height: 3, + ), + Text(i.isEven + ? 'local' + : '192.168.1.1337'), // printer.location + // printer.status + ], ), - Text(i.isEven - ? 'local' - : '192.168.1.1337'), // printer.location - // printer.status - ], - ), - ) - ], - ), - actionWidget: Row( - children: [ - const SizedBox( - height: 40, - child: OutlinedButton( - onPressed: null, // printer.activejobs ? - child: Text( - 'No active jobs', - // style: TextStyle( - // color: Theme.of(context).disabledColor), - )), - ), - const SizedBox( - width: 10, + ) + ], ), - YaruOptionButton( - iconData: YaruIcons.settings, - onPressed: () => {}, + actionWidget: Row( + children: [ + const SizedBox( + height: 40, + child: OutlinedButton( + onPressed: null, // printer.activejobs ? + child: Text( + 'No active jobs', + // style: TextStyle( + // color: Theme.of(context).disabledColor), + )), + ), + const SizedBox( + width: 10, + ), + YaruOptionButton( + iconData: YaruIcons.settings, + onPressed: () => {}, + ), + ], ), - ], - ), - enabled: true, - ) - ]) + enabled: true, + ) + ]) ], ); } diff --git a/pubspec.yaml b/pubspec.yaml index 2748464a..d0c30ac8 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -75,4 +75,5 @@ flutter: - assets/images/appearance/auto-hide-panel-mode/ - assets/images/appearance/auto-hide-dock-mode/ - assets/rive/ - - assets/pdf_assets/ \ No newline at end of file + - assets/pdf_assets/ + - assets/images/icons/ \ No newline at end of file From bc399e717ba99ce7b0e1d7f9790800ceed451902 Mon Sep 17 00:00:00 2001 From: Feichtmeier Date: Sat, 19 Feb 2022 21:15:15 +0100 Subject: [PATCH 12/17] Make UI more expandable --- lib/view/pages/printers/printers_page.dart | 54 +++++++++++++--------- 1 file changed, 31 insertions(+), 23 deletions(-) diff --git a/lib/view/pages/printers/printers_page.dart b/lib/view/pages/printers/printers_page.dart index f0a183c7..137fa237 100644 --- a/lib/view/pages/printers/printers_page.dart +++ b/lib/view/pages/printers/printers_page.dart @@ -60,9 +60,7 @@ class PrintersPage extends StatelessWidget { const SizedBox( width: 12, ), - OutlinedButton( - onPressed: () {}, - child: const Text('Additional printer settings ...')) + YaruOptionButton(onPressed: () {}, iconData: YaruIcons.settings) ], ), ), @@ -79,30 +77,40 @@ class PrintersPage extends StatelessWidget { children: [ SizedBox( width: 70, - child: Image.asset( - i.isEven - ? 'assets/images/icons/printer.png' - : 'assets/images/icons/printer-network.png', - fit: BoxFit.fill), + child: Expanded( + child: Image.asset( + i.isEven + ? 'assets/images/icons/printer.png' + : 'assets/images/icons/printer-network.png', + fit: BoxFit.fill), + ), ), const SizedBox( width: 20, ), - SizedBox( - height: 60, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - const Text('Model XYZ'), // printer.type - const SizedBox( - height: 3, - ), - Text(i.isEven - ? 'local' - : '192.168.1.1337'), // printer.location - // printer.status - ], + Expanded( + child: SizedBox( + height: 60, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Flexible( + child: Text( + 'Model XYZ', + overflow: TextOverflow.ellipsis, + )), // printer.type + const SizedBox( + height: 3, + ), + Flexible( + child: Text( + i.isEven ? 'local' : '192.168.1.1337', + overflow: TextOverflow.ellipsis), + ), // printer.location + // printer.status + ], + ), ), ) ], From 184c19d60b2b8515f7473bc1bc109d443d2f63c8 Mon Sep 17 00:00:00 2001 From: Feichtmeier Date: Sat, 19 Feb 2022 21:50:05 +0100 Subject: [PATCH 13/17] Improve mocked dialogs --- lib/view/pages/keyboard/keyboard_page.dart | 2 +- lib/view/pages/printers/printers_page.dart | 81 +++++++++++++++++----- 2 files changed, 66 insertions(+), 17 deletions(-) diff --git a/lib/view/pages/keyboard/keyboard_page.dart b/lib/view/pages/keyboard/keyboard_page.dart index 0ef6fdb1..42d9ab77 100644 --- a/lib/view/pages/keyboard/keyboard_page.dart +++ b/lib/view/pages/keyboard/keyboard_page.dart @@ -12,7 +12,7 @@ class KeyboardPage extends StatefulWidget { static Widget create(BuildContext context) => const KeyboardPage(); static Widget createTitle(BuildContext context) => - Text(context.l10n.onlineAccountsPageTitle); + Text(context.l10n.keyboardPageTitle); static bool searchMatches(String value, BuildContext context) => value.isNotEmpty diff --git a/lib/view/pages/printers/printers_page.dart b/lib/view/pages/printers/printers_page.dart index 137fa237..7ce42d52 100644 --- a/lib/view/pages/printers/printers_page.dart +++ b/lib/view/pages/printers/printers_page.dart @@ -43,9 +43,27 @@ class PrintersPage extends StatelessWidget { context: context, builder: (_) => StatefulBuilder(builder: (context, setState) { - return const AddPrinterDialog(); + return AddPrinterDialog( + children: [ + Icon( + YaruIcons.printer, + color: Theme.of(context).colorScheme.primary, + size: 50, + ) + ], + onConfirm: () { + Navigator.of(context).pop(); + return ScaffoldMessenger.of(context) + .showSnackBar(SnackBar( + content: Icon( + YaruIcons.printer, + color: Theme.of(context).colorScheme.primary, + ))); + }, + title: 'Add Printer', + ); }), - ).then((shortcut) {}); + ); }, child: Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, @@ -145,25 +163,56 @@ class PrintersPage extends StatelessWidget { } class AddPrinterDialog extends StatelessWidget { - const AddPrinterDialog({Key? key}) : super(key: key); + const AddPrinterDialog({Key? key, this.onConfirm, this.title, this.children}) + : super(key: key); + + final Function()? onConfirm; + final String? title; + final List? children; @override Widget build(BuildContext context) { - return AlertDialog( - title: const Text('Add a printer'), - content: SizedBox( - height: 300, - width: 380, - child: Column( - children: const [], + return SizedBox( + height: 500, + child: SimpleDialog( + titlePadding: EdgeInsets.zero, + title: YaruDialogTitle( + mainAxisAlignment: MainAxisAlignment.center, + closeIconData: YaruIcons.window_close, + title: title, ), + contentPadding: EdgeInsets.zero, + children: [ + const Icon( + YaruIcons.printer, + size: 80, + ), + const SizedBox(height: 20), + Padding( + padding: const EdgeInsets.all(8.0), + child: SizedBox( + width: kDefaultWidth / 3, + child: Row(children: [ + Expanded( + child: OutlinedButton( + onPressed: () => Navigator.of(context).pop(), + child: Text(context.l10n.cancel)), + ), + const SizedBox( + width: 8, + ), + Expanded( + child: ElevatedButton( + onPressed: onConfirm, + child: Text( + context.l10n.confirm, + )), + ) + ]), + ), + ) + ], ), - actions: [ - OutlinedButton( - onPressed: () => Navigator.of(context).pop(), - child: const Text('Cancel')), - ElevatedButton(onPressed: () {}, child: const Text('Add printer')) - ], ); } } From d1c5c82880e3480bd4dc29dbbe7a89bccf681593 Mon Sep 17 00:00:00 2001 From: Feichtmeier Date: Mon, 28 Feb 2022 14:42:49 +0100 Subject: [PATCH 14/17] remove wrong use of expanded --- lib/view/pages/printers/printers_page.dart | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/lib/view/pages/printers/printers_page.dart b/lib/view/pages/printers/printers_page.dart index 7ce42d52..a8005b23 100644 --- a/lib/view/pages/printers/printers_page.dart +++ b/lib/view/pages/printers/printers_page.dart @@ -95,13 +95,11 @@ class PrintersPage extends StatelessWidget { children: [ SizedBox( width: 70, - child: Expanded( - child: Image.asset( - i.isEven - ? 'assets/images/icons/printer.png' - : 'assets/images/icons/printer-network.png', - fit: BoxFit.fill), - ), + child: Image.asset( + i.isEven + ? 'assets/images/icons/printer.png' + : 'assets/images/icons/printer-network.png', + fit: BoxFit.fill), ), const SizedBox( width: 20, From 8c813ccd41e473355305a30672b410d5249d77a3 Mon Sep 17 00:00:00 2001 From: Feichtmeier Date: Sun, 13 Mar 2022 23:46:08 +0100 Subject: [PATCH 15/17] First real printer tests --- lib/view/pages/printers/printers_model.dart | 20 +- lib/view/pages/printers/printers_page.dart | 283 +++++++++++--------- 2 files changed, 181 insertions(+), 122 deletions(-) diff --git a/lib/view/pages/printers/printers_model.dart b/lib/view/pages/printers/printers_model.dart index dd087409..6b74cd3d 100644 --- a/lib/view/pages/printers/printers_model.dart +++ b/lib/view/pages/printers/printers_model.dart @@ -1,3 +1,21 @@ +import 'dart:convert'; +import 'dart:io'; + import 'package:safe_change_notifier/safe_change_notifier.dart'; -class PrintersModel extends SafeChangeNotifier {} +class PrintersModel extends SafeChangeNotifier { + void openPrinterSettings() { + Process.run('system-config-printer', ['&']); + } + + Future> loadPrinters() async { + final List printerNames = []; + await Process.run('lpinfo', ['-v']).then((value) { + printerNames.addAll(const LineSplitter().convert(value.stdout)); + printerNames.retainWhere((element) => + element.contains('network dnssd://') || + element.contains('network ipps://')); + }); + return printerNames; + } +} diff --git a/lib/view/pages/printers/printers_page.dart b/lib/view/pages/printers/printers_page.dart index a8005b23..8b02fa4f 100644 --- a/lib/view/pages/printers/printers_page.dart +++ b/lib/view/pages/printers/printers_page.dart @@ -6,7 +6,7 @@ import 'package:settings/view/pages/printers/printers_model.dart'; import 'package:yaru_icons/yaru_icons.dart'; import 'package:yaru_widgets/yaru_widgets.dart'; -class PrintersPage extends StatelessWidget { +class PrintersPage extends StatefulWidget { const PrintersPage({Key? key}) : super(key: key); static Widget create(BuildContext context) { @@ -27,139 +27,180 @@ class PrintersPage extends StatelessWidget { .contains(value.toLowerCase()) : false; + @override + State createState() => _PrintersPageState(); +} + +class _PrintersPageState extends State { + @override + void initState() { + super.initState(); + } + @override Widget build(BuildContext context) { + final model = context.watch(); return YaruPage( children: [ - SizedBox( - width: kDefaultWidth, - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - ElevatedButton( - onPressed: () { - showDialog( - barrierDismissible: false, - context: context, - builder: (_) => - StatefulBuilder(builder: (context, setState) { - return AddPrinterDialog( - children: [ - Icon( - YaruIcons.printer, - color: Theme.of(context).colorScheme.primary, - size: 50, - ) - ], - onConfirm: () { - Navigator.of(context).pop(); - return ScaffoldMessenger.of(context) - .showSnackBar(SnackBar( - content: Icon( - YaruIcons.printer, - color: Theme.of(context).colorScheme.primary, - ))); - }, - title: 'Add Printer', - ); - }), - ); - }, - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: const [ - Icon(YaruIcons.plus), - Padding( - padding: EdgeInsets.only(left: 12.0, right: 2), - child: Text('Add a printer'), - ) - ], - )), - const SizedBox( - width: 12, - ), - YaruOptionButton(onPressed: () {}, iconData: YaruIcons.settings) - ], - ), + ChangeNotifierProvider.value( + value: model, + child: const _Header(), ), const SizedBox( height: 20, ), - for (var i = 0; i < 10; i++) - YaruSection( - width: kDefaultWidth, - headline: 'Printer ${i + 1}', - children: [ - YaruRow( - trailingWidget: Row( - children: [ - SizedBox( - width: 70, - child: Image.asset( - i.isEven - ? 'assets/images/icons/printer.png' - : 'assets/images/icons/printer-network.png', - fit: BoxFit.fill), - ), - const SizedBox( - width: 20, - ), - Expanded( - child: SizedBox( - height: 60, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - const Flexible( - child: Text( - 'Model XYZ', - overflow: TextOverflow.ellipsis, - )), // printer.type - const SizedBox( - height: 3, - ), - Flexible( - child: Text( - i.isEven ? 'local' : '192.168.1.1337', - overflow: TextOverflow.ellipsis), - ), // printer.location - // printer.status - ], - ), - ), - ) - ], - ), - actionWidget: Row( - children: [ - const SizedBox( - height: 40, - child: OutlinedButton( - onPressed: null, // printer.activejobs ? - child: Text( - 'No active jobs', - // style: TextStyle( - // color: Theme.of(context).disabledColor), - )), - ), - const SizedBox( - width: 10, - ), - YaruOptionButton( - iconData: YaruIcons.settings, - onPressed: () => {}, - ), - ], - ), - enabled: true, - ) - ]) + FutureBuilder>( + future: model.loadPrinters(), + builder: (context, snapshot) => snapshot.hasData + ? ListView( + shrinkWrap: true, + children: snapshot.data! + .map((e) => _PrinterSection(name: e)) + .toList(), + ) + : const LinearProgressIndicator()) ], ); } } +class _PrinterSection extends StatelessWidget { + const _PrinterSection({ + Key? key, + required this.name, + }) : super(key: key); + + final String name; + + @override + Widget build(BuildContext context) { + return YaruSection(width: kDefaultWidth, headline: name, children: [ + YaruRow( + trailingWidget: Row( + children: [ + SizedBox( + width: 70, + child: Image.asset('assets/images/icons/printer.png', + fit: BoxFit.fill), + ), + const SizedBox( + width: 20, + ), + Expanded( + child: SizedBox( + height: 60, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, + children: const [ + Flexible( + child: Text( + 'Model XYZ', + overflow: TextOverflow.ellipsis, + )), // printer.type + SizedBox( + height: 3, + ), + Flexible( + child: Text('bla', overflow: TextOverflow.ellipsis), + ), // printer.location + // printer.status + ], + ), + ), + ) + ], + ), + actionWidget: Row( + children: [ + const SizedBox( + height: 40, + child: OutlinedButton( + onPressed: null, // printer.activejobs ? + child: Text( + 'No active jobs', + // style: TextStyle( + // color: Theme.of(context).disabledColor), + )), + ), + const SizedBox( + width: 10, + ), + YaruOptionButton( + iconData: YaruIcons.settings, + onPressed: () => {}, + ), + ], + ), + enabled: true, + ) + ]); + } +} + +class _Header extends StatelessWidget { + const _Header({ + Key? key, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + final model = context.watch(); + return SizedBox( + width: kDefaultWidth, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + ElevatedButton( + onPressed: () { + showDialog( + barrierDismissible: false, + context: context, + builder: (_) => StatefulBuilder(builder: (context, setState) { + return AddPrinterDialog( + children: [ + Icon( + YaruIcons.printer, + color: Theme.of(context).colorScheme.primary, + size: 50, + ) + ], + onConfirm: () { + Navigator.of(context).pop(); + return ScaffoldMessenger.of(context) + .showSnackBar(SnackBar( + content: Icon( + YaruIcons.printer, + color: Theme.of(context).colorScheme.primary, + ))); + }, + title: 'Add Printer', + ); + }), + ); + }, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: const [ + Icon(YaruIcons.plus), + Padding( + padding: EdgeInsets.only(left: 12.0, right: 2), + child: Text('Add a printer'), + ) + ], + )), + const SizedBox( + width: 12, + ), + YaruOptionButton( + onPressed: () => model.openPrinterSettings(), + iconData: YaruIcons.settings) + ], + ), + ); + } +} + class AddPrinterDialog extends StatelessWidget { const AddPrinterDialog({Key? key, this.onConfirm, this.title, this.children}) : super(key: key); From 8505dddcb85c88f120983ae28906dc7f6a462085 Mon Sep 17 00:00:00 2001 From: Feichtmeier Date: Sat, 5 Aug 2023 22:59:11 +0200 Subject: [PATCH 16/17] Fix errors --- lib/view/pages/printers/printers_model.dart | 10 +- lib/view/pages/printers/printers_page.dart | 261 +++++++++++--------- 2 files changed, 145 insertions(+), 126 deletions(-) diff --git a/lib/view/pages/printers/printers_model.dart b/lib/view/pages/printers/printers_model.dart index 6b74cd3d..3ff7516a 100644 --- a/lib/view/pages/printers/printers_model.dart +++ b/lib/view/pages/printers/printers_model.dart @@ -9,12 +9,14 @@ class PrintersModel extends SafeChangeNotifier { } Future> loadPrinters() async { - final List printerNames = []; + final printerNames = []; await Process.run('lpinfo', ['-v']).then((value) { printerNames.addAll(const LineSplitter().convert(value.stdout)); - printerNames.retainWhere((element) => - element.contains('network dnssd://') || - element.contains('network ipps://')); + printerNames.retainWhere( + (element) => + element.contains('network dnssd://') || + element.contains('network ipps://'), + ); }); return printerNames; } diff --git a/lib/view/pages/printers/printers_page.dart b/lib/view/pages/printers/printers_page.dart index 8b02fa4f..987db82d 100644 --- a/lib/view/pages/printers/printers_page.dart +++ b/lib/view/pages/printers/printers_page.dart @@ -3,11 +3,12 @@ import 'package:provider/provider.dart'; import 'package:settings/constants.dart'; import 'package:settings/l10n/l10n.dart'; import 'package:settings/view/pages/printers/printers_model.dart'; +import 'package:settings/view/pages/settings_page.dart'; import 'package:yaru_icons/yaru_icons.dart'; import 'package:yaru_widgets/yaru_widgets.dart'; class PrintersPage extends StatefulWidget { - const PrintersPage({Key? key}) : super(key: key); + const PrintersPage({super.key}); static Widget create(BuildContext context) { // final service = Provider.of(context, listen: false); @@ -40,7 +41,7 @@ class _PrintersPageState extends State { @override Widget build(BuildContext context) { final model = context.watch(); - return YaruPage( + return SettingsPage( children: [ ChangeNotifierProvider.value( value: model, @@ -50,15 +51,16 @@ class _PrintersPageState extends State { height: 20, ), FutureBuilder>( - future: model.loadPrinters(), - builder: (context, snapshot) => snapshot.hasData - ? ListView( - shrinkWrap: true, - children: snapshot.data! - .map((e) => _PrinterSection(name: e)) - .toList(), - ) - : const LinearProgressIndicator()) + future: model.loadPrinters(), + builder: (context, snapshot) => snapshot.hasData + ? ListView( + shrinkWrap: true, + children: snapshot.data! + .map((e) => _PrinterSection(name: e)) + .toList(), + ) + : const LinearProgressIndicator(), + ) ], ); } @@ -66,82 +68,89 @@ class _PrintersPageState extends State { class _PrinterSection extends StatelessWidget { const _PrinterSection({ - Key? key, required this.name, - }) : super(key: key); + }); final String name; @override Widget build(BuildContext context) { - return YaruSection(width: kDefaultWidth, headline: name, children: [ - YaruRow( - trailingWidget: Row( - children: [ - SizedBox( - width: 70, - child: Image.asset('assets/images/icons/printer.png', - fit: BoxFit.fill), - ), - const SizedBox( - width: 20, + return YaruSection( + width: kDefaultWidth, + headline: Text(name), + child: Column( + children: [ + YaruTile( + trailing: Row( + children: [ + SizedBox( + width: 70, + child: Image.asset( + 'assets/images/icons/printer.png', + fit: BoxFit.fill, + ), + ), + const SizedBox( + width: 20, + ), + const Expanded( + child: SizedBox( + height: 60, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Flexible( + child: Text( + 'Model XYZ', + overflow: TextOverflow.ellipsis, + ), + ), // printer.type + SizedBox( + height: 3, + ), + Flexible( + child: Text('bla', overflow: TextOverflow.ellipsis), + ), // printer.location + // printer.status + ], + ), + ), + ) + ], ), - Expanded( - child: SizedBox( - height: 60, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.center, - children: const [ - Flexible( - child: Text( - 'Model XYZ', - overflow: TextOverflow.ellipsis, - )), // printer.type - SizedBox( - height: 3, + leading: Row( + children: [ + const SizedBox( + height: 40, + child: OutlinedButton( + onPressed: null, // printer.activejobs ? + child: Text( + 'No active jobs', + // style: TextStyle( + // color: Theme.of(context).disabledColor), ), - Flexible( - child: Text('bla', overflow: TextOverflow.ellipsis), - ), // printer.location - // printer.status - ], + ), ), - ), - ) - ], - ), - actionWidget: Row( - children: [ - const SizedBox( - height: 40, - child: OutlinedButton( - onPressed: null, // printer.activejobs ? - child: Text( - 'No active jobs', - // style: TextStyle( - // color: Theme.of(context).disabledColor), - )), - ), - const SizedBox( - width: 10, - ), - YaruOptionButton( - iconData: YaruIcons.settings, - onPressed: () => {}, + const SizedBox( + width: 10, + ), + YaruOptionButton( + child: const Icon(YaruIcons.settings), + onPressed: () => {}, + ), + ], ), - ], - ), - enabled: true, - ) - ]); + enabled: true, + ) + ], + ), + ); } } class _Header extends StatelessWidget { - const _Header({ - Key? key, - }) : super(key: key); + const _Header(); @override Widget build(BuildContext context) { @@ -152,12 +161,25 @@ class _Header extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ ElevatedButton( - onPressed: () { - showDialog( - barrierDismissible: false, - context: context, - builder: (_) => StatefulBuilder(builder: (context, setState) { + onPressed: () { + showDialog( + barrierDismissible: false, + context: context, + builder: (_) => StatefulBuilder( + builder: (context, setState) { return AddPrinterDialog( + onConfirm: () { + Navigator.of(context).pop(); + return ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Icon( + YaruIcons.printer, + color: Theme.of(context).colorScheme.primary, + ), + ), + ); + }, + title: 'Add Printer', children: [ Icon( YaruIcons.printer, @@ -165,36 +187,29 @@ class _Header extends StatelessWidget { size: 50, ) ], - onConfirm: () { - Navigator.of(context).pop(); - return ScaffoldMessenger.of(context) - .showSnackBar(SnackBar( - content: Icon( - YaruIcons.printer, - color: Theme.of(context).colorScheme.primary, - ))); - }, - title: 'Add Printer', ); - }), - ); - }, - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: const [ - Icon(YaruIcons.plus), - Padding( - padding: EdgeInsets.only(left: 12.0, right: 2), - child: Text('Add a printer'), - ) - ], - )), + }, + ), + ); + }, + child: const Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Icon(YaruIcons.plus), + Padding( + padding: EdgeInsets.only(left: 12.0, right: 2), + child: Text('Add a printer'), + ) + ], + ), + ), const SizedBox( width: 12, ), YaruOptionButton( - onPressed: () => model.openPrinterSettings(), - iconData: YaruIcons.settings) + onPressed: model.openPrinterSettings, + child: const Icon(YaruIcons.settings), + ) ], ), ); @@ -202,8 +217,8 @@ class _Header extends StatelessWidget { } class AddPrinterDialog extends StatelessWidget { - const AddPrinterDialog({Key? key, this.onConfirm, this.title, this.children}) - : super(key: key); + const AddPrinterDialog( + {super.key, this.onConfirm, this.title, this.children}); final Function()? onConfirm; final String? title; @@ -215,10 +230,8 @@ class AddPrinterDialog extends StatelessWidget { height: 500, child: SimpleDialog( titlePadding: EdgeInsets.zero, - title: YaruDialogTitle( - mainAxisAlignment: MainAxisAlignment.center, - closeIconData: YaruIcons.window_close, - title: title, + title: YaruDialogTitleBar( + title: Text(title ?? ''), ), contentPadding: EdgeInsets.zero, children: [ @@ -231,23 +244,27 @@ class AddPrinterDialog extends StatelessWidget { padding: const EdgeInsets.all(8.0), child: SizedBox( width: kDefaultWidth / 3, - child: Row(children: [ - Expanded( - child: OutlinedButton( + child: Row( + children: [ + Expanded( + child: OutlinedButton( onPressed: () => Navigator.of(context).pop(), - child: Text(context.l10n.cancel)), - ), - const SizedBox( - width: 8, - ), - Expanded( - child: ElevatedButton( + child: Text(context.l10n.cancel), + ), + ), + const SizedBox( + width: 8, + ), + Expanded( + child: ElevatedButton( onPressed: onConfirm, child: Text( context.l10n.confirm, - )), - ) - ]), + ), + ), + ) + ], + ), ), ) ], From 948de9d7396686d9de1ba0e3561240f336171986 Mon Sep 17 00:00:00 2001 From: Feichtmeier Date: Sat, 5 Aug 2023 23:26:24 +0200 Subject: [PATCH 17/17] fix errors --- lib/view/pages/printers/printers_page.dart | 154 +++++++++++---------- 1 file changed, 81 insertions(+), 73 deletions(-) diff --git a/lib/view/pages/printers/printers_page.dart b/lib/view/pages/printers/printers_page.dart index 987db82d..f11ffade 100644 --- a/lib/view/pages/printers/printers_page.dart +++ b/lib/view/pages/printers/printers_page.dart @@ -50,16 +50,27 @@ class _PrintersPageState extends State { const SizedBox( height: 20, ), - FutureBuilder>( - future: model.loadPrinters(), - builder: (context, snapshot) => snapshot.hasData - ? ListView( - shrinkWrap: true, - children: snapshot.data! - .map((e) => _PrinterSection(name: e)) - .toList(), - ) - : const LinearProgressIndicator(), + SizedBox( + width: kDefaultWidth, + child: FutureBuilder>( + future: model.loadPrinters(), + builder: (context, snapshot) { + return snapshot.hasData + ? ListView.separated( + itemCount: snapshot.data!.length, + itemBuilder: (context, index) { + return _PrinterSection(name: snapshot.data![index]); + }, + shrinkWrap: true, + separatorBuilder: (context, index) { + return const SizedBox( + height: kYaruPagePadding, + ); + }, + ) + : const YaruLinearProgressIndicator(); + }, + ), ) ], ); @@ -76,74 +87,67 @@ class _PrinterSection extends StatelessWidget { @override Widget build(BuildContext context) { return YaruSection( - width: kDefaultWidth, headline: Text(name), - child: Column( - children: [ - YaruTile( - trailing: Row( - children: [ - SizedBox( - width: 70, - child: Image.asset( - 'assets/images/icons/printer.png', - fit: BoxFit.fill, - ), - ), - const SizedBox( - width: 20, - ), - const Expanded( - child: SizedBox( - height: 60, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Flexible( - child: Text( - 'Model XYZ', - overflow: TextOverflow.ellipsis, - ), - ), // printer.type - SizedBox( - height: 3, - ), - Flexible( - child: Text('bla', overflow: TextOverflow.ellipsis), - ), // printer.location - // printer.status - ], - ), - ), - ) - ], + child: YaruTile( + trailing: Row( + children: [ + SizedBox( + width: 70, + child: Image.asset( + 'assets/images/icons/printer.png', + fit: BoxFit.fill, + ), ), - leading: Row( - children: [ - const SizedBox( - height: 40, - child: OutlinedButton( - onPressed: null, // printer.activejobs ? + const SizedBox( + width: 20, + ), + const SizedBox( + height: 100, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Flexible( child: Text( - 'No active jobs', - // style: TextStyle( - // color: Theme.of(context).disabledColor), + 'Model XYZ', + overflow: TextOverflow.ellipsis, ), + ), // printer.type + SizedBox( + height: 3, ), + Flexible( + child: Text('bla', overflow: TextOverflow.ellipsis), + ), // printer.location + // printer.status + ], + ), + ) + ], + ), + leading: Row( + children: [ + const SizedBox( + height: 40, + child: OutlinedButton( + onPressed: null, // printer.activejobs ? + child: Text( + 'No active jobs', + // style: TextStyle( + // color: Theme.of(context).disabledColor), ), - const SizedBox( - width: 10, - ), - YaruOptionButton( - child: const Icon(YaruIcons.settings), - onPressed: () => {}, - ), - ], + ), ), - enabled: true, - ) - ], + const SizedBox( + width: 10, + ), + YaruOptionButton( + child: const Icon(YaruIcons.settings), + onPressed: () => {}, + ), + ], + ), + enabled: true, ), ); } @@ -217,8 +221,12 @@ class _Header extends StatelessWidget { } class AddPrinterDialog extends StatelessWidget { - const AddPrinterDialog( - {super.key, this.onConfirm, this.title, this.children}); + const AddPrinterDialog({ + super.key, + this.onConfirm, + this.title, + this.children, + }); final Function()? onConfirm; final String? title;