Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -560,6 +560,12 @@ class SettingsRepository(
const val KEY_ISLAND_SHOW_CONSCIOUS_GATE = "island_show_conscious_gate"
const val KEY_ISLAND_SHOW_TIME_BATTERY = "island_show_time_battery"
const val KEY_ISLAND_TIME_SHOW_SECONDS = "island_time_show_seconds"
const val KEY_ISLAND_THEMED_TEXT = "island_themed_text"
const val KEY_ISLAND_ICON_COLOR_MODE = "island_icon_color_mode"
const val KEY_ISLAND_ICON_COLOR_CUSTOM = "island_icon_color_custom"
const val KEY_ISLAND_ICON_MATERIAL_YOU = "island_icon_material_you"
const val ISLAND_ICON_COLOR_DYNAMIC = "dynamic"
const val ISLAND_ICON_COLOR_CUSTOM = "custom"
const val KEY_ISLAND_TIME_FORMAT = "island_time_format"
const val KEY_ISLAND_TIME_PERIOD = "island_time_period"
const val KEY_ISLAND_TIME_LEADING_ZERO = "island_time_leading_zero"
Expand Down Expand Up @@ -704,9 +710,10 @@ class SettingsRepository(
const val KEY_ISLAND_BORDER_OUTLINE_THICKNESS = "island_border_outline_thickness"
const val KEY_ISLAND_BORDER_OUTLINE_HIDE_EXPANDED = "island_border_outline_hide_expanded"
const val KEY_ISLAND_PULSE_SHADOW_ON_NOTIFICATION = "island_pulse_shadow_on_notification"
const val KEY_ISLAND_PULSE_SHADOW_SIZE = "island_pulse_shadow_size"
const val KEY_ISLAND_PULSE_SHADOW_Y_SHIFT = "island_pulse_shadow_y_shift"
const val KEY_ISLAND_PULSE_SHADOW_SPREAD = "island_pulse_shadow_spread"
const val KEY_ISLAND_PULSE_SHADOW_BLUR = "island_pulse_shadow_blur"
const val KEY_ISLAND_PULSE_SHADOW_SPREAD_DP = "island_pulse_shadow_spread_dp"
const val KEY_ISLAND_PULSE_SHADOW_OFFSET_Y = "island_pulse_shadow_offset_y"
const val KEY_ISLAND_PULSE_SHADOW_OPACITY = "island_pulse_shadow_opacity"
const val KEY_ISLAND_PULSE_SHADOW_DURATION_MS = "island_pulse_shadow_duration_ms"
const val ISLAND_BORDER_OUTLINE_DEFAULT_COLOR = "#202020"

Expand Down Expand Up @@ -4072,14 +4079,17 @@ class SettingsRepository(
fun isIslandPulseShadowEnabled(): Boolean = getBoolean(KEY_ISLAND_PULSE_SHADOW_ON_NOTIFICATION, false)
fun setIslandPulseShadowEnabled(enabled: Boolean) = putBoolean(KEY_ISLAND_PULSE_SHADOW_ON_NOTIFICATION, enabled)

fun getIslandPulseShadowSize(): Float = getFloat(KEY_ISLAND_PULSE_SHADOW_SIZE, 0.5f)
fun setIslandPulseShadowSize(value: Float) = putFloat(KEY_ISLAND_PULSE_SHADOW_SIZE, value)
fun getIslandPulseShadowBlur(): Float = getFloat(KEY_ISLAND_PULSE_SHADOW_BLUR, 20f)
fun setIslandPulseShadowBlur(value: Float) = putFloat(KEY_ISLAND_PULSE_SHADOW_BLUR, value)

fun getIslandPulseShadowYShift(): Float = getFloat(KEY_ISLAND_PULSE_SHADOW_Y_SHIFT, 0.35f)
fun setIslandPulseShadowYShift(value: Float) = putFloat(KEY_ISLAND_PULSE_SHADOW_Y_SHIFT, value)
fun getIslandPulseShadowSpread(): Float = getFloat(KEY_ISLAND_PULSE_SHADOW_SPREAD_DP, 6f)
fun setIslandPulseShadowSpread(value: Float) = putFloat(KEY_ISLAND_PULSE_SHADOW_SPREAD_DP, value)

fun getIslandPulseShadowSpread(): Float = getFloat(KEY_ISLAND_PULSE_SHADOW_SPREAD, 2f)
fun setIslandPulseShadowSpread(value: Float) = putFloat(KEY_ISLAND_PULSE_SHADOW_SPREAD, value)
fun getIslandPulseShadowOffsetY(): Float = getFloat(KEY_ISLAND_PULSE_SHADOW_OFFSET_Y, 1f)
fun setIslandPulseShadowOffsetY(value: Float) = putFloat(KEY_ISLAND_PULSE_SHADOW_OFFSET_Y, value)

fun getIslandPulseShadowOpacity(): Float = getFloat(KEY_ISLAND_PULSE_SHADOW_OPACITY, 0.35f)
fun setIslandPulseShadowOpacity(value: Float) = putFloat(KEY_ISLAND_PULSE_SHADOW_OPACITY, value)

fun getIslandPulseShadowDurationMs(): Float = getFloat(KEY_ISLAND_PULSE_SHADOW_DURATION_MS, 1450f)
fun setIslandPulseShadowDurationMs(value: Float) = putFloat(KEY_ISLAND_PULSE_SHADOW_DURATION_MS, value)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ import com.sameerasw.essentials.island.model.IslandItem
import com.sameerasw.essentials.island.model.IslandPriority
import com.sameerasw.essentials.island.plugins.BaseIslandPlugin
import com.sameerasw.essentials.island.ui.IslandTextStyles
import com.sameerasw.essentials.island.ui.islandTextColor
import com.sameerasw.essentials.island.ui.components.BatteryGlyph
import com.sameerasw.essentials.island.ui.components.BatteryRing
import com.sameerasw.essentials.island.ui.components.CameraRow
Expand Down Expand Up @@ -584,7 +585,7 @@ private fun BriefEventRow(event: UpcomingCalendarEvent, now: Long, accent: Color
Column(Modifier.weight(1f)) {
Text(
text = event.title,
style = IslandTextStyles.body.copy(color = Color.White, fontSize = 15.sp),
style = IslandTextStyles.body.copy(color = islandTextColor(), fontSize = 15.sp),
maxLines = 1,
overflow = TextOverflow.Ellipsis,
)
Expand Down Expand Up @@ -628,7 +629,7 @@ private fun BriefPlayer(media: MediaSnapshot, artwork: ImageBitmap?, onClick: ()
}
Spacer(Modifier.width(12.dp))
Column(Modifier.weight(1f)) {
MarqueeText(text = media.title, style = IslandTextStyles.body.copy(color = Color.White, fontSize = 15.sp))
MarqueeText(text = media.title, style = IslandTextStyles.body.copy(color = islandTextColor(), fontSize = 15.sp))
MarqueeText(text = media.artist, style = IslandTextStyles.body)
}
media.actions.like?.let {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ import com.sameerasw.essentials.R
import com.sameerasw.essentials.island.model.IslandExpandedScope
import com.sameerasw.essentials.island.plugins.soften
import com.sameerasw.essentials.island.ui.IslandTextStyles
import com.sameerasw.essentials.island.ui.islandTextColor
import com.sameerasw.essentials.island.ui.components.CameraRow
import com.sameerasw.essentials.island.ui.components.ConnectedButtonRow
import com.sameerasw.essentials.island.ui.components.ConnectedItem
Expand Down Expand Up @@ -68,7 +69,7 @@ fun CalendarExpanded(
"${timeFormat.format(Date(event.startTimeMillis))} – ${timeFormat.format(Date(event.endTimeMillis))}"
else -> timeFormat.format(Date(event.startTimeMillis))
}
val detailStyle = IslandTextStyles.body.copy(color = Color.White, fontSize = 15.sp, lineHeight = 20.sp)
val detailStyle = IslandTextStyles.body.copy(color = islandTextColor(), fontSize = 15.sp, lineHeight = 20.sp)

Box(propagateMinConstraints = true) {
if (drawBackground && !SurfaceBackdrop { Box(Modifier.fillMaxSize().accentGlow(calendarColor, showGlow, scope.cameraClearance)) }) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import com.sameerasw.essentials.domain.model.NavigationNotificationData
import com.sameerasw.essentials.island.model.IslandExpandedScope
import com.sameerasw.essentials.island.ui.IslandLayoutSpec
import com.sameerasw.essentials.island.ui.IslandTextStyles
import com.sameerasw.essentials.island.ui.islandTextColor
import com.sameerasw.essentials.island.ui.components.CameraRow
import com.sameerasw.essentials.island.ui.components.ConnectedButtonRow
import com.sameerasw.essentials.island.ui.components.ConnectedItem
Expand Down Expand Up @@ -53,7 +54,7 @@ fun NavigationExpanded(
Spacer(Modifier.height(8.dp))
Text(
text = data.instruction,
style = IslandTextStyles.title.copy(color = Color.White, fontSize = 20.sp, lineHeight = 25.sp),
style = IslandTextStyles.title.copy(color = islandTextColor(), fontSize = 20.sp, lineHeight = 25.sp),
maxLines = 2,
overflow = TextOverflow.Ellipsis,
modifier = Modifier.fillMaxWidth().padding(horizontal = sidePadding),
Expand All @@ -63,7 +64,7 @@ fun NavigationExpanded(
Spacer(Modifier.height(2.dp))
Text(
text = data.eta,
style = IslandTextStyles.body.copy(color = Color.White.copy(alpha = 0.7f)),
style = IslandTextStyles.body.copy(color = islandTextColor(0.7f)),
maxLines = 1,
overflow = TextOverflow.Ellipsis,
modifier = Modifier.fillMaxWidth().padding(horizontal = sidePadding),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ import com.sameerasw.essentials.domain.model.ActiveNotificationAlert
import com.sameerasw.essentials.domain.model.NotificationActionItem
import com.sameerasw.essentials.island.model.IslandExpandedScope
import com.sameerasw.essentials.island.ui.IslandTextStyles
import com.sameerasw.essentials.island.ui.islandTextColor
import com.sameerasw.essentials.island.ui.components.CameraRow
import com.sameerasw.essentials.island.ui.components.ConnectedButtonRow
import com.sameerasw.essentials.island.ui.components.ConnectedItem
Expand Down Expand Up @@ -111,7 +112,7 @@ fun NotificationExpanded(
Spacer(Modifier.height(4.dp))
Text(
text = message,
style = IslandTextStyles.body.copy(color = Color.White, fontSize = 15.sp, lineHeight = 20.sp),
style = IslandTextStyles.body.copy(color = islandTextColor(), fontSize = 15.sp, lineHeight = 20.sp),
maxLines = 7,
overflow = TextOverflow.Ellipsis,
modifier = Modifier.fillMaxWidth().padding(horizontal = sidePadding),
Expand Down Expand Up @@ -205,7 +206,7 @@ private fun ReplyField(
scope.keepAlive()
},
singleLine = true,
textStyle = IslandTextStyles.body.copy(color = Color.White, fontSize = 15.sp),
textStyle = IslandTextStyles.body.copy(color = islandTextColor(), fontSize = 15.sp),
cursorBrush = SolidColor(accent),
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Send, capitalization = KeyboardCapitalization.Sentences),
keyboardActions = KeyboardActions(onSend = { send() }),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import androidx.compose.ui.unit.sp
import com.sameerasw.essentials.R
import com.sameerasw.essentials.island.model.IslandExpandedScope
import com.sameerasw.essentials.island.ui.IslandTextStyles
import com.sameerasw.essentials.island.ui.islandTextColor
import com.sameerasw.essentials.island.ui.components.CameraRow
import com.sameerasw.essentials.island.ui.components.ConnectedButtonRow
import com.sameerasw.essentials.island.ui.components.ConnectedItem
Expand Down Expand Up @@ -51,14 +52,14 @@ fun ProgressExpanded(
MarqueeText(text = title, style = IslandTextStyles.title, modifier = Modifier.weight(1f))
},
end = {
if (!indeterminate) Text("${(progress * 100).toInt()}%", style = IslandTextStyles.body.copy(color = Color.White))
if (!indeterminate) Text("${(progress * 100).toInt()}%", style = IslandTextStyles.body.copy(color = islandTextColor()))
},
)
if (!text.isNullOrBlank()) {
Spacer(Modifier.height(4.dp))
Text(
text = text,
style = IslandTextStyles.body.copy(color = Color.White, fontSize = 15.sp, lineHeight = 20.sp),
style = IslandTextStyles.body.copy(color = islandTextColor(), fontSize = 15.sp, lineHeight = 20.sp),
maxLines = 3,
overflow = TextOverflow.Ellipsis,
modifier = Modifier.fillMaxWidth().padding(horizontal = sidePadding),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import androidx.compose.ui.text.rememberTextMeasurer
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.sameerasw.essentials.island.ui.IslandTextStyles
import com.sameerasw.essentials.island.ui.components.resolveIconTint

private const val LABEL_SHIFT_X = 0.15f
private const val LABEL_SHIFT_Y = 0.15f
Expand Down Expand Up @@ -64,7 +65,8 @@ fun SignalBars(level: Int, color: Color, label: String?, modifier: Modifier = Mo
}

@Composable
fun SignalIndicator(wifiLevel: Int?, mobileLevel: Int, color: Color, label: String?, modifier: Modifier = Modifier) {
fun SignalIndicator(wifiLevel: Int?, mobileLevel: Int, rawColor: Color, label: String?, modifier: Modifier = Modifier) {
val color = resolveIconTint(rawColor)
AnimatedContent(
targetState = wifiLevel,
transitionSpec = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import com.sameerasw.essentials.island.model.IslandPriority
import com.sameerasw.essentials.island.model.LineContent
import com.sameerasw.essentials.island.plugins.BaseIslandPlugin
import com.sameerasw.essentials.island.ui.IslandTextStyles
import com.sameerasw.essentials.island.ui.islandTextColor
import com.sameerasw.essentials.island.ui.components.CameraRow
import com.sameerasw.essentials.island.ui.components.ConnectedButtonRow
import com.sameerasw.essentials.island.ui.components.ConnectedItem
Expand Down Expand Up @@ -148,7 +149,7 @@ class TravelPlugin : BaseIslandPlugin() {
Spacer(Modifier.height(4.dp))
Text(
text = trip.time,
style = IslandTextStyles.body.copy(color = Color.White, fontSize = 15.sp, lineHeight = 20.sp),
style = IslandTextStyles.body.copy(color = islandTextColor(), fontSize = 15.sp, lineHeight = 20.sp),
modifier = Modifier.fillMaxWidth().padding(horizontal = sidePadding),
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.sameerasw.essentials.island.ui.IslandTextStyles
import com.sameerasw.essentials.island.ui.islandTextColor
import com.sameerasw.island.sdk.BriefCardPayload
import com.sameerasw.island.sdk.IslandSurfaceKey
import kotlinx.coroutines.flow.MutableStateFlow
Expand Down Expand Up @@ -66,7 +67,7 @@ fun RemoteBriefCardRow(card: RemoteBriefCard, onClick: () -> Unit, modifier: Mod
Spacer(Modifier.width(12.dp))
Text(
text = payload.subtitle.orEmpty(),
style = IslandTextStyles.body.copy(color = Color.White, fontSize = 14.sp),
style = IslandTextStyles.body.copy(color = islandTextColor(), fontSize = 14.sp),
maxLines = 2,
overflow = TextOverflow.Ellipsis,
modifier = Modifier.weight(1f),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -670,6 +670,8 @@ class IslandCoordinator(
val scale = if (flatExpanded) 1f else settings.getIslandExpandedScale().coerceIn(1f, 1.3f)
val lineWidth = minOf(settings.getIslandMaxWidth(), available)
val expandedWidth = minOf(settings.getIslandExpandedWidth(), available / scale)
val iconCustomMode = settings.getString(SettingsRepository.KEY_ISLAND_ICON_COLOR_MODE, null) == SettingsRepository.ISLAND_ICON_COLOR_CUSTOM
val iconMaterialYou = settings.getBoolean(SettingsRepository.KEY_ISLAND_ICON_MATERIAL_YOU, true)
spec.value = IslandLayoutSpec(
cameraDiameter = (geo.diameter / density).dp,
cameraGap = (geo.gap / density).dp,
Expand Down Expand Up @@ -700,15 +702,26 @@ class IslandCoordinator(
outlineThickness = settings.getIslandBorderOutlineThickness().coerceIn(1f, 5f).dp,
outlineHiddenWhenExpanded = settings.isIslandBorderOutlineHiddenWhenExpanded(),
pulseShadow = settings.isIslandPulseShadowEnabled(),
pulseSize = settings.getIslandPulseShadowSize().coerceIn(0.2f, 1f),
pulseYShift = settings.getIslandPulseShadowYShift().coerceIn(0f, 1f),
pulseSpread = settings.getIslandPulseShadowSpread().coerceIn(1f, 4f),
pulseBlur = settings.getIslandPulseShadowBlur().coerceIn(0f, 48f).dp,
pulseSpread = settings.getIslandPulseShadowSpread().coerceIn(0f, 24f).dp,
pulseOffsetY = settings.getIslandPulseShadowOffsetY().coerceIn(-8f, 16f).dp,
pulseOpacity = settings.getIslandPulseShadowOpacity().coerceIn(0.1f, 1f),
pulseDurationMs = settings.getIslandPulseShadowDurationMs().coerceIn(300f, 4000f).toInt(),
queueStyle = when (settings.getIslandNotifQueueStyle()) {
SettingsRepository.ISLAND_NOTIF_QUEUE_STYLE_OVERLAP -> QueueStyle.Overlap
else -> QueueStyle.Stack
},
queueInline = settings.isIslandNotifQueueInlineEnabled(),
iconColorCustom = if (iconCustomMode && !iconMaterialYou) {
runCatching {
Color(AndroidColor.parseColor(settings.getString(SettingsRepository.KEY_ISLAND_ICON_COLOR_CUSTOM, null) ?: "#FFFFFF"))
}.getOrDefault(Color.White)
} else {
null
},
iconDynamic = !iconCustomMode,
themedText = settings.getBoolean(SettingsRepository.KEY_ISLAND_THEMED_TEXT, false),
iconMaterialYou = iconMaterialYou,
)
windowHost.maxWidthPx = (maxOf(lineWidth, expandedWidth * scale) * density).toInt()
windowHost.updateGeometry(geo)
Expand Down Expand Up @@ -819,15 +832,20 @@ class IslandCoordinator(
SettingsRepository.KEY_ISLAND_MAX_WIDTH,
SettingsRepository.KEY_ISLAND_CUTOUT_GAP,
SettingsRepository.KEY_ISLAND_EXPANDED_WIDTH,
SettingsRepository.KEY_ISLAND_ICON_COLOR_MODE,
SettingsRepository.KEY_ISLAND_ICON_COLOR_CUSTOM,
SettingsRepository.KEY_ISLAND_ICON_MATERIAL_YOU,
SettingsRepository.KEY_ISLAND_THEMED_TEXT,
SettingsRepository.KEY_ISLAND_BORDER_OUTLINE_ENABLED,
SettingsRepository.KEY_ISLAND_BORDER_OUTLINE_COLOR,
SettingsRepository.KEY_ISLAND_BORDER_OUTLINE_DYNAMIC,
SettingsRepository.KEY_ISLAND_BORDER_OUTLINE_THICKNESS,
SettingsRepository.KEY_ISLAND_BORDER_OUTLINE_HIDE_EXPANDED,
SettingsRepository.KEY_ISLAND_PULSE_SHADOW_ON_NOTIFICATION,
SettingsRepository.KEY_ISLAND_PULSE_SHADOW_SIZE,
SettingsRepository.KEY_ISLAND_PULSE_SHADOW_Y_SHIFT,
SettingsRepository.KEY_ISLAND_PULSE_SHADOW_SPREAD,
SettingsRepository.KEY_ISLAND_PULSE_SHADOW_BLUR,
SettingsRepository.KEY_ISLAND_PULSE_SHADOW_SPREAD_DP,
SettingsRepository.KEY_ISLAND_PULSE_SHADOW_OFFSET_Y,
SettingsRepository.KEY_ISLAND_PULSE_SHADOW_OPACITY,
SettingsRepository.KEY_ISLAND_PULSE_SHADOW_DURATION_MS,
SettingsRepository.KEY_ISLAND_EXPANDED_ROUNDNESS,
SettingsRepository.KEY_ISLAND_EXPANDED_PADDING,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,17 @@ data class IslandLayoutSpec(
val outlineThickness: Dp = 1.dp,
val outlineHiddenWhenExpanded: Boolean = false,
val pulseShadow: Boolean = false,
val pulseSize: Float = 0.5f,
val pulseYShift: Float = 0.35f,
val pulseSpread: Float = 2f,
val pulseBlur: Dp = 20.dp,
val pulseSpread: Dp = 6.dp,
val pulseOffsetY: Dp = 1.dp,
val pulseOpacity: Float = 0.35f,
val pulseDurationMs: Int = 1450,
val queueStyle: QueueStyle = QueueStyle.Stack,
val queueInline: Boolean = false,
val iconColorCustom: Color? = null,
val iconDynamic: Boolean = true,
val themedText: Boolean = false,
val iconMaterialYou: Boolean = true,
) {
val compactHeight: Dp get() = cameraDiameter + verticalGap * 2
val cameraSlotWidth: Dp get() = (cameraDiameter + cameraGap * 2) * cameraPresence
Expand Down
Loading
Loading