Skip to content
Snippets Groups Projects
Commit 0d79e92a authored by ibrahim-oez's avatar ibrahim-oez
Browse files

Help erstellt

parent a761c7b0
Branches
Tags v18.01.0
No related merge requests found
...@@ -9,6 +9,7 @@ import androidx.compose.runtime.Composable ...@@ -9,6 +9,7 @@ import androidx.compose.runtime.Composable
import androidx.navigation.compose.NavHost import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController import androidx.navigation.compose.rememberNavController
import th.koeln.pomotik.screens.help.HelpScreenComponent
import th.koeln.pomotik.screens.start.StartBildschirm import th.koeln.pomotik.screens.start.StartBildschirm
import th.koeln.pomotik.screens.timer.TimerScreenComponent import th.koeln.pomotik.screens.timer.TimerScreenComponent
import th.koeln.pomotik.screens.todo.TodoListScreen import th.koeln.pomotik.screens.todo.TodoListScreen
...@@ -47,6 +48,7 @@ class MainActivity : ComponentActivity() { ...@@ -47,6 +48,7 @@ class MainActivity : ComponentActivity() {
composable("startseite") { StartBildschirm(navController) } composable("startseite") { StartBildschirm(navController) }
composable("timer-activity") { TimerScreenComponent(navController) } composable("timer-activity") { TimerScreenComponent(navController) }
composable("todo-list") { TodoListScreen(navController) } composable("todo-list") { TodoListScreen(navController) }
composable("help") { HelpScreenComponent(navController) }
} }
} }
} }
package th.koeln.pomotik.screens.help
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
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.material3.Button
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.navigation.NavHostController
@ExperimentalMaterial3Api
@Composable
fun HelpScreenComponent(navHostController: NavHostController) {
Scaffold(
topBar = {
TopAppBar(
title = {
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.Center
) {
Text(
text = "PomoTik Hilfe",
color = Color.White,
fontWeight = FontWeight.Bold
)
}
},
colors = androidx.compose.material3.TopAppBarDefaults.topAppBarColors(
containerColor = Color(0xFF4A4AFC)
)
)
},
content = { innerPadding ->
Modifier.padding(innerPadding)
Column(
modifier = Modifier
.fillMaxSize()
.background(
Brush.verticalGradient(
colors = listOf(
Color(0xFF7DABD8),
Color(0xFFD2BBE8)
)
)
)
.padding(16.dp),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Top
) {
Spacer(modifier = Modifier.height(80.dp))
Text(
text = "Willkommen zur PomoTik Hilfe",
fontSize = 28.sp,
fontWeight = FontWeight.Bold,
color = Color.White,
textAlign = TextAlign.Center
)
Spacer(modifier = Modifier.height(20.dp))
Text(
text = "In dieser App kannst du mit der Pomodoro-Technik arbeiten. \n\n" +
"- Drücke 'Start', um einen Timer zu starten.\n" +
"- Nutze die 'Pause' Taste, um den Timer zu pausieren.\n" +
"- Setze den Timer zurück, um von vorne zu beginnen.\n\n" +
"Vergiss nicht, dass du auch Todo-Listen erstellen kannst, um deine Aufgaben zu verwalten!",
fontSize = 18.sp,
color = Color.White,
textAlign = TextAlign.Left
)
Spacer(modifier = Modifier.height(40.dp))
Button(
onClick = {
// Navigiere zurück zum Timer
navHostController.popBackStack()
},
modifier = Modifier
.fillMaxWidth(0.7f)
.height(50.dp),
colors = ButtonDefaults.buttonColors(containerColor = Color(0xFF4A4AFC))
) {
Text(
text = "Zurück zum Timer",
color = Color.White,
fontWeight = FontWeight.Bold,
fontSize = 18.sp
)
}
}
}
)
}
...@@ -3,6 +3,7 @@ package th.koeln.pomotik.screens.timer ...@@ -3,6 +3,7 @@ package th.koeln.pomotik.screens.timer
import NotificationService import NotificationService
import android.app.Activity import android.app.Activity
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.media.MediaPlayer
import android.os.Build import android.os.Build
import android.widget.NumberPicker import android.widget.NumberPicker
import androidx.compose.foundation.background import androidx.compose.foundation.background
...@@ -48,6 +49,7 @@ import androidx.core.app.ActivityCompat ...@@ -48,6 +49,7 @@ import androidx.core.app.ActivityCompat
import androidx.lifecycle.viewmodel.compose.viewModel import androidx.lifecycle.viewmodel.compose.viewModel
import androidx.navigation.NavHostController import androidx.navigation.NavHostController
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import th.koeln.pomotik.R
@ExperimentalMaterial3Api @ExperimentalMaterial3Api
...@@ -61,6 +63,10 @@ fun TimerScreenComponent(navHostController: NavHostController) { ...@@ -61,6 +63,10 @@ fun TimerScreenComponent(navHostController: NavHostController) {
val notificationService = NotificationService(context) val notificationService = NotificationService(context)
val timerViewModel: TimerViewModel = viewModel() val timerViewModel: TimerViewModel = viewModel()
// MediaPlayer für den Alarmton
val mediaPlayer = remember {
MediaPlayer.create(context, R.raw.alarm_4) // Audio aus res/raw
}
LaunchedEffect(isRunning) { LaunchedEffect(isRunning) {
...@@ -72,6 +78,11 @@ fun TimerScreenComponent(navHostController: NavHostController) { ...@@ -72,6 +78,11 @@ fun TimerScreenComponent(navHostController: NavHostController) {
notificationService.showTimerNotification { notificationService.showTimerNotification {
formatTime(timeLeft) formatTime(timeLeft)
} }
if (timeLeft == 0) {
isRunning = false
mediaPlayer.start() // Alarmton abspielen
}
} }
} }
......
...@@ -32,6 +32,7 @@ import th.koeln.pomotik.screens.db.TaskViewModel ...@@ -32,6 +32,7 @@ import th.koeln.pomotik.screens.db.TaskViewModel
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.Date import java.util.Date
import androidx.compose.runtime.livedata.observeAsState import androidx.compose.runtime.livedata.observeAsState
import androidx.compose.ui.text.style.TextDecoration
@Composable @Composable
...@@ -50,7 +51,7 @@ fun TaskItem( ...@@ -50,7 +51,7 @@ fun TaskItem(
.padding(6.dp), .padding(6.dp),
shape = RoundedCornerShape(16.dp), shape = RoundedCornerShape(16.dp),
colors = CardDefaults.cardColors( colors = CardDefaults.cardColors(
containerColor = if (item.isCompleted) Color.Gray else Color.White containerColor = Color.White
) )
) { ) {
Row( Row(
...@@ -65,7 +66,8 @@ fun TaskItem( ...@@ -65,7 +66,8 @@ fun TaskItem(
text = item.name, text = item.name,
fontSize = 18.sp, fontSize = 18.sp,
fontWeight = FontWeight.Bold, fontWeight = FontWeight.Bold,
color = if (item.isCompleted) Color.Gray else Color.Black color = if (item.isCompleted) Color.Gray else Color.Black,
textDecoration = if (item.isCompleted) TextDecoration.LineThrough else TextDecoration.None // Text wird durchgestrichen, wenn abgeschlossen
) )
Text( Text(
text = dateFormat.format(item.date), text = dateFormat.format(item.date),
...@@ -74,6 +76,7 @@ fun TaskItem( ...@@ -74,6 +76,7 @@ fun TaskItem(
) )
} }
// Checkbox zum Markieren des Tasks als abgeschlossen // Checkbox zum Markieren des Tasks als abgeschlossen
Checkbox( Checkbox(
checked = item.isCompleted, checked = item.isCompleted,
...@@ -87,6 +90,7 @@ fun TaskItem( ...@@ -87,6 +90,7 @@ fun TaskItem(
// Button zum Entfernen des Tasks // Button zum Entfernen des Tasks
IconButton(onClick = { onRemove(item) }) { IconButton(onClick = { onRemove(item) }) {
Icon( Icon(
tint = Color(0xFFF44336),
imageVector = Icons.Default.Delete, imageVector = Icons.Default.Delete,
contentDescription = "Remove Task" contentDescription = "Remove Task"
) )
......
File added
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment