@@ -12,7 +12,10 @@ package com.nextcloud.talk.conversationinfo.ui
1212import android.content.res.Configuration
1313import android.widget.ImageView
1414import androidx.annotation.DrawableRes
15+ import androidx.compose.animation.animateColorAsState
16+ import androidx.compose.animation.core.tween
1517import androidx.compose.foundation.background
18+ import androidx.compose.foundation.border
1619import androidx.compose.foundation.clickable
1720import androidx.compose.foundation.isSystemInDarkTheme
1821import androidx.compose.foundation.layout.Arrangement
@@ -32,9 +35,11 @@ import androidx.compose.foundation.layout.padding
3235import androidx.compose.foundation.layout.safeDrawing
3336import androidx.compose.foundation.layout.size
3437import androidx.compose.foundation.layout.width
38+ import androidx.compose.foundation.layout.wrapContentSize
3539import androidx.compose.foundation.lazy.LazyColumn
3640import androidx.compose.foundation.lazy.items
3741import androidx.compose.foundation.shape.CircleShape
42+ import androidx.compose.foundation.shape.RoundedCornerShape
3843import androidx.compose.material.icons.Icons
3944import androidx.compose.material.icons.automirrored.outlined.ArrowBack
4045import androidx.compose.material3.Card
@@ -53,6 +58,7 @@ import androidx.compose.material3.TopAppBarDefaults
5358import androidx.compose.material3.darkColorScheme
5459import androidx.compose.material3.lightColorScheme
5560import androidx.compose.runtime.Composable
61+ import androidx.compose.runtime.getValue
5662import androidx.compose.runtime.remember
5763import androidx.compose.ui.Alignment
5864import androidx.compose.ui.Modifier
@@ -485,15 +491,33 @@ private fun NotificationSettingsSection(state: ConversationInfoUiState, callback
485491 else -> R .string.nc_conversation_notification_bubble_desc
486492 }
487493
488- // TODO - grey this out when global bubbles aren't enabled
489- // TODO - focusedBubbleSetting should cause this to be focused and highlighted
490-
491- SettingsRow (
492- title = stringResource(R .string.nc_notification_settings_bubbles),
493- subtitle = stringResource(bubbleSummaryText),
494- checked = state.shouldBubble,
495- onClick = callbacks.onBubbleClick
494+ val highlightColor by animateColorAsState(
495+ targetValue = if (state.focusBubbleSetting) {
496+ MaterialTheme .colorScheme.primary
497+ } else {
498+ Color .Transparent
499+ },
500+ animationSpec = tween(durationMillis = 500 )
496501 )
502+
503+ Box (
504+ modifier = Modifier
505+ .wrapContentSize()
506+ .alpha(if (state.globalBubblesEnabled && ! state.forceAllBubbles) 1.0f else 0.5f )
507+ .border(
508+ width = 2 .dp,
509+ color = highlightColor,
510+ shape = RoundedCornerShape (8 .dp)
511+ )
512+ .padding(2 .dp)
513+ ) {
514+ SettingsRow (
515+ title = stringResource(R .string.nc_notification_settings_bubbles),
516+ subtitle = stringResource(bubbleSummaryText),
517+ checked = state.shouldBubble,
518+ onClick = callbacks.onBubbleClick
519+ )
520+ }
497521 }
498522 if (state.showSensitiveConversation) {
499523 SettingsRow (
0 commit comments