mirror of
https://github.com/smyalygames/checklist-tester.git
synced 2025-05-18 14:34:12 +02:00
feat(connector): add tab navigation to SimulatorTest
This commit is contained in:
parent
02ab50f9ad
commit
92b14d872f
@ -20,6 +20,7 @@ import cafe.adriel.voyager.core.screen.Screen
|
||||
import cafe.adriel.voyager.koin.getScreenModel
|
||||
import cafe.adriel.voyager.navigator.LocalNavigator
|
||||
import cafe.adriel.voyager.navigator.currentOrThrow
|
||||
import cafe.adriel.voyager.navigator.tab.LocalTabNavigator
|
||||
import connector.composeapp.generated.resources.Res
|
||||
import connector.composeapp.generated.resources.expand_more_24px
|
||||
import io.anthonyberg.connector.shared.entity.Procedure
|
||||
@ -27,6 +28,7 @@ import org.jetbrains.compose.resources.ExperimentalResourceApi
|
||||
import org.jetbrains.compose.resources.painterResource
|
||||
import org.koin.compose.koinInject
|
||||
import tab.LoadingScreen
|
||||
import tab.test.SimulatorTest
|
||||
|
||||
class ListProcedures (
|
||||
private val procedures: List<Procedure>
|
||||
@ -129,6 +131,8 @@ class ListProcedures (
|
||||
expanded: Boolean,
|
||||
onDismissRequest: () -> Unit
|
||||
) {
|
||||
val tabNavigator = LocalTabNavigator.current
|
||||
|
||||
DropdownMenu(
|
||||
expanded = expanded,
|
||||
onDismissRequest = onDismissRequest,
|
||||
@ -146,7 +150,9 @@ class ListProcedures (
|
||||
|
||||
DropdownMenuItem(
|
||||
text = { Text("Run Test") },
|
||||
onClick = { /* TODO add logic */ },
|
||||
onClick = {
|
||||
tabNavigator.current = SimulatorTest
|
||||
},
|
||||
leadingIcon = {
|
||||
Icon(Icons.Outlined.PlayArrow, "Run Procedure Tests")
|
||||
},
|
||||
|
@ -0,0 +1,29 @@
|
||||
package tab.test
|
||||
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.remember
|
||||
import cafe.adriel.voyager.navigator.tab.Tab
|
||||
import cafe.adriel.voyager.navigator.tab.TabOptions
|
||||
|
||||
object RunTest : Tab {
|
||||
private fun readResolve(): Any = RunTest
|
||||
|
||||
override val options: TabOptions
|
||||
@Composable
|
||||
get() {
|
||||
val title = "Run Test"
|
||||
|
||||
return remember {
|
||||
TabOptions(
|
||||
index = 0u,
|
||||
title = title,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
override fun Content() {
|
||||
Text("Simulator Running Tests...")
|
||||
}
|
||||
}
|
@ -1,10 +1,12 @@
|
||||
package tab.test
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.material3.*
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.remember
|
||||
import cafe.adriel.voyager.navigator.tab.Tab
|
||||
import cafe.adriel.voyager.navigator.tab.TabOptions
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import cafe.adriel.voyager.navigator.tab.*
|
||||
import connector.composeapp.generated.resources.Res
|
||||
import connector.composeapp.generated.resources.check_box_24px
|
||||
import org.jetbrains.compose.resources.ExperimentalResourceApi
|
||||
@ -29,10 +31,41 @@ object SimulatorTest : Tab {
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
override fun Content() {
|
||||
Column {
|
||||
Text("Simulator Test")
|
||||
TabNavigator(RunTest) {
|
||||
val tabNavigator = LocalTabNavigator.current
|
||||
|
||||
Scaffold(
|
||||
topBar = {
|
||||
SecondaryTabRow(selectedTabIndex = tabNavigator.current.options.index.toInt()) {
|
||||
TabItem(RunTest)
|
||||
TabItem(TestResult)
|
||||
}
|
||||
},
|
||||
content = { innerPadding ->
|
||||
Column(
|
||||
modifier = Modifier.padding(innerPadding)
|
||||
) {
|
||||
CurrentTab()
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun TabItem(
|
||||
tab: Tab
|
||||
) {
|
||||
val tabNavigator = LocalTabNavigator.current
|
||||
|
||||
Tab(
|
||||
text = { Text(text = tab.options.title, maxLines = 2, overflow = TextOverflow.Ellipsis) },
|
||||
selected = tabNavigator.current == tab,
|
||||
onClick = { tabNavigator.current = tab }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,29 @@
|
||||
package tab.test
|
||||
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.remember
|
||||
import cafe.adriel.voyager.navigator.tab.Tab
|
||||
import cafe.adriel.voyager.navigator.tab.TabOptions
|
||||
|
||||
object TestResult : Tab {
|
||||
private fun readResolve(): Any = TestResult
|
||||
|
||||
override val options: TabOptions
|
||||
@Composable
|
||||
get() {
|
||||
val title = "Test Result"
|
||||
|
||||
return remember {
|
||||
TabOptions(
|
||||
index = 1u,
|
||||
title = title,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
override fun Content() {
|
||||
Text("Test Results")
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user