From 8d9e7181a096e44db8e82cce84e57c2fd4a97ad2 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 13 Mar 2018 18:51:14 +0100 Subject: [PATCH] adding an extra check to make sure alarms are scheduled at app launch --- .../simplemobiletools/clock/activities/MainActivity.kt | 8 ++++++++ .../com/simplemobiletools/clock/extensions/Context.kt | 9 +++++++++ .../com/simplemobiletools/clock/helpers/DBHelper.kt | 2 ++ .../clock/helpers/MyWidgetDateTimeProvider.kt | 3 +-- .../clock/receivers/BootCompletedReceiver.kt | 7 ++----- 5 files changed, 22 insertions(+), 7 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/clock/activities/MainActivity.kt index 834545b9..6dc8c7f3 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/activities/MainActivity.kt @@ -10,6 +10,8 @@ import com.simplemobiletools.clock.BuildConfig import com.simplemobiletools.clock.R import com.simplemobiletools.clock.adapters.ViewPagerAdapter import com.simplemobiletools.clock.extensions.config +import com.simplemobiletools.clock.extensions.getNextAlarm +import com.simplemobiletools.clock.extensions.rescheduleEnabledAlarms import com.simplemobiletools.clock.helpers.OPEN_TAB import com.simplemobiletools.clock.helpers.TABS_COUNT import com.simplemobiletools.clock.helpers.TAB_CLOCK @@ -31,6 +33,12 @@ class MainActivity : SimpleActivity() { appLaunched() storeStateVariables() initFragments() + + if (getNextAlarm().isEmpty()) { + Thread { + rescheduleEnabledAlarms() + }.start() + } } override fun onResume() { diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/extensions/Context.kt b/app/src/main/kotlin/com/simplemobiletools/clock/extensions/Context.kt index b26b6979..7f646091 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/extensions/Context.kt @@ -9,6 +9,7 @@ import android.content.ComponentName import android.content.Context import android.content.Intent import android.media.RingtoneManager +import android.provider.Settings import android.text.SpannableString import android.text.style.RelativeSizeSpan import android.widget.Toast @@ -208,3 +209,11 @@ fun Context.formatTo12HourFormat(showSeconds: Boolean, hours: Int, minutes: Int, val newHours = if (hours == 0 || hours == 12) 12 else hours % 12 return "${formatTime(showSeconds, false, newHours, minutes, seconds)} $appendable" } + +fun Context.getNextAlarm() = Settings.System.getString(contentResolver, Settings.System.NEXT_ALARM_FORMATTED) + +fun Context.rescheduleEnabledAlarms() { + dbHelper.getEnabledAlarms().forEach { + scheduleNextAlarm(it, false) + } +} diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/helpers/DBHelper.kt b/app/src/main/kotlin/com/simplemobiletools/clock/helpers/DBHelper.kt index 91f524fe..1fe25e99 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/helpers/DBHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/helpers/DBHelper.kt @@ -97,6 +97,8 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont } } + fun getEnabledAlarms() = getAlarms().filter { it.isEnabled } + fun getAlarms(): ArrayList { val alarms = ArrayList() val cols = arrayOf(COL_ID, COL_TIME_IN_MINUTES, COL_DAYS, COL_IS_ENABLED, COL_VIBRATE, COL_SOUND_TITLE, COL_SOUND_URI, COL_LABEL) diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/helpers/MyWidgetDateTimeProvider.kt b/app/src/main/kotlin/com/simplemobiletools/clock/helpers/MyWidgetDateTimeProvider.kt index 41521579..7b4ab9ef 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/helpers/MyWidgetDateTimeProvider.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/helpers/MyWidgetDateTimeProvider.kt @@ -6,7 +6,6 @@ import android.appwidget.AppWidgetProvider import android.content.ComponentName import android.content.Context import android.content.Intent -import android.provider.Settings import android.widget.RemoteViews import com.simplemobiletools.clock.R import com.simplemobiletools.clock.activities.SplashActivity @@ -90,7 +89,7 @@ class MyWidgetDateTimeProvider : AppWidgetProvider() { } private fun getFormattedNextAlarm(context: Context): String { - val nextAlarm = Settings.System.getString(context.contentResolver, Settings.System.NEXT_ALARM_FORMATTED) + val nextAlarm = context.getNextAlarm() if (nextAlarm.isEmpty()) { return "" } diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/receivers/BootCompletedReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/clock/receivers/BootCompletedReceiver.kt index 366862eb..4c12425d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/receivers/BootCompletedReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/receivers/BootCompletedReceiver.kt @@ -3,14 +3,11 @@ package com.simplemobiletools.clock.receivers import android.content.BroadcastReceiver import android.content.Context import android.content.Intent -import com.simplemobiletools.clock.extensions.dbHelper -import com.simplemobiletools.clock.extensions.scheduleNextAlarm +import com.simplemobiletools.clock.extensions.rescheduleEnabledAlarms class BootCompletedReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { - context.dbHelper.getAlarms().filter { it.isEnabled }.forEach { - context.scheduleNextAlarm(it, false) - } + context.rescheduleEnabledAlarms() } }