From 1012287c4cc4545447a1aea2f395b96e8d8579b5 Mon Sep 17 00:00:00 2001 From: matthias Date: Wed, 24 Apr 2024 21:51:56 +0200 Subject: [PATCH] put PSE Boxes into loop added colors list changed the dialog assignment from list to a single var added new data from elements_data.json into the dialog --- .../com/schoolapp/cleverclass/PSEActivity.kt | 274 ++++-------------- 1 file changed, 57 insertions(+), 217 deletions(-) diff --git a/app/src/main/java/com/schoolapp/cleverclass/PSEActivity.kt b/app/src/main/java/com/schoolapp/cleverclass/PSEActivity.kt index 45d3aae..e4026c5 100644 --- a/app/src/main/java/com/schoolapp/cleverclass/PSEActivity.kt +++ b/app/src/main/java/com/schoolapp/cleverclass/PSEActivity.kt @@ -38,6 +38,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp import com.schoolapp.cleverclass.ui.theme.CleverClassTheme import org.json.JSONObject import java.io.InputStreamReader @@ -66,7 +67,7 @@ fun PSEContent(activity: ComponentActivity){ var dialogChooser by remember { mutableStateOf(-1) } - val elementConstructorList = listOf( + val elementNameList = listOf( "H", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "He", "Li", "Be", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "B", "C", "N", "O", "F", "Ne", "Na", "Mg", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "Al", "Si", "P", "S", "Cl", "Ar", @@ -75,14 +76,23 @@ fun PSEContent(activity: ComponentActivity){ "Cs", "Ba", "La", "Ce", "Pr", "Nd", "Pm", "Sm", "Eu", "Gd", "Tb", "Dy", "Ho", "Er", "Tm", "Yb", "Lu", "Hf", "Ta", "W", "Re", "Os", "Ir", "Pt", "Au", "Hg", "Tl", "Pb", "Bi", "Po", "At", "Rn", "Fr", "Ra", "Ac", "Th", "Pa", "U", "Np", "Pu", "Am", "Cm", "Bk", "Cf", "Es", "Fm", "Md", "No", "Lr", "Rf", "Db", "Sg", "Bh", "Hs", "Mt", "Ds", "Rg", "Cn", "Nh", "Fl", "Mc", "Lv", "Ts", "Og" ) - val elementButtonCurrent = listOf( - 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, - 2, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 5, 6, 7, 8, 9, - 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 12, 13, 14, 15, 16, 17, - 18, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,33, 34, 35, - 36, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117 + val elementButtonColors = listOf( + 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, + 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1, 1, 1, 1, 1, + 2, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 2, 2, 2, 2, 2, + 3, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, + 4, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, + 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, + 6, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6 + ) + val colors = listOf( + Color(0xFFBCA76D), + Color(0xFFC65253), + Color(0xFF337733), + Color(0xFFDC2222), + Color(0xFF129DC3), + Color(0xFFDDCC69), + Color(0xFF7044DD) ) Column { TopAppBar( @@ -122,215 +132,40 @@ fun PSEContent(activity: ComponentActivity){ Column( modifier = Modifier .fillMaxHeight() + .padding(3.dp) .verticalScroll(rememberScrollState()) .horizontalScroll(rememberScrollState()) ) { - Row { - for (i in 0 .. 31) { - if (elementConstructorList[i] != "") { - Box(modifier = Modifier - .padding(3.dp) - .size(60.dp) - .background(color = Color(0xFFBCA76D)) - .clickable { dialogChooser = elementButtonCurrent[i] } - ) { - Text(modifier = Modifier.align(Alignment.Center), text = elementConstructorList[i], color = com.schoolapp.cleverclass.ui.theme.TextOnColouredButton) - } - } else { - Box( - modifier = Modifier + var dialogCounter = 0 + for (row in 0..6) { + Row { + for (element in 0..31) { + val index = row * 32 + element + if (elementNameList[index] != "") { + Box(modifier = Modifier .padding(3.dp) .size(60.dp) - ) + .background(color = colors[elementButtonColors[index]]) + .clickable { dialogChooser = ++dialogCounter } + ) { + Text( + modifier = Modifier + .align(Alignment.Center), + text = elementNameList[index], + color = com.schoolapp.cleverclass.ui.theme.TextOnColouredButton, + fontSize = 24.sp + ) + } + } else { + Box( + modifier = Modifier + .padding(3.dp) + .size(60.dp) + ) + } } } } - Row { - for (i in 32 .. 63) - if (elementConstructorList[i] != "") { - Box(modifier = Modifier - .padding(3.dp) - .size(60.dp) - .background(color = Color(0xFFC65253)) - .clickable { dialogChooser = elementButtonCurrent[i] } - ) { - Text(modifier = Modifier.align(Alignment.Center), text = elementConstructorList[i], color = com.schoolapp.cleverclass.ui.theme.TextOnColouredButton) - } - } else { - Box( - modifier = Modifier - .padding(3.dp) - .size(60.dp) - ) - } - } - Row { - for (i in 64 .. 95) - if (elementConstructorList[i] != "") { - Box(modifier = Modifier - .padding(3.dp) - .size(60.dp) - .background(color = Color(0xFF337733)) - .clickable { dialogChooser = elementButtonCurrent[i] } - ) { - Text(modifier = Modifier.align(Alignment.Center), text = elementConstructorList[i], color = com.schoolapp.cleverclass.ui.theme.TextOnColouredButton) - } - } else { - Box( - modifier = Modifier - .padding(3.dp) - .size(60.dp) - ) - } - } - Row { - for (i in 96 .. 127) - if (elementConstructorList[i] != "") { - if (i in 112..121) { - Box(modifier = Modifier - .padding(3.dp) - .size(60.dp) - .background(color = Color(0xFF337733)) - .clickable { dialogChooser = elementButtonCurrent[i] } - ) { - Text(modifier = Modifier.align(Alignment.Center), text = elementConstructorList[i], color = com.schoolapp.cleverclass.ui.theme.TextOnColouredButton) - } - } - else { - Box(modifier = Modifier - .padding(3.dp) - .size(60.dp) - .background(color = Color(0xFFDC2222)) - .clickable { dialogChooser = elementButtonCurrent[i] } - ) { - Text(modifier = Modifier.align(Alignment.Center), text = elementConstructorList[i], color = com.schoolapp.cleverclass.ui.theme.TextOnColouredButton) - } - } - } else { - Box( - modifier = Modifier - .padding(3.dp) - .size(60.dp) - ) - } - } - Row { - for (i in 128..159) - if (elementConstructorList[i] != "") { - if (i in 144..153) { - Box(modifier = Modifier - .padding(3.dp) - .size(60.dp) - .background(color = Color(0xFFDC2222)) - .clickable { dialogChooser = elementButtonCurrent[i] } - ) { - Text(modifier = Modifier.align(Alignment.Center), text = elementConstructorList[i], color = com.schoolapp.cleverclass.ui.theme.TextOnColouredButton) - } - } - else { - Box(modifier = Modifier - .padding(3.dp) - .size(60.dp) - .background(color = Color(0xFF129DC3)) - .clickable { dialogChooser = elementButtonCurrent[i] } - ) { - Text(modifier = Modifier.align(Alignment.Center), text = elementConstructorList[i], color = com.schoolapp.cleverclass.ui.theme.TextOnColouredButton) - } - } - } else { - Box( - modifier = Modifier - .padding(3.dp) - .size(60.dp) - ) - } - } - Row { - for (i in 160..191) - if (elementConstructorList[i] != "") { - when (i) { - in 162..175 -> { - Box(modifier = Modifier - .padding(3.dp) - .size(60.dp) - .background(color = Color(0xFFDC2222)) - .clickable { dialogChooser = elementButtonCurrent[i] } - ) { - Text(modifier = Modifier.align(Alignment.Center), text = elementConstructorList[i], color = com.schoolapp.cleverclass.ui.theme.TextOnColouredButton) - } - } - in 176..185 -> { - Box(modifier = Modifier - .padding(3.dp) - .size(60.dp) - .background(color = Color(0xFF129DC3)) - .clickable { dialogChooser = elementButtonCurrent[i] } - ) { - Text(modifier = Modifier.align(Alignment.Center), text = elementConstructorList[i], color = com.schoolapp.cleverclass.ui.theme.TextOnColouredButton) - } - } - else -> { - Box(modifier = Modifier - .padding(3.dp) - .size(60.dp) - .background(color = Color(0xFFDDCC69)) - .clickable { dialogChooser = elementButtonCurrent[i] } - ) { - Text(modifier = Modifier.align(Alignment.Center), text = elementConstructorList[i], color = com.schoolapp.cleverclass.ui.theme.TextOnColouredButton) - } - } - } - } else { - Box( - modifier = Modifier - .padding(3.dp) - .size(60.dp) - ) - } - } - Row { - for (i in 192 .. 223) - if (elementConstructorList[i] != "") { - when (i) { - in 194..207 -> { - Box(modifier = Modifier - .padding(3.dp) - .size(60.dp) - .background(color = Color(0xFF129DC3)) - .clickable { dialogChooser = elementButtonCurrent[i] } - ) { - Text(modifier = Modifier.align(Alignment.Center), text = elementConstructorList[i], color = com.schoolapp.cleverclass.ui.theme.TextOnColouredButton) - } - } - in 208..217 -> { - Box(modifier = Modifier - .padding(3.dp) - .size(60.dp) - .background(color = Color(0xFFDDCC69)) - .clickable { dialogChooser = elementButtonCurrent[i] } - ) { - Text(modifier = Modifier.align(Alignment.Center), text = elementConstructorList[i], color = com.schoolapp.cleverclass.ui.theme.TextOnColouredButton) - } - } - else -> { - Box(modifier = Modifier - .padding(3.dp) - .size(60.dp) - .background(color = Color(0xFF7044DD)) - .clickable { dialogChooser = elementButtonCurrent[i] } - ) { - Text(modifier = Modifier.align(Alignment.Center), text = elementConstructorList[i], color = com.schoolapp.cleverclass.ui.theme.TextOnColouredButton) - } - } - } - } else { - Box( - modifier = Modifier - .padding(3.dp) - .size(60.dp) - ) - } - } } } @@ -345,7 +180,9 @@ fun PSEContent(activity: ComponentActivity){ .horizontalScroll(rememberScrollState()), text = readElementData(activity, dcValue), color = MaterialTheme.colorScheme.onPrimaryContainer, - style = MaterialTheme.typography.labelMedium) }, + style = MaterialTheme.typography.labelMedium + ) + }, confirmButton = { Text( text = "Schließen", @@ -368,7 +205,9 @@ fun PSEContent(activity: ComponentActivity){ Text( text = "Verwendung im Querformat empfohlen", color = MaterialTheme.colorScheme.onPrimaryContainer, - style = MaterialTheme.typography.labelMedium) }, + style = MaterialTheme.typography.labelMedium + ) + }, confirmButton = { Text( text = "Schließen", @@ -387,13 +226,14 @@ fun PSEContent(activity: ComponentActivity){ } fun readElementData(context: Context, int: Int): String { - val file = "elements_data.json" - val assetManager = context.assets - val inputStream = assetManager.open(file) + val inputStream = context.assets.open("elements_data.json") val rootObj = JSONObject(InputStreamReader(inputStream).readText()) - val elementDataArray = rootObj.getJSONArray("elements") - val elementData = elementDataArray.getJSONObject(int) + val elementData = rootObj.getJSONArray("elements").getJSONObject(int) return "Name\n >>> ${elementData.get("Name")}\n\n" + + "Ordnungszahl\n >>> ${elementData.get("Ordnungszahl")}\n\n" + + "Gruppe\n >>> ${elementData.get("Gruppe")}\n\n" + + "Periode/Hauptquantenzahl\n >>> ${elementData.get("Periode/Hauptquantenzahl")}\n\n" + + "Schale\n >>> ${elementData.get("Schale")}\n\n" + "Molare Masse\n >>> ${elementData.get("Molare Masse")}\n\n" + "Dichte\n >>> ${elementData.get("Dichte")}\n\n" + "Elektronegativität\n >>> ${elementData.get("Elektronegativität")}\n\n" +