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.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" +