Skip to content

Commit af73049

Browse files
authored
Use yaru_widgets.dart for page independant widgets (#162)
1 parent 81c4188 commit af73049

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+235
-1415
lines changed

.github/images/wip.gif

1.48 MB
Loading

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ Packages that we already use or plan to use are:
1919
- [X] responsive layout
2020
- [X] [MVVM software architecture](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93viewmodel)
2121
- [X] search
22-
- [ ] WIFI page
22+
- [X] WIFI page
2323
- [ ] Network page
2424
- [ ] Bluetooth page - WIP
2525
- [X] Wallpaper page

lib/main.dart

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@ import 'package:settings/services/hostname_service.dart';
88
import 'package:settings/services/power_profile_service.dart';
99
import 'package:settings/services/power_settings_service.dart';
1010
import 'package:settings/services/settings_service.dart';
11-
import 'package:settings/view/widgets/app_theme.dart';
12-
import 'package:settings/view/widgets/master_details_page.dart';
11+
import 'package:settings/view/app_theme.dart';
12+
import 'package:settings/view/pages/page_items.dart';
1313
import 'package:udisks/udisks.dart';
1414
import 'package:upower/upower.dart';
1515
import 'package:yaru/yaru.dart' as yaru;
16+
import 'package:yaru_icons/widgets/yaru_icons.dart';
17+
import 'package:yaru_widgets/yaru_widgets.dart';
1618

1719
void main() async {
1820
final themeSettings = GSettings(schemaId: schemaInterface);
@@ -71,7 +73,14 @@ class UbuntuSettingsApp extends StatelessWidget {
7173
return MaterialApp(
7274
debugShowCheckedModeBanner: false,
7375
title: 'Ubuntu settings',
74-
home: const MasterDetailPage(),
76+
home: YaruMasterDetailPage(
77+
appBarHeight: 48,
78+
leftPaneWidth: 280,
79+
pageItems: pageItems,
80+
previousIconData: YaruIcons.go_previous,
81+
searchHint: 'Search...',
82+
searchIconData: YaruIcons.search,
83+
),
7584
theme: yaru.lightTheme,
7685
darkTheme: yaru.darkTheme,
7786
themeMode: context.watch<AppTheme>().value,
File renamed without changes.

lib/view/pages/accessibility/global_section.dart

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
11
import 'package:flutter/material.dart';
22
import 'package:provider/provider.dart';
33
import 'package:settings/view/pages/accessibility/accessibility_model.dart';
4-
import 'package:settings/view/widgets/settings_section.dart';
5-
import 'package:settings/view/widgets/switch_settings_row.dart';
4+
import 'package:yaru_widgets/yaru_widgets.dart';
65

76
class GlobalSection extends StatelessWidget {
87
const GlobalSection({Key? key}) : super(key: key);
98

109
@override
1110
Widget build(BuildContext context) {
1211
final model = Provider.of<AccessibilityModel>(context);
13-
return SettingsSection(
12+
return YaruSection(
1413
headline: 'Global',
1514
children: [
16-
SwitchSettingsRow(
15+
YaruSwitchRow(
1716
trailingWidget: const Text('Always Show Universal Access Menu'),
1817
value: model.universalAccessStatus,
1918
onChanged: (value) => model.setUniversalAccessStatus(value),

lib/view/pages/accessibility/hearing_section.dart

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
import 'package:flutter/material.dart';
22
import 'package:provider/provider.dart';
33
import 'package:settings/view/pages/accessibility/accessibility_model.dart';
4-
import 'package:settings/view/widgets/extra_options_gsettings_row.dart';
5-
import 'package:settings/view/widgets/settings_section.dart';
4+
import 'package:yaru_icons/widgets/yaru_icons.dart';
5+
import 'package:yaru_widgets/yaru_widgets.dart';
66

77
class HearingSection extends StatelessWidget {
88
const HearingSection({Key? key}) : super(key: key);
99

1010
@override
1111
Widget build(BuildContext context) {
12-
return const SettingsSection(
12+
return const YaruSection(
1313
headline: 'Hearing',
1414
children: [
1515
_VisualAlerts(),
@@ -24,7 +24,8 @@ class _VisualAlerts extends StatelessWidget {
2424
@override
2525
Widget build(BuildContext context) {
2626
final model = Provider.of<AccessibilityModel>(context);
27-
return ExtraOptionsGsettingsRow(
27+
return YaruExtraOptionRow(
28+
iconData: YaruIcons.settings,
2829
actionLabel: 'Visual Alerts',
2930
actionDescription: 'Use a visual indication when an alert sound occurs',
3031
value: model.visualAlerts,

lib/view/pages/accessibility/pointing_and_clicking_section.dart

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
import 'package:flutter/material.dart';
22
import 'package:provider/provider.dart';
33
import 'package:settings/view/pages/accessibility/accessibility_model.dart';
4-
import 'package:settings/view/widgets/settings_row.dart';
5-
import 'package:settings/view/widgets/settings_section.dart';
6-
import 'package:settings/view/widgets/slider_settings_row.dart';
7-
import 'package:settings/view/widgets/slider_settings_secondary.dart';
8-
import 'package:settings/view/widgets/switch_settings_row.dart';
4+
import 'package:yaru_widgets/yaru_widgets.dart';
5+
96
import 'package:yaru_icons/widgets/yaru_icons.dart';
107

118
class PointingAndClickingSection extends StatelessWidget {
@@ -14,21 +11,21 @@ class PointingAndClickingSection extends StatelessWidget {
1411
@override
1512
Widget build(BuildContext context) {
1613
final model = Provider.of<AccessibilityModel>(context);
17-
return SettingsSection(
14+
return YaruSection(
1815
headline: 'Pointing & Clicking',
1916
children: [
20-
SwitchSettingsRow(
17+
YaruSwitchRow(
2118
trailingWidget: const Text('Mouse Keys'),
2219
value: model.mouseKeys,
2320
onChanged: (value) => model.setMouseKeys(value),
2421
),
25-
SwitchSettingsRow(
22+
YaruSwitchRow(
2623
trailingWidget: const Text('Locate Pointer'),
2724
value: model.locatePointer,
2825
onChanged: (value) => model.setLocatePointer(value),
2926
),
3027
const _ClickAssist(),
31-
SliderSettingsRow(
28+
YaruSliderRow(
3229
actionLabel: 'Double-Click Delay',
3330
value: model.doubleClickDelay,
3431
min: 100,
@@ -47,7 +44,7 @@ class _ClickAssist extends StatelessWidget {
4744
@override
4845
Widget build(BuildContext context) {
4946
final model = Provider.of<AccessibilityModel>(context);
50-
return SettingsRow(
47+
return YaruRow(
5148
trailingWidget: const Text('Click Assist'),
5249
actionWidget: Row(
5350
children: [
@@ -84,7 +81,7 @@ class _ClickAssistSettings extends StatelessWidget {
8481
title: const Center(child: Text('Click Assist')),
8582
contentPadding: const EdgeInsets.all(8.0),
8683
children: [
87-
SwitchSettingsRow(
84+
YaruSwitchRow(
8885
trailingWidget: const Text('Simulated Secondary Click'),
8986
actionDescription:
9087
'Trigger a secondary click by holding down the primary button.',
@@ -93,7 +90,7 @@ class _ClickAssistSettings extends StatelessWidget {
9390
),
9491
Padding(
9592
padding: const EdgeInsets.symmetric(horizontal: 16.0),
96-
child: SliderSettingsSecondary(
93+
child: YaruSliderSecondary(
9794
label: 'Delay',
9895
enabled: model.simulatedSecondaryClick,
9996
value: model.secondaryClickTime,
@@ -104,7 +101,7 @@ class _ClickAssistSettings extends StatelessWidget {
104101
onChanged: (value) => model.setSecondaryClickTime(value),
105102
),
106103
),
107-
SwitchSettingsRow(
104+
YaruSwitchRow(
108105
trailingWidget: const Text('Hover Click'),
109106
actionDescription: 'Trigger a click when the pointer hovers',
110107
value: model.dwellClick,
@@ -114,7 +111,7 @@ class _ClickAssistSettings extends StatelessWidget {
114111
padding: const EdgeInsets.symmetric(horizontal: 16.0),
115112
child: Column(
116113
children: [
117-
SliderSettingsSecondary(
114+
YaruSliderSecondary(
118115
label: 'Delay',
119116
enabled: model.dwellClick,
120117
min: 0.2,
@@ -124,7 +121,7 @@ class _ClickAssistSettings extends StatelessWidget {
124121
fractionDigits: 1,
125122
onChanged: (value) => model.setDwellTime(value),
126123
),
127-
SliderSettingsSecondary(
124+
YaruSliderSecondary(
128125
label: 'Motion thresshold',
129126
enabled: model.dwellClick,
130127
min: 0.0,

lib/view/pages/accessibility/seeing_section.dart

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
11
import 'package:flutter/material.dart';
22
import 'package:provider/provider.dart';
33
import 'package:settings/view/pages/accessibility/accessibility_model.dart';
4-
import 'package:settings/view/widgets/checkbox_row.dart';
5-
import 'package:settings/view/widgets/extra_options_gsettings_row.dart';
6-
import 'package:settings/view/widgets/settings_row.dart';
7-
import 'package:settings/view/widgets/settings_section.dart';
8-
import 'package:settings/view/widgets/slider_settings_secondary.dart';
9-
import 'package:settings/view/widgets/switch_settings_row.dart';
4+
import 'package:yaru_widgets/yaru_widgets.dart';
5+
106
import 'package:yaru_icons/widgets/yaru_icons.dart';
117

128
class SeeingSection extends StatelessWidget {
@@ -15,21 +11,22 @@ class SeeingSection extends StatelessWidget {
1511
@override
1612
Widget build(BuildContext context) {
1713
final model = Provider.of<AccessibilityModel>(context);
18-
return SettingsSection(
14+
return YaruSection(
1915
headline: 'Seeing',
2016
children: [
21-
SwitchSettingsRow(
17+
YaruSwitchRow(
2218
trailingWidget: const Text('High Contrast'),
2319
value: model.highContrast,
2420
onChanged: (value) => model.setHighContrast(value),
2521
),
26-
SwitchSettingsRow(
22+
YaruSwitchRow(
2723
trailingWidget: const Text('Large Text'),
2824
value: model.largeText,
2925
onChanged: (value) => model.setLargeText(value),
3026
),
3127
const _CursorSize(),
32-
ExtraOptionsGsettingsRow(
28+
YaruExtraOptionRow(
29+
iconData: YaruIcons.settings,
3330
actionLabel: 'Zoom',
3431
value: model.zoom,
3532
onChanged: (value) => model.setZoom(value),
@@ -41,14 +38,14 @@ class SeeingSection extends StatelessWidget {
4138
),
4239
),
4340
),
44-
SwitchSettingsRow(
41+
YaruSwitchRow(
4542
trailingWidget: const Text('Screen Reader'),
4643
actionDescription:
4744
'The screen reader reads displayed text as you move the focus',
4845
value: model.screenReader,
4946
onChanged: (value) => model.setScreenReader(value),
5047
),
51-
SwitchSettingsRow(
48+
YaruSwitchRow(
5249
trailingWidget: const Text('Sound Keys'),
5350
actionDescription:
5451
'Beep when Num Lock or Caps Lock are turned on or off',
@@ -66,7 +63,7 @@ class _CursorSize extends StatelessWidget {
6663
@override
6764
Widget build(BuildContext context) {
6865
final model = Provider.of<AccessibilityModel>(context);
69-
return SettingsRow(
66+
return YaruRow(
7067
trailingWidget: const Text('Cursor Size'),
7168
description: 'Cursor size can be combined with zoom '
7269
'to make it easier to see the cursor',
@@ -212,7 +209,7 @@ class _MagnifierOptions extends StatelessWidget {
212209
child: Column(
213210
crossAxisAlignment: CrossAxisAlignment.start,
214211
children: [
215-
SliderSettingsSecondary(
212+
YaruSliderSecondary(
216213
// TODO it'd be better to use SpinBox instead of Slider
217214
label: 'Magnification',
218215
enabled: true,
@@ -283,7 +280,7 @@ class _MagnifierPositionOptions extends StatelessWidget {
283280
padding: const EdgeInsets.symmetric(horizontal: 16.0),
284281
child: Column(
285282
children: [
286-
CheckboxRow(
283+
YaruCheckboxRow(
287284
enabled: model.screenPartEnabled,
288285
value: model.scrollAtEdges,
289286
onChanged: (value) => model.setScrollAtEdges(value!),
@@ -378,19 +375,19 @@ class _CrosshairsOptions extends StatelessWidget {
378375
padding: const EdgeInsets.only(left: 16.0, right: 16.0, bottom: 16.0),
379376
child: Column(
380377
children: [
381-
CheckboxRow(
378+
YaruCheckboxRow(
382379
enabled: true,
383380
value: model.crossHairs,
384381
onChanged: (value) => model.setCrossHairs(value!),
385382
text: 'Visible',
386383
),
387-
CheckboxRow(
384+
YaruCheckboxRow(
388385
enabled: true,
389386
value: model.crossHairsClip,
390387
onChanged: (value) => model.setCrossHairsClip(value!),
391388
text: 'Overlaps mouse cursor',
392389
),
393-
SliderSettingsSecondary(
390+
YaruSliderSecondary(
394391
label: 'Thickness',
395392
enabled: true,
396393
showValue: false,
@@ -400,7 +397,7 @@ class _CrosshairsOptions extends StatelessWidget {
400397
value: model.crossHairsThickness,
401398
onChanged: (value) => model.setCrossHairsThickness(value),
402399
),
403-
SliderSettingsSecondary(
400+
YaruSliderSecondary(
404401
label: 'Length',
405402
enabled: true,
406403
showValue: false,
@@ -439,13 +436,13 @@ class _ColorEffectsOptions extends StatelessWidget {
439436
padding: const EdgeInsets.only(left: 16.0, right: 16.0, bottom: 16.0),
440437
child: Column(
441438
children: [
442-
CheckboxRow(
439+
YaruCheckboxRow(
443440
enabled: true,
444441
value: model.inverseLightness,
445442
onChanged: (value) => model.setInverseLightness(value!),
446443
text: 'White on black',
447444
),
448-
SliderSettingsSecondary(
445+
YaruSliderSecondary(
449446
label: 'Brightness',
450447
enabled: true,
451448
showValue: false,
@@ -455,7 +452,7 @@ class _ColorEffectsOptions extends StatelessWidget {
455452
value: model.colorBrightness,
456453
onChanged: (value) => model.setColorBrightness(value),
457454
),
458-
SliderSettingsSecondary(
455+
YaruSliderSecondary(
459456
label: 'Contrast',
460457
enabled: true,
461458
showValue: false,
@@ -465,7 +462,7 @@ class _ColorEffectsOptions extends StatelessWidget {
465462
value: model.colorContrast,
466463
onChanged: (value) => model.setColorContrast(value),
467464
),
468-
SliderSettingsSecondary(
465+
YaruSliderSecondary(
469466
label: 'Saturation',
470467
enabled: true,
471468
showValue: false,

0 commit comments

Comments
 (0)