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

54 lines
1.5 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
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
2022-11-15 12:53:59 +00:00
import dev.inmo.kmppscriptbuilder.core.models.Config
2022-11-15 18:56:24 +00:00
import dev.inmo.kmppscriptbuilder.core.ui.utils.DefaultDivider
2022-11-15 12:53:59 +00:00
2022-11-15 18:56:24 +00:00
@Composable
expect fun TopAppBar(
config: Config,
saveAvailable: Boolean,
onSaveAvailable: (Boolean) -> Unit,
onNewConfig: (Config) -> Unit
)
2022-11-15 12:53:59 +00:00
class BuilderView : View() {
2022-11-15 18:56:24 +00:00
internal val projectTypeView by mutableStateOf(ProjectTypeView())
internal val mavenInfoView by mutableStateOf(MavenInfoView())
internal val licensesView by mutableStateOf(LicensesView())
2022-11-15 12:53:59 +00:00
internal var saveAvailableState by mutableStateOf(false)
var config: Config
2022-11-15 18:56:24 +00:00
get() {
return Config(licensesView.licenses, mavenInfoView.mavenConfig, projectTypeView.projectType)
}
2022-11-15 12:53:59 +00:00
set(value) {
licensesView.licenses = value.licenses
mavenInfoView.mavenConfig = value.mavenConfig
projectTypeView.projectType = value.type
saveAvailableState = true
}
@Composable
override fun build() {
2022-11-15 18:56:24 +00:00
TopAppBar(
config,
saveAvailableState,
{
saveAvailableState = it
}
) {
config = it
}
projectTypeView.build()
DefaultDivider()
licensesView.build()
DefaultDivider()
mavenInfoView.build()
2022-11-15 12:53:59 +00:00
}
}