Add built-in notifications filter

pull/1811/head
Alex Baker 2 years ago
parent 62931a5c70
commit 446de069ae

@ -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)
}
}

@ -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<Task>

@ -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
}
}
Loading…
Cancel
Save