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.koin.getScreenModel
|
||||||
import cafe.adriel.voyager.navigator.LocalNavigator
|
import cafe.adriel.voyager.navigator.LocalNavigator
|
||||||
import cafe.adriel.voyager.navigator.currentOrThrow
|
import cafe.adriel.voyager.navigator.currentOrThrow
|
||||||
|
import cafe.adriel.voyager.navigator.tab.LocalTabNavigator
|
||||||
import connector.composeapp.generated.resources.Res
|
import connector.composeapp.generated.resources.Res
|
||||||
import connector.composeapp.generated.resources.expand_more_24px
|
import connector.composeapp.generated.resources.expand_more_24px
|
||||||
import io.anthonyberg.connector.shared.entity.Procedure
|
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.jetbrains.compose.resources.painterResource
|
||||||
import org.koin.compose.koinInject
|
import org.koin.compose.koinInject
|
||||||
import tab.LoadingScreen
|
import tab.LoadingScreen
|
||||||
|
import tab.test.SimulatorTest
|
||||||
|
|
||||||
class ListProcedures (
|
class ListProcedures (
|
||||||
private val procedures: List<Procedure>
|
private val procedures: List<Procedure>
|
||||||
@ -129,6 +131,8 @@ class ListProcedures (
|
|||||||
expanded: Boolean,
|
expanded: Boolean,
|
||||||
onDismissRequest: () -> Unit
|
onDismissRequest: () -> Unit
|
||||||
) {
|
) {
|
||||||
|
val tabNavigator = LocalTabNavigator.current
|
||||||
|
|
||||||
DropdownMenu(
|
DropdownMenu(
|
||||||
expanded = expanded,
|
expanded = expanded,
|
||||||
onDismissRequest = onDismissRequest,
|
onDismissRequest = onDismissRequest,
|
||||||
@ -146,7 +150,9 @@ class ListProcedures (
|
|||||||
|
|
||||||
DropdownMenuItem(
|
DropdownMenuItem(
|
||||||
text = { Text("Run Test") },
|
text = { Text("Run Test") },
|
||||||
onClick = { /* TODO add logic */ },
|
onClick = {
|
||||||
|
tabNavigator.current = SimulatorTest
|
||||||
|
},
|
||||||
leadingIcon = {
|
leadingIcon = {
|
||||||
Icon(Icons.Outlined.PlayArrow, "Run Procedure Tests")
|
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
|
package tab.test
|
||||||
import androidx.compose.foundation.layout.Column
|
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.Composable
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
import cafe.adriel.voyager.navigator.tab.Tab
|
import androidx.compose.ui.Modifier
|
||||||
import cafe.adriel.voyager.navigator.tab.TabOptions
|
import androidx.compose.ui.text.style.TextOverflow
|
||||||
|
import cafe.adriel.voyager.navigator.tab.*
|
||||||
import connector.composeapp.generated.resources.Res
|
import connector.composeapp.generated.resources.Res
|
||||||
import connector.composeapp.generated.resources.check_box_24px
|
import connector.composeapp.generated.resources.check_box_24px
|
||||||
import org.jetbrains.compose.resources.ExperimentalResourceApi
|
import org.jetbrains.compose.resources.ExperimentalResourceApi
|
||||||
@ -29,10 +31,41 @@ object SimulatorTest : Tab {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
override fun Content() {
|
override fun Content() {
|
||||||
Column {
|
TabNavigator(RunTest) {
|
||||||
Text("Simulator Test")
|
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