mirror of
https://github.com/Suwayomi/TachideskJUI.git
synced 2026-02-03 01:14:06 +01:00
Improve side menu
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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 }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user