Loading app/core/src/main/java/com/fsck/k9/notification/CoreKoinModule.kt +1 −0 Original line number Diff line number Diff line Loading @@ -114,4 +114,5 @@ val coreNotificationModule = module { ) } factory { NotificationLightDecoder() } factory { NotificationVibrationDecoder() } } app/core/src/main/java/com/fsck/k9/notification/NotificationVibrationDecoder.kt 0 → 100644 +26 −0 Original line number Diff line number Diff line package com.fsck.k9.notification import com.fsck.k9.NotificationVibration import com.fsck.k9.VibratePattern /** * Converts the vibration values read from a `NotificationChannel` into [NotificationVibration]. */ class NotificationVibrationDecoder { fun decode(isVibrationEnabled: Boolean, systemPattern: List<Long>?): NotificationVibration { if (systemPattern == null || systemPattern.size < 2 || systemPattern.size % 2 != 0) { return NotificationVibration.DEFAULT } val systemPatternArray = systemPattern.toLongArray() val repeatCount = systemPattern.size / 2 val pattern = VibratePattern.values() .firstOrNull { vibratePattern -> val testPattern = NotificationVibration.getSystemPattern(vibratePattern, repeatCount) testPattern.contentEquals(systemPatternArray) } ?: VibratePattern.Default return NotificationVibration(isVibrationEnabled, pattern, repeatCount) } } app/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsFragment.kt +9 −2 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import com.fsck.k9.mailstore.RemoteFolder import com.fsck.k9.notification.NotificationChannelManager import com.fsck.k9.notification.NotificationChannelManager.ChannelType import com.fsck.k9.notification.NotificationLightDecoder import com.fsck.k9.notification.NotificationVibrationDecoder import com.fsck.k9.ui.R import com.fsck.k9.ui.endtoend.AutocryptKeyTransferActivity import com.fsck.k9.ui.settings.onClick Loading @@ -52,6 +53,7 @@ class AccountSettingsFragment : PreferenceFragmentCompat(), ConfirmationDialogFr private val accountRemover: BackgroundAccountRemover by inject() private val notificationChannelManager: NotificationChannelManager by inject() private val notificationLightDecoder: NotificationLightDecoder by inject() private val notificationVibrationDecoder: NotificationVibrationDecoder by inject() private val vibrator by lazy { requireContext().getSystemService<Vibrator>() } private lateinit var dataStore: AccountSettingsDataStore Loading Loading @@ -267,9 +269,14 @@ class AccountSettingsFragment : PreferenceFragmentCompat(), ConfirmationDialogFr } notificationVibrationPreference?.let { preference -> preference.setVibrationFromSystem( val notificationVibration = notificationVibrationDecoder.decode( isVibrationEnabled = notificationConfiguration.isVibrationEnabled, combinedPattern = notificationConfiguration.vibrationPattern systemPattern = notificationConfiguration.vibrationPattern ) preference.setVibration( isVibrationEnabled = notificationVibration.isEnabled, vibratePattern = notificationVibration.pattern, vibrationTimes = notificationVibration.repeatCount ) preference.isEnabled = true } Loading app/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/VibrationPreference.kt +0 −23 Original line number Diff line number Diff line Loading @@ -5,7 +5,6 @@ import android.content.Context import android.util.AttributeSet import androidx.core.content.res.TypedArrayUtils import androidx.preference.ListPreference import com.fsck.k9.NotificationVibration import com.fsck.k9.VibratePattern import com.fsck.k9.ui.R import com.takisoft.preferencex.PreferenceFragmentCompat Loading Loading @@ -61,28 +60,6 @@ constructor( updateSummary() } fun setVibrationFromSystem(isVibrationEnabled: Boolean, combinedPattern: List<Long>?) { if (combinedPattern == null || combinedPattern.size < 2 || combinedPattern.size % 2 != 0) { setVibration(isVibrationEnabled, DEFAULT_VIBRATE_PATTERN, DEFAULT_VIBRATION_TIMES) return } val combinedPatternArray = combinedPattern.toLongArray() val vibrationTimes = combinedPattern.size / 2 val vibrationPattern = entryValues.asSequence() .map { entryValue -> val serializedVibratePattern = entryValue.toString().toInt() VibratePattern.deserialize(serializedVibratePattern) } .firstOrNull { vibratePattern -> val testPattern = NotificationVibration.getSystemPattern(vibratePattern, vibrationTimes) testPattern.contentEquals(combinedPatternArray) } ?: DEFAULT_VIBRATE_PATTERN setVibration(isVibrationEnabled, vibrationPattern, vibrationTimes) } private fun updateSummary() { summary = if (isVibrationEnabled) { val index = entryValues.indexOf(vibratePattern.serialize().toString()) Loading Loading
app/core/src/main/java/com/fsck/k9/notification/CoreKoinModule.kt +1 −0 Original line number Diff line number Diff line Loading @@ -114,4 +114,5 @@ val coreNotificationModule = module { ) } factory { NotificationLightDecoder() } factory { NotificationVibrationDecoder() } }
app/core/src/main/java/com/fsck/k9/notification/NotificationVibrationDecoder.kt 0 → 100644 +26 −0 Original line number Diff line number Diff line package com.fsck.k9.notification import com.fsck.k9.NotificationVibration import com.fsck.k9.VibratePattern /** * Converts the vibration values read from a `NotificationChannel` into [NotificationVibration]. */ class NotificationVibrationDecoder { fun decode(isVibrationEnabled: Boolean, systemPattern: List<Long>?): NotificationVibration { if (systemPattern == null || systemPattern.size < 2 || systemPattern.size % 2 != 0) { return NotificationVibration.DEFAULT } val systemPatternArray = systemPattern.toLongArray() val repeatCount = systemPattern.size / 2 val pattern = VibratePattern.values() .firstOrNull { vibratePattern -> val testPattern = NotificationVibration.getSystemPattern(vibratePattern, repeatCount) testPattern.contentEquals(systemPatternArray) } ?: VibratePattern.Default return NotificationVibration(isVibrationEnabled, pattern, repeatCount) } }
app/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsFragment.kt +9 −2 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import com.fsck.k9.mailstore.RemoteFolder import com.fsck.k9.notification.NotificationChannelManager import com.fsck.k9.notification.NotificationChannelManager.ChannelType import com.fsck.k9.notification.NotificationLightDecoder import com.fsck.k9.notification.NotificationVibrationDecoder import com.fsck.k9.ui.R import com.fsck.k9.ui.endtoend.AutocryptKeyTransferActivity import com.fsck.k9.ui.settings.onClick Loading @@ -52,6 +53,7 @@ class AccountSettingsFragment : PreferenceFragmentCompat(), ConfirmationDialogFr private val accountRemover: BackgroundAccountRemover by inject() private val notificationChannelManager: NotificationChannelManager by inject() private val notificationLightDecoder: NotificationLightDecoder by inject() private val notificationVibrationDecoder: NotificationVibrationDecoder by inject() private val vibrator by lazy { requireContext().getSystemService<Vibrator>() } private lateinit var dataStore: AccountSettingsDataStore Loading Loading @@ -267,9 +269,14 @@ class AccountSettingsFragment : PreferenceFragmentCompat(), ConfirmationDialogFr } notificationVibrationPreference?.let { preference -> preference.setVibrationFromSystem( val notificationVibration = notificationVibrationDecoder.decode( isVibrationEnabled = notificationConfiguration.isVibrationEnabled, combinedPattern = notificationConfiguration.vibrationPattern systemPattern = notificationConfiguration.vibrationPattern ) preference.setVibration( isVibrationEnabled = notificationVibration.isEnabled, vibratePattern = notificationVibration.pattern, vibrationTimes = notificationVibration.repeatCount ) preference.isEnabled = true } Loading
app/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/VibrationPreference.kt +0 −23 Original line number Diff line number Diff line Loading @@ -5,7 +5,6 @@ import android.content.Context import android.util.AttributeSet import androidx.core.content.res.TypedArrayUtils import androidx.preference.ListPreference import com.fsck.k9.NotificationVibration import com.fsck.k9.VibratePattern import com.fsck.k9.ui.R import com.takisoft.preferencex.PreferenceFragmentCompat Loading Loading @@ -61,28 +60,6 @@ constructor( updateSummary() } fun setVibrationFromSystem(isVibrationEnabled: Boolean, combinedPattern: List<Long>?) { if (combinedPattern == null || combinedPattern.size < 2 || combinedPattern.size % 2 != 0) { setVibration(isVibrationEnabled, DEFAULT_VIBRATE_PATTERN, DEFAULT_VIBRATION_TIMES) return } val combinedPatternArray = combinedPattern.toLongArray() val vibrationTimes = combinedPattern.size / 2 val vibrationPattern = entryValues.asSequence() .map { entryValue -> val serializedVibratePattern = entryValue.toString().toInt() VibratePattern.deserialize(serializedVibratePattern) } .firstOrNull { vibratePattern -> val testPattern = NotificationVibration.getSystemPattern(vibratePattern, vibrationTimes) testPattern.contentEquals(combinedPatternArray) } ?: DEFAULT_VIBRATE_PATTERN setVibration(isVibrationEnabled, vibrationPattern, vibrationTimes) } private fun updateSummary() { summary = if (isVibrationEnabled) { val index = entryValues.indexOf(vibratePattern.serialize().toString()) Loading