|
|
|
package example.todoapp.lite.common
|
|
|
|
|
|
|
|
import androidx.compose.foundation.layout.Box
|
|
|
|
import androidx.compose.foundation.layout.Column
|
|
|
|
import androidx.compose.foundation.layout.IntrinsicSize
|
|
|
|
import androidx.compose.foundation.layout.Row
|
|
|
|
import androidx.compose.foundation.layout.Spacer
|
|
|
|
import androidx.compose.foundation.layout.fillMaxWidth
|
|
|
|
import androidx.compose.foundation.layout.height
|
|
|
|
import androidx.compose.foundation.layout.padding
|
|
|
|
import androidx.compose.foundation.layout.sizeIn
|
|
|
|
import androidx.compose.material.Button
|
|
|
|
import androidx.compose.material.Card
|
|
|
|
import androidx.compose.material.Checkbox
|
|
|
|
import androidx.compose.material.MaterialTheme
|
|
|
|
import androidx.compose.material.ProvideTextStyle
|
|
|
|
import androidx.compose.material.Text
|
|
|
|
import androidx.compose.material.TextField
|
|
|
|
import androidx.compose.runtime.Composable
|
|
|
|
import androidx.compose.ui.Alignment
|
|
|
|
import androidx.compose.ui.Modifier
|
|
|
|
import androidx.compose.ui.unit.dp
|
|
|
|
import androidx.compose.ui.window.Dialog
|
|
|
|
|
|
|
|
@Composable
|
|
|
|
internal fun EditDialog(
|
|
|
|
item: TodoItem,
|
|
|
|
onCloseClicked: () -> Unit,
|
|
|
|
onTextChanged: (String) -> Unit,
|
|
|
|
onDoneChanged: (Boolean) -> Unit,
|
|
|
|
) {
|
|
|
|
EditDialog(
|
|
|
|
onCloseRequest = onCloseClicked,
|
|
|
|
) {
|
|
|
|
Column(horizontalAlignment = Alignment.CenterHorizontally) {
|
|
|
|
TextField(
|
|
|
|
value = item.text,
|
|
|
|
modifier = Modifier.weight(1F).fillMaxWidth().sizeIn(minHeight = 192.dp),
|
|
|
|
label = { Text("Todo text") },
|
|
|
|
onValueChange = onTextChanged,
|
|
|
|
)
|
|
|
|
|
|
|
|
Spacer(modifier = Modifier.height(8.dp))
|
|
|
|
|
|
|
|
Row {
|
|
|
|
Text(text = "Completed", Modifier.padding(15.dp))
|
|
|
|
|
|
|
|
Checkbox(
|
|
|
|
checked = item.isDone,
|
|
|
|
onCheckedChange = onDoneChanged,
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Composable
|
|
|
|
private fun EditDialog(
|
|
|
|
onCloseRequest: () -> Unit,
|
|
|
|
content: @Composable () -> Unit
|
|
|
|
) {
|
|
|
|
Dialog(
|
|
|
|
onDismissRequest = onCloseRequest,
|
|
|
|
) {
|
|
|
|
Card(elevation = 8.dp) {
|
|
|
|
Column(
|
|
|
|
modifier = Modifier
|
|
|
|
.padding(8.dp)
|
|
|
|
.height(IntrinsicSize.Min)
|
|
|
|
) {
|
|
|
|
ProvideTextStyle(MaterialTheme.typography.subtitle1) {
|
|
|
|
Text(text = "Edit todo")
|
|
|
|
}
|
|
|
|
|
|
|
|
Spacer(modifier = Modifier.height(8.dp))
|
|
|
|
|
|
|
|
Box(modifier = Modifier.weight(1F)) {
|
|
|
|
content()
|
|
|
|
}
|
|
|
|
|
|
|
|
Spacer(modifier = Modifier.height(8.dp))
|
|
|
|
|
|
|
|
Button(
|
|
|
|
onClick = onCloseRequest,
|
|
|
|
modifier = Modifier.align(Alignment.End)
|
|
|
|
) {
|
|
|
|
Text(text = "Done")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|