KotlinPublicationScriptsBui.../core/src/commonMain/kotlin/dev/inmo/kmppscriptbuilder/core/ui/RepositoriesView.kt

52 lines
1.6 KiB
Kotlin
Raw Normal View History

2022-11-15 12:53:59 +00:00
package dev.inmo.kmppscriptbuilder.core.ui
2022-11-15 13:55:54 +00:00
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
2022-11-15 18:56:24 +00:00
import androidx.compose.runtime.mutableStateListOf
2022-11-15 13:55:54 +00:00
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
2022-11-15 12:53:59 +00:00
import dev.inmo.kmppscriptbuilder.core.models.MavenPublishingRepository
2022-11-15 18:56:24 +00:00
import dev.inmo.kmppscriptbuilder.core.ui.utils.CommonTextField
2022-11-15 13:55:54 +00:00
import dev.inmo.kmppscriptbuilder.core.ui.utils.Drawer
2022-11-15 12:53:59 +00:00
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()
2022-11-15 13:55:54 +00:00
2022-11-15 12:53:59 +00:00
@Composable
override fun buildView(item: RepositoryState) {
2022-11-15 18:56:24 +00:00
CommonTextField(
item.name,
"Repository name",
) { item.name = it }
CommonTextField(
item.url,
"Repository url",
) { item.url = it }
2022-11-15 12:53:59 +00:00
}
}