diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 77363c6..603f9f2 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -10,7 +10,7 @@ android { defaultConfig { applicationId = "com.schoolapp.cleverclass" minSdk = 26 - targetSdk = 33 + targetSdk = 34 versionCode = 1 versionName = "1.0" diff --git a/app/src/main/java/com/schoolapp/cleverclass/FachActivity.kt b/app/src/main/java/com/schoolapp/cleverclass/FachActivity.kt index 8de300b..c2f2242 100644 --- a/app/src/main/java/com/schoolapp/cleverclass/FachActivity.kt +++ b/app/src/main/java/com/schoolapp/cleverclass/FachActivity.kt @@ -3,6 +3,8 @@ 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 @@ -12,11 +14,18 @@ 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.Button +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 @@ -26,10 +35,17 @@ 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 { @@ -96,20 +112,133 @@ fun FachContent(activity: ComponentActivity, name : String){ 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(){ - Button(onClick = { /*TODO*/ }) { - Text(text = "hehe") + val color = Color(0xFFB2FF59) + var typeExpanded by remember { + mutableStateOf(false) } -} \ No newline at end of file + 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) + } + } + } + } + } +} + diff --git a/app/src/main/java/com/schoolapp/cleverclass/MainActivity.kt b/app/src/main/java/com/schoolapp/cleverclass/MainActivity.kt index 1c78d53..e32f123 100644 --- a/app/src/main/java/com/schoolapp/cleverclass/MainActivity.kt +++ b/app/src/main/java/com/schoolapp/cleverclass/MainActivity.kt @@ -35,7 +35,6 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp import com.schoolapp.cleverclass.ui.theme.CleverClassTheme import com.schoolapp.cleverclass.ui.theme.TextOnColouredButton @@ -47,7 +46,7 @@ class MainActivity : ComponentActivity() { CleverClassTheme { Surface(modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background) { - MainContent() + MainContent(activity = this) } } } @@ -58,9 +57,8 @@ class MainActivity : ComponentActivity() { // Content of Main-screen @OptIn(ExperimentalMaterial3Api::class) @Composable -fun MainContent(){ - val context = LocalContext.current - val sharedPreferences = context.getSharedPreferences("Settings", Context.MODE_PRIVATE) +fun MainContent(activity: ComponentActivity){ + val sharedPreferences = activity.getSharedPreferences("Settings", Context.MODE_PRIVATE) Column{ TopAppBar( @@ -72,7 +70,7 @@ fun MainContent(){ }, actions = { IconButton( - onClick = { switchToActivity(context, SettingsActivity::class.java) }) { + onClick = { switchToActivity(activity, SettingsActivity::class.java) }) { Icon( imageVector = Icons.Filled.Settings, contentDescription = null, @@ -83,9 +81,9 @@ fun MainContent(){ ) Column(modifier = Modifier.verticalScroll(rememberScrollState())) { - MainButton(onClick = { switchToActivity(context, StundenplanActivity::class.java) }, color = Color(0xFFFF4081), text = "Stundenplan", sharedPreferences) - MainButton(onClick = { switchToActivity(context, NotenActivity::class.java) }, color = Color(0xFFFFAB40), text = "Noten", sharedPreferences) - MainButton(onClick = { switchToActivity(context, PSEActivity::class.java) }, color = Color(0xFF536DFE), text = "Periodensystem", sharedPreferences) + MainButton(onClick = { switchToActivity(activity, StundenplanActivity::class.java) }, color = Color(0xFFFF4081), text = "Stundenplan", sharedPreferences) + MainButton(onClick = { switchToActivity(activity, NotenActivity::class.java) }, color = Color(0xFFFFAB40), text = "Noten", sharedPreferences) + MainButton(onClick = { switchToActivity(activity, PSEActivity::class.java) }, color = Color(0xFF536DFE), text = "Periodensystem", sharedPreferences) MainButton(onClick = { /*TODO: Mebis activity*/ }, color = Color(0xFFE040FB), text = "Mebis", sharedPreferences) MainButton(onClick = { /*TODO: DSBmobile activity*/ }, color = Color(0xFFFF6E40), text = "DSBmobile", sharedPreferences) }