diff --git a/app/src/main/java/com/todoroo/astrid/core/BuiltInFilterExposer.kt b/app/src/main/java/com/todoroo/astrid/core/BuiltInFilterExposer.kt index 5baaf1206..6cd0052ca 100644 --- a/app/src/main/java/com/todoroo/astrid/core/BuiltInFilterExposer.kt +++ b/app/src/main/java/com/todoroo/astrid/core/BuiltInFilterExposer.kt @@ -66,6 +66,11 @@ class BuiltInFilterExposer @Inject constructor( if (taskDao.activeTimers() > 0) { filters.add(TimerPlugin.createFilter(context)) } + if (taskDao.hasNotifications() > 0) { + val element = NotificationsFilter(context) + element.icon = R.drawable.ic_outline_notifications_24px + filters.add(element) + } return filters } @@ -160,6 +165,8 @@ class BuiltInFilterExposer @Inject constructor( fun getSnoozedFilter(r: Resources) = SnoozedFilter(r.getString(R.string.filter_snoozed)) + fun getNotificationsFilter(context: Context) = NotificationsFilter(context) + @JvmStatic fun isInbox(context: Context, filter: Filter?) = filter == getMyTasksFilter(context.resources) @@ -173,5 +180,8 @@ class BuiltInFilterExposer @Inject constructor( fun isSnoozedFilter(context: Context, filter: Filter?) = filter == getSnoozedFilter(context.resources) + + fun isNotificationsFilter(context: Context, filter: Filter?) = + filter == getNotificationsFilter(context) } } \ No newline at end of file diff --git a/app/src/main/java/org/tasks/data/TaskDao.kt b/app/src/main/java/org/tasks/data/TaskDao.kt index f9a4038b5..e77fe22e9 100644 --- a/app/src/main/java/org/tasks/data/TaskDao.kt +++ b/app/src/main/java/org/tasks/data/TaskDao.kt @@ -46,6 +46,9 @@ abstract class TaskDao(private val database: Database) { @Query("SELECT COUNT(1) FROM tasks INNER JOIN alarms ON tasks._id = alarms.task WHERE type = $TYPE_SNOOZE") abstract suspend fun snoozedReminders(): Int + @Query("SELECT COUNT(1) FROM tasks INNER JOIN notification ON tasks._id = notification.task") + abstract suspend fun hasNotifications(): Int + @Query("SELECT tasks.* FROM tasks INNER JOIN notification ON tasks._id = notification.task") abstract suspend fun activeNotifications(): List diff --git a/app/src/main/java/org/tasks/preferences/DefaultFilterProvider.kt b/app/src/main/java/org/tasks/preferences/DefaultFilterProvider.kt index 16d2f43a4..a8fd9b21b 100644 --- a/app/src/main/java/org/tasks/preferences/DefaultFilterProvider.kt +++ b/app/src/main/java/org/tasks/preferences/DefaultFilterProvider.kt @@ -142,6 +142,7 @@ class DefaultFilterProvider @Inject constructor( FILTER_TODAY -> BuiltInFilterExposer.getTodayFilter(context.resources) FILTER_RECENTLY_MODIFIED -> BuiltInFilterExposer.getRecentlyModifiedFilter(context.resources) FILTER_SNOOZED -> BuiltInFilterExposer.getSnoozedFilter(context.resources) + FILTER_NOTIFICATIONS -> BuiltInFilterExposer.getNotificationsFilter(context) else -> getMyTasksFilter(context.resources) } @@ -150,6 +151,7 @@ class DefaultFilterProvider @Inject constructor( isToday() -> FILTER_TODAY isRecentlyModified() -> FILTER_RECENTLY_MODIFIED isSnoozed() -> FILTER_SNOOZED + isNotifications() -> FILTER_NOTIFICATIONS else -> FILTER_MY_TASKS } } @@ -196,6 +198,9 @@ class DefaultFilterProvider @Inject constructor( private fun Filter.isSnoozed() = BuiltInFilterExposer.isSnoozedFilter(context, this) + private fun Filter.isNotifications() = + BuiltInFilterExposer.isNotificationsFilter(context, this) + companion object { private const val TYPE_FILTER = 0 private const val TYPE_CUSTOM_FILTER = 1 @@ -208,5 +213,6 @@ class DefaultFilterProvider @Inject constructor( @Suppress("unused") private const val FILTER_UNCATEGORIZED = 2 private const val FILTER_RECENTLY_MODIFIED = 3 private const val FILTER_SNOOZED = 4 + private const val FILTER_NOTIFICATIONS = 5 } } \ No newline at end of file