package com.schoolapp.cleverclass import android.content.Context import android.content.Intent import android.content.SharedPreferences import android.content.SharedPreferences.Editor import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent 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.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ArrowBack import androidx.compose.material3.Divider import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Switch import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import com.schoolapp.cleverclass.ui.theme.CleverClassTheme class SettingsActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { CleverClassTheme { Surface(modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background) { SettingsContent(activity = this) } } } } } // Content of Settings @OptIn(ExperimentalMaterial3Api::class) @Composable fun SettingsContent(activity: ComponentActivity) { val sharedPreferences = activity.getSharedPreferences("Settings", Context.MODE_PRIVATE) val editor = sharedPreferences.edit() Column(modifier = Modifier.fillMaxSize()) { // Top AppBar TopAppBar( colors = TopAppBarDefaults.centerAlignedTopAppBarColors(MaterialTheme.colorScheme.primaryContainer), title = { Text( text = "Einstellungen", style = MaterialTheme.typography.headlineSmall ) }, navigationIcon = { IconButton(onClick = { activity.finish() }) { Icon( imageVector = Icons.Filled.ArrowBack, contentDescription = null, modifier = Modifier.size(28.dp) ) } }, modifier = Modifier.fillMaxWidth() ) // Settings Column( modifier = Modifier .weight(1f) .verticalScroll(rememberScrollState()) .fillMaxWidth() ) { Setting(text = "Stundenplan", sharedPreferences, editor) Setting(text = "Noten", sharedPreferences, editor) Setting(text = "Periodensystem", sharedPreferences, editor) Setting(text = "Mebis", sharedPreferences, editor) Setting(text = "DSBmobile", sharedPreferences, editor) } // About Button Column( modifier = Modifier .fillMaxWidth() .wrapContentHeight(), horizontalAlignment = Alignment.CenterHorizontally ) { Divider() Spacer(modifier = Modifier.height(16.dp)) Text( text = "About", style = MaterialTheme.typography.bodySmall, modifier = Modifier.clickable { val intent = Intent(activity, AboutActivity::class.java) activity.startActivity(intent) } ) Spacer(modifier = Modifier.height(16.dp)) } } } @Composable fun Setting(text : String, sharedPreferences: SharedPreferences, editor: Editor){ val checkedState = remember { mutableStateOf(sharedPreferences.getBoolean(text, true)) } Spacer(modifier = Modifier.height(16.dp)) Row(verticalAlignment = Alignment.CenterVertically) { Spacer(modifier = Modifier.width(16.dp)) Switch( checked = checkedState.value, onCheckedChange = { isChecked -> checkedState.value = isChecked editor.putBoolean(text, isChecked) editor.apply() } ) Spacer(modifier = Modifier.width(16.dp)) Text(text = text, color = MaterialTheme.colorScheme.onPrimaryContainer, style = MaterialTheme.typography.labelMedium) } }