Improve side menu

This commit is contained in:
Syer10
2022-08-26 14:06:14 -04:00
parent 64531ff884
commit df4c2ff09a
2 changed files with 45 additions and 34 deletions

View File

@@ -6,19 +6,21 @@
package ca.gosyer.jui.ui.main.components
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.material.ContentAlpha
import androidx.compose.material.LocalContentColor
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Surface
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
import ca.gosyer.jui.domain.base.WebsocketService
import ca.gosyer.jui.domain.download.model.DownloaderStatus
import ca.gosyer.jui.i18n.MR
@@ -56,7 +58,11 @@ fun DownloadsExtraInfo() {
color = LocalContentColor.current.copy(alpha = ContentAlpha.disabled)
)
} else if (serviceStatus == WebsocketService.Status.STOPPED) {
Surface(onClick = vm::restartDownloader, shape = RoundedCornerShape(4.dp)) {
Box(
Modifier.fillMaxWidth()
.clip(MaterialTheme.shapes.medium)
.clickable(onClick = vm::restartDownloader)
) {
Text(
stringResource(MR.strings.downloads_stopped),
style = MaterialTheme.typography.body2,

View File

@@ -16,6 +16,8 @@ import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.Icon
import androidx.compose.material.IconButton
import androidx.compose.material.Surface
@@ -38,37 +40,40 @@ import cafe.adriel.voyager.navigator.Navigator
@Composable
fun SideMenu(modifier: Modifier, controller: DisplayController, navigator: Navigator) {
Surface(modifier then Modifier.fillMaxHeight(), elevation = 2.dp) {
Box(Modifier.fillMaxSize()) {
Column(Modifier.fillMaxSize().padding(horizontal = 4.dp)) {
Row(
Modifier.fillMaxWidth().height(60.dp),
horizontalArrangement = Arrangement.SpaceBetween,
verticalAlignment = Alignment.CenterVertically
) {
Text(
BuildKonfig.NAME,
fontSize = 24.sp,
modifier = Modifier
)
IconButton(controller::closeSideMenu) {
Icon(Icons.Rounded.Close, contentDescription = null)
}
Column(
Modifier
.fillMaxSize()
.verticalScroll(rememberScrollState())
.padding(horizontal = 4.dp)
) {
Row(
Modifier.fillMaxWidth().height(60.dp),
horizontalArrangement = Arrangement.SpaceBetween,
verticalAlignment = Alignment.CenterVertically
) {
Text(
BuildKonfig.NAME,
fontSize = 24.sp,
modifier = Modifier
)
IconButton(controller::closeSideMenu) {
Icon(Icons.Rounded.Close, contentDescription = null)
}
Spacer(Modifier.height(20.dp))
remember { TopLevelMenus.values().asList().dropLast(1) }.fastForEach { topLevelMenu ->
SideMenuItem(
topLevelMenu.isSelected(navigator),
topLevelMenu
) { navigator replaceAll it }
}
Box(Modifier.fillMaxSize()) {
Column(Modifier.align(Alignment.BottomStart).padding(bottom = 8.dp)) {
remember { MoreMenus.values() }.forEach { topLevelMenu ->
SideMenuItem(
topLevelMenu.isSelected(navigator),
topLevelMenu
) { navigator replaceAll it }
}
}
Spacer(Modifier.height(20.dp))
remember { TopLevelMenus.values().asList().dropLast(1) }.fastForEach { topLevelMenu ->
SideMenuItem(
topLevelMenu.isSelected(navigator),
topLevelMenu
) { navigator replaceAll it }
}
Box(Modifier.fillMaxSize(), contentAlignment = Alignment.BottomStart) {
Column(Modifier.padding(vertical = 8.dp)) {
remember { MoreMenus.values() }.forEach { topLevelMenu ->
SideMenuItem(
topLevelMenu.isSelected(navigator),
topLevelMenu
) { navigator replaceAll it }
}
}
}