54 lines
1.5 KiB
Kotlin
54 lines
1.5 KiB
Kotlin
package dev.inmo.kmppscriptbuilder.core.ui
|
|
|
|
import androidx.compose.runtime.Composable
|
|
import androidx.compose.runtime.getValue
|
|
import androidx.compose.runtime.mutableStateOf
|
|
import androidx.compose.runtime.setValue
|
|
import dev.inmo.kmppscriptbuilder.core.models.Config
|
|
import dev.inmo.kmppscriptbuilder.core.ui.utils.DefaultDivider
|
|
|
|
@Composable
|
|
expect fun TopAppBar(
|
|
config: Config,
|
|
saveAvailable: Boolean,
|
|
onSaveAvailable: (Boolean) -> Unit,
|
|
onNewConfig: (Config) -> Unit
|
|
)
|
|
|
|
class BuilderView : View() {
|
|
internal val projectTypeView by mutableStateOf(ProjectTypeView())
|
|
internal val mavenInfoView by mutableStateOf(MavenInfoView())
|
|
internal val licensesView by mutableStateOf(LicensesView())
|
|
|
|
internal var saveAvailableState by mutableStateOf(false)
|
|
var config: Config
|
|
get() {
|
|
return Config(licensesView.licenses, mavenInfoView.mavenConfig, projectTypeView.projectType)
|
|
}
|
|
set(value) {
|
|
licensesView.licenses = value.licenses
|
|
mavenInfoView.mavenConfig = value.mavenConfig
|
|
projectTypeView.projectType = value.type
|
|
saveAvailableState = true
|
|
}
|
|
|
|
@Composable
|
|
override fun build() {
|
|
TopAppBar(
|
|
config,
|
|
saveAvailableState,
|
|
{
|
|
saveAvailableState = it
|
|
}
|
|
) {
|
|
config = it
|
|
}
|
|
|
|
projectTypeView.build()
|
|
DefaultDivider()
|
|
licensesView.build()
|
|
DefaultDivider()
|
|
mavenInfoView.build()
|
|
}
|
|
}
|