Skip to content

Commit 28962a0

Browse files
authored
Merge pull request #343 from BrawlerXull/waiting
Waiting tag added in the filter section
2 parents aeb01b8 + 81dcf76 commit 28962a0

File tree

8 files changed

+113
-45
lines changed

8 files changed

+113
-45
lines changed

lib/drawer/filter_drawer.dart

Lines changed: 43 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -141,20 +141,14 @@ class _FilterDrawerState extends State<FilterDrawer> {
141141
style: GoogleFonts.poppins(
142142
fontWeight: TaskWarriorFonts.bold,
143143
fontSize: TaskWarriorFonts.fontSizeMedium,
144-
color: AppSettings.isDarkMode
145-
? TaskWarriorColors.white
146-
: TaskWarriorColors.black,
144+
color: AppSettings.isDarkMode ? TaskWarriorColors.white : TaskWarriorColors.black,
147145
),
148146
),
149147
TextSpan(
150-
text: widget.filters.pendingFilter
151-
? 'pending'
152-
: 'completed',
148+
text: widget.filters.pendingFilter ? 'pending' : 'completed',
153149
style: GoogleFonts.poppins(
154150
fontSize: TaskWarriorFonts.fontSizeMedium,
155-
color: AppSettings.isDarkMode
156-
? TaskWarriorColors.white
157-
: TaskWarriorColors.black,
151+
color: AppSettings.isDarkMode ? TaskWarriorColors.white : TaskWarriorColors.black,
158152
),
159153
),
160154
],
@@ -169,6 +163,36 @@ class _FilterDrawerState extends State<FilterDrawer> {
169163
const Divider(
170164
color: Color.fromARGB(0, 48, 46, 46),
171165
),
166+
const Divider(
167+
color: Color.fromARGB(0, 48, 46, 46),
168+
),
169+
Container(
170+
decoration: BoxDecoration(
171+
color: tileColor,
172+
borderRadius: BorderRadius.circular(2),
173+
border: Border.all(color: TaskWarriorColors.borderColor),
174+
),
175+
child: Padding(
176+
padding: const EdgeInsets.all(8.0),
177+
child: GestureDetector(
178+
onTap:
179+
widget.filters.toggleWaitingFilter,
180+
child: Text(
181+
widget.filters.waitingFilter ? 'Show waiting':
182+
'Hide waiting',
183+
style: GoogleFonts.poppins(
184+
color: (AppSettings.isDarkMode
185+
? TaskWarriorColors.kprimaryTextColor
186+
: TaskWarriorColors.kLightSecondaryTextColor),
187+
//
188+
fontSize: TaskWarriorFonts.fontSizeMedium,),
189+
),
190+
),
191+
),
192+
),
193+
const Divider(
194+
color: Color.fromARGB(0, 48, 46, 46),
195+
),
172196
Container(
173197
key: projectsKey,
174198
width: MediaQuery.of(context).size.width * 1,
@@ -280,30 +304,25 @@ class _FilterDrawerState extends State<FilterDrawer> {
280304
'Urgency',
281305
])
282306
ChoiceChip(
283-
label:
284-
(storageWidget.selectedSort.startsWith(sort))
285-
? Text(
286-
storageWidget.selectedSort,
287-
)
288-
: Text(sort),
307+
label: (storageWidget.selectedSort.startsWith(sort))
308+
? Text(
309+
storageWidget.selectedSort,
310+
)
311+
: Text(sort),
289312
selected: false,
290313
onSelected: (_) {
291314
if (storageWidget.selectedSort == '$sort+') {
292315
storageWidget.selectSort('$sort-');
293-
} else if (storageWidget.selectedSort ==
294-
'$sort-') {
316+
} else if (storageWidget.selectedSort == '$sort-') {
295317
storageWidget.selectSort(sort);
296318
} else {
297319
storageWidget.selectSort('$sort+');
298320
}
299321
},
300322
labelStyle: GoogleFonts.poppins(
301-
color: AppSettings.isDarkMode
302-
? TaskWarriorColors.black
303-
: TaskWarriorColors.white),
323+
color: AppSettings.isDarkMode ? TaskWarriorColors.black : TaskWarriorColors.white),
304324
backgroundColor: AppSettings.isDarkMode
305-
? TaskWarriorColors
306-
.kLightSecondaryBackgroundColor
325+
? TaskWarriorColors.kLightSecondaryBackgroundColor
307326
: TaskWarriorColors.ksecondaryBackgroundColor,
308327
),
309328
],
@@ -321,11 +340,9 @@ class _FilterDrawerState extends State<FilterDrawer> {
321340
: TaskWarriorColors.ksecondaryBackgroundColor),
322341
child: TextButton(
323342
onPressed: () {
324-
if (storageWidget.selectedSort.endsWith('+') ||
325-
storageWidget.selectedSort.endsWith('-')) {
343+
if (storageWidget.selectedSort.endsWith('+') || storageWidget.selectedSort.endsWith('-')) {
326344
storageWidget.selectSort(
327-
storageWidget.selectedSort.substring(0,
328-
storageWidget.selectedSort.length - 1));
345+
storageWidget.selectedSort.substring(0, storageWidget.selectedSort.length - 1));
329346
}
330347
},
331348
child: Text(

lib/model/data.dart

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,13 @@ class Data {
7979
.toList();
8080
}
8181

82+
List<Task> waitingData() {
83+
var data = _allData().where((task) => task.status == 'waiting');
84+
return [
85+
for (var task in data) task.rebuild((b) => b..id = 0),
86+
];
87+
}
88+
8289
List<Task> allData() {
8390
var data = pendingData()..addAll(_completedData());
8491
return data;

lib/model/storage/storage_widget.dart

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ class StorageWidget extends StatefulWidget {
5656
class _StorageWidgetState extends State<StorageWidget> {
5757
late Storage storage;
5858
late bool pendingFilter;
59+
late bool waitingFilter;
5960
late String projectFilter;
6061
late bool tagUnion;
6162
late String selectedSort;
@@ -89,6 +90,7 @@ class _StorageWidgetState extends State<StorageWidget> {
8990

9091
void _profileSet() {
9192
pendingFilter = Query(storage.tabs.tab()).getPendingFilter();
93+
waitingFilter = Query(storage.tabs.tab()).getWaitingFilter();
9294
projectFilter = Query(storage.tabs.tab()).projectFilter();
9395
tagUnion = Query(storage.tabs.tab()).tagUnion();
9496
selectedSort = Query(storage.tabs.tab()).getSelectedSort();
@@ -111,6 +113,16 @@ class _StorageWidgetState extends State<StorageWidget> {
111113
queriedTasks = storage.data.completedData();
112114
}
113115

116+
if (waitingFilter) {
117+
var currentTime = DateTime.now();
118+
queriedTasks = queriedTasks
119+
.where((task) =>
120+
task.wait == null ||
121+
task.wait!.isBefore(currentTime) ||
122+
task.wait!.isAtSameMomentAs(currentTime))
123+
.toList();
124+
}
125+
114126
if (projectFilter.isNotEmpty) {
115127
queriedTasks = queriedTasks.where((task) {
116128
if (task.project == null) {
@@ -201,6 +213,13 @@ class _StorageWidgetState extends State<StorageWidget> {
201213
setState(() {});
202214
}
203215

216+
void toggleWaitingFilter() {
217+
Query(storage.tabs.tab()).toggleWaitingFilter();
218+
waitingFilter = Query(storage.tabs.tab()).getWaitingFilter();
219+
_refreshTasks();
220+
setState(() {});
221+
}
222+
204223
void toggleProjectFilter(String project) {
205224
Query(storage.tabs.tab()).toggleProjectFilter(project);
206225
projectFilter = Query(storage.tabs.tab()).projectFilter();
@@ -365,6 +384,7 @@ class _StorageWidgetState extends State<StorageWidget> {
365384
void setInitialTabIndex(int index) {
366385
storage.tabs.setInitialTabIndex(index);
367386
pendingFilter = Query(storage.tabs.tab()).getPendingFilter();
387+
waitingFilter = Query(storage.tabs.tab()).getWaitingFilter();
368388
selectedSort = Query(storage.tabs.tab()).getSelectedSort();
369389
selectedTags = Query(storage.tabs.tab()).getSelectedTags();
370390
projectFilter = Query(storage.tabs.tab()).projectFilter();
@@ -388,6 +408,7 @@ class _StorageWidgetState extends State<StorageWidget> {
388408
void removeTab(int index) {
389409
storage.tabs.removeTab(index);
390410
pendingFilter = Query(storage.tabs.tab()).getPendingFilter();
411+
waitingFilter = Query(storage.tabs.tab()).getWaitingFilter();
391412
selectedSort = Query(storage.tabs.tab()).getSelectedSort();
392413
selectedTags = Query(storage.tabs.tab()).getSelectedTags();
393414
_refreshTasks();
@@ -414,13 +435,15 @@ class _StorageWidgetState extends State<StorageWidget> {
414435
pendingTags: pendingTags,
415436
projects: projects,
416437
pendingFilter: pendingFilter,
438+
waitingFilter: waitingFilter,
417439
projectFilter: projectFilter,
418440
tagUnion: tagUnion,
419441
selectedSort: selectedSort,
420442
getTask: getTask,
421443
mergeTask: mergeTask,
422444
synchronize: synchronize,
423445
togglePendingFilter: togglePendingFilter,
446+
toggleWaitingFilter: toggleWaitingFilter,
424447
toggleProjectFilter: toggleProjectFilter,
425448
toggleTagUnion: toggleTagUnion,
426449
selectSort: selectSort,
@@ -454,6 +477,7 @@ class InheritedStorage extends InheritedModel<String> {
454477
required this.pendingTags,
455478
required this.projects,
456479
required this.pendingFilter,
480+
required this.waitingFilter,
457481
required this.projectFilter,
458482
required this.tagUnion,
459483
required this.selectedSort,
@@ -462,6 +486,7 @@ class InheritedStorage extends InheritedModel<String> {
462486
required this.mergeTask,
463487
required this.synchronize,
464488
required this.togglePendingFilter,
489+
required this.toggleWaitingFilter,
465490
required this.toggleProjectFilter,
466491
required this.toggleTagUnion,
467492
required this.toggleTagFilter,
@@ -488,6 +513,7 @@ class InheritedStorage extends InheritedModel<String> {
488513
final Map<String, TagMetadata> pendingTags;
489514
final Map<String, ProjectNode> projects;
490515
final bool pendingFilter;
516+
final bool waitingFilter;
491517
final String projectFilter;
492518
final bool tagUnion;
493519
final String selectedSort;
@@ -496,6 +522,7 @@ class InheritedStorage extends InheritedModel<String> {
496522
final void Function(Task) mergeTask;
497523
final void Function(BuildContext, bool) synchronize;
498524
final void Function() togglePendingFilter;
525+
final void Function() toggleWaitingFilter;
499526
final void Function(String) toggleProjectFilter;
500527
final void Function() toggleTagUnion;
501528
final void Function(String) selectSort;

lib/services/task_details.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ class _DetailRouteState extends State<DetailRoute> {
8585
}
8686
// ignore: use_build_context_synchronously
8787
return showDialog(
88+
// ignore: use_build_context_synchronously
8889
context: context,
8990
builder: (context) {
9091
return Utils.showAlertDialog(

lib/services/task_list_tem.dart

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ import 'package:taskwarrior/model/json.dart';
88
import 'package:taskwarrior/widgets/taskw.dart';
99

1010
class TaskListItem extends StatefulWidget {
11-
const TaskListItem(this.task,
12-
{this.pendingFilter = false, super.key, required this.darkmode});
11+
const TaskListItem(this.task, {this.pendingFilter = false,this.waitingFilter = false, super.key, required this.darkmode});
1312

1413
final Task task;
1514
final bool pendingFilter;
15+
final bool waitingFilter;
1616
final bool darkmode;
1717

1818
@override
@@ -52,9 +52,8 @@ class _TaskListItemState extends State<TaskListItem> {
5252
content: Text(
5353
'Task Updated',
5454
style: TextStyle(
55-
color: AppSettings.isDarkMode
56-
? TaskWarriorColors.kprimaryTextColor
57-
: TaskWarriorColors.kLightPrimaryTextColor,
55+
color:
56+
AppSettings.isDarkMode ? TaskWarriorColors.kprimaryTextColor : TaskWarriorColors.kLightPrimaryTextColor,
5857
),
5958
),
6059
backgroundColor: AppSettings.isDarkMode
@@ -67,9 +66,7 @@ class _TaskListItemState extends State<TaskListItem> {
6766
Widget build(BuildContext context) {
6867
MaterialColor colours = Colors.grey;
6968
var colour = widget.darkmode ? Colors.white : Colors.black;
70-
var dimColor = widget.darkmode
71-
? const Color.fromARGB(137, 248, 248, 248)
72-
: const Color.fromARGB(136, 17, 17, 17);
69+
var dimColor = widget.darkmode ? const Color.fromARGB(137, 248, 248, 248) : const Color.fromARGB(136, 17, 17, 17);
7370

7471
if (widget.task.priority == 'H') {
7572
colours = Colors.red;
@@ -84,11 +81,8 @@ class _TaskListItemState extends State<TaskListItem> {
8481
return Container(
8582
decoration: BoxDecoration(
8683
border: Border.all(
87-
color: (widget.task.due != null &&
88-
isDueWithinOneDay(widget.task.due!) &&
89-
useDelayTask)
90-
? Colors
91-
.red // Set border color to red if due within 1 day and useDelayTask is true
84+
color: (widget.task.due != null && isDueWithinOneDay(widget.task.due!) && useDelayTask)
85+
? Colors.red // Set border color to red if due within 1 day and useDelayTask is true
9286
: dimColor, // Set default border color
9387
),
9488
borderRadius: BorderRadius.circular(8.0),
@@ -118,9 +112,7 @@ class _TaskListItemState extends State<TaskListItem> {
118112
],
119113
),
120114
Text(
121-
(widget.task.annotations != null)
122-
? ' [${widget.task.annotations!.length}]'
123-
: '',
115+
(widget.task.annotations != null) ? ' [${widget.task.annotations!.length}]' : '',
124116
style: GoogleFonts.poppins(
125117
color: colour,
126118
),

lib/views/home/home.dart

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,19 @@ import 'package:tutorial_coach_mark/tutorial_coach_mark.dart';
3030
class Filters {
3131
const Filters({
3232
required this.pendingFilter,
33+
required this.waitingFilter,
3334
required this.togglePendingFilter,
35+
required this.toggleWaitingFilter,
3436
required this.tagFilters,
3537
required this.projects,
3638
required this.projectFilter,
3739
required this.toggleProjectFilter,
3840
});
3941

4042
final bool pendingFilter;
43+
final bool waitingFilter;
4144
final void Function() togglePendingFilter;
45+
final void Function() toggleWaitingFilter;
4246
final TagFilters tagFilters;
4347
final dynamic projects;
4448
final String projectFilter;
@@ -189,6 +193,7 @@ class _HomePageState extends State<HomePage> {
189193
var taskData = storageWidget.tasks;
190194

191195
var pendingFilter = storageWidget.pendingFilter;
196+
var waitingFilter = storageWidget.waitingFilter;
192197
var pendingTags = storageWidget.pendingTags;
193198

194199
var selectedTagsMap = {
@@ -215,7 +220,9 @@ class _HomePageState extends State<HomePage> {
215220
);
216221
var filters = Filters(
217222
pendingFilter: pendingFilter,
223+
waitingFilter: waitingFilter,
218224
togglePendingFilter: storageWidget.togglePendingFilter,
225+
toggleWaitingFilter: storageWidget.toggleWaitingFilter,
219226
projects: storageWidget.projects,
220227
projectFilter: storageWidget.projectFilter,
221228
toggleProjectFilter: storageWidget.toggleProjectFilter,
@@ -378,6 +385,7 @@ class _HomePageState extends State<HomePage> {
378385
// darkmode: AppSettings.isDarkMode,
379386
taskData: taskData,
380387
pendingFilter: pendingFilter,
388+
waitingFilter: waitingFilter,
381389
searchVisible: storageWidget.searchVisible),
382390
),
383391
),

lib/widgets/buildTasks.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,12 @@ class TasksBuilder extends StatefulWidget {
2323
{super.key,
2424
required this.taskData,
2525
required this.pendingFilter,
26+
required this.waitingFilter,
2627
required this.searchVisible});
2728

2829
final List<Task> taskData;
2930
final bool pendingFilter;
31+
final bool waitingFilter;
3032
final bool searchVisible;
3133

3234
@override

0 commit comments

Comments
 (0)