159 lines
5.5 KiB
Kotlin
159 lines
5.5 KiB
Kotlin
package com.schoolapp.cleverclass
|
|
|
|
import android.content.Context
|
|
import android.content.Intent
|
|
import android.graphics.drawable.Icon
|
|
import android.os.Bundle
|
|
import androidx.activity.ComponentActivity
|
|
import androidx.activity.compose.setContent
|
|
import androidx.compose.foundation.background
|
|
import androidx.compose.foundation.layout.Box
|
|
import androidx.compose.foundation.layout.Column
|
|
import androidx.compose.foundation.layout.fillMaxSize
|
|
import androidx.compose.foundation.layout.fillMaxWidth
|
|
import androidx.compose.foundation.layout.padding
|
|
import androidx.compose.foundation.layout.size
|
|
import androidx.compose.material.icons.Icons
|
|
import androidx.compose.material.icons.filled.ArrowBack
|
|
import androidx.compose.material.icons.outlined.Edit
|
|
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.Text
|
|
import androidx.compose.material3.TopAppBar
|
|
import androidx.compose.material3.TopAppBarDefaults
|
|
import androidx.compose.runtime.Composable
|
|
import androidx.compose.runtime.LaunchedEffect
|
|
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
|
|
import androidx.compose.ui.Modifier
|
|
import androidx.compose.ui.graphics.Color
|
|
import androidx.compose.ui.platform.LocalContext
|
|
import androidx.compose.ui.unit.dp
|
|
import androidx.core.content.ContextCompat.startActivity
|
|
import com.schoolapp.cleverclass.LessonStoreManager.getLessons
|
|
import com.schoolapp.cleverclass.ui.theme.CleverClassTheme
|
|
import kotlinx.coroutines.CoroutineScope
|
|
import kotlinx.coroutines.Dispatchers
|
|
import kotlinx.coroutines.launch
|
|
|
|
private val listOfDays = listOf("Mo", "Di", "Mi", "Do", "Fr")
|
|
private val lessonGrabberIndex = 0
|
|
|
|
class StundenplanActivity : ComponentActivity() {
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
super.onCreate(savedInstanceState)
|
|
|
|
val sharedPreferences = this.getSharedPreferences("TimeTable", Context.MODE_PRIVATE)
|
|
val setupDone = sharedPreferences.getBoolean("setupDone", false)
|
|
|
|
setContent {
|
|
CleverClassTheme {
|
|
Surface(
|
|
modifier = Modifier.fillMaxSize(),
|
|
color = MaterialTheme.colorScheme.background
|
|
) {
|
|
if (!setupDone) {
|
|
val intent = Intent(this@StundenplanActivity, TimeTableSetupActivity::class.java).apply {
|
|
putExtra(TimeTableSetupActivity.TYPE_KEY, "TimeSetup")
|
|
}
|
|
startActivity(intent)
|
|
}
|
|
|
|
StundenplanContent(activity = this)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Content of Stundenplan
|
|
@OptIn(ExperimentalMaterial3Api::class)
|
|
@Composable
|
|
fun StundenplanContent(activity: ComponentActivity){
|
|
Column() {
|
|
TopAppBar(
|
|
colors = TopAppBarDefaults.centerAlignedTopAppBarColors(MaterialTheme.colorScheme.primaryContainer),
|
|
title = {
|
|
Text(text = "Stundenplan",
|
|
style = MaterialTheme.typography.headlineSmall,
|
|
color = MaterialTheme.colorScheme.onPrimaryContainer
|
|
)},
|
|
navigationIcon = {
|
|
IconButton(onClick = { activity.finish() }) {
|
|
Icon(
|
|
imageVector = Icons.Filled.ArrowBack,
|
|
contentDescription = null,
|
|
modifier = Modifier.size(28.dp),
|
|
tint = MaterialTheme.colorScheme.onPrimaryContainer
|
|
)
|
|
}
|
|
},
|
|
actions ={
|
|
IconButton(onClick = {
|
|
val intent = Intent(activity, TimeTableSetupActivity::class.java).apply {
|
|
putExtra(TimeTableSetupActivity.TYPE_KEY, "TimeSetup")
|
|
}
|
|
startActivity(activity, intent, null)
|
|
}) {
|
|
Icon(
|
|
imageVector = Icons.Outlined.Edit,
|
|
contentDescription = null,
|
|
modifier = Modifier.size(28.dp),
|
|
tint = MaterialTheme.colorScheme.onPrimaryContainer
|
|
)
|
|
}
|
|
},
|
|
modifier = Modifier.fillMaxWidth()
|
|
)
|
|
|
|
Column() {
|
|
listOfDays.forEach() {currentDay ->
|
|
Day(currentDay)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
data class LessonData(
|
|
var subject: String,
|
|
var teacher: String,
|
|
var room: String
|
|
)
|
|
|
|
@Composable
|
|
fun Day(day: String) {
|
|
var lessons = emptyList<LessonData>()
|
|
val context = LocalContext.current
|
|
Column {
|
|
LaunchedEffect(lessons, context) {
|
|
getLessons(context, day).collect { savedLessons ->
|
|
lessons = savedLessons.toMutableList()
|
|
}
|
|
}
|
|
lessons.forEach() {lessonData ->
|
|
Lesson(subject = lessonData.subject, teacher = lessonData.teacher, room = lessonData.room)
|
|
}
|
|
}
|
|
}
|
|
|
|
@Composable
|
|
fun Lesson(subject: String, teacher: String, room: String) {
|
|
Box(modifier = Modifier
|
|
.size(200.dp, 100.dp)
|
|
.padding(3.dp)
|
|
) {
|
|
Text(
|
|
modifier = Modifier.align(Alignment.Center),
|
|
text = "$subject\n@$room\n/w$teacher")
|
|
}
|
|
}
|
|
|
|
fun currentDay(): String {
|
|
return "hi"
|
|
} |