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

46 lines
1.3 KiB
Kotlin
Raw Normal View History

2021-03-01 14:17:06 +00:00
package dev.inmo.kmppscriptbuilder.desktop.views
import androidx.compose.runtime.*
2021-03-01 14:17:06 +00:00
import dev.inmo.kmppscriptbuilder.core.models.MavenPublishingRepository
2021-09-04 13:34:24 +00:00
import dev.inmo.kmppscriptbuilder.desktop.utils.CommonTextField
class RepositoryState(
name: String = "",
url: String = ""
) {
var name: String by mutableStateOf(name)
var url: String by mutableStateOf(url)
fun toRepository() = MavenPublishingRepository(name, url)
}
private fun MavenPublishingRepository.toRepositoryState() = RepositoryState(name, url)
class RepositoriesView : ListView<RepositoryState>("Repositories info") {
var repositories: List<MavenPublishingRepository>
get() = itemsList.map { it.toRepository() }
set(value) {
itemsList.clear()
itemsList.addAll(
value.map { it.toRepositoryState() }
)
}
override val addItemText: String = "Add repository"
override val removeItemText: String = "Remove repository"
override fun createItem(): RepositoryState = RepositoryState()
@Composable
override fun buildView(item: RepositoryState) {
CommonTextField(
item.name,
"Repository name"
) { item.name = it }
CommonTextField(
item.url,
"Repository url"
) { item.url = it }
}
}