diff --git a/app/src/main/kotlin/org/fossify/clock/extensions/Context.kt b/app/src/main/kotlin/org/fossify/clock/extensions/Context.kt index de931273..a50ece93 100644 --- a/app/src/main/kotlin/org/fossify/clock/extensions/Context.kt +++ b/app/src/main/kotlin/org/fossify/clock/extensions/Context.kt @@ -59,6 +59,7 @@ import org.fossify.clock.receivers.HideTimerReceiver import org.fossify.clock.receivers.SkipUpcomingAlarmReceiver import org.fossify.clock.receivers.StopAlarmReceiver import org.fossify.clock.receivers.UpcomingAlarmReceiver +import org.fossify.clock.services.AlarmService import org.fossify.clock.services.SnoozeService import org.fossify.commons.extensions.formatMinutesToTimeString import org.fossify.commons.extensions.formatSecondsToTimeString @@ -282,6 +283,14 @@ fun Context.cancelAlarmClock(alarm: Alarm) { alarmManager.cancel(getUpcomingAlarmPendingIntent(alarm)) } +fun Context.stopAlarmService(id: Int) { + val intent = Intent(this, AlarmService::class.java).apply { + action = AlarmService.ACTION_STOP_ALARM + putExtra(ALARM_ID, id) + } + startService(intent) +} + fun Context.hideNotification(id: Int) { notificationManager.cancel(id) } diff --git a/app/src/main/kotlin/org/fossify/clock/helpers/DBHelper.kt b/app/src/main/kotlin/org/fossify/clock/helpers/DBHelper.kt index b4097599..16b4d89a 100644 --- a/app/src/main/kotlin/org/fossify/clock/helpers/DBHelper.kt +++ b/app/src/main/kotlin/org/fossify/clock/helpers/DBHelper.kt @@ -9,6 +9,7 @@ import android.database.sqlite.SQLiteOpenHelper import android.text.TextUtils import org.fossify.clock.extensions.cancelAlarmClock import org.fossify.clock.extensions.createNewAlarm +import org.fossify.clock.extensions.stopAlarmService import org.fossify.clock.models.Alarm import org.fossify.commons.extensions.getIntValue import org.fossify.commons.extensions.getStringValue @@ -100,8 +101,8 @@ class DBHelper private constructor( fun deleteAlarms(alarms: ArrayList) { alarms.filter { it.isEnabled }.forEach { context.cancelAlarmClock(it) + context.stopAlarmService(it.id) } - val args = TextUtils.join(", ", alarms.map { it.id.toString() }) val selection = "$ALARMS_TABLE_NAME.$COL_ID IN ($args)" mDb.delete(ALARMS_TABLE_NAME, selection, null) diff --git a/app/src/main/kotlin/org/fossify/clock/services/AlarmService.kt b/app/src/main/kotlin/org/fossify/clock/services/AlarmService.kt index 3d7b627b..77d55af8 100644 --- a/app/src/main/kotlin/org/fossify/clock/services/AlarmService.kt +++ b/app/src/main/kotlin/org/fossify/clock/services/AlarmService.kt @@ -60,14 +60,16 @@ class AlarmService : Service() { override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { val action = intent?.action ?: ACTION_START_ALARM val alarmId = intent?.getIntExtra(ALARM_ID, -1) ?: -1 - val newAlarm = applicationContext.dbHelper.getAlarmWithId(alarmId) - if (alarmId == -1 || newAlarm == null) { - stopSelfIfIdle() - return START_NOT_STICKY - } when (action) { - ACTION_START_ALARM -> startNewAlarm(newAlarm) + ACTION_START_ALARM -> { + val newAlarm = applicationContext.dbHelper.getAlarmWithId(alarmId) + if (alarmId == -1 || newAlarm == null) { + stopSelfIfIdle() + return START_NOT_STICKY + } + startNewAlarm(newAlarm) + } ACTION_STOP_ALARM -> stopActiveAlarm(alarmId) else -> throw IllegalArgumentException("Unknown action: $action") }