From 1e1666432fa69e66cd5c12f2c64f259545c91c43 Mon Sep 17 00:00:00 2001 From: Rawlin C Date: Wed, 5 Jul 2023 10:16:46 +0530 Subject: [PATCH] Refactored removeTodayFromBitmask to not use bit operators --- .../clock/adapters/AlarmsAdapter.kt | 2 +- .../clock/receivers/DismissAlarmReceiver.kt | 24 ++++++++++++++++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/adapters/AlarmsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/clock/adapters/AlarmsAdapter.kt index 2ccba73d..90b1218b 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/adapters/AlarmsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/adapters/AlarmsAdapter.kt @@ -98,7 +98,7 @@ class AlarmsAdapter( alarm_days.setTextColor(textColor) alarm_label.text = alarm.label - alarm_label.setTextColor(textColor) + alarm_label.setTextColor(textColor) //test alarm_label.beVisibleIf(alarm.label.isNotEmpty()) alarm_switch.isChecked = alarm.isEnabled diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/receivers/DismissAlarmReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/clock/receivers/DismissAlarmReceiver.kt index 97c668bc..e583f406 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/receivers/DismissAlarmReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/receivers/DismissAlarmReceiver.kt @@ -9,6 +9,7 @@ import com.simplemobiletools.clock.helpers.NOTIFICATION_ID import com.simplemobiletools.clock.models.Alarm import com.simplemobiletools.commons.helpers.ensureBackgroundThread import java.util.Calendar +import kotlin.math.pow class DismissAlarmReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { @@ -42,9 +43,26 @@ class DismissAlarmReceiver : BroadcastReceiver() { private fun removeTodayFromBitmask(bitmask: Int): Int { val calendar = Calendar.getInstance() calendar.firstDayOfWeek = Calendar.MONDAY - val dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - Calendar.MONDAY + val dayOfWeek = (calendar.get(Calendar.DAY_OF_WEEK) + 5) % 7 + // boolean array with each day of the week set as per the bitmask provided + val daysOfWeek = BooleanArray(7) { value -> + var bitValue = bitmask + for (i in 0 until value) { + bitValue /= 2 + } + bitValue % 2 == 1 + } - val todayBitmask = 1 shl dayOfWeek // This will left shift 0000001 by dayOfWeek places, creating a bitmask for today - return bitmask and todayBitmask.inv() // This will return a new bitmask without today included + daysOfWeek[dayOfWeek] = false // remove today + + // Convert the boolean array back to an integer (bitmask) + var updatedBitmask = 0 + for (i in 0..6) { + if (daysOfWeek[i]) { + updatedBitmask += 2.0.pow(i).toInt() + } + } // This will return a new bitmask without today included + + return updatedBitmask } }