package com.schoolapp.cleverclass import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.ArrowBack import androidx.compose.material.icons.filled.Close import androidx.compose.material.icons.filled.KeyboardArrowDown import androidx.compose.material.icons.filled.KeyboardArrowUp import androidx.compose.material3.BottomAppBar import androidx.compose.material3.DropdownMenu import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment.Companion.CenterVertically import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.schoolapp.cleverclass.ui.theme.CleverClassTheme import com.schoolapp.cleverclass.ui.theme.TextOnColouredButton class FachActivity : ComponentActivity() { companion object { const val ARGUMENT_KEY = "argument_key" } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // get subject argument from NotenActivity val name = intent.getStringExtra(ARGUMENT_KEY) ?: "missing subject" setContent { CleverClassTheme { Surface( modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background ) { FachContent(activity = this, name = name) } } } } } @OptIn(ExperimentalMaterial3Api::class) @Composable fun FachContent(activity: ComponentActivity, name : String){ Scaffold( topBar = { TopAppBar( colors = TopAppBarDefaults.centerAlignedTopAppBarColors(MaterialTheme.colorScheme.primaryContainer), title = { Text(text = name, style = MaterialTheme.typography.headlineSmall )}, navigationIcon = { IconButton(onClick = { activity.finish() }) { Icon( imageVector = Icons.Filled.ArrowBack, contentDescription = null, modifier = Modifier.size(28.dp) ) } }, modifier = Modifier.fillMaxWidth() ) }, bottomBar = { BottomAppBar( containerColor = MaterialTheme.colorScheme.primaryContainer, modifier = Modifier .fillMaxWidth() .height(64.dp) ) { Row (modifier = Modifier .fillMaxWidth() .align(CenterVertically)){ Spacer(modifier = Modifier.width(16.dp)) Text(text = "Schnitt:", style = MaterialTheme.typography.headlineSmall) Spacer(modifier = Modifier.weight(1f)) Text(text = "Ø0.00", style = MaterialTheme.typography.headlineSmall) Spacer(modifier = Modifier.width(16.dp)) } } }, floatingActionButton = { FloatingActionButton(onClick = { /*TODO*/ }, shape = RoundedCornerShape(40) ) { Icon(imageVector = Icons.Filled.Add, contentDescription = null, modifier = Modifier.size(32.dp)) }} ) {innerPadding -> Column(modifier = Modifier .fillMaxWidth() .padding(innerPadding)) { NotenPrefab() NotenPrefab() } } } @Preview @Composable fun NotenPrefab(){ val color = Color(0xFFB2FF59) var typeExpanded by remember { mutableStateOf(false) } var gradeExpanded by remember { mutableStateOf(false) } var weightExpanded by remember { mutableStateOf(false) } // Background Surface( shape = RoundedCornerShape(20), color = color, modifier = Modifier .fillMaxWidth() .height(128.dp) .padding(start = 16.dp, end = 16.dp, top = 16.dp) ) { // Content Column(modifier = Modifier.padding(16.dp)) { Row { // Type Surface( shape = RoundedCornerShape(10), color = color, border = BorderStroke(2.dp, TextOnColouredButton), modifier = Modifier .size(width = 128.dp, height = 32.dp) .clickable { typeExpanded = !typeExpanded } ) { Row(verticalAlignment = CenterVertically, modifier = Modifier.padding(4.dp)) { Text(text = "Typ", color = TextOnColouredButton, style = MaterialTheme.typography.labelMedium) DropdownMenu(expanded = typeExpanded, onDismissRequest = { typeExpanded = false }) { DropdownMenuItem(text = { Text(text = "Test") }, onClick = { /*TODO*/ }) } Spacer(modifier = Modifier.weight(1f)) Icon(imageVector = if (typeExpanded) Icons.Filled.KeyboardArrowUp else Icons.Filled.KeyboardArrowDown, contentDescription = null, tint = TextOnColouredButton) } } // Delete Spacer(modifier = Modifier.weight(1f)) Icon( imageVector = Icons.Filled.Close, contentDescription = null, tint = TextOnColouredButton, modifier = Modifier .size(28.dp) .clickable { /*TODO*/ } ) } Spacer(modifier = Modifier.weight(1f)) Row (verticalAlignment = CenterVertically) { // Grade Text(text = "Note:", color = TextOnColouredButton, style = MaterialTheme.typography.labelMedium) Spacer(modifier = Modifier.width(8.dp)) Surface( shape = RoundedCornerShape(10), color = color, border = BorderStroke(2.dp, TextOnColouredButton), modifier = Modifier .size(width = 48.dp, height = 32.dp) .clickable { gradeExpanded = !gradeExpanded } ) { Row(verticalAlignment = CenterVertically, modifier = Modifier.padding(4.dp)) { Text(text = "1", color = TextOnColouredButton, style = MaterialTheme.typography.labelMedium) DropdownMenu(expanded = gradeExpanded, onDismissRequest = { gradeExpanded = false }) { DropdownMenuItem(text = { Text(text = "Test") }, onClick = { /*TODO*/ }) } Spacer(modifier = Modifier.weight(1f)) Icon(imageVector = if (gradeExpanded) Icons.Filled.KeyboardArrowUp else Icons.Filled.KeyboardArrowDown, contentDescription = null, tint = TextOnColouredButton) } } // Weight Spacer(modifier = Modifier.width(16.dp)) Text(text = "Gewichtung:", color = TextOnColouredButton, style = MaterialTheme.typography.labelMedium) Spacer(modifier = Modifier.width(8.dp)) Surface( shape = RoundedCornerShape(10), color = color, border = BorderStroke(2.dp, TextOnColouredButton), modifier = Modifier .size(width = 64.dp, height = 32.dp) .clickable { weightExpanded = !weightExpanded } ) { Row(verticalAlignment = CenterVertically, modifier = Modifier.padding(4.dp)) { Text(text = "1x", color = TextOnColouredButton, style = MaterialTheme.typography.labelMedium) DropdownMenu(expanded = weightExpanded, onDismissRequest = { weightExpanded = false }) { DropdownMenuItem(text = { Text(text = "Test") }, onClick = { /*TODO*/ }) } Spacer(modifier = Modifier.weight(1f)) Icon(imageVector = if (weightExpanded) Icons.Filled.KeyboardArrowUp else Icons.Filled.KeyboardArrowDown, contentDescription = null, tint = TextOnColouredButton) } } } } } }