diff --git a/lib/app/modules/home/controllers/home_controller.dart b/lib/app/modules/home/controllers/home_controller.dart index 3cf342f8..6392334f 100644 --- a/lib/app/modules/home/controllers/home_controller.dart +++ b/lib/app/modules/home/controllers/home_controller.dart @@ -41,6 +41,7 @@ import 'package:taskwarrior/app/utils/themes/theme_extension.dart'; import 'package:tutorial_coach_mark/tutorial_coach_mark.dart'; class HomeController extends GetxController { + static const String noProjectValue = " (No Project) "; final SplashController splashController = Get.find(); late Storage storage; final RxBool pendingFilter = false.obs; @@ -262,6 +263,9 @@ class HomeController extends GetxController { if (projectFilter.value.isNotEmpty) { queriedTasks.value = queriedTasks.where((task) { + if (projectFilter.value == noProjectValue) { + return task.project == null || task.project!.isEmpty; + } if (task.project == null) { return false; } else { diff --git a/lib/app/modules/home/views/project_column_home_page.dart b/lib/app/modules/home/views/project_column_home_page.dart index 2247bb60..67b56c74 100644 --- a/lib/app/modules/home/views/project_column_home_page.dart +++ b/lib/app/modules/home/views/project_column_home_page.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; +import 'package:taskwarrior/app/modules/home/controllers/home_controller.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_fonts.dart'; @@ -63,24 +64,58 @@ class ProjectsColumn extends StatelessWidget { ], ), ), - Padding( - padding: const EdgeInsets.only(left: 10, right: 10, top: 10), + GestureDetector( + onTap: () => callback(''), child: Row( mainAxisAlignment: MainAxisAlignment.start, children: [ - Text(SentenceManager( - currentLanguage: AppSettings.selectedLanguage).sentences.allProjects, - style: TextStyle( - fontFamily: FontFamily.poppins, - fontSize: TaskWarriorFonts.fontSizeSmall, - color: tColors.primaryTextColor, - )), + Radio( + activeColor: tColors.primaryTextColor, + focusColor: tColors.secondaryTextColor, + toggleable: true, + value: '', + groupValue: projectFilter, + onChanged: (_) => callback(''), + ), + Text( + SentenceManager(currentLanguage: AppSettings.selectedLanguage) + .sentences + .allProjects, + style: GoogleFonts.poppins( + color: tColors.primaryTextColor, + ), + ), + ], + ), + ), + GestureDetector( + onTap: () => callback(HomeController.noProjectValue), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Radio( + activeColor: tColors.primaryTextColor, + focusColor: tColors.secondaryTextColor, + toggleable: true, + value: HomeController.noProjectValue, + groupValue: projectFilter, + onChanged: (_) => callback(HomeController.noProjectValue), + ), + Text( + SentenceManager(currentLanguage: AppSettings.selectedLanguage) + .sentences + .noProject, + style: GoogleFonts.poppins( + color: tColors.primaryTextColor, + ), + ), ], ), ), if (projects.isNotEmpty) ...projects.entries - .where((entry) => entry.value.parent == null) + .where((entry) => + entry.value.parent == null && entry.key.isNotEmpty) .map((entry) => ProjectTile( project: entry.key, projects: projects, diff --git a/lib/app/modules/home/views/project_column_taskc.dart b/lib/app/modules/home/views/project_column_taskc.dart index 4c7cd774..a67a7d15 100644 --- a/lib/app/modules/home/views/project_column_taskc.dart +++ b/lib/app/modules/home/views/project_column_taskc.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:taskwarrior/app/modules/home/controllers/home_controller.dart'; import 'package:taskwarrior/app/utils/app_settings/app_settings.dart'; import 'package:taskwarrior/app/utils/constants/taskwarrior_fonts.dart'; import 'package:taskwarrior/app/utils/gen/fonts.gen.dart'; @@ -65,17 +66,27 @@ class ProjectColumnTaskc extends StatelessWidget { ), ), ProjectTileTaskc( - project: SentenceManager( + project: '', + projectFilter: projectFilter, + callback: callback, + displayName: SentenceManager( currentLanguage: AppSettings.selectedLanguage, - ).sentences.allProjects, + ).sentences.allProjects), + ProjectTileTaskc( + project: HomeController.noProjectValue, projectFilter: projectFilter, - callback: callback), + callback: (val) => callback(val), + displayName: SentenceManager( + currentLanguage: AppSettings.selectedLanguage, + ).sentences.noProject), if (projects.isNotEmpty) - ...projects.map((entry) => ProjectTileTaskc( - project: entry, - projectFilter: projectFilter, - callback: callback, - )) + ...projects + .where((entry) => entry.isNotEmpty) + .map((entry) => ProjectTileTaskc( + project: entry, + projectFilter: projectFilter, + callback: callback, + )) else Column( children: [ @@ -105,11 +116,13 @@ class ProjectTileTaskc extends StatelessWidget { required this.project, required this.projectFilter, required this.callback, + this.displayName, }); final String project; final String projectFilter; final void Function(String) callback; + final String? displayName; @override Widget build(BuildContext context) { @@ -126,7 +139,7 @@ class ProjectTileTaskc extends StatelessWidget { onChanged: (_) => callback(project), ), Text( - project, + displayName ?? project, style: TextStyle( color: tColors.primaryTextColor, ), diff --git a/lib/app/utils/language/bengali_sentences.dart b/lib/app/utils/language/bengali_sentences.dart index 4761031c..2479cc3a 100644 --- a/lib/app/utils/language/bengali_sentences.dart +++ b/lib/app/utils/language/bengali_sentences.dart @@ -411,6 +411,8 @@ class BengaliSentences extends Sentences { @override String get noProjectsFound => 'কোনো প্রকল্প পাওয়া যায়নি'; @override + String get noProject => 'কোন প্রকল্প নেই'; + @override String get project => 'প্রকল্প'; @override diff --git a/lib/app/utils/language/english_sentences.dart b/lib/app/utils/language/english_sentences.dart index a6b0fb00..ddf52288 100644 --- a/lib/app/utils/language/english_sentences.dart +++ b/lib/app/utils/language/english_sentences.dart @@ -401,6 +401,8 @@ class EnglishSentences extends Sentences { @override String get noProjectsFound => 'No Projects Found'; @override + String get noProject => 'No Project'; + @override String get project => 'Project'; @override diff --git a/lib/app/utils/language/french_sentences.dart b/lib/app/utils/language/french_sentences.dart index 788a0cb6..750ee679 100644 --- a/lib/app/utils/language/french_sentences.dart +++ b/lib/app/utils/language/french_sentences.dart @@ -414,6 +414,8 @@ class FrenchSentences extends Sentences { @override String get noProjectsFound => 'Aucun projet trouvé'; @override + String get noProject => 'Aucun Projet'; + @override String get project => 'Projet'; @override diff --git a/lib/app/utils/language/german_sentences.dart b/lib/app/utils/language/german_sentences.dart index c38ad4cb..68751a14 100644 --- a/lib/app/utils/language/german_sentences.dart +++ b/lib/app/utils/language/german_sentences.dart @@ -401,6 +401,8 @@ class GermanSentences extends Sentences { @override String get noProjectsFound => 'Keine Projekte gefunden'; @override + String get noProject => 'Kein Projekt'; + @override String get project => 'Projekt'; @override diff --git a/lib/app/utils/language/hindi_sentences.dart b/lib/app/utils/language/hindi_sentences.dart index 6b5c428b..ec9c07cd 100644 --- a/lib/app/utils/language/hindi_sentences.dart +++ b/lib/app/utils/language/hindi_sentences.dart @@ -406,6 +406,8 @@ class HindiSentences extends Sentences { @override String get noProjectsFound => 'कोई परियोजना नहीं मिली'; @override + String get noProject => 'कोई प्रोजेक्ट नहीं'; + @override String get project => 'परियोजना'; @override diff --git a/lib/app/utils/language/marathi_sentences.dart b/lib/app/utils/language/marathi_sentences.dart index b7045742..9cf24832 100644 --- a/lib/app/utils/language/marathi_sentences.dart +++ b/lib/app/utils/language/marathi_sentences.dart @@ -412,6 +412,8 @@ class MarathiSentences extends Sentences { @override String get noProjectsFound => 'प्रकल्प सापडले नाहीत'; @override + String get noProject => 'कोणताही प्रकल्प नाही'; + @override String get project => 'प्रकल्प'; @override diff --git a/lib/app/utils/language/sentences.dart b/lib/app/utils/language/sentences.dart index 891f3e30..d9a6f9f8 100644 --- a/lib/app/utils/language/sentences.dart +++ b/lib/app/utils/language/sentences.dart @@ -210,6 +210,7 @@ abstract class Sentences { String get allProjects; String get noProjectsFound; + String get noProject; String get project; String get select; diff --git a/lib/app/utils/language/spanish_sentences.dart b/lib/app/utils/language/spanish_sentences.dart index 94d6a460..74de4945 100644 --- a/lib/app/utils/language/spanish_sentences.dart +++ b/lib/app/utils/language/spanish_sentences.dart @@ -412,6 +412,8 @@ class SpanishSentences extends Sentences { @override String get noProjectsFound => 'No se encontraron proyectos'; @override + String get noProject => 'Sin Proyecto'; + @override String get project => 'Proyecto'; @override diff --git a/lib/app/utils/language/urdu_sentences.dart b/lib/app/utils/language/urdu_sentences.dart index e78c37de..76ca0b04 100644 --- a/lib/app/utils/language/urdu_sentences.dart +++ b/lib/app/utils/language/urdu_sentences.dart @@ -404,6 +404,8 @@ class UrduSentences extends Sentences { @override String get noProjectsFound => 'کوئی پراجیکٹ نہیں ملا'; @override + String get noProject => 'کوئی پروجیکٹ نہیں'; + @override String get project => 'پراجیکٹ'; @override