From 22ed746ce32a0cb55cac8660ade1ea88d215642f Mon Sep 17 00:00:00 2001 From: maxime Date: Sun, 31 Mar 2024 16:52:29 +0200 Subject: [PATCH] add display name for steps --- .../main/java/com/iqball/app/MainActivity.kt | 2 +- .../com/iqball/app/component/BasketCourt.kt | 8 -------- .../java/com/iqball/app/component/StepTree.kt | 9 +++++++-- .../iqball/app/domains/StepsTreeDomains.kt | 19 +++++++++++++++++++ .../com/iqball/app/page/VisualizerPage.kt | 1 - app/src/main/res/drawable/half_court.xml | 8 ++++---- 6 files changed, 31 insertions(+), 16 deletions(-) create mode 100644 app/src/main/java/com/iqball/app/domains/StepsTreeDomains.kt diff --git a/app/src/main/java/com/iqball/app/MainActivity.kt b/app/src/main/java/com/iqball/app/MainActivity.kt index 4d7f7df..d856174 100644 --- a/app/src/main/java/com/iqball/app/MainActivity.kt +++ b/app/src/main/java/com/iqball/app/MainActivity.kt @@ -98,5 +98,5 @@ fun App(service: IQBallService) { auth.getOrNull()!!.token } - VisualizerPage(service, auth, 1) + VisualizerPage(service, auth, 47) } \ No newline at end of file diff --git a/app/src/main/java/com/iqball/app/component/BasketCourt.kt b/app/src/main/java/com/iqball/app/component/BasketCourt.kt index a5ad403..9b16bdb 100644 --- a/app/src/main/java/com/iqball/app/component/BasketCourt.kt +++ b/app/src/main/java/com/iqball/app/component/BasketCourt.kt @@ -1,24 +1,16 @@ package com.iqball.app.component -import androidx.compose.animation.animateContentSize import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.IntrinsicSize import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.requiredHeight import androidx.compose.foundation.layout.requiredWidth import androidx.compose.foundation.layout.width -import androidx.compose.foundation.layout.wrapContentSize - import androidx.compose.runtime.Composable import androidx.compose.runtime.MutableState import androidx.compose.runtime.getValue -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateMapOf -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier diff --git a/app/src/main/java/com/iqball/app/component/StepTree.kt b/app/src/main/java/com/iqball/app/component/StepTree.kt index c8fec61..c1e4d8c 100644 --- a/app/src/main/java/com/iqball/app/component/StepTree.kt +++ b/app/src/main/java/com/iqball/app/component/StepTree.kt @@ -29,6 +29,7 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import com.chihsuanwu.freescroll.freeScroll import com.chihsuanwu.freescroll.rememberFreeScrollState +import com.iqball.app.domains.getStepName import com.iqball.app.model.tactic.StepNodeInfo import com.iqball.app.ui.theme.SelectedStepNode import com.iqball.app.ui.theme.StepNode @@ -76,12 +77,13 @@ fun StepsTree(root: StepNodeInfo, selectedNodeId: Int, onNodeSelected: (StepNode }, contentAlignment = Alignment.TopCenter ) { - StepsTreeContent(root, selectedNodeId, onNodeSelected, nodesOffsets) + StepsTreeContent(root, root, selectedNodeId, onNodeSelected, nodesOffsets) } } @Composable private fun StepsTreeContent( + root: StepNodeInfo, node: StepNodeInfo, selectedNodeId: Int, onNodeSelected: (StepNodeInfo) -> Unit, @@ -93,6 +95,7 @@ private fun StepsTreeContent( modifier = Modifier ) { StepPiece( + name = getStepName(root, node.id), node = node, isSelected = selectedNodeId == node.id, onNodeSelected = { onNodeSelected(node) }, @@ -110,6 +113,7 @@ private fun StepsTreeContent( ) { for (children in node.children) { StepsTreeContent( + root = root, node = children, selectedNodeId = selectedNodeId, onNodeSelected = onNodeSelected, @@ -122,6 +126,7 @@ private fun StepsTreeContent( @Composable fun StepPiece( + name: String, node: StepNodeInfo, isSelected: Boolean, onNodeSelected: () -> Unit, @@ -136,7 +141,7 @@ fun StepPiece( } ) { Text( - text = node.id.toString(), + text = name, textAlign = TextAlign.Center, color = if (isSelected) Color.White else Color.Black, modifier = Modifier diff --git a/app/src/main/java/com/iqball/app/domains/StepsTreeDomains.kt b/app/src/main/java/com/iqball/app/domains/StepsTreeDomains.kt new file mode 100644 index 0000000..697df9e --- /dev/null +++ b/app/src/main/java/com/iqball/app/domains/StepsTreeDomains.kt @@ -0,0 +1,19 @@ +package com.iqball.app.domains + +import com.iqball.app.model.tactic.StepNodeInfo + + +fun getStepName(root: StepNodeInfo, step: Int): String { + var ord = 1 + val nodes = mutableListOf(root) + while (nodes.isNotEmpty()) { + val node = nodes.removeFirst() + + if (node.id == step) break + + ord += 1 + nodes.addAll(node.children.reversed()) + } + + return ord.toString() +} \ No newline at end of file diff --git a/app/src/main/java/com/iqball/app/page/VisualizerPage.kt b/app/src/main/java/com/iqball/app/page/VisualizerPage.kt index bb8f602..bc9e6ff 100644 --- a/app/src/main/java/com/iqball/app/page/VisualizerPage.kt +++ b/app/src/main/java/com/iqball/app/page/VisualizerPage.kt @@ -96,7 +96,6 @@ fun VisualizerPage( } - Column { VisualizerHeader(title = info.name, showTree) when (screenOrientation) { diff --git a/app/src/main/res/drawable/half_court.xml b/app/src/main/res/drawable/half_court.xml index d84c400..1f7e07f 100644 --- a/app/src/main/res/drawable/half_court.xml +++ b/app/src/main/res/drawable/half_court.xml @@ -1,8 +1,8 @@ + android:width="200dp" + android:height="200dp" + android:viewportWidth="270" + android:viewportHeight="270">