KotlinPublicationScriptsBui.../desktop/src/jvmMain/kotlin/dev/inmo/kmppscriptbuilder/desktop/views/DevelopersView.kt

52 lines
1.4 KiB
Kotlin

package dev.inmo.kmppscriptbuilder.desktop.views
import androidx.compose.runtime.*
import dev.inmo.kmppscriptbuilder.core.models.Developer
import dev.inmo.kmppscriptbuilder.desktop.utils.CommonTextField
class DeveloperState(
id: String = "",
name: String = "",
eMail: String = ""
) {
var id: String by mutableStateOf(id)
var name: String by mutableStateOf(name)
var eMail: String by mutableStateOf(eMail)
fun toDeveloper() = Developer(id, name, eMail)
}
private fun Developer.toDeveloperState() = DeveloperState(id, name, eMail)
class DevelopersView : ListView<DeveloperState>("Developers info") {
var developers: List<Developer>
get() = itemsList.map { it.toDeveloper() }
set(value) {
itemsList.clear()
itemsList.addAll(
value.map { it.toDeveloperState() }
)
}
override val addItemText: String = "Add developer"
override val removeItemText: String = "Remove developer"
override fun createItem(): DeveloperState = DeveloperState()
@Composable
override fun buildView(item: DeveloperState) {
CommonTextField(
item.id,
"Developer username"
) { item.id = it }
CommonTextField(
item.name,
"Developer name"
) { item.name = it }
CommonTextField(
item.eMail,
"Developer E-Mail"
) { item.eMail = it }
}
}