Compare commits

..

4 Commits

Author SHA1 Message Date
matthias
f2779cb442 Merge remote-tracking branch 'origin/master' 2024-04-24 21:52:11 +02:00
matthias
1012287c4c 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
2024-04-24 21:51:56 +02:00
matthias
d77c20e890 cosmetical change 2024-04-24 21:48:43 +02:00
matthias
2a32bcebcc Added "Gruppe", "Periode/Hauptquantenzahl" & "Schale" so PSE GUI is clean 2024-04-24 21:32:59 +02:00
2 changed files with 411 additions and 217 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -38,6 +38,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.schoolapp.cleverclass.ui.theme.CleverClassTheme import com.schoolapp.cleverclass.ui.theme.CleverClassTheme
import org.json.JSONObject import org.json.JSONObject
import java.io.InputStreamReader import java.io.InputStreamReader
@@ -66,7 +67,7 @@ fun PSEContent(activity: ComponentActivity){
var dialogChooser by remember { var dialogChooser by remember {
mutableStateOf(-1) mutableStateOf(-1)
} }
val elementConstructorList = listOf( val elementNameList = listOf(
"H", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "He", "H", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "He",
"Li", "Be", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "B", "C", "N", "O", "F", "Ne", "Li", "Be", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "B", "C", "N", "O", "F", "Ne",
"Na", "Mg", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "Al", "Si", "P", "S", "Cl", "Ar", "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", "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" "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( 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, 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, 0,
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, 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,
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, 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,
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, 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,
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, 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,
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, 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,
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 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 { Column {
TopAppBar( TopAppBar(
@@ -122,215 +132,40 @@ fun PSEContent(activity: ComponentActivity){
Column( Column(
modifier = Modifier modifier = Modifier
.fillMaxHeight() .fillMaxHeight()
.padding(3.dp)
.verticalScroll(rememberScrollState()) .verticalScroll(rememberScrollState())
.horizontalScroll(rememberScrollState()) .horizontalScroll(rememberScrollState())
) { ) {
Row { var dialogCounter = 0
for (i in 0 .. 31) { for (row in 0..6) {
if (elementConstructorList[i] != "") { Row {
Box(modifier = Modifier for (element in 0..31) {
.padding(3.dp) val index = row * 32 + element
.size(60.dp) if (elementNameList[index] != "") {
.background(color = Color(0xFFBCA76D)) Box(modifier = Modifier
.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) .padding(3.dp)
.size(60.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()), .horizontalScroll(rememberScrollState()),
text = readElementData(activity, dcValue), text = readElementData(activity, dcValue),
color = MaterialTheme.colorScheme.onPrimaryContainer, color = MaterialTheme.colorScheme.onPrimaryContainer,
style = MaterialTheme.typography.labelMedium) }, style = MaterialTheme.typography.labelMedium
)
},
confirmButton = { confirmButton = {
Text( Text(
text = "Schließen", text = "Schließen",
@@ -368,7 +205,9 @@ fun PSEContent(activity: ComponentActivity){
Text( Text(
text = "Verwendung im Querformat empfohlen", text = "Verwendung im Querformat empfohlen",
color = MaterialTheme.colorScheme.onPrimaryContainer, color = MaterialTheme.colorScheme.onPrimaryContainer,
style = MaterialTheme.typography.labelMedium) }, style = MaterialTheme.typography.labelMedium
)
},
confirmButton = { confirmButton = {
Text( Text(
text = "Schließen", text = "Schließen",
@@ -387,13 +226,14 @@ fun PSEContent(activity: ComponentActivity){
} }
fun readElementData(context: Context, int: Int): String { fun readElementData(context: Context, int: Int): String {
val file = "elements_data.json" val inputStream = context.assets.open("elements_data.json")
val assetManager = context.assets
val inputStream = assetManager.open(file)
val rootObj = JSONObject(InputStreamReader(inputStream).readText()) val rootObj = JSONObject(InputStreamReader(inputStream).readText())
val elementDataArray = rootObj.getJSONArray("elements") val elementData = rootObj.getJSONArray("elements").getJSONObject(int)
val elementData = elementDataArray.getJSONObject(int)
return "Name\n >>> ${elementData.get("Name")}\n\n" + 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" + "Molare Masse\n >>> ${elementData.get("Molare Masse")}\n\n" +
"Dichte\n >>> ${elementData.get("Dichte")}\n\n" + "Dichte\n >>> ${elementData.get("Dichte")}\n\n" +
"Elektronegativität\n >>> ${elementData.get("Elektronegativität")}\n\n" + "Elektronegativität\n >>> ${elementData.get("Elektronegativität")}\n\n" +