Added icons to main screen menu items
This commit is contained in:
@ -72,6 +72,7 @@ import androidx.compose.ui.platform.SoftwareKeyboardController
|
|||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.text.TextStyle
|
import androidx.compose.ui.text.TextStyle
|
||||||
import androidx.compose.ui.text.input.KeyboardType
|
import androidx.compose.ui.text.input.KeyboardType
|
||||||
|
import androidx.compose.ui.graphics.vector.ImageVector
|
||||||
import androidx.compose.ui.text.input.PasswordVisualTransformation
|
import androidx.compose.ui.text.input.PasswordVisualTransformation
|
||||||
import androidx.compose.ui.text.input.VisualTransformation
|
import androidx.compose.ui.text.input.VisualTransformation
|
||||||
import androidx.compose.ui.text.style.TextAlign
|
import androidx.compose.ui.text.style.TextAlign
|
||||||
@ -79,6 +80,12 @@ import androidx.compose.ui.unit.Dp
|
|||||||
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.DialogProperties
|
import androidx.compose.ui.window.DialogProperties
|
||||||
|
import kotlin.jvm.JvmName
|
||||||
|
|
||||||
|
data class MenuItem(
|
||||||
|
val text: String,
|
||||||
|
val icon: ImageVector? = null
|
||||||
|
)
|
||||||
|
|
||||||
object CustomElements {
|
object CustomElements {
|
||||||
|
|
||||||
@ -118,28 +125,53 @@ object CustomElements {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
|
@JvmName("DropdownMenuString")
|
||||||
fun DropdownMenu(
|
fun DropdownMenu(
|
||||||
expanded: Boolean,
|
expanded: Boolean,
|
||||||
onDismissRequest: () -> Unit,
|
onDismissRequest: () -> Unit,
|
||||||
items: List<String>,
|
items: List<String>,
|
||||||
onItemClick: (String) -> Unit
|
onItemClick: (String) -> Unit
|
||||||
|
) {
|
||||||
|
DropdownMenu(
|
||||||
|
expanded = expanded,
|
||||||
|
onDismissRequest = onDismissRequest,
|
||||||
|
menuItems = items.map { MenuItem(it) },
|
||||||
|
onItemClick = onItemClick
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun DropdownMenu(
|
||||||
|
expanded: Boolean,
|
||||||
|
onDismissRequest: () -> Unit,
|
||||||
|
menuItems: List<MenuItem>,
|
||||||
|
onItemClick: (String) -> Unit
|
||||||
) {
|
) {
|
||||||
DropdownMenu(
|
DropdownMenu(
|
||||||
expanded = expanded,
|
expanded = expanded,
|
||||||
onDismissRequest = onDismissRequest,
|
onDismissRequest = onDismissRequest,
|
||||||
containerColor = MaterialTheme.colorScheme.surfaceVariant
|
containerColor = MaterialTheme.colorScheme.surfaceVariant
|
||||||
) {
|
) {
|
||||||
val itemsIterator = items.iterator()
|
val itemsIterator = menuItems.iterator()
|
||||||
while (itemsIterator.hasNext()) {
|
while (itemsIterator.hasNext()) {
|
||||||
val item = itemsIterator.next()
|
val menuItem = itemsIterator.next()
|
||||||
DropdownMenuItem(
|
DropdownMenuItem(
|
||||||
text = {
|
text = {
|
||||||
Text(
|
Text(
|
||||||
text = item,
|
text = menuItem.text,
|
||||||
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||||
fontSize = 16.sp
|
fontSize = 16.sp
|
||||||
) },
|
)
|
||||||
onClick = { onItemClick(item) }
|
},
|
||||||
|
leadingIcon = {
|
||||||
|
if (menuItem.icon != null)
|
||||||
|
Icon(
|
||||||
|
imageVector = menuItem.icon,
|
||||||
|
contentDescription = null,
|
||||||
|
tint = MaterialTheme.colorScheme.onSurfaceVariant
|
||||||
|
)
|
||||||
|
},
|
||||||
|
onClick = { onItemClick(menuItem.text) }
|
||||||
)
|
)
|
||||||
if (itemsIterator.hasNext())
|
if (itemsIterator.hasNext())
|
||||||
HorizontalDivider(color = MaterialTheme.colorScheme.outlineVariant)
|
HorizontalDivider(color = MaterialTheme.colorScheme.outlineVariant)
|
||||||
|
|||||||
@ -62,6 +62,8 @@ import androidx.compose.foundation.text.KeyboardOptions
|
|||||||
import androidx.compose.foundation.verticalScroll
|
import androidx.compose.foundation.verticalScroll
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.automirrored.filled.Chat
|
import androidx.compose.material.icons.automirrored.filled.Chat
|
||||||
|
import androidx.compose.material.icons.automirrored.filled.Logout
|
||||||
|
import androidx.compose.material.icons.automirrored.outlined.ReceiptLong
|
||||||
import androidx.compose.material.icons.filled.AddIcCall
|
import androidx.compose.material.icons.filled.AddIcCall
|
||||||
import androidx.compose.material.icons.filled.Call
|
import androidx.compose.material.icons.filled.Call
|
||||||
import androidx.compose.material.icons.filled.CallEnd
|
import androidx.compose.material.icons.filled.CallEnd
|
||||||
@ -81,8 +83,16 @@ import androidx.compose.material.icons.filled.VoiceOverOff
|
|||||||
import androidx.compose.material.icons.filled.Voicemail
|
import androidx.compose.material.icons.filled.Voicemail
|
||||||
import androidx.compose.material.icons.outlined.ArrowCircleRight
|
import androidx.compose.material.icons.outlined.ArrowCircleRight
|
||||||
import androidx.compose.material.icons.outlined.Clear
|
import androidx.compose.material.icons.outlined.Clear
|
||||||
|
import androidx.compose.material.icons.outlined.Download
|
||||||
import androidx.compose.material.icons.outlined.Info
|
import androidx.compose.material.icons.outlined.Info
|
||||||
|
import androidx.compose.material.icons.outlined.ManageAccounts
|
||||||
import androidx.compose.material.icons.outlined.PauseCircle
|
import androidx.compose.material.icons.outlined.PauseCircle
|
||||||
|
import androidx.compose.material.icons.outlined.Receipt
|
||||||
|
import androidx.compose.material.icons.outlined.ReceiptLong
|
||||||
|
import androidx.compose.material.icons.outlined.RestartAlt
|
||||||
|
import androidx.compose.material.icons.outlined.Settings
|
||||||
|
import androidx.compose.material.icons.outlined.Terminal
|
||||||
|
import androidx.compose.material.icons.outlined.Upload
|
||||||
import androidx.compose.material3.BasicAlertDialog
|
import androidx.compose.material3.BasicAlertDialog
|
||||||
import androidx.compose.material3.ButtonColors
|
import androidx.compose.material3.ButtonColors
|
||||||
import androidx.compose.material3.Card
|
import androidx.compose.material3.Card
|
||||||
@ -673,10 +683,16 @@ private fun TopAppBar(
|
|||||||
DropdownMenu(
|
DropdownMenu(
|
||||||
expanded = menuExpanded,
|
expanded = menuExpanded,
|
||||||
onDismissRequest = { menuExpanded = false },
|
onDismissRequest = { menuExpanded = false },
|
||||||
items = if (VERSION.SDK_INT >= 29)
|
menuItems = listOfNotNull(
|
||||||
listOf(about, settings, accounts, backup, restore, logcat, restart, quit)
|
MenuItem(about, Icons.Outlined.Info),
|
||||||
else
|
MenuItem(settings, Icons.Outlined.Settings),
|
||||||
listOf(about, settings, accounts, backup, restore, restart, quit),
|
MenuItem(accounts, Icons.Outlined.ManageAccounts),
|
||||||
|
MenuItem(backup, Icons.Outlined.Upload),
|
||||||
|
MenuItem(restore, Icons.Outlined.Download),
|
||||||
|
if (VERSION.SDK_INT >= 29) MenuItem(logcat, Icons.AutoMirrored.Outlined.ReceiptLong) else null,
|
||||||
|
MenuItem(restart, Icons.Outlined.RestartAlt),
|
||||||
|
MenuItem(quit, Icons.AutoMirrored.Filled.Logout)
|
||||||
|
),
|
||||||
onItemClick = { selectedItem ->
|
onItemClick = { selectedItem ->
|
||||||
menuExpanded = false
|
menuExpanded = false
|
||||||
when (selectedItem) {
|
when (selectedItem) {
|
||||||
|
|||||||
Reference in New Issue
Block a user