Skip to content

Commit

Permalink
Merge pull request #46 from ahudson20/45-allow-users-to-setedit-alarm…
Browse files Browse the repository at this point in the history
…-volume-in-settings

Allow system alarm volume to be changed in settings screen
  • Loading branch information
ahudson20 authored Apr 9, 2024
2 parents 4ecc4b6 + b6baec9 commit d1866ff
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,6 @@ fun Modifier.verticalFadingEdge(
val bottomFadingEdgeStrength by derivedStateOf {
lazyListState.layoutInfo.run {
val lastItem = visibleItemsInfo.lastOrNull()
println(lastItem?.index)
if (lastItem == null) {
0f
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,9 @@ fun AlarmSettings(
)

SettingsListDropdown(
modifier = Modifier.height(space80).testTag(tag = "alarm vibrate drop down"),
modifier = Modifier
.height(space80)
.testTag(tag = "alarm vibrate drop down"),
enabled = preferencesState.preferences.isVibrateEnabled,
state = rememberIntSettingState(defaultValue = preferencesState.preferences.vibrationPattern.value),
title = { Text(text = stringResource(id = R.string.settings_screen_vibrate_pattern_title)) },
Expand Down
28 changes: 28 additions & 0 deletions app/src/main/java/com/app/whakaara/ui/settings/GeneralSettings.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package com.app.whakaara.ui.settings

import android.app.Activity.RESULT_OK
import android.content.Context
import android.content.Intent
import android.media.AudioManager
import android.media.RingtoneManager
import android.net.Uri
import android.provider.Settings
Expand All @@ -11,20 +13,25 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.VolumeUp
import androidx.compose.material.icons.filled.NotificationsActive
import androidx.compose.material.icons.filled.Settings
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import com.alorma.compose.settings.storage.base.rememberBooleanSettingState
import com.alorma.compose.settings.storage.base.rememberFloatSettingState
import com.alorma.compose.settings.storage.base.rememberIntSettingState
import com.alorma.compose.settings.ui.SettingsListDropdown
import com.alorma.compose.settings.ui.SettingsMenuLink
import com.alorma.compose.settings.ui.SettingsSlider
import com.alorma.compose.settings.ui.SettingsSwitch
import com.app.whakaara.R
import com.app.whakaara.data.preferences.AppTheme
Expand All @@ -37,6 +44,7 @@ import com.app.whakaara.ui.theme.ThemePreviews
import com.app.whakaara.ui.theme.WhakaaraTheme
import com.app.whakaara.utils.GeneralUtils.Companion.getNameFromUri
import com.app.whakaara.utils.constants.NotificationUtilsConstants
import kotlin.math.roundToInt

@Composable
fun GeneralSettings(
Expand All @@ -58,6 +66,9 @@ fun GeneralSettings(
putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, currentRingtoneUri)
putExtra(RingtoneManager.EXTRA_RINGTONE_DEFAULT_URI, Settings.System.DEFAULT_ALARM_ALERT_URI)
}
val audioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager
val originalAlarmVolume = remember { mutableIntStateOf(audioManager.getStreamVolume(AudioManager.STREAM_ALARM)) }
val maxValue = remember { audioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM) }

val ringtonePicker = rememberLauncherForActivityResult(
contract = ActivityResultContracts.StartActivityForResult(),
Expand Down Expand Up @@ -134,6 +145,23 @@ fun GeneralSettings(
}
)

SettingsSlider(
title = { Text(text = stringResource(id = R.string.settings_screen_alarm_volume_title, originalAlarmVolume.intValue)) },
icon = {
Icon(
imageVector = Icons.AutoMirrored.Default.VolumeUp,
contentDescription = stringResource(id = R.string.settings_screen_alarm_volume_icon)
)
},
state = rememberFloatSettingState(originalAlarmVolume.intValue.toFloat()),
steps = maxValue - 2,
valueRange = 1f..maxValue.toFloat(),
onValueChange = { value ->
originalAlarmVolume.intValue = value.roundToInt()
audioManager.setStreamVolume(AudioManager.STREAM_ALARM, originalAlarmVolume.intValue, 0)
}
)

SettingsListDropdown(
modifier = Modifier.height(space80),
state = rememberIntSettingState(defaultValue = preferencesState.preferences.appTheme.ordinal),
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,8 @@
<string name="settings_screen_upcoming_alarm_notification_time_subtitle">Time before alarm to display notification</string>
<string name="settings_screen_dynamic_theme_title">Dynamic theming</string>
<string name="settings_screen_dynamic_theme_subtitle">Use a color scheme based on your wallpaper</string>
<string name="settings_screen_alarm_volume_icon">Alarm volume slider icon</string>
<string name="settings_screen_alarm_volume_title">Alarm volume: %1$d</string>

<string name="timer_screen_hour_label">Hours</string>
<string name="timer_screen_minutes_label">Minutes</string>
Expand Down

0 comments on commit d1866ff

Please sign in to comment.