Simplifies navigation row
This commit is contained in:
+70
-45
@@ -20,18 +20,23 @@
|
|||||||
*/
|
*/
|
||||||
package com.vitorpamplona.amethyst.ui.navigation.drawer
|
package com.vitorpamplona.amethyst.ui.navigation.drawer
|
||||||
|
|
||||||
import androidx.compose.foundation.Image
|
import androidx.compose.foundation.BorderStroke
|
||||||
|
import androidx.compose.foundation.background
|
||||||
import androidx.compose.foundation.border
|
import androidx.compose.foundation.border
|
||||||
import androidx.compose.foundation.clickable
|
import androidx.compose.foundation.clickable
|
||||||
|
import androidx.compose.foundation.interaction.MutableInteractionSource
|
||||||
import androidx.compose.foundation.layout.Box
|
import androidx.compose.foundation.layout.Box
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
|
import androidx.compose.foundation.layout.IntrinsicSize
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.Spacer
|
import androidx.compose.foundation.layout.Spacer
|
||||||
import androidx.compose.foundation.layout.WindowInsets
|
import androidx.compose.foundation.layout.WindowInsets
|
||||||
import androidx.compose.foundation.layout.WindowInsetsSides
|
import androidx.compose.foundation.layout.WindowInsetsSides
|
||||||
|
import androidx.compose.foundation.layout.defaultMinSize
|
||||||
import androidx.compose.foundation.layout.fillMaxHeight
|
import androidx.compose.foundation.layout.fillMaxHeight
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.height
|
import androidx.compose.foundation.layout.height
|
||||||
|
import androidx.compose.foundation.layout.offset
|
||||||
import androidx.compose.foundation.layout.only
|
import androidx.compose.foundation.layout.only
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
@@ -39,6 +44,7 @@ import androidx.compose.foundation.layout.systemBars
|
|||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
import androidx.compose.foundation.rememberScrollState
|
import androidx.compose.foundation.rememberScrollState
|
||||||
import androidx.compose.foundation.shape.CircleShape
|
import androidx.compose.foundation.shape.CircleShape
|
||||||
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
import androidx.compose.foundation.text.KeyboardActions
|
import androidx.compose.foundation.text.KeyboardActions
|
||||||
import androidx.compose.foundation.text.KeyboardOptions
|
import androidx.compose.foundation.text.KeyboardOptions
|
||||||
import androidx.compose.foundation.verticalScroll
|
import androidx.compose.foundation.verticalScroll
|
||||||
@@ -67,13 +73,17 @@ import androidx.compose.runtime.derivedStateOf
|
|||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
|
import androidx.compose.runtime.setValue
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.draw.clip
|
import androidx.compose.ui.draw.clip
|
||||||
|
import androidx.compose.ui.focus.FocusRequester
|
||||||
|
import androidx.compose.ui.focus.focusRequester
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.graphics.vector.ImageVector
|
import androidx.compose.ui.graphics.vector.ImageVector
|
||||||
import androidx.compose.ui.layout.ContentScale
|
import androidx.compose.ui.layout.ContentScale
|
||||||
import androidx.compose.ui.platform.LocalFocusManager
|
import androidx.compose.ui.platform.LocalFocusManager
|
||||||
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.text.LinkAnnotation
|
import androidx.compose.ui.text.LinkAnnotation
|
||||||
import androidx.compose.ui.text.SpanStyle
|
import androidx.compose.ui.text.SpanStyle
|
||||||
import androidx.compose.ui.text.TextLinkStyles
|
import androidx.compose.ui.text.TextLinkStyles
|
||||||
@@ -112,6 +122,7 @@ import com.vitorpamplona.amethyst.ui.theme.IconRowModifier
|
|||||||
import com.vitorpamplona.amethyst.ui.theme.IconRowTextModifier
|
import com.vitorpamplona.amethyst.ui.theme.IconRowTextModifier
|
||||||
import com.vitorpamplona.amethyst.ui.theme.Size20Modifier
|
import com.vitorpamplona.amethyst.ui.theme.Size20Modifier
|
||||||
import com.vitorpamplona.amethyst.ui.theme.Size22Modifier
|
import com.vitorpamplona.amethyst.ui.theme.Size22Modifier
|
||||||
|
import com.vitorpamplona.amethyst.ui.theme.Size22ModifierWith4Padding
|
||||||
import com.vitorpamplona.amethyst.ui.theme.Size26Modifier
|
import com.vitorpamplona.amethyst.ui.theme.Size26Modifier
|
||||||
import com.vitorpamplona.amethyst.ui.theme.StdHorzSpacer
|
import com.vitorpamplona.amethyst.ui.theme.StdHorzSpacer
|
||||||
import com.vitorpamplona.amethyst.ui.theme.Width16Space
|
import com.vitorpamplona.amethyst.ui.theme.Width16Space
|
||||||
@@ -123,6 +134,7 @@ import com.vitorpamplona.quartz.nip01Core.core.Address
|
|||||||
import com.vitorpamplona.quartz.nip01Core.core.HexKey
|
import com.vitorpamplona.quartz.nip01Core.core.HexKey
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
import kotlinx.coroutines.flow.combine
|
import kotlinx.coroutines.flow.combine
|
||||||
|
import kotlin.text.ifEmpty
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun DrawerContent(
|
fun DrawerContent(
|
||||||
@@ -524,7 +536,9 @@ fun ListContent(
|
|||||||
icon = Icons.Default.AccountCircle,
|
icon = Icons.Default.AccountCircle,
|
||||||
tint = MaterialTheme.colorScheme.primary,
|
tint = MaterialTheme.colorScheme.primary,
|
||||||
nav = nav,
|
nav = nav,
|
||||||
route = remember { Route.Profile(accountViewModel.userProfile().pubkeyHex) },
|
computeRoute = {
|
||||||
|
Route.Profile(accountViewModel.userProfile().pubkeyHex)
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
NavigationRow(
|
NavigationRow(
|
||||||
@@ -661,6 +675,25 @@ fun NavigationRow(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun NavigationRow(
|
||||||
|
title: Int,
|
||||||
|
icon: ImageVector,
|
||||||
|
tint: Color,
|
||||||
|
nav: INav,
|
||||||
|
computeRoute: () -> Route,
|
||||||
|
) {
|
||||||
|
IconRow(
|
||||||
|
title = title,
|
||||||
|
icon = icon,
|
||||||
|
tint = tint,
|
||||||
|
onClick = {
|
||||||
|
nav.closeDrawer()
|
||||||
|
nav.nav(computeRoute)
|
||||||
|
},
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun IconRow(
|
fun IconRow(
|
||||||
title: Int,
|
title: Int,
|
||||||
@@ -669,30 +702,26 @@ fun IconRow(
|
|||||||
tint: Color,
|
tint: Color,
|
||||||
onClick: () -> Unit,
|
onClick: () -> Unit,
|
||||||
) {
|
) {
|
||||||
|
val title = stringRes(title)
|
||||||
|
|
||||||
Row(
|
Row(
|
||||||
modifier =
|
modifier =
|
||||||
Modifier
|
IconRowModifier.clickable(
|
||||||
.fillMaxWidth()
|
onClick = onClick,
|
||||||
.clickable(
|
),
|
||||||
onClick = onClick,
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
),
|
|
||||||
) {
|
) {
|
||||||
Row(
|
Icon(
|
||||||
modifier = IconRowModifier,
|
painter = painterRes(icon, iconReference),
|
||||||
verticalAlignment = Alignment.CenterVertically,
|
contentDescription = title,
|
||||||
) {
|
modifier = Size22Modifier,
|
||||||
Icon(
|
tint = tint,
|
||||||
painter = painterRes(icon, iconReference),
|
)
|
||||||
contentDescription = stringRes(title),
|
Text(
|
||||||
modifier = Size22Modifier,
|
modifier = IconRowTextModifier,
|
||||||
tint = tint,
|
text = title,
|
||||||
)
|
fontSize = Font18SP,
|
||||||
Text(
|
)
|
||||||
modifier = IconRowTextModifier,
|
|
||||||
text = stringRes(title),
|
|
||||||
fontSize = Font18SP,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -703,32 +732,28 @@ fun IconRow(
|
|||||||
tint: Color,
|
tint: Color,
|
||||||
onClick: () -> Unit,
|
onClick: () -> Unit,
|
||||||
) {
|
) {
|
||||||
|
val title = stringRes(title)
|
||||||
|
|
||||||
Row(
|
Row(
|
||||||
modifier =
|
modifier =
|
||||||
Modifier
|
IconRowModifier.clickable(
|
||||||
.fillMaxWidth()
|
onClickLabel = title,
|
||||||
.clickable(
|
onClick = onClick,
|
||||||
onClickLabel = stringRes(title),
|
),
|
||||||
onClick = onClick,
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
),
|
|
||||||
) {
|
) {
|
||||||
Row(
|
Icon(
|
||||||
modifier = IconRowModifier,
|
imageVector = icon,
|
||||||
verticalAlignment = Alignment.CenterVertically,
|
contentDescription = title,
|
||||||
) {
|
modifier = Size22ModifierWith4Padding,
|
||||||
Icon(
|
tint = tint,
|
||||||
imageVector = icon,
|
)
|
||||||
contentDescription = stringRes(title),
|
|
||||||
modifier = Size22Modifier.padding(end = 4.dp),
|
|
||||||
tint = tint,
|
|
||||||
)
|
|
||||||
|
|
||||||
Text(
|
Text(
|
||||||
modifier = IconRowTextModifier,
|
modifier = IconRowTextModifier,
|
||||||
text = stringRes(title),
|
text = title,
|
||||||
fontSize = Font18SP,
|
fontSize = Font18SP,
|
||||||
)
|
)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -389,3 +389,5 @@ val SuggestionListDefaultHeightChat = Modifier.heightIn(0.dp, 200.dp)
|
|||||||
val SuggestionListDefaultHeightPage = Modifier.heightIn(0.dp, 300.dp)
|
val SuggestionListDefaultHeightPage = Modifier.heightIn(0.dp, 300.dp)
|
||||||
|
|
||||||
val FollowPackHeaderModifier = Modifier.fillMaxWidth().height(TopBarSize)
|
val FollowPackHeaderModifier = Modifier.fillMaxWidth().height(TopBarSize)
|
||||||
|
|
||||||
|
val Size22ModifierWith4Padding = Modifier.size(22.dp).padding(end = 4.dp)
|
||||||
|
|||||||
Reference in New Issue
Block a user