Skip to content

Commit f0a378d

Browse files
committed
Working without ui
1 parent 3bbfde7 commit f0a378d

File tree

6 files changed

+71
-33
lines changed

6 files changed

+71
-33
lines changed

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: 29 additions & 14 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();
@@ -103,14 +105,16 @@ class _StorageWidgetState extends State<StorageWidget> {
103105

104106
void _refreshTasks() {
105107
if (pendingFilter) {
106-
queriedTasks = storage.data
107-
.pendingData()
108-
.where((task) => task.status == 'pending')
109-
.toList();
108+
queriedTasks = storage.data.pendingData().where((task) => task.status == 'pending').toList();
110109
} else {
111110
queriedTasks = storage.data.completedData();
112111
}
113112

113+
if (waitingFilter) {
114+
var currentTime = DateTime.now();
115+
queriedTasks = queriedTasks.where((task) => task.wait != null && task.wait!.isAfter(currentTime)).toList();
116+
}
117+
114118
if (projectFilter.isNotEmpty) {
115119
queriedTasks = queriedTasks.where((task) {
116120
if (task.project == null) {
@@ -127,13 +131,11 @@ class _StorageWidgetState extends State<StorageWidget> {
127131
if (selectedTags.isEmpty) {
128132
return true;
129133
}
130-
return selectedTags.any((tag) => (tag.startsWith('+'))
131-
? tags.contains(tag.substring(1))
132-
: !tags.contains(tag.substring(1)));
134+
return selectedTags
135+
.any((tag) => (tag.startsWith('+')) ? tags.contains(tag.substring(1)) : !tags.contains(tag.substring(1)));
133136
} else {
134-
return selectedTags.every((tag) => (tag.startsWith('+'))
135-
? tags.contains(tag.substring(1))
136-
: !tags.contains(tag.substring(1)));
137+
return selectedTags
138+
.every((tag) => (tag.startsWith('+')) ? tags.contains(tag.substring(1)) : !tags.contains(tag.substring(1)));
137139
}
138140
}).toList();
139141

@@ -154,8 +156,7 @@ class _StorageWidgetState extends State<StorageWidget> {
154156
searchedTasks = searchedTasks
155157
.where((task) =>
156158
task.description.contains(searchTerm) ||
157-
(task.annotations?.asList() ?? []).any(
158-
(annotation) => annotation.description.contains(searchTerm)))
159+
(task.annotations?.asList() ?? []).any((annotation) => annotation.description.contains(searchTerm)))
159160
.toList();
160161
}
161162
pendingTags = _pendingTags();
@@ -201,6 +202,13 @@ class _StorageWidgetState extends State<StorageWidget> {
201202
setState(() {});
202203
}
203204

205+
void toggleWaitingFilter() {
206+
Query(storage.tabs.tab()).toggleWaitingFilter();
207+
waitingFilter = Query(storage.tabs.tab()).getWaitingFilter();
208+
_refreshTasks();
209+
setState(() {});
210+
}
211+
204212
void toggleProjectFilter(String project) {
205213
Query(storage.tabs.tab()).toggleProjectFilter(project);
206214
projectFilter = Query(storage.tabs.tab()).projectFilter();
@@ -365,6 +373,7 @@ class _StorageWidgetState extends State<StorageWidget> {
365373
void setInitialTabIndex(int index) {
366374
storage.tabs.setInitialTabIndex(index);
367375
pendingFilter = Query(storage.tabs.tab()).getPendingFilter();
376+
waitingFilter = Query(storage.tabs.tab()).getWaitingFilter();
368377
selectedSort = Query(storage.tabs.tab()).getSelectedSort();
369378
selectedTags = Query(storage.tabs.tab()).getSelectedTags();
370379
projectFilter = Query(storage.tabs.tab()).projectFilter();
@@ -388,6 +397,7 @@ class _StorageWidgetState extends State<StorageWidget> {
388397
void removeTab(int index) {
389398
storage.tabs.removeTab(index);
390399
pendingFilter = Query(storage.tabs.tab()).getPendingFilter();
400+
waitingFilter = Query(storage.tabs.tab()).getWaitingFilter();
391401
selectedSort = Query(storage.tabs.tab()).getSelectedSort();
392402
selectedTags = Query(storage.tabs.tab()).getSelectedTags();
393403
_refreshTasks();
@@ -414,13 +424,15 @@ class _StorageWidgetState extends State<StorageWidget> {
414424
pendingTags: pendingTags,
415425
projects: projects,
416426
pendingFilter: pendingFilter,
427+
waitingFilter: waitingFilter,
417428
projectFilter: projectFilter,
418429
tagUnion: tagUnion,
419430
selectedSort: selectedSort,
420431
getTask: getTask,
421432
mergeTask: mergeTask,
422433
synchronize: synchronize,
423434
togglePendingFilter: togglePendingFilter,
435+
toggleWaitingFilter: toggleWaitingFilter,
424436
toggleProjectFilter: toggleProjectFilter,
425437
toggleTagUnion: toggleTagUnion,
426438
selectSort: selectSort,
@@ -454,6 +466,7 @@ class InheritedStorage extends InheritedModel<String> {
454466
required this.pendingTags,
455467
required this.projects,
456468
required this.pendingFilter,
469+
required this.waitingFilter,
457470
required this.projectFilter,
458471
required this.tagUnion,
459472
required this.selectedSort,
@@ -462,6 +475,7 @@ class InheritedStorage extends InheritedModel<String> {
462475
required this.mergeTask,
463476
required this.synchronize,
464477
required this.togglePendingFilter,
478+
required this.toggleWaitingFilter,
465479
required this.toggleProjectFilter,
466480
required this.toggleTagUnion,
467481
required this.toggleTagFilter,
@@ -488,6 +502,7 @@ class InheritedStorage extends InheritedModel<String> {
488502
final Map<String, TagMetadata> pendingTags;
489503
final Map<String, ProjectNode> projects;
490504
final bool pendingFilter;
505+
final bool waitingFilter;
491506
final String projectFilter;
492507
final bool tagUnion;
493508
final String selectedSort;
@@ -496,6 +511,7 @@ class InheritedStorage extends InheritedModel<String> {
496511
final void Function(Task) mergeTask;
497512
final void Function(BuildContext, bool) synchronize;
498513
final void Function() togglePendingFilter;
514+
final void Function() toggleWaitingFilter;
499515
final void Function(String) toggleProjectFilter;
500516
final void Function() toggleTagUnion;
501517
final void Function(String) selectSort;
@@ -521,8 +537,7 @@ class InheritedStorage extends InheritedModel<String> {
521537
}
522538

523539
@override
524-
bool updateShouldNotifyDependent(
525-
InheritedStorage oldWidget, Set<String> dependencies) {
540+
bool updateShouldNotifyDependent(InheritedStorage oldWidget, Set<String> dependencies) {
526541
return true;
527542
}
528543
}

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,
@@ -377,6 +384,7 @@ class _HomePageState extends State<HomePage> {
377384
// darkmode: AppSettings.isDarkMode,
378385
taskData: taskData,
379386
pendingFilter: pendingFilter,
387+
waitingFilter: waitingFilter,
380388
searchVisible: storageWidget.searchVisible),
381389
),
382390
),

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

lib/widgets/taskfunctions/query.dart

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ class Query {
88

99
File get _selectedSort => File('${_queryStorage.path}/selectedSort');
1010
File get _pendingFilter => File('${_queryStorage.path}/pendingFilter');
11+
File get _waitingFilter => File('${_queryStorage.path}/waitingFilter');
1112
File get _projectFilter => File('${_queryStorage.path}/projectFilter');
1213
File get _tagUnion => File('${_queryStorage.path}/tagUnion');
1314
File get _selectedTags => File('${_queryStorage.path}/selectedTags');
@@ -43,6 +44,21 @@ class Query {
4344
return json.decode(_pendingFilter.readAsStringSync());
4445
}
4546

47+
void toggleWaitingFilter() {
48+
_waitingFilter.writeAsStringSync(
49+
json.encode(!getWaitingFilter()),
50+
);
51+
}
52+
53+
bool getWaitingFilter() {
54+
if (!_waitingFilter.existsSync()) {
55+
_waitingFilter
56+
..createSync(recursive: true)
57+
..writeAsStringSync('true');
58+
}
59+
return json.decode(_waitingFilter.readAsStringSync());
60+
}
61+
4662
void toggleProjectFilter(String project) {
4763
_projectFilter.writeAsStringSync(
4864
(project == projectFilter()) ? '' : project,
@@ -91,8 +107,6 @@ class Query {
91107
..createSync(recursive: true)
92108
..writeAsStringSync(json.encode([]));
93109
}
94-
return (json.decode(_selectedTags.readAsStringSync()) as List)
95-
.cast<String>()
96-
.toSet();
110+
return (json.decode(_selectedTags.readAsStringSync()) as List).cast<String>().toSet();
97111
}
98112
}

0 commit comments

Comments
 (0)