package com.geeksforgeeks.demo
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.widget.Toast
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.*
import androidx.compose.material3.Button
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.material3.TextField
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.graphics.Color
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
class UpdateCourse : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MaterialTheme {
// call the composable to update data
UpdateDataToDatabase(
// pass the intent data and context
LocalContext.current,
intent.getStringExtra("courseName"),
intent.getStringExtra("courseDuration"),
intent.getStringExtra("courseTracks"),
intent.getStringExtra("courseDescription")
)
}
}
}
}
// composable to update data
@Composable
fun UpdateDataToDatabase(
context: Context,
cName: String?,
cTracks: String?,
cDuration: String?,
cDescription: String?
) {
// variables for text fields
val courseName = remember {
mutableStateOf(cName)
}
val courseDuration = remember {
mutableStateOf(cDuration)
}
val courseTracks = remember {
mutableStateOf(cTracks)
}
val courseDescription = remember {
mutableStateOf(cDescription)
}
// column for displaying text fields
Column(
modifier = Modifier.fillMaxSize()
.padding(all = 30.dp),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center,
) {
// initialize database handler
val dbHandler = DBHandler(context)
// text for displaying header
Text(
text = "SQlite Database in Android",
color = Color.Black, fontSize = 20.sp, fontWeight = FontWeight.Bold
)
Spacer(modifier = Modifier.height(20.dp))
// text field for course name
TextField(
value = courseName.value!!,
onValueChange = { courseName.value = it },
placeholder = { Text(text = "Enter your course name") },
modifier = Modifier.fillMaxWidth(),
textStyle = TextStyle(color = Color.Black, fontSize = 15.sp),
singleLine = true,
)
Spacer(modifier = Modifier.height(20.dp))
// text field for course duration
TextField(
value = courseDuration.value!!,
onValueChange = { courseDuration.value = it },
placeholder = { Text(text = "Enter your course duration") },
modifier = Modifier.fillMaxWidth(),
textStyle = TextStyle(color = Color.Black, fontSize = 15.sp),
singleLine = true,
)
Spacer(modifier = Modifier.height(20.dp))
// text field for course tracks
TextField(
value = courseTracks.value!!,
onValueChange = { courseTracks.value = it },
placeholder = { Text(text = "Enter your course tracks") },
modifier = Modifier.fillMaxWidth(),
textStyle = TextStyle(color = Color.Black, fontSize = 15.sp),
singleLine = true,
)
Spacer(modifier = Modifier.height(20.dp))
// text field for course description
TextField(
value = courseDescription.value!!,
onValueChange = { courseDescription.value = it },
placeholder = { Text(text = "Enter your course description") },
modifier = Modifier.fillMaxWidth(),
textStyle = TextStyle(color = Color.Black, fontSize = 15.sp),
singleLine = true,
)
Spacer(modifier = Modifier.height(15.dp))
// button to update our data.
Button(onClick = {
// call function to update data
dbHandler.updateCourse(
cName!!,
courseName.value,
courseDescription.value,
courseTracks.value,
courseDuration.value
)
Toast.makeText(context, "Course Updated..", Toast.LENGTH_SHORT).show()
val i = Intent(context, MainActivity::class.java)
context.startActivity(i)
}) {
Text(text = "Update Course", color = Color.White)
}
}
}