Skip to content

Commit

Permalink
Merge pull request #343 from BrawlerXull/waiting
Browse files Browse the repository at this point in the history
Waiting tag added in the filter section
  • Loading branch information
Pavel401 authored May 16, 2024
2 parents aeb01b8 + 81dcf76 commit 28962a0
Show file tree
Hide file tree
Showing 8 changed files with 113 additions and 45 deletions.
69 changes: 43 additions & 26 deletions lib/drawer/filter_drawer.dart
Original file line number Diff line number Diff line change
Expand Up @@ -141,20 +141,14 @@ class _FilterDrawerState extends State<FilterDrawer> {
style: GoogleFonts.poppins(
fontWeight: TaskWarriorFonts.bold,
fontSize: TaskWarriorFonts.fontSizeMedium,
color: AppSettings.isDarkMode
? TaskWarriorColors.white
: TaskWarriorColors.black,
color: AppSettings.isDarkMode ? TaskWarriorColors.white : TaskWarriorColors.black,
),
),
TextSpan(
text: widget.filters.pendingFilter
? 'pending'
: 'completed',
text: widget.filters.pendingFilter ? 'pending' : 'completed',
style: GoogleFonts.poppins(
fontSize: TaskWarriorFonts.fontSizeMedium,
color: AppSettings.isDarkMode
? TaskWarriorColors.white
: TaskWarriorColors.black,
color: AppSettings.isDarkMode ? TaskWarriorColors.white : TaskWarriorColors.black,
),
),
],
Expand All @@ -169,6 +163,36 @@ class _FilterDrawerState extends State<FilterDrawer> {
const Divider(
color: Color.fromARGB(0, 48, 46, 46),
),
const Divider(
color: Color.fromARGB(0, 48, 46, 46),
),
Container(
decoration: BoxDecoration(
color: tileColor,
borderRadius: BorderRadius.circular(2),
border: Border.all(color: TaskWarriorColors.borderColor),
),
child: Padding(
padding: const EdgeInsets.all(8.0),
child: GestureDetector(
onTap:
widget.filters.toggleWaitingFilter,
child: Text(
widget.filters.waitingFilter ? 'Show waiting':
'Hide waiting',
style: GoogleFonts.poppins(
color: (AppSettings.isDarkMode
? TaskWarriorColors.kprimaryTextColor
: TaskWarriorColors.kLightSecondaryTextColor),
//
fontSize: TaskWarriorFonts.fontSizeMedium,),
),
),
),
),
const Divider(
color: Color.fromARGB(0, 48, 46, 46),
),
Container(
key: projectsKey,
width: MediaQuery.of(context).size.width * 1,
Expand Down Expand Up @@ -280,30 +304,25 @@ class _FilterDrawerState extends State<FilterDrawer> {
'Urgency',
])
ChoiceChip(
label:
(storageWidget.selectedSort.startsWith(sort))
? Text(
storageWidget.selectedSort,
)
: Text(sort),
label: (storageWidget.selectedSort.startsWith(sort))
? Text(
storageWidget.selectedSort,
)
: Text(sort),
selected: false,
onSelected: (_) {
if (storageWidget.selectedSort == '$sort+') {
storageWidget.selectSort('$sort-');
} else if (storageWidget.selectedSort ==
'$sort-') {
} else if (storageWidget.selectedSort == '$sort-') {
storageWidget.selectSort(sort);
} else {
storageWidget.selectSort('$sort+');
}
},
labelStyle: GoogleFonts.poppins(
color: AppSettings.isDarkMode
? TaskWarriorColors.black
: TaskWarriorColors.white),
color: AppSettings.isDarkMode ? TaskWarriorColors.black : TaskWarriorColors.white),
backgroundColor: AppSettings.isDarkMode
? TaskWarriorColors
.kLightSecondaryBackgroundColor
? TaskWarriorColors.kLightSecondaryBackgroundColor
: TaskWarriorColors.ksecondaryBackgroundColor,
),
],
Expand All @@ -321,11 +340,9 @@ class _FilterDrawerState extends State<FilterDrawer> {
: TaskWarriorColors.ksecondaryBackgroundColor),
child: TextButton(
onPressed: () {
if (storageWidget.selectedSort.endsWith('+') ||
storageWidget.selectedSort.endsWith('-')) {
if (storageWidget.selectedSort.endsWith('+') || storageWidget.selectedSort.endsWith('-')) {
storageWidget.selectSort(
storageWidget.selectedSort.substring(0,
storageWidget.selectedSort.length - 1));
storageWidget.selectedSort.substring(0, storageWidget.selectedSort.length - 1));
}
},
child: Text(
Expand Down
7 changes: 7 additions & 0 deletions lib/model/data.dart
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,13 @@ class Data {
.toList();
}

List<Task> waitingData() {
var data = _allData().where((task) => task.status == 'waiting');
return [
for (var task in data) task.rebuild((b) => b..id = 0),
];
}

List<Task> allData() {
var data = pendingData()..addAll(_completedData());
return data;
Expand Down
27 changes: 27 additions & 0 deletions lib/model/storage/storage_widget.dart
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ class StorageWidget extends StatefulWidget {
class _StorageWidgetState extends State<StorageWidget> {
late Storage storage;
late bool pendingFilter;
late bool waitingFilter;
late String projectFilter;
late bool tagUnion;
late String selectedSort;
Expand Down Expand Up @@ -89,6 +90,7 @@ class _StorageWidgetState extends State<StorageWidget> {

void _profileSet() {
pendingFilter = Query(storage.tabs.tab()).getPendingFilter();
waitingFilter = Query(storage.tabs.tab()).getWaitingFilter();
projectFilter = Query(storage.tabs.tab()).projectFilter();
tagUnion = Query(storage.tabs.tab()).tagUnion();
selectedSort = Query(storage.tabs.tab()).getSelectedSort();
Expand All @@ -111,6 +113,16 @@ class _StorageWidgetState extends State<StorageWidget> {
queriedTasks = storage.data.completedData();
}

if (waitingFilter) {
var currentTime = DateTime.now();
queriedTasks = queriedTasks
.where((task) =>
task.wait == null ||
task.wait!.isBefore(currentTime) ||
task.wait!.isAtSameMomentAs(currentTime))
.toList();
}

if (projectFilter.isNotEmpty) {
queriedTasks = queriedTasks.where((task) {
if (task.project == null) {
Expand Down Expand Up @@ -201,6 +213,13 @@ class _StorageWidgetState extends State<StorageWidget> {
setState(() {});
}

void toggleWaitingFilter() {
Query(storage.tabs.tab()).toggleWaitingFilter();
waitingFilter = Query(storage.tabs.tab()).getWaitingFilter();
_refreshTasks();
setState(() {});
}

void toggleProjectFilter(String project) {
Query(storage.tabs.tab()).toggleProjectFilter(project);
projectFilter = Query(storage.tabs.tab()).projectFilter();
Expand Down Expand Up @@ -365,6 +384,7 @@ class _StorageWidgetState extends State<StorageWidget> {
void setInitialTabIndex(int index) {
storage.tabs.setInitialTabIndex(index);
pendingFilter = Query(storage.tabs.tab()).getPendingFilter();
waitingFilter = Query(storage.tabs.tab()).getWaitingFilter();
selectedSort = Query(storage.tabs.tab()).getSelectedSort();
selectedTags = Query(storage.tabs.tab()).getSelectedTags();
projectFilter = Query(storage.tabs.tab()).projectFilter();
Expand All @@ -388,6 +408,7 @@ class _StorageWidgetState extends State<StorageWidget> {
void removeTab(int index) {
storage.tabs.removeTab(index);
pendingFilter = Query(storage.tabs.tab()).getPendingFilter();
waitingFilter = Query(storage.tabs.tab()).getWaitingFilter();
selectedSort = Query(storage.tabs.tab()).getSelectedSort();
selectedTags = Query(storage.tabs.tab()).getSelectedTags();
_refreshTasks();
Expand All @@ -414,13 +435,15 @@ class _StorageWidgetState extends State<StorageWidget> {
pendingTags: pendingTags,
projects: projects,
pendingFilter: pendingFilter,
waitingFilter: waitingFilter,
projectFilter: projectFilter,
tagUnion: tagUnion,
selectedSort: selectedSort,
getTask: getTask,
mergeTask: mergeTask,
synchronize: synchronize,
togglePendingFilter: togglePendingFilter,
toggleWaitingFilter: toggleWaitingFilter,
toggleProjectFilter: toggleProjectFilter,
toggleTagUnion: toggleTagUnion,
selectSort: selectSort,
Expand Down Expand Up @@ -454,6 +477,7 @@ class InheritedStorage extends InheritedModel<String> {
required this.pendingTags,
required this.projects,
required this.pendingFilter,
required this.waitingFilter,
required this.projectFilter,
required this.tagUnion,
required this.selectedSort,
Expand All @@ -462,6 +486,7 @@ class InheritedStorage extends InheritedModel<String> {
required this.mergeTask,
required this.synchronize,
required this.togglePendingFilter,
required this.toggleWaitingFilter,
required this.toggleProjectFilter,
required this.toggleTagUnion,
required this.toggleTagFilter,
Expand All @@ -488,6 +513,7 @@ class InheritedStorage extends InheritedModel<String> {
final Map<String, TagMetadata> pendingTags;
final Map<String, ProjectNode> projects;
final bool pendingFilter;
final bool waitingFilter;
final String projectFilter;
final bool tagUnion;
final String selectedSort;
Expand All @@ -496,6 +522,7 @@ class InheritedStorage extends InheritedModel<String> {
final void Function(Task) mergeTask;
final void Function(BuildContext, bool) synchronize;
final void Function() togglePendingFilter;
final void Function() toggleWaitingFilter;
final void Function(String) toggleProjectFilter;
final void Function() toggleTagUnion;
final void Function(String) selectSort;
Expand Down
1 change: 1 addition & 0 deletions lib/services/task_details.dart
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ class _DetailRouteState extends State<DetailRoute> {
}
// ignore: use_build_context_synchronously
return showDialog(
// ignore: use_build_context_synchronously
context: context,
builder: (context) {
return Utils.showAlertDialog(
Expand Down
24 changes: 8 additions & 16 deletions lib/services/task_list_tem.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ import 'package:taskwarrior/model/json.dart';
import 'package:taskwarrior/widgets/taskw.dart';

class TaskListItem extends StatefulWidget {
const TaskListItem(this.task,
{this.pendingFilter = false, super.key, required this.darkmode});
const TaskListItem(this.task, {this.pendingFilter = false,this.waitingFilter = false, super.key, required this.darkmode});

final Task task;
final bool pendingFilter;
final bool waitingFilter;
final bool darkmode;

@override
Expand Down Expand Up @@ -52,9 +52,8 @@ class _TaskListItemState extends State<TaskListItem> {
content: Text(
'Task Updated',
style: TextStyle(
color: AppSettings.isDarkMode
? TaskWarriorColors.kprimaryTextColor
: TaskWarriorColors.kLightPrimaryTextColor,
color:
AppSettings.isDarkMode ? TaskWarriorColors.kprimaryTextColor : TaskWarriorColors.kLightPrimaryTextColor,
),
),
backgroundColor: AppSettings.isDarkMode
Expand All @@ -67,9 +66,7 @@ class _TaskListItemState extends State<TaskListItem> {
Widget build(BuildContext context) {
MaterialColor colours = Colors.grey;
var colour = widget.darkmode ? Colors.white : Colors.black;
var dimColor = widget.darkmode
? const Color.fromARGB(137, 248, 248, 248)
: const Color.fromARGB(136, 17, 17, 17);
var dimColor = widget.darkmode ? const Color.fromARGB(137, 248, 248, 248) : const Color.fromARGB(136, 17, 17, 17);

if (widget.task.priority == 'H') {
colours = Colors.red;
Expand All @@ -84,11 +81,8 @@ class _TaskListItemState extends State<TaskListItem> {
return Container(
decoration: BoxDecoration(
border: Border.all(
color: (widget.task.due != null &&
isDueWithinOneDay(widget.task.due!) &&
useDelayTask)
? Colors
.red // Set border color to red if due within 1 day and useDelayTask is true
color: (widget.task.due != null && isDueWithinOneDay(widget.task.due!) && useDelayTask)
? Colors.red // Set border color to red if due within 1 day and useDelayTask is true
: dimColor, // Set default border color
),
borderRadius: BorderRadius.circular(8.0),
Expand Down Expand Up @@ -118,9 +112,7 @@ class _TaskListItemState extends State<TaskListItem> {
],
),
Text(
(widget.task.annotations != null)
? ' [${widget.task.annotations!.length}]'
: '',
(widget.task.annotations != null) ? ' [${widget.task.annotations!.length}]' : '',
style: GoogleFonts.poppins(
color: colour,
),
Expand Down
8 changes: 8 additions & 0 deletions lib/views/home/home.dart
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,19 @@ import 'package:tutorial_coach_mark/tutorial_coach_mark.dart';
class Filters {
const Filters({
required this.pendingFilter,
required this.waitingFilter,
required this.togglePendingFilter,
required this.toggleWaitingFilter,
required this.tagFilters,
required this.projects,
required this.projectFilter,
required this.toggleProjectFilter,
});

final bool pendingFilter;
final bool waitingFilter;
final void Function() togglePendingFilter;
final void Function() toggleWaitingFilter;
final TagFilters tagFilters;
final dynamic projects;
final String projectFilter;
Expand Down Expand Up @@ -189,6 +193,7 @@ class _HomePageState extends State<HomePage> {
var taskData = storageWidget.tasks;

var pendingFilter = storageWidget.pendingFilter;
var waitingFilter = storageWidget.waitingFilter;
var pendingTags = storageWidget.pendingTags;

var selectedTagsMap = {
Expand All @@ -215,7 +220,9 @@ class _HomePageState extends State<HomePage> {
);
var filters = Filters(
pendingFilter: pendingFilter,
waitingFilter: waitingFilter,
togglePendingFilter: storageWidget.togglePendingFilter,
toggleWaitingFilter: storageWidget.toggleWaitingFilter,
projects: storageWidget.projects,
projectFilter: storageWidget.projectFilter,
toggleProjectFilter: storageWidget.toggleProjectFilter,
Expand Down Expand Up @@ -378,6 +385,7 @@ class _HomePageState extends State<HomePage> {
// darkmode: AppSettings.isDarkMode,
taskData: taskData,
pendingFilter: pendingFilter,
waitingFilter: waitingFilter,
searchVisible: storageWidget.searchVisible),
),
),
Expand Down
2 changes: 2 additions & 0 deletions lib/widgets/buildTasks.dart
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,12 @@ class TasksBuilder extends StatefulWidget {
{super.key,
required this.taskData,
required this.pendingFilter,
required this.waitingFilter,
required this.searchVisible});

final List<Task> taskData;
final bool pendingFilter;
final bool waitingFilter;
final bool searchVisible;

@override
Expand Down
Loading

0 comments on commit 28962a0

Please sign in to comment.