handle dynamic snooze picker

This commit is contained in:
tibbi 2018-03-07 15:09:34 +01:00
parent 241f527412
commit 244a137e5b
4 changed files with 31 additions and 6 deletions

View file

@ -2,9 +2,32 @@ package com.simplemobiletools.clock.activities
import android.os.Bundle import android.os.Bundle
import android.support.v7.app.AppCompatActivity import android.support.v7.app.AppCompatActivity
import com.simplemobiletools.clock.extensions.config
import com.simplemobiletools.clock.extensions.dbHelper
import com.simplemobiletools.clock.extensions.hideNotification
import com.simplemobiletools.clock.extensions.setupAlarmClock
import com.simplemobiletools.clock.helpers.ALARM_ID
import com.simplemobiletools.commons.extensions.showPickIntervalDialog
class SnoozeReminderActivity : AppCompatActivity() { class SnoozeReminderActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
val id = intent.getIntExtra(ALARM_ID, -1)
val alarm = dbHelper.getAlarmWithId(id) ?: return
hideNotification(id)
showPickIntervalDialog(config.snoozeTime, true, cancelCallback = { dialogCancelled() }) {
config.snoozeTime = it
setupAlarmClock(alarm, it * 60)
finishActivity()
}
}
private fun dialogCancelled() {
finishActivity()
}
private fun finishActivity() {
finish()
overridePendingTransition(0, 0)
} }
} }

View file

@ -2,6 +2,7 @@ package com.simplemobiletools.clock.extensions
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.app.AlarmManager import android.app.AlarmManager
import android.app.NotificationManager
import android.app.PendingIntent import android.app.PendingIntent
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
@ -133,3 +134,8 @@ fun Context.cancelAlarmClock(alarm: Alarm) {
val alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager val alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager
alarmManager.cancel(getPendingIntent(alarm)) alarmManager.cancel(getPendingIntent(alarm))
} }
fun Context.hideNotification(id: Int) {
val manager = applicationContext.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
manager.cancel(id)
}

View file

@ -34,7 +34,6 @@ class AlarmReceiver : BroadcastReceiver() {
val notification = getNotification(context, pendingIntent, alarm) val notification = getNotification(context, pendingIntent, alarm)
val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.notify(alarm.id, notification) notificationManager.notify(alarm.id, notification)
context.scheduleNextAlarm(alarm, false) context.scheduleNextAlarm(alarm, false)
} }

View file

@ -1,11 +1,10 @@
package com.simplemobiletools.clock.services package com.simplemobiletools.clock.services
import android.app.IntentService import android.app.IntentService
import android.app.NotificationManager
import android.content.Context
import android.content.Intent import android.content.Intent
import com.simplemobiletools.clock.extensions.config import com.simplemobiletools.clock.extensions.config
import com.simplemobiletools.clock.extensions.dbHelper import com.simplemobiletools.clock.extensions.dbHelper
import com.simplemobiletools.clock.extensions.hideNotification
import com.simplemobiletools.clock.extensions.setupAlarmClock import com.simplemobiletools.clock.extensions.setupAlarmClock
import com.simplemobiletools.clock.helpers.ALARM_ID import com.simplemobiletools.clock.helpers.ALARM_ID
@ -13,9 +12,7 @@ class SnoozeService : IntentService("Snooze") {
override fun onHandleIntent(intent: Intent) { override fun onHandleIntent(intent: Intent) {
val id = intent.getIntExtra(ALARM_ID, -1) val id = intent.getIntExtra(ALARM_ID, -1)
val alarm = dbHelper.getAlarmWithId(id) ?: return val alarm = dbHelper.getAlarmWithId(id) ?: return
hideNotification(id)
setupAlarmClock(alarm, config.snoozeTime * 60) setupAlarmClock(alarm, config.snoozeTime * 60)
val manager = applicationContext.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
manager.cancel(alarm.id)
} }
} }