Skip to content

Commit 1e505f6

Browse files
authored
Merge pull request #359 from BrawlerXull/tour
Provide Detailed Tour for the entire Application for new users
2 parents 4967f74 + 7109c4b commit 1e505f6

File tree

65 files changed

+656
-156
lines changed

Some content is hidden

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

65 files changed

+656
-156
lines changed

lib/app/modules/about/views/about_page_body.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import 'package:url_launcher/url_launcher.dart';
1111

1212
import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart';
1313
import 'package:taskwarrior/app/utils/constants/taskwarrior_fonts.dart';
14-
import 'package:taskwarrior/app/utils/theme/app_settings.dart';
14+
import 'package:taskwarrior/app/utils/app_settings/app_settings.dart';
1515

1616
class AboutPageBody extends StatelessWidget {
1717
final AboutController aboutController;

lib/app/modules/about/views/about_view.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import 'package:taskwarrior/app/modules/about/views/about_page_body.dart';
77

88
import '../controllers/about_controller.dart';
99
import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart';
10-
import 'package:taskwarrior/app/utils/theme/app_settings.dart';
10+
import 'package:taskwarrior/app/utils/app_settings/app_settings.dart';
1111

1212
class AboutView extends GetView<AboutController> {
1313
const AboutView({super.key});

lib/app/modules/detailRoute/controllers/detail_route_controller.dart

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
// ignore_for_file: depend_on_referenced_packages
22

33
import 'package:built_collection/built_collection.dart';
4+
import 'package:flutter/material.dart';
45
import 'package:get/get.dart';
56
import 'package:taskwarrior/app/modules/home/controllers/home_controller.dart';
7+
import 'package:taskwarrior/app/tour/details_page_tour.dart';
8+
import 'package:taskwarrior/app/utils/constants/taskwarrior_colors.dart';
69
import 'package:taskwarrior/app/utils/taskfunctions/modify.dart';
710
import 'package:taskwarrior/app/utils/taskfunctions/urgency.dart';
11+
import 'package:taskwarrior/app/utils/app_settings/app_settings.dart';
12+
import 'package:tutorial_coach_mark/tutorial_coach_mark.dart';
813

914
class DetailRouteController extends GetxController {
1015
late String uuid;
@@ -87,4 +92,49 @@ class DetailRouteController extends GetxController {
8792
tagsValue?.value = modify.draft.tags;
8893
urgencyValue.value = urgency(modify.draft);
8994
}
95+
96+
late TutorialCoachMark tutorialCoachMark;
97+
98+
final GlobalKey dueKey = GlobalKey();
99+
final GlobalKey untilKey = GlobalKey();
100+
101+
final GlobalKey waitKey = GlobalKey();
102+
final GlobalKey priorityKey = GlobalKey();
103+
104+
void initDetailsPageTour() {
105+
tutorialCoachMark = TutorialCoachMark(
106+
targets: addDetailsPage(
107+
dueKey: dueKey,
108+
waitKey: waitKey,
109+
untilKey: untilKey,
110+
priorityKey: priorityKey,
111+
),
112+
colorShadow: TaskWarriorColors.black,
113+
paddingFocus: 10,
114+
opacityShadow: 1.00,
115+
hideSkip: true,
116+
onFinish: () {
117+
SaveTourStatus.saveDetailsTourStatus(true);
118+
},
119+
);
120+
}
121+
122+
void showDetailsPageTour(BuildContext context) {
123+
Future.delayed(
124+
const Duration(milliseconds: 500),
125+
() {
126+
SaveTourStatus.getDetailsTourStatus().then((value) => {
127+
if (value == false)
128+
{
129+
tutorialCoachMark.show(context: context),
130+
}
131+
else
132+
{
133+
// ignore: avoid_print
134+
print('User has seen this page'),
135+
}
136+
});
137+
},
138+
);
139+
}
90140
}

lib/app/modules/detailRoute/views/dateTimePicker.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,27 @@ import 'package:intl/intl.dart';
66

77
import 'package:taskwarrior/app/utils/constants/constants.dart';
88
import 'package:taskwarrior/app/utils/gen/fonts.gen.dart';
9-
import 'package:taskwarrior/app/utils/theme/app_settings.dart';
9+
import 'package:taskwarrior/app/utils/app_settings/app_settings.dart';
1010

1111
class DateTimeWidget extends StatelessWidget {
1212
const DateTimeWidget({
1313
super.key,
1414
required this.name,
1515
required this.value,
1616
required this.callback,
17+
required this.globalKey,
1718
});
1819

1920
final String name;
2021

2122
final dynamic value;
2223
final void Function(dynamic) callback;
24+
final GlobalKey globalKey;
2325

2426
@override
2527
Widget build(BuildContext context) {
2628
return Card(
29+
key: globalKey,
2730
color: AppSettings.isDarkMode
2831
? const Color.fromARGB(255, 57, 57, 57)
2932
: Colors.white,

lib/app/modules/detailRoute/views/description_widget.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import 'package:loggy/loggy.dart';
55
import 'package:taskwarrior/app/utils/constants/constants.dart';
66
import 'package:taskwarrior/app/utils/constants/utilites.dart';
77
import 'package:taskwarrior/app/utils/gen/fonts.gen.dart';
8-
import 'package:taskwarrior/app/utils/theme/app_settings.dart';
8+
import 'package:taskwarrior/app/utils/app_settings/app_settings.dart';
99

1010
class DescriptionWidget extends StatelessWidget {
1111
const DescriptionWidget(

lib/app/modules/detailRoute/views/detail_route_view.dart

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,15 @@ import 'package:taskwarrior/app/modules/detailRoute/views/tags_widget.dart';
1313
import 'package:taskwarrior/app/utils/constants/constants.dart';
1414
import 'package:taskwarrior/app/utils/gen/fonts.gen.dart';
1515
import 'package:taskwarrior/app/utils/language/sentence_manager.dart';
16-
import 'package:taskwarrior/app/utils/theme/app_settings.dart';
16+
import 'package:taskwarrior/app/utils/app_settings/app_settings.dart';
1717

1818
class DetailRouteView extends GetView<DetailRouteController> {
1919
const DetailRouteView({super.key});
2020

2121
@override
2222
Widget build(BuildContext context) {
23+
controller.initDetailsPageTour();
24+
controller.showDetailsPageTour(context);
2325
return WillPopScope(
2426
onWillPop: () async {
2527
if (!controller.onEdit.value) {
@@ -135,6 +137,10 @@ class DetailRouteView extends GetView<DetailRouteController> {
135137
value: entry.value,
136138
callback: (newValue) =>
137139
controller.setAttribute(entry.key, newValue),
140+
waitKey: controller.waitKey,
141+
dueKey: controller.dueKey,
142+
untilKey: controller.untilKey,
143+
priorityKey: controller.priorityKey,
138144
),
139145
],
140146
),
@@ -225,12 +231,20 @@ class AttributeWidget extends StatelessWidget {
225231
required this.name,
226232
required this.value,
227233
required this.callback,
234+
required this.waitKey,
235+
required this.dueKey,
236+
required this.priorityKey,
237+
required this.untilKey,
228238
super.key,
229239
});
230240

231241
final String name;
232242
final dynamic value;
233243
final void Function(dynamic) callback;
244+
final GlobalKey waitKey;
245+
final GlobalKey dueKey;
246+
final GlobalKey untilKey;
247+
final GlobalKey priorityKey;
234248

235249
@override
236250
Widget build(BuildContext context) {
@@ -262,24 +276,28 @@ class AttributeWidget extends StatelessWidget {
262276
name: name,
263277
value: localValue,
264278
callback: callback,
279+
globalKey: dueKey,
265280
);
266281
case 'wait':
267282
return DateTimeWidget(
268283
name: name,
269284
value: localValue,
270285
callback: callback,
286+
globalKey: waitKey,
271287
);
272288
case 'until':
273289
return DateTimeWidget(
274290
name: name,
275291
value: localValue,
276292
callback: callback,
293+
globalKey: untilKey,
277294
);
278295
case 'priority':
279296
return PriorityWidget(
280297
name: name,
281298
value: localValue,
282299
callback: callback,
300+
globalKey: priorityKey,
283301
);
284302
case 'project':
285303
return ProjectWidget(

lib/app/modules/detailRoute/views/priority_widget.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,25 @@
11
import 'package:flutter/material.dart';
22
import 'package:google_fonts/google_fonts.dart';
33
import 'package:taskwarrior/app/utils/constants/constants.dart';
4-
import 'package:taskwarrior/app/utils/theme/app_settings.dart';
4+
import 'package:taskwarrior/app/utils/app_settings/app_settings.dart';
55

66
class PriorityWidget extends StatelessWidget {
77
const PriorityWidget(
88
{required this.name,
99
required this.value,
1010
required this.callback,
11+
required this.globalKey,
1112
super.key});
1213

1314
final String name;
1415
final dynamic value;
1516
final void Function(dynamic) callback;
17+
final GlobalKey globalKey;
1618

1719
@override
1820
Widget build(BuildContext context) {
1921
return Card(
22+
key: globalKey,
2023
color: AppSettings.isDarkMode
2124
? const Color.fromARGB(255, 57, 57, 57)
2225
: Colors.white,

lib/app/modules/detailRoute/views/status_widget.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import 'package:flutter/foundation.dart';
44
import 'package:flutter/material.dart';
55
import 'package:google_fonts/google_fonts.dart';
66
import 'package:taskwarrior/app/utils/constants/constants.dart';
7-
import 'package:taskwarrior/app/utils/theme/app_settings.dart';
7+
import 'package:taskwarrior/app/utils/app_settings/app_settings.dart';
88

99

1010
class StatusWidget extends StatelessWidget {

lib/app/modules/detailRoute/views/tags_widget.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import 'package:taskwarrior/app/modules/home/controllers/home_controller.dart';
1111
import 'package:taskwarrior/app/utils/constants/constants.dart';
1212
import 'package:taskwarrior/app/utils/constants/utilites.dart';
1313
import 'package:taskwarrior/app/utils/taskfunctions/validate.dart';
14-
import 'package:taskwarrior/app/utils/theme/app_settings.dart';
14+
import 'package:taskwarrior/app/utils/app_settings/app_settings.dart';
1515

1616
class TagsWidget extends StatelessWidget {
1717
const TagsWidget({

lib/app/modules/home/controllers/home_controller.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import 'package:taskwarrior/app/utils/taskfunctions/comparator.dart';
2828
import 'package:taskwarrior/app/utils/taskfunctions/projects.dart';
2929
import 'package:taskwarrior/app/utils/taskfunctions/query.dart';
3030
import 'package:taskwarrior/app/utils/taskfunctions/tags.dart';
31-
import 'package:taskwarrior/app/utils/theme/app_settings.dart';
31+
import 'package:taskwarrior/app/utils/app_settings/app_settings.dart';
3232
import 'package:tutorial_coach_mark/tutorial_coach_mark.dart';
3333

3434
class HomeController extends GetxController {

0 commit comments

Comments
 (0)