245 lines
10 KiB
Kotlin
245 lines
10 KiB
Kotlin
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)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|