Приведен стиль меню в группах к единому стилю приложения

This commit is contained in:
2026-03-18 20:46:43 +05:00
parent 8b48812865
commit fbae1283ca

View File

@@ -44,8 +44,6 @@ import androidx.compose.foundation.lazy.itemsIndexed
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.text.selection.SelectionContainer import androidx.compose.foundation.text.selection.SelectionContainer
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import compose.icons.TablerIcons
import compose.icons.tablericons.Code
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
@@ -61,10 +59,10 @@ import androidx.compose.material.icons.filled.Search
import androidx.compose.material3.AlertDialog import androidx.compose.material3.AlertDialog
import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.DropdownMenu import androidx.compose.material3.DropdownMenu
import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.Divider import androidx.compose.material3.Divider
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.Surface import androidx.compose.material3.Surface
import androidx.compose.material3.Tab import androidx.compose.material3.Tab
@@ -93,6 +91,7 @@ import androidx.compose.ui.draw.clipToBounds
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.geometry.Size import androidx.compose.ui.geometry.Size
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.graphics.toArgb
import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.platform.LocalFocusManager
@@ -110,6 +109,7 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.IntOffset
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import androidx.compose.ui.window.PopupProperties
import com.airbnb.lottie.compose.LottieAnimation import com.airbnb.lottie.compose.LottieAnimation
import com.airbnb.lottie.compose.LottieCompositionSpec import com.airbnb.lottie.compose.LottieCompositionSpec
import com.airbnb.lottie.compose.LottieConstants import com.airbnb.lottie.compose.LottieConstants
@@ -1010,52 +1010,71 @@ fun GroupInfoScreen(
tint = Color.White tint = Color.White
) )
} }
DropdownMenu( val menuBgColor = if (isDarkTheme) Color(0xFF272829) else Color.White
expanded = showMenu, val menuTextColor = if (isDarkTheme) Color.White else Color(0xFF222222)
onDismissRequest = { showMenu = false } val menuIconColor = if (isDarkTheme) Color.White.copy(alpha = 0.47f) else Color(0xFF676B70)
val menuDividerColor = if (isDarkTheme) Color(0xFF1C1D1F) else Color(0xFFF5F5F5)
val menuDangerColor = Color(0xFFFF3B30)
MaterialTheme(
colorScheme = MaterialTheme.colorScheme.copy(
surface = menuBgColor,
onSurface = menuTextColor
)
) { ) {
DropdownMenuItem( DropdownMenu(
text = { Text("Search members") }, expanded = showMenu,
leadingIcon = { onDismissRequest = { showMenu = false },
Icon(Icons.Default.Search, contentDescription = null) modifier = Modifier.widthIn(min = 196.dp).background(menuBgColor),
}, properties = PopupProperties(
onClick = { focusable = true,
showMenu = false dismissOnBackPress = true,
selectedTab = GroupInfoTab.MEMBERS dismissOnClickOutside = true
showSearch = true )
} ) {
) GroupInfoMenuItem(
DropdownMenuItem( icon = Icons.Default.Search,
text = { Text("Copy invite") }, text = "Search members",
leadingIcon = { tintColor = menuIconColor,
Icon(Icons.Default.PersonAdd, contentDescription = null) textColor = menuTextColor,
}, onClick = {
onClick = { showMenu = false
showMenu = false selectedTab = GroupInfoTab.MEMBERS
copyInvite() showSearch = true
} }
) )
DropdownMenuItem( GroupInfoMenuItem(
text = { Text("Encryption key") }, icon = Icons.Default.PersonAdd,
leadingIcon = { text = "Copy invite",
Icon(Icons.Default.Lock, contentDescription = null) tintColor = menuIconColor,
}, textColor = menuTextColor,
onClick = { onClick = {
showMenu = false showMenu = false
openEncryptionKey() copyInvite()
} }
) )
Divider() GroupInfoMenuItem(
DropdownMenuItem( icon = Icons.Default.Lock,
text = { Text("Leave group", color = Color(0xFFFF3B30)) }, text = "Encryption key",
leadingIcon = { tintColor = menuIconColor,
Icon(Icons.Default.ExitToApp, contentDescription = null, tint = Color(0xFFFF3B30)) textColor = menuTextColor,
}, onClick = {
onClick = { showMenu = false
showMenu = false openEncryptionKey()
showLeaveConfirm = true }
} )
) Divider(color = menuDividerColor)
GroupInfoMenuItem(
icon = Icons.Default.ExitToApp,
text = "Leave group",
tintColor = menuDangerColor,
textColor = menuDangerColor,
onClick = {
showMenu = false
showLeaveConfirm = true
}
)
}
} }
} }
@@ -1821,6 +1840,39 @@ private fun GroupEncryptionKeyPage(
} }
} }
@Composable
private fun GroupInfoMenuItem(
icon: ImageVector,
text: String,
tintColor: Color,
textColor: Color,
onClick: () -> Unit
) {
Box(
modifier = Modifier
.fillMaxWidth()
.height(48.dp)
.clickable(onClick = onClick)
.padding(horizontal = 18.dp),
contentAlignment = Alignment.CenterStart
) {
Row(verticalAlignment = Alignment.CenterVertically) {
Icon(
imageVector = icon,
contentDescription = null,
tint = tintColor,
modifier = Modifier.size(24.dp)
)
Spacer(modifier = Modifier.width(19.dp))
Text(
text = text,
color = textColor,
fontSize = 16.sp
)
}
}
}
@Composable @Composable
private fun GroupActionButton( private fun GroupActionButton(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,