mirror of
https://github.com/SimpleMobileTools/Simple-Calendar.git
synced 2025-06-05 21:59:17 +02:00
move the notification showing related things into context extensions
This commit is contained in:
@@ -1,12 +1,15 @@
|
|||||||
package com.simplemobiletools.calendar.extensions
|
package com.simplemobiletools.calendar.extensions
|
||||||
|
|
||||||
import android.app.AlarmManager
|
import android.app.AlarmManager
|
||||||
|
import android.app.Notification
|
||||||
|
import android.app.NotificationManager
|
||||||
import android.app.PendingIntent
|
import android.app.PendingIntent
|
||||||
import android.appwidget.AppWidgetManager
|
import android.appwidget.AppWidgetManager
|
||||||
import android.content.ComponentName
|
import android.content.ComponentName
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
|
import android.net.Uri
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.os.SystemClock
|
import android.os.SystemClock
|
||||||
import com.simplemobiletools.calendar.R
|
import com.simplemobiletools.calendar.R
|
||||||
@@ -149,6 +152,40 @@ fun Context.getFilteredEvents(events: List<Event>): List<Event> {
|
|||||||
return events.filter { displayEventTypes.contains(it.eventType.toString()) }
|
return events.filter { displayEventTypes.contains(it.eventType.toString()) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun Context.notifyEvent(event: Event) {
|
||||||
|
val pendingIntent = getPendingIntent(this, event)
|
||||||
|
val startTime = Formatter.getTimeFromTS(this, event.startTS)
|
||||||
|
val endTime = Formatter.getTimeFromTS(this, event.endTS)
|
||||||
|
val notification = getNotification(this, pendingIntent, event.title, "${getFormattedEventTime(startTime, endTime)} ${event.description}")
|
||||||
|
val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
||||||
|
notificationManager.notify(event.id, notification)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getNotification(context: Context, pendingIntent: PendingIntent, title: String, content: String): Notification {
|
||||||
|
val soundUri = Uri.parse(context.config.reminderSound)
|
||||||
|
val builder = Notification.Builder(context)
|
||||||
|
.setContentTitle(title)
|
||||||
|
.setContentText(content)
|
||||||
|
.setSmallIcon(R.drawable.ic_calendar)
|
||||||
|
.setContentIntent(pendingIntent)
|
||||||
|
.setDefaults(Notification.DEFAULT_LIGHTS)
|
||||||
|
.setAutoCancel(true)
|
||||||
|
.setSound(soundUri)
|
||||||
|
|
||||||
|
if (context.config.vibrateOnReminder)
|
||||||
|
builder.setVibrate(longArrayOf(0, 300, 300, 300))
|
||||||
|
|
||||||
|
return builder.build()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getFormattedEventTime(startTime: String, endTime: String) = if (startTime == endTime) startTime else "$startTime - $endTime"
|
||||||
|
|
||||||
|
private fun getPendingIntent(context: Context, event: Event): PendingIntent {
|
||||||
|
val intent = Intent(context, EventActivity::class.java)
|
||||||
|
intent.putExtra(EVENT_ID, event.id)
|
||||||
|
return PendingIntent.getActivity(context, event.id, intent, PendingIntent.FLAG_UPDATE_CURRENT)
|
||||||
|
}
|
||||||
|
|
||||||
fun Context.launchNewEventIntent(startNewTask: Boolean = false, today: Boolean = false) {
|
fun Context.launchNewEventIntent(startNewTask: Boolean = false, today: Boolean = false) {
|
||||||
val code = Formatter.getDayCodeFromDateTime(DateTime(DateTimeZone.getDefault()).plusDays(if (today) 0 else 1))
|
val code = Formatter.getDayCodeFromDateTime(DateTime(DateTimeZone.getDefault()).plusDays(if (today) 0 else 1))
|
||||||
Intent(applicationContext, EventActivity::class.java).apply {
|
Intent(applicationContext, EventActivity::class.java).apply {
|
||||||
|
@@ -1,26 +1,17 @@
|
|||||||
package com.simplemobiletools.calendar.receivers
|
package com.simplemobiletools.calendar.receivers
|
||||||
|
|
||||||
import android.app.Notification
|
|
||||||
import android.app.NotificationManager
|
|
||||||
import android.app.PendingIntent
|
|
||||||
import android.content.BroadcastReceiver
|
import android.content.BroadcastReceiver
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.net.Uri
|
|
||||||
import com.simplemobiletools.calendar.R
|
|
||||||
import com.simplemobiletools.calendar.activities.EventActivity
|
|
||||||
import com.simplemobiletools.calendar.extensions.config
|
|
||||||
import com.simplemobiletools.calendar.extensions.dbHelper
|
import com.simplemobiletools.calendar.extensions.dbHelper
|
||||||
|
import com.simplemobiletools.calendar.extensions.notifyEvent
|
||||||
import com.simplemobiletools.calendar.extensions.scheduleNextEventReminder
|
import com.simplemobiletools.calendar.extensions.scheduleNextEventReminder
|
||||||
import com.simplemobiletools.calendar.extensions.updateListWidget
|
import com.simplemobiletools.calendar.extensions.updateListWidget
|
||||||
import com.simplemobiletools.calendar.helpers.EVENT_ID
|
import com.simplemobiletools.calendar.helpers.EVENT_ID
|
||||||
import com.simplemobiletools.calendar.helpers.Formatter
|
|
||||||
import com.simplemobiletools.calendar.models.Event
|
|
||||||
|
|
||||||
class NotificationReceiver : BroadcastReceiver() {
|
class NotificationReceiver : BroadcastReceiver() {
|
||||||
override fun onReceive(context: Context, intent: Intent) {
|
override fun onReceive(context: Context, intent: Intent) {
|
||||||
context.updateListWidget()
|
context.updateListWidget()
|
||||||
val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
|
||||||
val id = intent.getIntExtra(EVENT_ID, -1)
|
val id = intent.getIntExtra(EVENT_ID, -1)
|
||||||
if (id == -1)
|
if (id == -1)
|
||||||
return
|
return
|
||||||
@@ -29,38 +20,9 @@ class NotificationReceiver : BroadcastReceiver() {
|
|||||||
if (event == null || event.getReminders().isEmpty())
|
if (event == null || event.getReminders().isEmpty())
|
||||||
return
|
return
|
||||||
|
|
||||||
val pendingIntent = getPendingIntent(context, event)
|
|
||||||
val startTime = Formatter.getTimeFromTS(context, event.startTS)
|
|
||||||
val endTime = Formatter.getTimeFromTS(context, event.endTS)
|
|
||||||
if (!event.ignoreEventOccurrences.contains(event.startTS)) {
|
if (!event.ignoreEventOccurrences.contains(event.startTS)) {
|
||||||
val notification = getNotification(context, pendingIntent, event.title, "${getEventTime(startTime, endTime)} ${event.description}")
|
context.notifyEvent(event)
|
||||||
notificationManager.notify(id, notification)
|
|
||||||
}
|
}
|
||||||
context.scheduleNextEventReminder(event)
|
context.scheduleNextEventReminder(event)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getEventTime(startTime: String, endTime: String) = if (startTime == endTime) startTime else "$startTime - $endTime"
|
|
||||||
|
|
||||||
private fun getPendingIntent(context: Context, event: Event): PendingIntent {
|
|
||||||
val intent = Intent(context, EventActivity::class.java)
|
|
||||||
intent.putExtra(EVENT_ID, event.id)
|
|
||||||
return PendingIntent.getActivity(context, event.id, intent, PendingIntent.FLAG_UPDATE_CURRENT)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun getNotification(context: Context, pendingIntent: PendingIntent, title: String, content: String): Notification {
|
|
||||||
val soundUri = Uri.parse(context.config.reminderSound)
|
|
||||||
val builder = Notification.Builder(context)
|
|
||||||
.setContentTitle(title)
|
|
||||||
.setContentText(content)
|
|
||||||
.setSmallIcon(R.drawable.ic_calendar)
|
|
||||||
.setContentIntent(pendingIntent)
|
|
||||||
.setDefaults(Notification.DEFAULT_LIGHTS)
|
|
||||||
.setAutoCancel(true)
|
|
||||||
.setSound(soundUri)
|
|
||||||
|
|
||||||
if (context.config.vibrateOnReminder)
|
|
||||||
builder.setVibrate(longArrayOf(0, 300, 300, 300))
|
|
||||||
|
|
||||||
return builder.build()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user